//使用过滤器实现处理中文乱码
@WebFilter("/*")
public class CharSetFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException, IOException {
//将servletRequest强转成request
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
chain.doFilter(request,response);
}
}

/** /*是拦截所有资源
filter在服务器启动是创建 init只会执行一次,一般用来初始化数据
dispatcherTypes = {DispatcherType.FORWARD} 拦截跳转
{DispatcherType.FORWARD,DispatcherType.REQUEST} 拦截跳转和请求
重定向不会拦截
*/
@WebFilter(value = "/*",dispatcherTypes = {DispatcherType.FORWARD,DispatcherType.REQUEST})
public class Filter3 implements Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println("filter3创建");
}
//销毁
public void destroy() {
System.out.println("3销毁");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
System.out.println("filter3");
//放行
chain.doFilter(request, response);
// 放行过后 靠后的过滤器先执行
System.out.println("3放行后继续执行");
}

总结:过滤器用来处理乱码,每次调用指定的拦截跳转DispatcherType都会先走一遍过滤器
本文主要介绍了JavaWeb中的过滤器(Filter)如何处理乱码问题,以及它在DispatcherType请求调度中的拦截作用。

2131

被折叠的 条评论
为什么被折叠?



