`
k1121
  • 浏览: 179137 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多

 


Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。 
   

一,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(什么是default servlet?后面会讲)。 

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

      对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一 个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。 
   

二,url-pattern详解 

         在web.xml文件中,以下语法用于定义映射: 

l. 以”/’开头以”/*”结尾的是用来做路径映射的。 

2. 以前缀”*.”开头的是用来做扩展映射的。 

3. “/” 是用来定义default servlet映射的。 

4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action 

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


另外,关于url-pattern映射之后, request的servletContextPath , ServletPath , PathInfo 情况,可参照下面链接的文章

http://blog.csdn.net/cooljia/article/details/187882

分享到:
评论

相关推荐

    web.xml配置文件详解

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

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

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

    servlet url-pattern

    在Web应用程序的部署描述符(web.xml)中,我们通过URL-Pattern来定义Servlet的访问路径,使得当用户通过特定URL发起请求时,服务器知道应该调用哪个Servlet来处理。 在`web.xml`文件中,URL-Pattern的配置方式通常...

    java web项目 web.xml配置详解

    在Java Web开发中,`web.xml`文件是应用的核心配置文件,它定义了Servlet、过滤器、监听器等组件,并负责映射它们的行为。本文将深入解析`web.xml`配置,帮助开发者理解其背后的原理和用途。 一、web.xml文件概述 `...

    用web.xml控制Web应用的行为

    - **命名JSP页面**:JSP页面通常通过`servlet-mapping`中的URL模式进行映射,但在`web.xml`中也可以直接定义,以便控制其访问。 4. **禁止激活器servlet** - **重新映射/servlet/URL模式**:默认情况下,servlet...

    web.xml配置详细说明.txt

    在J2EE应用程序开发中,`web.xml`文件被称为部署描述符,它是应用程序的核心配置文件。这个文件定义了Web应用的结构、行为以及服务器如何处理请求。本文将深入解析`web.xml`配置文件中的各个元素及其用法。 一、web...

    URL-pattern解析

    在`web.xml`中,你可以设置如下的映射规则: ```xml <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/servlet/HelloServlet</url-pattern> </servlet-mapping> ``` 这意味着所有以`...

    web.xml详解(web-app_2_3.dtd)

    在Java Web开发中,`web.xml`是部署描述文件的核心部分,它定义了Web应用程序的各种配置信息。本文将详细解析`web-app_2_3.dtd`中定义的主要元素及其作用,帮助开发者更好地理解和应用这些配置。 #### 1. `icon`...

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

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

    web.xml配置详解

    web.xml 配置详解是指在 Java Web 应用程序中使用的部署描述符配置文件。它是一个 XML 文件,包含了很多描述 servlet/JSP 应用的各个方面的元素,如 servlet 注册、servlet 映射以及监听器注册。 在 web.xml 文件中...

    web.xml_(详解).docx

    【web.xml详解】 `web.xml`是Web应用程序的部署描述符,它是Java EE规范中定义的一个XML文件,...理解并熟练配置`web.xml`对于开发和维护Java Web应用程序至关重要,因为它定义了应用的行为规则和组件之间的交互方式。

    web.xml配置文件详解[文].pdf

    以下是对`web.xml`文件中主要元素的详细解释: 1. `<display-name>`: 这个元素用来指定Web应用的显示名称,通常用于管理和文档化目的。 2. `<description>`: 提供Web应用的简短说明或描述,有助于理解和维护。 3....

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

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

    web.xml详解

    `web.xml`是Java Web应用程序的核心配置文件,它遵循Java EE规范中的定义,用于定义Web应用的组件、监听器、过滤器以及它们之间的映射关系。在这个文件中,你可以配置Servlet、过滤器、会话超时、错误页面、欢迎文件...

    web.xml详细说明

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

    JSP Web.xml标准配置内容

    <url-pattern>/firstservlet</url-pattern> </servlet-mapping> <!--第三种Servlet,监听器--> <listener-class>test.ListenerDemo</listener-class> <!--定义了Web应用程序中会话的超时时限--> ...

    web.xml 文件详解

    在Java Web应用程序中,`web.xml`文件是部署描述符(Deployment Descriptor),它是配置应用核心行为的重要文件。它定义了Servlet、过滤器、监听器、会话超时、错误页面等关键组件,使得开发者可以对Web应用进行定制...

    java/jsp web.xml详解

    在`web.xml`中,你可以定义Servlet类,指定其URL路径和初始化参数。例如: ```xml <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> <servlet-mapping> ...

    Web.xml常用元素

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

    部署描述文件web.xml配置详解.doc

    在Java Web开发中,`web.xml`是一个非常重要的配置文件,它作为Web应用程序的部署描述符,负责管理与应用程序相关的各项配置信息。本文将深入解析`web.xml`的各项元素及其作用,帮助开发者更好地理解并利用这一配置...

Global site tag (gtag.js) - Google Analytics