<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规范编写者决定这样做还是有一些合理的原因支持它?
答案 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样式模式。不支持网址排除模式等等。
至于为什么规范就是这样(现在仍然如此),我不知道。唯一知道的人就是编写规范的人。