使用filter统一设置编码

来源:互联网 发布:淘宝修改默认付款方式 编辑:程序博客网 时间:2024/05/17 05:13

1.写一个类EncodingFilter.java,实现javax.servlet.Filter(文件命名做到见名知意)

复制代码
package com.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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class EncodingFilter implements Filter {    private String encoding = null;        /**     * 初始化方法,从web.xml中获取配置的初始化参数     */    @Override    public void init(FilterConfig filterConfig) throws ServletException {        this.encoding = filterConfig.getInitParameter("encode");            }    /**     * 设置编码     */    @Override    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        HttpServletRequest httpRequest = (HttpServletRequest)request;        HttpServletResponse httpResponse = (HttpServletResponse)response;                httpRequest.setCharacterEncoding(encoding);        httpResponse.setCharacterEncoding(encoding);                //调用doFIlter方法,如果还有别的过滤器会自动向下调用        chain.doFilter(httpRequest, httpResponse);            }    @Override    public void destroy() {            }}
复制代码

2.配置web.xml,使自定义的过滤器生效(如果有其他的过滤器,请放到最前面)

复制代码
 <filter>     <filter-name>encode</filter-name>     <filter-class>com.filter.EncodingFilter</filter-class>     <init-param>         <param-name>encode</param-name>         <param-value>UTF-8</param-value>     </init-param> </filter> <filter-mapping>     <filter-name>encode</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping>
https://www.cnblogs.com/djoker/p/6266676.html
原创粉丝点击