2016-11-24 98 views
0

將請求從一個servlet轉發到另一個時,是否可以使用過濾器?在我的項目的web.xml中,我試過這個過濾器映射:Java:從servlet轉發到servlet時過濾

<filter-mapping> 
    <filter-name>myFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

從servlet到JSP的轉發工作正常。從servlet轉發到servlet不會調用過濾器。我想知道我是否做錯了什麼,或者這是不可能的。

回答

0

它的工作在jsp的情況下,因爲請求去客戶端,然後回到服務器,但在servlet的情況下,它不會重定向到客戶端,所以你的過濾器不會進入圖片。

如果你想然後使用sendRedirect而不是轉發。

檢查以下鏈接,查看差異b/w sendRedirect和轉發。

當您使用SendRedirect容器將請求傳輸到客戶端或瀏覽器時,sendRedirect方法中給出的URL作爲對客戶端的新請求可見。

瞭解更多:http://javarevisited.blogspot.com/2011/09/sendredirect-forward-jsp-servlet.html#ixzz4QvHxSVFF

+0

這是不對的。也可以爲內部轉發調用過濾器。檢查了這一點 - http://stackoverflow.com/questions/32816502/calling-a-filter-before-a-servlet-from-rest-webservice/32816871#32816871 – ramp

+0

你有沒有嘗試過它bcz的問題,他使用相同的鏈接,但它不工作。 – gladiator

+0

是的。爲什麼還會有調度器元素的值爲'FORWARD'和'INCLUDE'。閱讀更多信息1. https://www.ibm.com/support/knowledgecenter/SSD28V_8.5.5/com.ibm.websphere.nd.doc/ae/cweb_sfilt.html 2. https://coderanch.com/t/ 362000/java/Filters-Dispatchers 3. http://otndnld.oracle.co.jp/document/products/as10g/101300/B25221_03/web.1013/b14426/filters.htm#BCFIHAEA – ramp