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>
