http://blog.csdn.net/caoxu1987728/article/details/2757877
当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了,其匹配规则和顺序如下:
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?后面会讲)。
在web.xml文件中,以下语法用于定义映射:
·以”/’开头和以”/*”结尾的是用来做路径映射的。
·以前缀”*.”开头的是用来做扩展映射的。
·“/”是用来定义default servlet映射的。
·剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action
所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。
对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。
【】
相关推荐
JavaWeb开发技术-实现Servlet虚拟路径的映射 ...实现Servlet虚拟路径的映射需要了解Servlet的多重映射、Servlet映射路径中使用通配符、缺省Servlet等概念,并遵循正确的步骤来配置Servlet的映射路径。
Servlet 虚拟路径映射配置详解 Servlet 虚拟路径映射配置详解是指在 Servlet 中配置虚拟路径映射,以便客户端可以访问 Servlet。本文将详细介绍 Servlet 虚拟路径映射配置的详细信息。 1. 配置虚拟路径映射 在 ...
**百度UEditor与Tomcat虚拟路径映射详解** 在Web开发中,静态资源的管理是一项重要的任务,尤其在大型项目中,为了优化服务器性能和结构,通常会使用虚拟路径映射来处理静态文件,如图片、CSS样式表、JavaScript...
Servlet的虚拟路径映射是Web应用开发中一个关键的概念,主要涉及到如何通过HTTP请求来访问服务器上的Servlet。在Java Web开发中,Servlet是处理HTTP请求的Java类,它需要通过特定的URL路径来被客户端(通常是浏览器...
在上一篇中我们初识了Servlet,相信... 我们知道,只有给Servlet配置好虚拟路径,客户端才可以进行访问,但是对于Servlet的路径映射,真的只有现在所知的这么简单么? 答案当时是No了,不然怎么会有这篇文章
在探讨“jsp+servlet路径状态的测试”这一主题时,我们深入分析了在JSP与Servlet环境下,不同路径(绝对路径与相对路径)在页面跳转过程中的表现及其对资源定位的影响。本测试旨在理解并优化JSP页面之间的跳转机制,...
在Java Web开发中,路径映射是至关重要的一个环节,它允许我们定义应用程序中的URL与实际资源之间的对应关系。在本篇文章中,我们将探讨如何进行JSP路径映射操作,以便能够正确访问放置在`WEB-INF`文件夹下的JSP页面...
Servlet路径涉及到表单提交、请求转发、URL映射以及资源访问等多个方面。以下是对这些知识点的详细解释: 1. **表单提交路径**: - 在HTML表单中,`action`属性用于指定表单提交的目标。若使用相对路径(如`abc.do...
这将把`MyServlet`映射到URL路径`/myservlet`上。 3. **Servlet的`doGet()`和`doPost()`方法** 大多数HTTP请求是GET或POST,因此Servlet提供了这两个方法。`doGet()`处理GET请求,`doPost()`处理POST请求。在这个...
5. **Servlet配置**:Servlet的配置通常在web.xml文件中进行,包括Servlet的注册、映射URL、设置初始化参数等。例如,`<servlet>`、`<servlet-mapping>`标签用于定义Servlet及其映射。 6. **Servlet上下文**:...
Servlet的访问路径通常是通过URL路径映射来设定的。在`web.xml`中,你可以看到类似这样的配置: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-...
例如,你可以通过以下配置将一个Servlet映射到URL路径: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> ...
最后,我们将配置 web.xml 文件,并将我们的 Servlet 映射到 "/hello" 路径下,以便能够在浏览器中访问我们的 Servlet。 本文将指导您如何运行第一个 Servlet,从下载 Tomcat 到编写和部署 Servlet 的每一个步骤。
这里定义了一个名为`myServlet`的Servlet,类名为`com.example.MyServlet`,并将其映射到URL路径`/myPath`。 3. Servlet实例创建 当用户发起匹配Servlet映射的请求时,Servlet容器会根据需要创建Servlet实例。默认...
4. **Servlet配置**:讲解了如何在`web.xml`部署描述符中配置Servlet,包括Servlet的映射路径、初始化参数等。 5. **过滤器(Filter)**:可能涵盖了Servlet Filter的概念,它是如何在请求到达Servlet之前或之后进行...
Servlet通常在`web.xml`部署描述符文件中配置,包括Servlet的映射路径、初始化参数等。例如: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class...
当用户通过浏览器发起HTTP请求,比如访问`http://localhost:8080/servlet_jd0902/hello?name=king`,其中`servlet_jd0902`是应用名,`hello`是Servlet的映射路径,`name`是请求参数,`king`是参数值。这个请求会被...
4. **Servlet配置**:通过在Web应用的`web.xml`部署描述符中定义Servlet,可以指定Servlet的映射路径、初始化参数等。例如,`<servlet>`、`<servlet-mapping>`元素分别用于声明Servlet和映射URL。 5. **过滤器...
7. **web.xml配置**:学习如何配置Servlet的映射路径、初始化参数、过滤器和监听器,理解这些配置对Servlet应用的影响。 8. **MVC模式的应用**:可能包括简单的模型-视图-控制器设计模式,演示如何将业务逻辑、数据...
在web.xml配置文件中,通过`<servlet-mapping>`元素,可以将特定的URL路径映射到Servlet,实现URL到Servlet的路由。 10. **过滤器Filter** Servlet API还包含了Filter接口,允许开发者在请求到达Servlet之前和...