filter拦截器解决中文乱码问题

拦截器的初始化配置方法:
    在web.xml文件当中添加下面的代码
<filter>
        <filter-name>SetEncodeFilter</filter-name>
        <filter-class>com.pk.mylogin.filter.SetEncodeFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>SetEncodeFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
filter-name拦截器的名称,filter-class拦截器的java类,必须是包名+java名称;
filter-mapping当中配置标签当中,filter-name必须和filter标签当中的name一致;
url-pattern表示浏览器访问的地址
 
1、filter当中对应的java类应当实现(implements)filter类,import javax.servlet.Filter;
    意filter类是哪个
2、在dofilter方法当中添加下面的代码:
    request.setCharacterEncoding("utf-8");
    chain.doFilter(request, response);
3、要想实现对post和get请求都有效那么在tomcat服务器修改配置文件添加
    
 
具体的filter文件为:
package com.pk.mylogin.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 SetEncodeFilter implements Filter {
    public void destroy() {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("拦截器被调用");
            request.setCharacterEncoding("utf-8");
            chain.doFilter(request, response);
    }
    public void init(FilterConfig arg0) throws ServletException {
    }
}
 
也可以再filter当中控制没有登录的用户,自动跳转到登录页面
在filter文件当中添加跳转
User user = (User) request.getAttribute("user");
        if (user == null) {
            request.getRequestDispatcher("/login.jsp").forward(request, response);
            return ;
        }




原文地址:https://www.cnblogs.com/babyhhcsy/p/2985821.html