日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 字符过滤器_Java Web---登录验证和字符编码过滤器

發布時間:2023/12/10 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 字符过滤器_Java Web---登录验证和字符编码过滤器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是過濾器?

在Java Web中,過濾器即Filter。Servlet API中提供了一個Filter接口(javax.servlet.Filter)。開發web應用時,假設編寫的Java類實現了這個接口,則把這個Java類稱之為過濾器Filter。

通過Filter技術,開發者能夠實現用戶在訪問某個目標資源之前,對訪問的請求和響應進行攔截。簡單說。就是能夠實現web容器對某資源的訪問前截獲進行相關的處理,還能夠在某資源向web容器返回響應前進行截獲進行處理。

創建一個Filter的步驟

1.創建一個Filter處理類(實現javax.servlet.Filter接口)

2.在web.xml文件里配置Filter

Filter運行流程

1.Filter對用戶的請求進行預處理

2.處理好后將請求交給Servlet處理并生成響應

3.最后Filter再對server響應進行后處理

字符編碼過濾器

CharacterFilter.java

package org.LabReserve.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class CharacterFilter implements Filter { //實現Filter接口

private String character; //保存字符編碼的類型

@Override

public void destroy() { //在Filter銷毀前。完畢某些資源的回收

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,

FilterChain filterChain) throws IOException, ServletException {

servletRequest.setCharacterEncoding("utf-8"); //能夠直接設置編碼

servletResponse.setCharacterEncoding(character); //也能夠讀取初始化的參數character

filterChain.doFilter(servletRequest, servletResponse); //轉到下一個過濾器

}

@Override

public void init(FilterConfig fc) throws ServletException { //完畢Filter的初始化

//讀取web.xml中Filter配置的初始化參數

character = fc.getInitParameter("character");

}

}

web.xml文件里的配置

CharacterFilter

org.LabReserve.filter.CharacterFilter

character

utf-8

CharacterFilter

/*

登錄驗證過濾器

LoginFilter.java

package org.LabReserve.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter {

@Override

public void destroy() {

}

@Override

public void doFilter(ServletRequest servletRequest,

ServletResponse servletResponse, FilterChain filterChain)

throws IOException, ServletException {

// 轉換為HTTP請求對象

HttpServletRequest request = (HttpServletRequest) servletRequest;

// 轉化為HTTP響應對象

HttpServletResponse response = (HttpServletResponse) servletResponse;

// 獲得請求相應的session對象

HttpSession session = request.getSession();

// 獲得用戶請求的URI

String path = request.getRequestURI();

// 不用驗證登錄過濾的頁面

String[] noCheckPages = { "index.jsp","findPassword.jsp",

"LoginServlet","UserServlet",

"css","images","js"};

// int indexOf(int ch) 返回指定字符在此字符串中第一次出現處的索引。沒找到則返回-1

for (int i = 0; i < noCheckPages.length; ++i) {

if (path.indexOf(noCheckPages[i]) > -1) {

// 轉到下一個過濾器

filterChain.doFilter(servletRequest, servletResponse);

return; //不再過濾,防止頁面重定向循環

}

}

// 假設session為null,說明用戶是第一次訪問

if (session.getAttribute("userId") != null

|| session.getAttribute("teacherId") != null

|| session.getAttribute("adminId") != null) {

// 轉到下一個過濾器

filterChain.doFilter(request, response);

} else {

// 又一次定向到首頁

response.sendRedirect("index.jsp");

return; //不再過濾,防止頁面重定向循環

}

}

@Override

public void init(FilterConfig arg0) throws ServletException {

}

}

web.xml文件配置

LoginFilter

org.LabReserve.filter.LoginFilter

LoginFilter

/*

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java 字符过滤器_Java Web---登录验证和字符编码过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。