jsp 过滤器 Filter 配置

1 如果要映射过滤应用程序中所有资源:

<filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>/*</url-pattern>//访问当前主机,当前应用程序根下的所有文件包括多级子目录下的所有文件,注意这里*前有“/”

</filter-mapping>

2.过滤指定的类型文件资源


  <filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>

   <url-pattern>*.html</url-pattern>
//访问当前主机,当前应用程序根目录下的所有html文件,注意:*.html前没有“/”,否则错误

</filter-mapping>

其中*.html要过滤jsp那么就改*.html为*.jsp,但是注意没有“/”斜杠

  如果要同时过滤多种类型资源:

   方法一:url-pattern分开写

<filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>*.html</url-pattern>

</filter-mapping>

<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>*.jsp</url-pattern>
//访问当前主机,当前应用程序根目录以所有及子目录下的所有jsp文件

 </filter-mapping>

 方法二、将url-pattern 合并

  <filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>*.html;*.jsp</url-pattern>

</filter-mapping>
//*.html;*.jsp两类型之间用分号“;”间隔

3.过滤指定的目录下的所有文件


   <filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>/folder_name/*</url-pattern>
//访问当前主机,当前应用程序根目录下的folder_name子目录(可以是多级子目录)下所有文件

</filter-mapping>

4.过滤指定的servlet


  <filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <servlet-name>loggerservlet</servlet-name>

</filter-mapping>
<servlet>
   <servlet-name>loggerservlet
</servlet-name>
   <servlet-class>myfilter.LoggerServlet</servlet-class>
</servlet>

5.过滤指定文件(即单一文件)


  <filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>/simplefilter.html</url-pattern>
</filter-mapping>


6、过滤指定目录下的指定类型的所有文件

 这种情况下,在web.xml中无法一次性配置完成,需要结合filter的实现类

  首先,在web.xml中配置过滤指定目录下的所有文件(如上3)

<filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>/dir_name/*</url-pattern>

</filter-mapping>

 然后,在filter的实现类中的doFilter方法中获取请求的uri或者url,判断uri或者url中是否包含指定文件类型的字符串,决定是否过滤

 //获得用户请求的uri
    String uri =request.getRequestURI();

   if(uri.contains(".jsp")||uri.contains(".html"))
       {
         System.out.println("开始过滤"+url);
      }

7、过滤指定目录下指定类型的单一文件


<filter>
   <filter-name>loggerfilter</filter-name>
   <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>loggerfilter</filter-name>
   <url-pattern>/dir_name/index.jsp</url-pattern>

</filter-mapping>

以上都要注意是否有斜杠“/”



原文出处:http://blog.sina.com.cn/s/blog_7ffb8dd501013hqc.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值