过滤类篇: import java.io.IOException; import javax.servlet.Filter; import javax.servlet.ServletRequest; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletResponse; import javax.servlet.FilterChain; //实现javax.servlet.Filter类,强制实现3个方法 public class SetCharacterEncodingFilter implements Filter { String encoding = ""; //初始化方法 public void init(FilterConfig filterConfig) throws ServletException { //从web.xml 文件中获取编码格式,参数名为’encoding’ encoding = filterConfig.getInitParameter("encoding"); if(encoding==null){//判断,若编码格式为空,赋默认值为GBK encoding = "GBK"; } } //执行操作方法 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //判断,若项目中没有设置编码格式时,给予设置 if (request.getCharacterEncoding() == null) { //将编码格式设置成获取的参数值 request.setCharacterEncoding(encoding); } //设置response的编码格式, response.setContentType("text/html; charset="+encoding); //将程序继续运行下去 chain.doFilter(request, response); } //销毁方法 public void destroy() //将编码格式变量清空 { this.encoding = null; } }
Web.xml文件篇: <filter> <filter-name>aa</filter-name> //filter.SetCharacterEncodingFilter为过滤器类路径 <filter-class>filter.SetCharacterEncodingFilter</filter-class> <init-param>//配置过滤器参数 <param-name>encoding</param-name>//参数名 <param-value>GBK</param-value>//参数值 </init-param> </filter> <filter-mapping> <filter-name>aa</filter-name> <url-pattern>/*</url-pattern>//过滤器匹配的范围 </filter-mapping>