使用过滤器Filter处理中文乱码!

首先创建一个自定义类:EncodeFilter
接口使用Filter,在这里需要注意了,导包不要导入错了!

import javax.servlet.*;

使用注解可以省略配置web.xml文件
@WebFilter(urlPatterns = "/")这里的“/”表示过滤器拦截所有的servlet,当跳转过来的页面没有设置字符编码的时候,加上后再放行!

package org.news.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author k
 */
@WebFilter(urlPatterns = "/*")
public class EncodeFilter implements Filter {
    private String encode="utf-8";//设置你想设置的字符编码
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String encode=filterConfig.getInitParameter("encode");
        if(this.encode==null){
            //查找配置文件中预设的字符集编码
            this.encode=encode;
        }
    }

    /**
     * 对所有页面设置字符集编码
     * @param servletRequest
     * @param servletResponse
     * @param filterChain
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        if (null==servletRequest.getCharacterEncoding()||null==servletResponse.getCharacterEncoding()){
                servletRequest.setCharacterEncoding(encode);
                servletResponse.setCharacterEncoding(encode);
            }
            //设置字符编码之后放行
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        encode=null;
    }
}

发布了152 篇原创文章 · 获赞 141 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_44739706/article/details/104694992