web.xml中servlet-mapping的配置(包含/和*的解释与介绍)
来源:互联网 发布:什么打字软件好用 编辑:程序博客网 时间:2024/06/05 13:32
转载地址:https://www.cnblogs.com/Dhouse/archive/2013/10/29/3393927.html
<servlet-mapping>元素在Servlet和URL样式之间定义一个映射。它包含了两个子元素<servlet- name>和<url-pattern>,<servlet-name>元素给出的Servlet名字必须是 在<servlet>元素中声明过的Servlet的名字。<url-pattern>元素指定对应于Servlet的URL路 径,该路径是相对于Web应用程序上下文根的路径。例如:
<servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
Servlet 2.5规范允许<servlet-mapping>的<url-pattern>子元素出现多次,之前的规范只允许一 个<servlet-mapping>元素包含一个<url-pattern>子元素。我们看下面的例子:
<servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>/en/welcome</url-pattern> <url-pattern>/zh/welcome</url-pattern> </servlet-mapping>
在配置了Servlet与URL样式之间的映射后,当Servlet容器接收到一个请求,它首先确定该请求应该由哪一个Web应用程序来响应。这是 通过比较请求URI的开始部分与Web应用程序的上下文路径来确定的。映射到Servlet的路径是请求URI减去上下文的路径,Web应用程序的 Context对象在去掉请求URI的上下文路径后,将按照下面的路径映射规则的顺序对剩余部分的路径进行处理,并且在找到第一个成功的匹配后,不再进行 下一个匹配。
容器试着对请求的路径和Servlet映射的路径进行精确匹配,如果匹配成功,则调用这个Servlet来处理请求。
容器试着匹配最长的路径前缀,以斜杠(/)为路径分隔符,按照路径树逐级递减匹配,选择最长匹配的Servlet来处理请求。
如果请求的URL路径最后有扩展名,如.jsp,Servlet容器会试着匹配处理这个扩展名的Servlet。
如果按照前面3条规则没有找到匹配的Servlet,容器会调用Web应用程序默认的Servlet来对请求进行处理,如果没有定义默认的Servlet,容器将向客户端发送HTTP 404错误信息(请求资源不存在)。
在部署描述符中,可以使用下面的语法来定义映射。
以/开始并且以 /* 结束的字符串用来映射路径,例如:
<url-pattern>/admin/*</url-pattern>
如果没有精确匹配,那么对/admin/路径下的资源的所有请求将由映射了上述URL样式的Servlet来处理。
以 *. 为前缀的字符串用来映射扩展名,例如:
<url-pattern>*.do</url-pattern>
如果没有精确匹配和路径匹配,那么对具有.do扩展名的资源的请求将由映射了上述URL样式的Servlet来处理。
以一个单独的/指示这个Web应用程序默认的Servlet,例如:
<url-pattern>/</url-pattern>
如果对某个请求没有找到匹配的Servlet,那么将使用Web应用程序的默认Servlet来处理。
所有其他的字符被用于精确匹配,例如:
<url-pattern>/login</url-pattern>
如果请求/login,那么将由映射了URL样式/login的Servlet来处理。
下面我们看几个请求映射的例子,如表3-2和表3-3所示。
表3-2 Servlet映射
映射的 URL
对应的 Servlet
/hello
servlet1
/bbs/admin/*
servlet2
/bbs/*
servlet3
*.jsp
servlet4
/
servlet5
表3-3 实际请求映射的结果
去掉上下文路径的剩余路径
处理请求的 Servlet
/hello
servlet1
/bbs/admin/login
servlet2
/bbs/admin/index.jsp
servlet2
/bbs/display
servlet3
/bbs/index.jsp
servlet3
/bbs
servlet3
/index.jsp
servler4
/hello/index.jsp
servlet4
/hello/index.html
servlet5
/news
servlet5
Tomcat在%CATALINA_HOME%\conf\web.xml文件中配置了默认的Servlet,配置代码如下:
<servlet> <servlet-name>default</servlet-name> <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
%CATALINA_HOME%\conf\web.xml文件中的配置将被运行在同一个Tomcat实例中的所有Web应用程序所共享
- web.xml中servlet-mapping的配置(包含/和*的解释与介绍)
- web.xml中servlet-mapping的配置
- web.xml中servlet-mapping的配置
- web.xml中servlet-mapping的配置
- web.xml中servlet-mapping的配置
- web.xml中servlet-mapping的配置
- web.xml中servlet-mapping的配置
- web.xml中servlet-mapping的配置
- Servlet容器Tomcat中web.xml中servlet 和 servlet-mapping 标签的配置
- web.xml中 servlet 和servlet-mapping的排放顺序
- web.xml中servlet-mapping的url-pattern的配置
- web.xml中servlet-mapping的url-pattern的配置
- web.xml中servlet-mapping的url-pattern的配置
- java web中web.xml中<servlet>和<servlet-mapping>的理解
- Servlet 中 web.xml 中的 servlet 和 servlet-mapping 标签
- Tomcat中web.xml配置数据库和servlet的配置
- Shiro在Web.xml中shiroFilter的Mapping配置错误
- Servlet中web.xml的配置解析
- UX设计师可通过这7种途径提升效率
- 最新十大web安全隐患-四年之后,OWASP发布新版本OWASP Top10 2017
- 套接字地址结构笔记----C++网络编程
- mongodb 储存numpy数组
- iOS中imageNamed 和 imageWithContentOfFile的区别
- web.xml中servlet-mapping的配置(包含/和*的解释与介绍)
- React Native适配iphonex的方案
- git怎么从将在master分支上做的修改提交到develop分支
- dvm_lock_sample 解析
- leaflet 集成百度地图小例子(1)
- 编辑器写博客简要指南
- C++ Raw字符串帮助输出任何内容
- 堆”,"栈","堆栈","队列"的区别(转)
- 安装TortoiseSVN SendRpt.exe not found的错误