为什么在jsp / servlet中的web.xml(Deployment Descriptor)中使用<servlet-mapping>?</servlet-mapping>

时间:2011-08-03 04:55:50

标签: java jsp servlets

<servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/HelloWorld.do</url-pattern>
</servlet-mapping>

为什么我们在 servlet-mapping 标记内使用 url-pattern 。为什么不在 servlet 标签本身。

这似乎只是一个额外的标签。

是因为servlet / jsp规范编写者决定这样做还是有一些合理的原因支持它?

4 个答案:

答案 0 :(得分:5)

这很可能是因为servlet旨在支持多种协议,而不仅仅是HTTP。 URL模式仅限于HTTP,因此servlet到HTTP URL模式的映射是在servlet-mapping标记中完成的,而不是servlet标记,用于声明更通用的属性。的servlet。

答案 1 :(得分:2)

你可能会尝试编写另一个也链接到同一个servlet的文件,然后你就会知道servlet可以有多个servlet-mapping。

<servlet>
   <servlet-name>Hello</servlet-name>    
   <servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>    
   <servlet-name>Hello</servlet-name>    
   <url-pattern>/HelloWorld.do</url-pattern>
</servlet-mapping>
<servlet-mapping>    
   <servlet-name>Hello</servlet-name>    
   <url-pattern>/HelloWorld2.do</url-pattern>
</servlet-mapping>

答案 2 :(得分:1)

我同意Vineet Reynold的说法,servlet-mapping用于为可用于网络通信的不同协议提供支持。因此,url-pattern标签让servlet了解协议的类型即。 HTTP请求服务。

答案 3 :(得分:0)

标准servlet url模式的局限性和弱点是许多早期MVC框架(Struts等)背后的驱动因素。不支持正则表达式匹配,甚至不支持ant样式模式。不支持网址排除模式等等。

至于为什么规范就是这样(现在仍然如此),我不知道。唯一知道的人就是编写规范的人。