如何使用getPathInfo()映射Servlet以获取额外的路径信息

时间:2008-09-24 00:15:09

标签: java tomcat rest servlets

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

之前它正常工作,但是在添加显式映射并删除我们以前用于为servlet提供服务的Invoker servlet之后它已经崩溃了。例如,请考虑以下链接:

  

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

MyServlet过去被正确调用,getPathInfo()上的HttpServletRequest返回了“/ param1 / param2 / param3”。

现在,似乎Tomcat正在尝试加载MyServlet / param1 / param2 / param3作为servlet:

  

[23 / Sep / 2008:16:44:23 -0700]“GET   / servlet的/ MyServlet /参数1 / param2的/参数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>

1 个答案:

答案 0 :(得分:2)

您需要将其映射到/ servlet / MyServlet / *

您错过了“/*”。