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

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

  

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

过去,

MyServlet 正确调用,而“/ param1 / param2 / param3”在 HttpServletRequest 上由 getPathInfo()返回。

现在,似乎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>
有帮助吗?

解决方案

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

您缺少尾随的“/ *”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top