Filter统一设置字符集

来源:互联网 发布:满城尽带黄金甲 知乎 编辑:程序博客网 时间:2024/05/22 11:51

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>

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

0 0
原创粉丝点击