【java】Filter过滤器

来源:互联网 发布:ed2k下载工具 mac 编辑:程序博客网 时间:2024/06/05 01:58

一、简介

     Filter也称为过滤器,是Servlet中的一项技术,可以管理Web服务器管理的一系列资源,例如jsp,html等。Servlet API中提供了一个Filter接口,在开发web应用时若需要建立过滤器类,则需要实现这个Filter接口,然后实现其doFilter方法,从而实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。

二、原理

                   

三、建立过程

     1.建立对应的包和类,这个类要实现filter接口

                                                        

      2.实现doFilter()方法

      3.配置web.xml

四、统一设置字符集实例

      实现filter接口的类:

/** * 采用filter统一设置字符集 * @author Administrator * */public class CharsetEncodingFilter implements Filter {private String encoding;@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {//System.out.println("CharsetEncodingFilter---->>begin");//设置字符集request.setCharacterEncoding("GB18030");//继续执行chain.doFilter(request, response);//System.out.println("CharsetEncodingFilter---->>end");}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {this.encoding = filterConfig.getInitParameter("encoding");//System.out.println("charset="+encoding);}}
      web.xml的配置

<filter>  <filter-name>CharsetEncodingFilter</filter-name>  <filter-class>com.bjpowernode.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>
五、原理解说

      参考四中web.xml配置,filter-mapping中url-pattern就是针对web中的哪类文件进行拦截。上述例子是对jsp文件进行拦截,在用户访问jsp时会调用doFilter方法对jsp请求进行拦截。

     init方法:容器在创建当前过滤器时自动调用

     destory方法:容器销毁过滤器时调用

     doFilter方法:过滤器的主要代码

     四种过滤器:request过滤器、forward过滤器、include过滤器、error过滤器

     在filter-mapping节点中有一个dispatcher节点,该节点分别对应上述四种过滤器的配置。

     request过滤器:直接访问该目标资源才起作用

     forward过滤器:对于转发的才起作用,直接访问该目标资源不起作用

     include过滤器:请求包含该目标资源的请求起作用

     error过滤器:访问一个不存在的页面时先被过滤器拦截再转发到对应的错误页


原创粉丝点击