我遇到了Tomcat將額外路徑信息視爲servlet名稱的一部分的問題。這是在我們的webapp中打破了一堆RESTFul功能(我們使用額外的路徑信息而不是?name = value對用於爬蟲友好鏈接)。如何通過getPathInfo()來映射Servlet以獲取額外的路徑信息
之前它的工作正常,但是在添加顯式映射並刪除我們以前用於服務我們的servlet的servlet之後,它破壞了。例如,考慮下面的鏈接:
MyServlet
使用正確調用,和 「/參數1 /參數2 /參數3」 是在HttpServletRequest
返回由getPathInfo()
。現在
,看來Tomcat正在試圖加載MyServlet /參數1 /參數2 /參數3作爲servlet:
[23 /月/ 2008:16:44:23 -0700]「GET /的servlet/MyServlet /參數1 /參數2 /參數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>