如何通过getPathInfo()来映射Servlet以获取额外的路径信息
问题描述:
我遇到了Tomcat将额外路径信息视为servlet名称的一部分的问题。这是在我们的webapp中打破了一堆RESTFul功能(我们使用额外的路径信息而不是?name = value对用于爬虫友好链接)。如何通过getPathInfo()来映射Servlet以获取额外的路径信息
之前它的工作正常,但是在添加显式映射并删除我们以前用于服务我们的servlet的servlet之后,它破坏了。例如,考虑下面的链接:
MyServlet
使用正确调用,和 “/参数1 /参数2 /参数3” 是在HttpServletRequest
返回由getPathInfo()
。现在
,看来Tomcat正在试图加载MyServlet /参数1 /参数2 /参数3作为servlet:
[23 /月/ 2008:16:44:23 -0700]“GET /的servlet/MyServlet /参数1 /参数2 /参数3 HTTP/1.0" 404
这里是他们的定义,并在web.xml中映射,并在击中 方式 “http://mydomain.com/servlet/MyServlet” 工作正常。
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
答
你需要它映射为/ servlet/MyServlet/*
你缺少尾随 “/ *”。