如何通过getPathInfo()来映射Servlet以获取额外的路径信息

问题描述:

我遇到了Tomcat将额外路径信息视为servlet名称的一部分的问题。这是在我们的webapp中打破了一堆RESTFul功能(我们使用额外的路径信息而不是?name = value对用于爬虫友好链接)。如何通过getPathInfo()来映射Servlet以获取额外的路径信息

之前它的工作正常,但是在添加显式映射并删除我们以前用于服务我们的servlet的servlet之后,它破坏了。例如,考虑下面的链接:

http://mydomain.com/servlet/MyServlet/param1/param2/param3

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/*

你缺少尾随 “/ *”。