<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映射
[/img]
表3-3 实际请求映射的结果
去掉上下文路径的剩余路径
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应用程序所共享。
- 大小: 7.6 KB
- 大小: 8.2 KB
分享到:
相关推荐
WEB.XML标准配置注解: <!--Servlet的映射,用来说明客户端IE中输入什么样的地址字符串对应到哪个Servlet的别名--> <!--在该例中在IE地址栏中firstservlet字符串对应到别名为firstservlet的servlet--> <servlet-...
部署描述文件web.xml详解(web-app_2_3.dtd),全面介绍: 1. icon元素 2. display-name元素 3. description元素 4. distributable元素 5. context-param元素 6. filter元素 7. filter-mapping元素 8. ...
用于 web.xml 配置详解。例如: <web-app> <display-name></display-name>定义了...<filter-mapping></filter-mapping> 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。
<servlet-mapping> <servlet-name>Connector</servlet-name> <url-pattern> /FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector </url-pattern> </servlet-mapping> <servlet-mapping>...
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet> <servlet-name>dwr-... <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern>
<servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> <servlet> <servlet-name>hello</servlet-name> <servlet-class>...
另外在web.xml中配置验证码类的加载: <servlet> <servlet-name>CheckCodeImage</servlet-name> <servlet-class>com.netshop.common.util.CheckCodeImage</servlet-class> </servlet> <servlet-mapping> ...
<servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/servlet/loginServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>registerServlet</servlet-name> <servlet-...
tomcat项目配置php所需的jar包,web.xml配置信息如下: <servlet> <servlet-name>Quercus Servlet</servlet-name> <servlet-class>... </servlet-mapping>
修改web.xml文件添加如下内容 <servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <servlet-mapping> <servlet-name>...
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>account</servlet-name> <url-...
/WEB-INF/database.xml /WEB-INF/applicationContext.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class>...
web.xml 中定义了一个名为 annomvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在 WEB-INF/annomvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。annomvc-servlet.xml 的配置内容如下所示: <?xml...
</servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name>...
*/WEB-INF/<servlet name>-servlet.xml,其中<servlet name>由servlet的名字替换--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml </param...
Dwr的使用步骤: 1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet> <servlet-name>dwr-invoker</servlet-name> ... <servlet-mapping> <servlet-name>dwr-invoker</servlet-name>
<servlet-mapping> <servlet-name>CXFService</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> 3.applicationContext-server.xml配置服务提供接口 <!-- 注意下面的address,这里的address...
这个文件是我从Struts2老版本中摘出来的FreemarkerServlet,将其加入到项目中,然后在web.xml中增加下面的代码即可。 <!-- FreeMarker Servlet --> <servlet> <servlet-name>freemarker</servlet-name> ...
【版本更新说明】 ·Tomcat环境下,修订图片、flash、多媒体以及... <servlet-mapping> <servlet-name>debugjsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> 6、重新启动服务器即可。
serverlet Json commons-beanutils-1.7.0.jar commons-collections-3.2 .jar commons-lang-... <servlet-mapping> <servlet-name>JSON</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>