2.4版本的servlet规范在部属描述符中新增加了一个<dispatcher>元素,这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>,使得filter将会作用于直接从客户端过来的request,通过forward过来的request,通过include过来的request和通过<error-page>过来的request。如果没有指定任何< dispatcher >元素,默认值是REQUEST。可以通过下面几个例子来辅助理解。
例1:
<filter-mapping>
<filter-name>Logging Filter</filter-name>
<url-pattern>/products/*</url-pattern>
</filter-mapping>
这种情况下,过滤器将会作用于直接从客户端发过来的以/products/…开始的请求。因为这里没有制定任何的< dispatcher >元素,默认值是REQUEST。
例2:
<filter-mapping>
<filter-name>Logging Filter</filter-name>
<servlet-name>ProductServlet</servlet-name>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
这种情况下,如果请求是通过request dispatcher的include方法传递过来的对ProductServlet的请求,则要经过这个过滤器的过滤。其它的诸如从客户端直接过来的对ProductServlet的请求等都不需要经过这个过滤器。
指定filter的匹配方式有两种方法:直接指定url-pattern和指定servlet,后者相当于把指定的servlet对应的url-pattern作为filter的匹配模式
filter的路径匹配和servlet是一样的,都遵循servlet规范中《SRV.11.2 Specification of Mappings》一节的说明
例3:
<filter-mapping>
<filter-name>Logging Filter</filter-name>
<url-pattern>/products/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
在这种情况下,如果请求是以/products/…开头的,并且是通过request dispatcher的forward方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。
分享到:
相关推荐
### servlet-2.4规范详解 #### 一、概述 `Servlet` 规范是 Java Web 开发的基础之一,它定义了服务器端组件(即 Servlet)的标准接口与生命周期,允许开发者构建可移植的 Web 应用程序。Servlet-2.4 规范是 Java ...
以下是基于Servlet 2.4 API的知识点详解: 1. **Servlet接口**:Servlet的核心接口,定义了服务器端程序必须实现的一系列方法,如`init()`, `service()`, `destroy()`,这些方法用于初始化、处理请求和销毁Servlet...
除了基本的功能之外,Servlet 2.4及更高版本还支持以下高级特性: - **Dispatcher Types**:过滤器可以根据不同的请求类型(如REQUEST、FORWARD、INCLUDE或ERROR)进行配置。 - **Filter Chain**:多个过滤器可以按...
`version`属性用于指定`web.xml`规范的版本,2.4是J2EE 1.4标准下的版本。 ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee ...
2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 ...
2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 ...
2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 ...
2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 ...
DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.4//EN" "http://java.sun.com/dtd/web-app_2_4.dtd">`,这里声明的是2.4版本的servlet规范。 `web-app`是`web.xml`的根元素,所有其他...
### Servlet基础教程知识点详解 #### 一、Servlet概述 **1.1 Servlet定义与特点** - **定义**:Servlet是一种基于Java技术的服务器端应用程序,它接收来自客户端的请求,并生成动态的Web页面作为响应。Servlet是...
- **Servlet 1.0**:1996年发布,这是Servlet规范的第一个版本。 - **Servlet 2.0**:1998年发布,引入了过滤器(Filter)的概念。 - **Servlet 2.3**:2000年发布,增加了异步处理能力。 - **Servlet 2.4**:2002年...
- `version`:定义当前Web应用遵循的版本规范。 示例代码: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
在Servlet 2.3规范中,这些子元素需要按照DTD规定的顺序出现,但在Servlet 2.4及以后的版本中,顺序不再重要。每个子元素都有其特定的用途和格式,例如,`servlet`元素包含`servlet-name`和`servlet-class`,分别...
- Servlet 2.4及更高版本则允许子元素的顺序更加灵活。 - `web.xml`文件对于任何Java Web应用程序来说都是必需的,它包含了应用运行所需的必要配置信息。 通过以上详细介绍,我们可以看出`web.xml`文件在Java Web...
在Servlet 2.4及更高版本中,Filter的配置通常在`web.xml`部署描述符中完成。例如,以下代码展示了如何配置一个名为`EncodingFilter`的过滤器: ```xml <filter> <filter-name>EncodingFilter</filter-name> ...
其次,`web-app_2_4.xsd`遵循Servlet 2.4规范,这是Java EE 5之前的版本,尽管现在许多开发都转向了更高级的Servlet规范,但理解`web-app_2_4.xsd`对于维护旧项目或理解历史代码仍然非常有用。在这个版本中,Servlet...
- `<servlet-init-param>`:设置Servlet的初始化参数,类似`context-param`,但只对特定Servlet生效。 7. **过滤器(Filter)** - `<filter>`:定义一个过滤器,包括过滤器名称和实现类。 - `<filter-mapping>`...