我遇到一个问题,其中Tomcat将多余的路径信息视为servlet名称的一部分。这破坏了我们Web应用程序中的RESTFul功能(我们使用额外的路径信息,而不是对爬网程序友好的链接使用?name = value对)。
之前它可以正常工作,但是在添加显式映射并删除了以前用于服务servlet的Invoker
servlet之后,它就崩溃了。例如,考虑以下链接:
http://mydomain.com/servlet/MyServlet/param1/param2/param3MyServlet
曾经被正确地调用过,并且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/