我遇到一个问题,其中Tomcat将多余的路径信息视为servlet名称的一部分。这破坏了我们Web应用程序中的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]“获取
  / servlet / MyServlet / param1 / param2 / param3
  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 / *

您缺少结尾的“ / *”。

关于java - 如何使用getPathInfo()映射Servlet以获取额外的路径信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/124685/

10-09 22:59