代码之家  ›  专栏  ›  技术社区  ›  Peter

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

  •  0
  • Peter  · 技术社区  · 18 年前

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

    它以前工作正常,但在添加显式映射并删除 Invoker

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

    MyServlet 用于正确调用,并且返回了“/param1/param2/param3” getPathInfo() 上 HttpServletRequest

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

    [23/Sep/2008:16:44:23-0700]“获得 /servlet/MyServlet/param1/param2/param3

    以下是它们在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>
    
    1 回复  |  直到 18 年前
        1
  •  2
  •   erickson    18 年前

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

    您缺少尾随的“/*”。