在我web.xml
我有這樣的servlet的URL模式:麻煩與web.xml中的URL模式
<url-pattern>/*/myservice</url-pattern>
所以我想用blablabla/myservice
也作爲anyWord/myservice
調用它。
但它不起作用。它只有在我使用以下URL調用它時纔有效:/*/myservice
(在URL中帶有星號)。
在我web.xml
我有這樣的servlet的URL模式:麻煩與web.xml中的URL模式
<url-pattern>/*/myservice</url-pattern>
所以我想用blablabla/myservice
也作爲anyWord/myservice
調用它。
但它不起作用。它只有在我使用以下URL調用它時纔有效:/*/myservice
(在URL中帶有星號)。
你不能那樣做。 根據servlet 2.5規範(和東西都不在本說明書的其他層次,不同的),章節SRV.11.2:
/
字符,並用/*
後綴 結束用於用於路徑映射。*.
前綴開頭的字符串用作擴展名映射。/
字符的字符串表示應用程序的「默認」servlet。在這種情況下,servlet路徑是請求URI減去上下文路徑,並且路徑信息爲空。您的情況屬於第4個項目符號,因此使用精確映射。
爲了規避這種情況,請使用/
(第三種情況)的映射。將所有請求映射到特定的servlet,並讓該servlet將請求重新路由到某種類型的處理程序(其他servlet或某些自定義類)。
例如:
<url-pattern>/</url-pattern>
<servlet-name>MyServlet</servlet-name>
然後,MyServlet
的代碼內,檢查(使用request.getPathInfo()
),您在請求中接收的URL,並使用值將所述請求轉發至其他處理程序。
您可以使用過濾器,而您的網址格式爲/ *,並且在過濾器內部決定您需要的重定向。
<filter>
<display-name>MyFilter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>com.MyfilterClass</filter-class>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</filter>
什麼約兩ULR映射部分?
<servlet-mapping>
<servlet-name>ModifyMemberSVL</servlet-name>
<url-pattern>/ModifyMember</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ModifyMemberSVL</servlet-name>
<url-pattern>/Administration/Add_Member/ModifyMember</url-pattern>
</servlet-mapping>
這將需要OP在每次將新限定符添加到其URL模式時更改其「web.xml」。 – Isaac
嗯,好的,謝謝。但是你可以在我的案例中提出什麼建議? – MyTitle
我寫了我的建議,在編輯。嘗試刷新頁面。 – Isaac