2010-12-07 81 views
26

我有一個與servlet映射有關的問題。我在web.xml中有以下:Servlet映射:帶有斜線的URL的url-pattern

<servlet> 
    <servlet-name>HelloWorldServlet</servlet-name> 
    <servlet-class>test.HelloWorldServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>HelloWorldServlet</servlet-name> 
    <url-pattern>/HelloWorld</url-pattern> 
</servlet-mapping> 

如果我訪問http://localhost:<port>/MyApp/HelloWorld這個servlet HelloWorldServlet被調用。

我還希望我的小服務器響應http://localhost:<port>/MyApp/HelloWorld/。我怎樣才能達到這個效果?我正在開發NetBeans,但它不允許我輸入以/結尾的模式。

+0

它不工作嗎? – thejh 2010-12-07 14:19:48

回答

29

你添加上你的通配符後您的<url-pattern>

<url-pattern>/HelloWorld/*</url-pattern> 

你可以通過使用HttpServletRequest.getPathInfo()與URL相關的額外路徑。

E.g.

http://localhost:<port>/MyApp/HelloWorld/one/

其結果將是

/one/ 

根據JavaDoc:

返回具有URL時,提出這個要求客戶端發送 相關的任何額外的路徑信息 。 附加路徑信息跟在 servlet路徑之後,但位於查詢 字符串之前,並以「/」 字符開頭。

7

使用通配符。您可以將轉到特定URL的所有流量重定向到同一個servlet。例如,您可以添加以下內容:

<servlet-mapping> 
    <servlet-name>HelloWorldServlet</servlet-name> 
    <url-pattern>/HelloWorld/*</url-pattern> 
</servlet-mapping> 

這將使用斜槓將URL重定向到您的原始servlet。

一個想法 - 這將重定向到這個URL模式的任何東西到servlet。如果您希望其他URL通過此URL,則應該創建一個將重定向到正確URL的servlet(通過查看指定的URL)。或者,您可以使用爲您提供映射的框架。