Servlet------过滤器

Servlet 过滤器

是一种切面AOP(面向切面编程)技术, 可以拦截 请求 和 响应
可以在 请求前 处理某些内容, 可以在 响应后 处理某些内容

字符集编码过滤器

public class CharacterEncodingFilter implements Filter {

    private String encoding = "UTF-8" ;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String encoding = filterConfig.getInitParameter("encoding");
        if (encoding !=null) {
            this.encoding = encoding ;
        }
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        // 在 请求前 设置 字符集编码为 UTF-8
        request.setCharacterEncoding(encoding);

        // 设置响应的字符集编码为 UTF-8
        response.setCharacterEncoding(encoding);

        // 将请求 交给 下一个链 继续执行
        chain.doFilter(request, response);

        // 在 响应 后 执行的代码 编写在 这
    }
}

使用方式

  • 基于注解
@WebFilter(value = "/*", initParams = {@WebInitParam(name="encoding", value = "UTF-8")})
  • 基于XML
 <!--  配置字符集编码过滤器   -->
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>com.qikux.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
ter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

猜你喜欢

转载自blog.csdn.net/weixin_52953038/article/details/127181858