`
robinsoncrusoe
  • 浏览: 736735 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

<servlet-mapping>元素及其子元素

    博客分类:
  • J2EE
阅读更多
<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应用程序所共享。


http://book.51cto.com/art/200808/85023.htm
分享到:
评论

相关推荐

    <hibernate-mapping>

    本书从社会学方面讲解数据分析,是一本难得的数据分析算法书籍,英文版的。

    jsp 注册<servlet>方法说明

    &lt;servlet&gt; &lt;servlet-name&gt;HelloWorldname&lt;/servlet-name&gt; &lt;!-- 此说明该&lt;servlet/&gt; 已经得到了注册名HelloWorldname, 既此servlet已经得到了注册名HelloWorldname, 它与&lt;servlet-mapping/&gt;...&lt;/servlet-mapping&gt;

    web.xml详细说明

    用于 web.xml 配置详解。例如: &lt;web-app&gt; &lt;display-name&gt;&lt;/display-name&gt;定义了...&lt;filter-mapping&gt;&lt;/filter-mapping&gt; 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。

    防止多用户登录同一帐号

    web.xml添加filter: &lt;filter&gt; &lt;filter-name&gt;SingleFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.com.filter.SingleFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;... &lt;/filter-mapping&gt;

    hibernate-mapping参数详解

    hibernate-mapping

    图片验证的SERVLET

    &lt;/init-param&gt;&lt;br/&gt; &lt;init-param&gt;&lt;br/&gt; &lt;param-name&gt;height&lt;/param-name&gt;&lt;br/&gt; &lt;param-value&gt;20&lt;/param-value&gt;&lt;br/&gt; &lt;/init-param&gt;&lt;br/&gt; &lt;/servlet&gt;&lt;br/&gt; &lt;br/&gt; &lt;servlet-mapping&gt;&lt;br/&gt; &lt;servlet-name&gt;checkimage&lt;/...

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet&gt; &lt;servlet-name&gt;dwr-... &lt;servlet-mapping&gt; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;

    xfire的使用详解

    重点位置: &lt;!-- spring 配置文件--&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;classpath:spring/app.xml,classpath:org/codehaus/xfire/spring/... &lt;/servlet-mapping&gt;

    一个在线报名系统

    &lt;servlet-class&gt;servlet.loginServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;loginServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/servlet/loginServlet&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; ...

    基于MyEclipse搭建maven+springmvc整合图文教程(含源码0

    &lt;/servlet-mapping&gt; &lt;/web-app&gt; dispatcher-servlet.xml文件代码 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop=...

    tomcat项目配置php所需jar

    &lt;servlet&gt; &lt;servlet-name&gt;Quercus Servlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.caucho.quercus.servlet.QuercusServlet&lt;/servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;license-directory&lt;/... &lt;/servlet-mapping&gt;

    简单spring MVC 配置

    适合初学者的文档,&lt;web-app&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.... &lt;servlet-mapping&gt; &lt;servlet-name&gt;test&lt;/servlet-name&gt; &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;/web-app&gt;

    jaxrs-api,javax.ws.rs.Path;

    &lt;param-name&gt;resteasy.servlet.mapping.prefix&lt;/param-name&gt; &lt;param-value&gt;/app/service&lt;/param-value&gt; &lt;/context-param&gt; &lt;!--接口管理--&gt; &lt;context-param&gt; &lt;param-name&gt;resteasy.resources&lt;/param-name&gt; ...

    jsp版富文本编辑器fckeditor-java-2.5

    &lt;servlet-mapping&gt; &lt;servlet-name&gt;Connector&lt;/servlet-name&gt; &lt;url-pattern&gt;/fckeditor/editor/filemanager/connectors/*&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; 现在是用servlet 以后就靠大家努力了 呵呵

    jfreechart使用手册

    添加jar包到lib目录下:gnujaxp.jar、iText-2.1.1.jar、jcommon-1.0.13.jar、jfreechart-1.0.10.jar 修改web.xml文件添加如下内容 &lt;servlet&gt; &lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt; ... &lt;/servlet-mapping&gt;

    Axsis and XFire Demo src code

    &lt;servlet-mapping&gt; &lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/servlet/AxisServlet&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt; ...

    ajax框架Dwr的具体使用步骤

    Dwr的使用步骤: 1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet&gt; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; ... &lt;servlet-mapping&gt; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;

    Spring MVC 框架应用实例

    &lt;servlet-mapping&gt; &lt;servlet-name&gt;ideawu&lt;/servlet-name&gt; &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;welcome-file&gt;index.html...

    JSP Web.xml标准配置内容

    &lt;servlet-mapping&gt; &lt;servlet-name&gt;firstservlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/firstservlet&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;!--第三种Servlet,监听器--&gt; &lt;listener&gt; &lt;listener-class&gt;test....

    Web配置详解

    jsp的web.xml配置说明 Web.xml常用元素&lt;web-app&gt;&lt;display-name&gt;&lt;/display-name&gt;定义...&lt;filter-mapping&gt;&lt;/filter-mapping&gt; 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。

Global site tag (gtag.js) - Google Analytics