正 文

解析J2EE1.4新特性(2)-Servlet 2.4的新特性


www.7dspace.com  更新日期:2006-2-11 12:16:40  七度空间


3、 Request Dispatcher变化

    Servlet 2.4版的Web程序增强了filter和request dispatcher的配合功能,这样过滤器可以根据请求分发器(request dispatcher)所使用的方法有条件地对Web请求进行过滤。编程者可以通过在web.xml中使用<dispatcher>元素设定过滤器作用的条件(下图1):

图1 设定<dispatcher>元素的过滤器

    *只有当request直接来自客户,过滤器才生效,对应<dispatcher>为REQUEST条件。

    *只有当request被一个请求分发器使用forward()方法转到一个Web构件时(采用<url-pattern>或<servlet-name>定义),对应<dispatcher>称为FORWARD条件。  

    *类似地,只有当request被一个请求分发器使用include()方法转到一个Web构件时(采用<url-pattern>或<servlet-name>定义),对应<dispatcher>称为INCLUDE条件。

    *只有当request被一个请求分发器使用“错误信息页”机制方法转到一个Web构件时,对应<dispatcher>称为ERROR条件。

    *第五种过滤器作用的条件可以是上面四种条件的组合。

下面的程序中的<filter-mapping>定义了当客户请求/icsamples/* 样式的URL时,Security Filter会被用来过滤请求。但是如果到达URL为/icsamples/* 的Web构件的请求是从一个request dispatcher转发过来的,这个过滤器不工作。

    <filter-mapping>

    <filter-name>Security Filter</filter-name>

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

    </filter-mapping>

    如果使用下面的程序设置,在<filter-mapping>中加入<dispatcher>INCLUDE</dispatcher>,Security Filter只有在被一个request dispatcher使用include()方法包括RequestRecorderServlet时才会工作。在其他情况(如请求直接从客户发来,或request dispatcher使用forward方法)下,Security Filter都不会工作。

    <filter-mapping>

    <fliter-name>Security Filter</filter-name>

    <servlet-name>RequestRecorderServlet</servlet-name>

    <dispatcher>INCLUDE</dispatcher>

    </filter-mapping>

    下面的程序设置定义了Security Filter当request由客户直接发出或request

dispatcher使用forward方法时能工作。

     <filter-mapping>

    <filter-name>Security Filter</filter-name>

    <url-pattern>/icsamples/*</uri-pattern>

    <dispatcher>FORWARD</dispatcher>

    <dispatcher>REQUEST</dispatcher>

    </filter-mapping>

5页,页码:[1] [2] [3] [4] [5] 

上一篇:解析J2EE1.4新特性(3)-JDBC3.0的新特性
下一篇:解析J2EE1.4新特性(1)-JSP 2.0的新特性
标题:解析J2EE1.4新特性(2)-Servlet 2.4的新特性 作者:务实 来源:开发者在线
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐