Filter统一设置字符集

xiaoxiao2021-02-28  143

Filter: 该技术在servlet2.3规范中加入的,大部分的jsp/servlet容器都支持; 和AOP面向切面的编程 可看做是一种确切性的技术 体现出责任链模式 提供声明式服务,该服务非常强大,可插拔。 对Request和Response请求进行拦截,通过配置非法关键字,通过判断filter中是否有非法关键字,如果有,就不让页面显示,功能很强大。 只对Post请求起作用。

Filter执行顺序图:

执行代码:

/** * 采用Filter统一处理字符集 * @author wang * */ public class CharsetEncodingFilter implements Filter { private String encoding; public void destroy(){ } public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain){ System.out.println("CharsetEncodingFilter--->>>begin"); //设置字符集 try { request.setCharacterEncoding(encoding); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } //继续执行 try { chain.doFilter(request, response); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("CharsetEncodingFilter--->>>end"); } //只初始化一次 public void init(FilterConfig filterConfig) throws ServletException{ System.out.println("CharsetEncodingFilter.init()-->>"); this.encoding = filterConfig.getInitParameter("encoding"); System.out.println("CharsetEncodingFilter.init()-->> encoding=" + encoding); }

Web.xml中配置:

<filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>com.orcl.drp.util.filter.CharsetEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>

希望对您有帮助!感谢您的阅读!

转载请注明原文地址: https://www.6miu.com/read-22773.html

最新回复(0)