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>