【发布时间】:2016-08-22 04:45:04
【问题描述】:
我有一个带有web.xml 的servlet,如下所示:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<welcome-file-list>
<welcome-file>/</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.mydomain.myapp.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/rest1*</url-pattern>
<url-pattern>/rest2*</url-pattern>
<url-pattern>/rest3*</url-pattern>
</servlet-mapping>
</web-app>
最终,servlet 应该支持 REST 调用,例如来自 http://myserver/myapp/rest1?param=1 的 GET。
但是,发生的情况是,所有从浏览器调用以 http://myserver/myapp/ 开头的 URL 显然会导致使用 request.pathInfo() == null 调用 servlet 的 doGet() 方法。
但是,对于给定的url-patterns,URL http://myserver/myapp/rest1?param=1 是否应该不会导致 "/rest1".equals(request.pathInfo()),并且 URL 模式(例如 http://myserver/myapp/foo)是否应该不会导致来自 servlet 的 HTTP 响应 404?
servlet 在 Apache Tomcat 9 上运行。
【问题讨论】: