我对web.xml中servlet mapping的结构感到困惑,虽然我能够执行它,但我正在尝试弄清楚为什么部署描述符中会有这样的模式。
<web-app>
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-path>foo.Servlet</servlet-path>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/enroll</url-pattern>
</servlet-mapping>
</web-app>
就我所理解的来看,每当一个请求到达 "/enroll" 的 url-pattern 时,servlet 容器会将 servlet-name 与 url-pattern 进行匹配,并尝试找到相应的 servlet-path,然后将控制权转发给 foo.Servlet。因此基本上会有两个阶段,一个是查找 servlet-name,另一个是查找 servlet-path。我的问题是,如果容器被设计成以下方式
<web-app>
<servlet>
<servlet-name>foo.Servlet</servlet-path>
<url-pattern>/enroll</url-pattern>
</servlet>
</web-app>
如果我们采用以下方法,会有什么缺点?这样做不是更有效率,响应时间也更快吗?
web.xml
文件并在内存中创建它的表示形式。这比每次请求到来时都读取web.xml
要快得多。 - Piotr Nowicki