2012-05-07 67 views
0

我已經有一個unaswered問題在這裏,如何以及何時在。做的時候我學到了過濾器時,我們使用servlet的任何網址...如何在過濾器中進行url映射?

今天被附加,另一個疑問發生:

<filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

在這種情況是什麼/ *,如果它意味着它會檢查所有的請求?除了當一個動作被調用時url says: http://..../myapp/register.action..do.action被追加,甚至沒有在映射中提到。請清除這個疑問,如果可能的話還有.do的疑問......

+0

是的,它會檢查所有請求。該映射對於生成URL沒有任何作用。 S2標籤生成完整的URL。 –

回答

1

讓我們試着通過one.The清除以下線的疑慮一個在web.xml

<filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
</filter-mapping> 

是調用S2過濾器的項。行<url-pattern>/*</url-pattern>,告訴容器(tomcat/weblogic等)何時容器應該調用過濾器。 因爲對於S2我們需要做很多初始化工作才能讓你的應用程序工作,所以我們告訴容器每個發送到容器的請求都應該通過S2過濾器。

關於像.action,.do這樣的URL的擴展,這是S2內部的,與您在web.xml中看到的過濾映射無關。

因此,在短期,如果你打像

yourapplication-domian/abc.action 
yourapplication-domian/abc.do 
yourapplication-domian/abc.jsp 

所有上述請求將通過過濾器傳遞,現在一旦他們通過過濾器,S2內部將檢查該網址是有效的S2 URL 網址例如,如果您將擴展名設置爲.action S2將只識別帶有這些擴展名的網址,並將在處理所有網址時處理它們。

希望這會幫助你清除你的疑惑

0

在struts-core jar中找到struts-default.properties在那裏你可以找到這些設置。

您可以提供逗號分隔的列表,

例如, struts.action.extension=action,jnlp,do

struts.action.extension=action (default setting) 
+0

在哪裏可以找到這個文件? struts-core.jar? – Nil

+0

http://struts.apache.org/2.3.1/docs/strutsproperties.html –