java web中的Filter過濾器

一、筆記

在這裏插入圖片描述
2.
在這裏插入圖片描述
3.
在這裏插入圖片描述
4.使用Filter實現統一全站編碼,處理整個項目的中文亂碼問題
在這裏插入圖片描述
在這裏插入圖片描述

二、擼代碼

使用Filter實現統一全站編碼,處理整個項目的中文亂碼問題
CharacterFileter

package cn.lixuquan.anli02;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet Filter implementation class CharacterFileter
 */
@WebFilter("/*")
public class CharacterFileter implements Filter {

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		//1.處理響應中文亂碼問題
		HttpServletRequest req = (HttpServletRequest )request;
		HttpServletResponse resp = (HttpServletResponse)response;
		resp.setContentType("text/html;charset=utf-8");
		//2.處理請求中的中文亂碼問題
		String method = req.getMethod();
		if("post".equalsIgnoreCase(method))
		{
			//3.處理post請求
			req.setCharacterEncoding("utf-8");
		}
		//4.處理get請求
		//使用增強的request
		CharacterRequest chRequest = new CharacterRequest(req);
		//5.放行
		chain.doFilter(chRequest, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

CharacterRequest:(增強的request)

package cn.lixuquan.anli02;
/**
 * 利用裝飾者模式,來增強request中的getParameter()方法
 */

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class CharacterRequest extends HttpServletRequestWrapper {
	//1.引用被增強對象
	HttpServletRequest request;
	public CharacterRequest(HttpServletRequest req) {
		super(req);
		this.request = req;
		// TODO Auto-generated constructor stub
	}
	public String getParameter(String name)
	{
		String value = request.getParameter(name);
		if(null == value)
		{
			return null;
		}
		String method = request.getMethod();
		//處理get請求的中文亂碼問題
		if("get".equalsIgnoreCase(method))
		{
			try {
				value = new String(value.getBytes("ISO-8859-1"),"utf-8");
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return value;
	}

}

測試表單省略

三、分享與交流

最後有興趣一起交流的,可以關注我的公衆號:這裏你能夠學到很實用的技巧,不是常用的我不說,公衆號回覆提取碼即可獲取以下學習資料啦啦啦啦,喜歡就拿去吧!!

(鏈接時常會失效,若出現此類情況,可以加我微信:17722328325(加時請備註:學習資料))

  1. Java web從入門到精通電子書

  2. Python機器學習電子書

  3. Python400集(北京尚學堂)

  4. JavaScript項目案例、經典面試題

  5. Java300集(入門、精通)

  6. Java後端培訓機構錄集(同事培訓內部提供)

  7. java重要知識pdf文檔(價值連城呀呀,不收藏你會後悔的)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章