如何使用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 / *
我们缺少结尾的" / *"。