`

web.xml中servlet和filter的url-pattern映射规则

阅读更多

web.xml中url-pattern的3种写法 

1、精确匹配:

/directory/file1.jsp

/directory/file2.jsp

/directory/file3.jsp

 

2、目录匹配:

/directory/*

 

3、扩展匹配:

*.jsp

 

注意:下面的不支持:

<url-pattern>/direcotry/*.jsp</url-pattern>
<url-pattern>/*.action</url-pattern>
<url-pattern>*</url-pattern>

 为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断

 

 

/和/*之间的区别:

<url-pattern>/</url-pattern>: 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url

<url-pattern>/*</url-pattern>:会匹配所有url:路径型的和后缀型的url(包括/login , *.jsp , *.js 和 *.html 等)

 

servlet容器对url的匹配过程: 

当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,

比如我访问的是 http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉, 剩下的/aaa.html部分拿来做servlet的映射匹配。

这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了(filter不同)。其匹配规则和顺序如下: 

 

1.精确路径匹配。例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。 

 

2.最长路径匹配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。 

 

3.扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action 

 

4.如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。

如果应用定义了一个default servlet,则容器会将请求丢给default servlet。 

 

根据这个规则表,就能很清楚的知道servlet的匹配过程,所以定义servlet的时候也要考虑url-pattern的写法,以免出错。 

 

对于filter,不会像servlet那样只匹配一个servlet,因为filter是一个集合链,所以只会有处理的顺序不同,而不会出现只选择一个filter

Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同

分享到:
评论

相关推荐

    web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序

    ### web.xml文件中配置(servlet, spring, filter, listener)的加载顺序 在Java Web应用开发中,`web.xml`文件是整个Web应用程序的核心配置文件之一,它定义了Servlet容器如何启动、初始化以及配置各个组件如...

    web.xml配置文件详解

    7. **&lt;servlet-mapping&gt;**:用于定义Servlet的映射规则。 - `&lt;servlet-name&gt;`:与`&lt;servlet&gt;`中的名称匹配。 - `&lt;url-pattern&gt;`:指定访问该Servlet的URL模式。 8. **&lt;session-config&gt;**:用于配置HttpSession的...

    web.xml配置汇总(servlet2.3)

    `web.xml`作为Java Web应用程序的核心配置文件,在Servlet 2.3规范中扮演着至关重要的角色。该文件通常位于WEB-INF目录下,用于定义和配置Web应用程序的各种组件和服务。通过深入解析`web.xml`的关键元素和属性,...

    Tomcat中web.xml文件的详细说明

    Tomcat 中的 web.xml 文件是用于配置 Web 应用的核心文件,它定义了 Web 应用的基本信息、Filter、Servlet、Session 等信息。本文将详细介绍 web.xml 文件的结构和各个元素的作用。 1. 文件头部声明 web.xml 文件...

    servlet的url-pattern匹配规则详细描述(小结)

    Servlet的URL-Pattern匹配规则是Web应用程序中Servlet和Filter配置的核心部分,它决定了Servlet或Filter如何响应特定的HTTP请求。以下是对这些匹配规则的详细解释: 1. **精确匹配** - 在`&lt;url-pattern&gt;`中指定的...

    Filter过滤器的代码及其web.xml配置代码

    `&lt;filter-mapping&gt;`则定义了Filter的映射规则,`&lt;url-pattern&gt;`指定哪些URL路径会触发此Filter。 在描述中提到,Filter能很好地解决网页乱码问题。在`doFilter()`方法中,我们通过`setCharacterEncoding()`方法设置...

    struts.xml和applicationContext.xml、web.xml的配置

    在Java Web开发中,`struts.xml`, `applicationContext.xml` 和 `web.xml` 是三个至关重要的配置文件,它们各自负责不同的职责,并协同工作来构建一个完整的应用框架。以下是关于这三个配置文件的详细说明。 首先,...

    Tomcat(二) Tomcat实现:Servlet与web.xml介绍 以及 源码分析Tomcat实现细节1

    在web.xml中,你可以通过`&lt;servlet&gt;`和`&lt;servlet-mapping&gt;`元素定义Servlet。 ```xml &lt;servlet&gt; &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.example.MyServlet&lt;/servlet-class&gt; &lt;/servlet&gt; ...

    web.xml配置详细说明.txt

    `web.xml`文件通常分为三部分:`&lt;web-app&gt;`元素内的全局配置、`&lt;servlet&gt;`元素定义的Servlet和`&lt;servlet-mapping&gt;`元素映射的Servlet。 1. `&lt;web-app&gt;`元素:这是`web.xml`的根元素,包含了所有其他配置。它有一些...

    web.xml 文件详解

    `web.xml`文件主要由两部分组成:`&lt;web-app&gt;`元素内的全局配置和`&lt;servlet&gt;`、`&lt;servlet-mapping&gt;`、`&lt;filter&gt;`、`&lt;filter-mapping&gt;`、`&lt;listener&gt;`等元素定义的特定组件配置。 ```xml &lt;web-app&gt; &lt;!-- 全局配置 --...

    java/jsp web.xml详解

    在Java和JSP开发中,`web.xml`文件是一个至关重要的组成部分,它是Servlet容器(如Tomcat)的部署描述符。这个文件包含了关于Web应用程序的配置信息,包括Servlet的定义、过滤器、监听器、会话配置、MIME类型映射、...

    web.xml文件中各个标签的介绍

    例如:&lt;filter-mapping&gt;&lt;filter-name&gt;CocoSystemAuthFilter&lt;/filter-name&gt;&lt;url-pattern&gt;firstServlet(servlet 名称)&lt;/url-pattern&gt;或者 URL 模式&lt;url-pattern&gt;/*.do(URL 字符串)&lt;/url-pattern&gt;&lt;/filter-mapping&gt; ...

    开发web_xml.rar_WEB XML_java web开发_web.xml_web开发_web

    在`web.xml`中,你可以定义Servlet,包括Servlet的类名、Servlet的URL映射以及初始化参数。例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.example.MyServlet&lt;/servlet-...

    Web.xml常用元素

    `Web.xml`是Java Web应用程序中的核心配置文件,它用于配置应用程序的上下文信息、servlet映射、过滤器、监听器等关键组件。以下是对`Web.xml`中常见元素的详细解析: #### &lt;web-app&gt; - **作用**:根元素,所有...

    SSH和SSI等框架常用基础配置web.xml

    通过对`web.xml`配置文件中各个关键配置项的详细解析,我们可以看出,正确的配置不仅能够提高系统的可维护性和可扩展性,还能有效提升Web应用程序的性能和安全性。在实际开发过程中,开发者应根据项目需求灵活配置...

    web.xml配置详解

    web.xml 配置详解 web.xml 配置详解是指在 ...web.xml 配置详解是 Java Web 应用程序中一个非常重要的配置文件,它包含了很多描述 servlet/JSP 应用的各个方面的元素,对于 Java Web 应用程序的开发和配置非常重要。

    web.xml 2.4详细说明

    在Java Web开发中,`web.xml`文件是核心配置文件之一,它定义了应用程序的行为和结构,是Servlet容器(如Tomcat)运行Web应用程序的基础。本文将深入探讨`web.xml 2.4`版本中的关键节点及其详细说明,帮助开发者更好...

    web.xml详细说明

    `web.xml`是Java Web应用程序中的核心配置文件,用于描述和配置Web应用程序的各种属性、组件及其行为。本文档将详细解析`web.xml`中的各个元素及其功能,帮助开发者更好地理解和使用该文件。 #### 二、常用元素及其...

    JavaWeb Servlet中url-pattern的使用

    `url-pattern`是Servlet在`web.xml`配置文件中的关键元素,它定义了Servlet如何响应特定的URL请求。本篇文章将深入探讨`url-pattern`的使用及其背后的匹配规则。 首先,我们需要了解Servlet和Filter的`url-pattern`...

    web.xml.txt

    `web.xml` 是一个 XML 文件,用于配置 Java Web 应用程序中的各种组件和服务。它是 Java Servlet 规范的一部分,用于指定 Servlet 的配置、过滤器(Filter)、监听器(Listener)以及其他与 Web 应用相关的配置信息。 #...

Global site tag (gtag.js) - Google Analytics