`
robinsoncrusoe
  • 浏览: 745676 次
  • 性别: 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
分享到:
评论

相关推荐

    xml里filter-mapping中的dispatcher的使

    而在配置过滤器时,XML文件中的`filter-mapping`元素及其子元素`dispatcher`扮演着至关重要的角色。 #### filter-mapping元素概述 `filter-mapping`元素用于定义过滤器的应用范围。在Web应用中,一个过滤器可以被...

    最详细的servlet配置文件说明书

    **定义**: 给出安全角色的一个列表,这些角色将出现在`servlet`元素内的`security-role-ref`元素的`role-name`子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。 **示例**: ```xml &lt;security-role&gt; ...

    Servlet的WEB工程配置文件说明

    - **`&lt;servlet-mapping&gt;`元素**用于将Servlet映射到特定的URL模式上,从而决定了Servlet处理哪些客户端请求。 - 在实际开发中,开发者需要根据具体的应用需求来配置这些元素,以实现所需的功能。 通过以上解析,...

    虚拟目录及servlet测试.txt

    &lt;servlet-mapping&gt; &lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt; &lt;url-pattern&gt;/helloworld&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; ``` 3. **测试部署**: - 启动Tomcat服务器。 - 通过浏览器访问`...

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

    &lt;/servlet-mapping&gt; ``` #### 11. `session-config`元素 `session-config`元素用于配置与HTTP会话相关的设置,如超时时间。DTD定义如下: ```xml &lt;!ELEMENT session-config (session-timeout?)&gt; &lt;!ELEMENT ...

    Servlet开发[参考].pdf

    这是因为`javax.servlet`包及其子包位于`servlet-api.jar`中。 ```shell // 设置CLASSPATH环境变量 set CLASSPATH=%CATALINA_HOME%\lib\servlet-api.jar;%CLASSPATH% // 编译命令 javac -d . HelloServlet....

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

    &lt;/servlet-mapping&gt; ``` 9. **`session-config`元素** - 配置会话管理。 ```xml &lt;session-config&gt; &lt;session-timeout&gt;30&lt;/session-timeout&gt; &lt;/session-config&gt; ``` 10. **`error-page`元素** - 指定错误...

    tomcat文档

    这些组件及其配置信息主要保存在`&lt;CATALINA_HOME&gt;/conf/server.xml`文件中,每个组件都有对应的XML配置元素。下面通过示例简要介绍Tomcat的基本组件及其相互关系: ```xml &lt;Server&gt; &lt;Service&gt; &lt;Connector/&gt; ...

    关于web.xml配置文件记录.docx

    - `&lt;servlet-name&gt;`:指定过滤器应用的Servlet名称。 - **示例**: ```xml &lt;filter&gt; &lt;filter-name&gt;myFilter&lt;/filter-name&gt; &lt;filter-class&gt;com.example.MyFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; ...

    Servlet

    -- 省略&lt;servlet-mapping&gt;部分 --&gt; &lt;/web-app&gt; ``` 在上述配置中,`&lt;init-param&gt;`元素用于定义Servlet的初始化参数,这些参数在Servlet初始化阶段可以被读取和使用;`&lt;load-on-startup&gt;`元素指定Servlet的加载...

    web.xml详解(txt)

    ##### 2.9 `&lt;servlet-mapping&gt;` - **定义**:将servlet映射到特定的URL路径。 - **用途**:指定哪些URL模式将调用指定的servlet。 - **属性**: - `servlet-name`:与之关联的servlet名称。 - `url-pattern`:...

    web.xml的详解

    3. **`&lt;servlet-mapping&gt;`元素**:为Servlet定义URL映射,即客户端通过哪个URL可以访问到该Servlet。 - **子元素**: - `&lt;servlet-name&gt;`:与`&lt;servlet&gt;`元素中的名称相匹配。 - `&lt;url-pattern&gt;`:客户端请求的...

    XML配置详解

    - **`&lt;security-role&gt;`**:定义了安全角色列表,这些角色将在servlet元素内的`&lt;security-role-ref&gt;`元素的`role-name`子元素中引用。 - **`&lt;env-entry&gt;`**:声明Web应用的环境项,例如JNDI条目等。 - **示例**: ``...

    Struts.xml配置文件详细介绍

    如果ActionForm需要进行表单验证,可以通过`form-property`子元素来配置属性,包括`name`(属性名)、`type`(属性类型)以及可选的`initial`(初始值)属性。 3. **global-exceptions元素** global-exceptions...

    web.xml文件详解

    `&lt;servlet&gt;`标签用于配置Servlet实例,它包含两个子标签:`&lt;servlet-name&gt;`和`&lt;servlet-class&gt;`。其中`&lt;servlet-name&gt;`定义了Servlet的名称,而`&lt;servlet-class&gt;`指定了实现Servlet的类的全限定名。例如: ```xml ...

    spring mvc

    - 这个元素告诉Spring扫描指定包及其子包,寻找带有`@Controller`注解的类,并将它们作为bean进行管理。 3. `&lt;mvc:annotation-driven&gt;`(通常也会包含,但此处未提供): - 这个元素启用Spring MVC对注解驱动的...

    spring security 参考手册中文版

    &lt;pins&gt;的子元素 290 41.1.10 &lt;pin&gt; 291 &lt;pin&gt;属性 291 &lt;pin&gt;的父元素 291 41.1.11 &lt;content-security-policy&gt; 291 &lt;content-security-policy&gt;属性 291 &lt;content-security-policy&gt;的父元素 291 41.1.12 &lt;referrer-...

Global site tag (gtag.js) - Google Analytics