JSP(五)


JSP 过滤器

ServletJSP中的过滤器都是Java类,它们存在的目的如下:

 

1.在请求访问后端资源时拦截它 

2.管理从服务器返回给客户端的响应 

下面列出了多种常用的过滤器类型:

1.认证过滤器 

2.数据压缩过滤器 

3.加密过滤器 

4.触发资源访问事件的过滤器 

5.图像转换过滤器 

6.登录和验证过滤器 

7.MIME类型链过滤器 

8.令牌过滤器 

9.转换XML内容的XSL/T过滤器 

过滤器将会被插入进web.xml文件中,然后映射servletJSP文件的名字,或URL模式。部署描述文件web.xml可以在 <Tomcat-installation-directory>\conf 目录下找到。

 

JSP容器启动网络应用程序时,它会创建每一个过滤器的实例,这些过滤器必须在部署描述文件web.xml中声明,并且按声明的顺序执行。

 

Servlet过滤器方法

一个过滤器就是一个Java类,它实现了javax.servlet.Filter 接口。javax.servlet.Filter接口定义了三个方法:

序号

方法 &描述

1

public void doFilter (ServletRequest, ServletResponse, FilterChain) 

每当 request/response要通过过滤链时容器会调用这个方法,因为客户端请求链尾的资源

2

public void init(FilterConfig filterConfig) 

容器调用这个方法来表明一个过滤器被安置在服务中

3

public void destroy() 

容器调用这个方法来表明一个过滤器正在从服务中移除

 

 

 

 

使用多重过滤器

您的网络应用程序可以定义很多不同的过滤器。现在,您定义了两个过滤器,AuthenFilterLogFilter,其它的步骤与前面讲的一样,除非要创建一个不同的映射,就像下面这样:

 

<filter>

   <filter-name>LogFilter</filter-name>

   <filter-class>LogFilter</filter-class>

   <init-param>

  <param-name>test-param</param-name>

  <param-value>Initialization Paramter</param-value>

   </init-param>

</filter>

 

<filter>

   <filter-name>AuthenFilter</filter-name>

   <filter-class>AuthenFilter</filter-class>

   <init-param>

  <param-name>test-param</param-name>

  <param-value>Initialization Paramter</param-value>

   </init-param>

</filter>

 

<filter-mapping>

   <filter-name>LogFilter</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

 

<filter-mapping>

   <filter-name>AuthenFilter</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

 

--------------------------------------------------------------------------------

 

过滤器的应用顺序

web.xml<filter>元素的映射顺序决定了容器应用这些过滤器的顺序。要反转应用的顺序,您只需要反转web.xml<filter>元素的定义顺序就行了。

 

比如,上面的例子会首先应用 LogFilter然后再应用AuthenFilter,但是下面这个例子将会反转应用的顺序:

 

<filter-mapping>

   <filter-name>AuthenFilter</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

 

<filter-mapping>

   <filter-name>LogFilter</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值