Java Filter 与 责任链设计模式

来源:互联网 发布:阿里云架构 java 编辑:程序博客网 时间:2024/05/18 03:42


Filter过滤器主要使用于前台向后台传递数据是的过滤操作。例如,Jsp,Servlet,静态图片或html,进行拦截,实现对访问权限的控制,过滤敏感词,压缩相应信息的作用。


下面是批量设置请求编码(其他的工作代码大同小异,不再一一列举)

Java

1.public class EncodingFilter implements Filter {  2.  3.    private String encoding = null;  4.  5.    public void destroy() {  6.        encoding = null;  7.    }  8.  9.    public void doFilter(ServletRequest request, ServletResponse response,  10.            FilterChain chain) throws IOException, ServletException {  11.        String encoding = getEncoding();  12.        if (encoding == null){  13.            encoding = "gb2312";  14.        }  15.        request.setCharacterEncoding(encoding);// 在请求里设置上指定的编码  16.        chain.doFilter(request, response);  17.    }  18.  19.    public void init(FilterConfig filterConfig) throws ServletException {  20.        this.encoding = filterConfig.getInitParameter("encoding");  21.    }  22.  23.    private String getEncoding() {  24.        return this.encoding;  25.    }  26.  

配置xml

1.<filter>  2.    <filter-name>EncodingFilter</filter-name>  3.    <filter-class>com.logcd.filter.EncodingFilter</filter-class>  4.    <init-param>  5.       <param-name>encoding</param-name>  6.       <param-value>gb2312</param-value>  7.    </init-param>  8.</filter>  9.  10.<filter-mapping>  11.   <filter-name>EncodingFilter</filter-name>  12.   <url-pattern>/*</url-pattern>  13.</filter-mapping>  

责任链模式

责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。




职责链模式的经典应用是Servlet中的的Filter技术。对发送者数据进行链式处理。


原创粉丝点击