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

时间:2020-03-06 14:38:09  来源:igfitidea点击:

我遇到一个问题,其中Tomcat将多余的路径信息视为servlet名称的一部分。这打破了我们Web应用程序中的RESTFul功能(我们使用额外的路径信息,而不是对爬网程序友好的链接使用?name = value对)。

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

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

曾经正确地调用过MyServlet,而HttpServletRequest上的getPathInfo()返回了" / param1 / param2 / param3"。

现在,看来Tomcat正在尝试将MyServlet / param1 / param2 / param3加载为servlet:

[23/Sep/2008:16:44:23 -0700] "GET
  /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 / *

我们缺少结尾的" / *"。