2008-09-24 64 views
0

我遇到了Tomcat將額外路徑信息視爲servlet名稱的一部分的問題。這是在我們的webapp中打破了一堆RESTFul功能(我們使用額外的路徑信息而不是?name = value對用於爬蟲友好鏈接)。如何通過getPathInfo()來映射Servlet以獲取額外的路徑信息

之前它的工作正常,但是在添加顯式映射並刪除我們以前用於服務我們的servlet的servlet之後,它破壞了。例如,考慮下面的鏈接:

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

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> 

回答

2

你需要它映射爲/ servlet/MyServlet/*

你缺少尾隨 「/ *」。