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文档(价值连城呀呀,不收藏你会后悔的)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qiukui111/article/details/105018269