javaweb中用过滤器Filter处理所有页面中文乱码问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hju22/article/details/87726744

一、项目结构

写一个过滤器,处理所有页面的字符编码;
写一个servlet,测试过滤器的功能。
在这里插入图片描述

二、过滤器—处理字符编码

CharacterFilter.java

package net.test.filter;

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

// url映射/*,给所有页面处理中文乱码
@WebFilter(filterName = "CharacterFilter",urlPatterns = "/*",initParams = {@WebInitParam(name="encoding",value = "utf-8")})
public class CharacterFilter implements Filter {//实现filter接口
    //字符编码
    private String encoding;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //获取初始化参数
        encoding = filterConfig.getInitParameter("encoding");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        if (encoding!=null) {
            //设置request字符编码
            servletRequest.setCharacterEncoding(encoding);
            //设置response字符编码
            servletResponse.setContentType("text/html;charset="+encoding);
        }
        //传递给下一个过滤器
        filterChain.doFilter(servletRequest,servletResponse);
    }

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

三、测试servlet

TestFilterServlet.java

package net.test.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "TestFilterServlet",urlPatterns = "/testFilter")
public class TestFilterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("testFilter被访问了");
    }
}

四、部署及运行

部署
在这里插入图片描述
浏览器访问:http://localhost:8081/testFilter
出现了如下结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hju22/article/details/87726744