我在Struts2的Struts 2:有多少次,如果其配置爲一個Action類
有一個問題關於攔截Struts2提供了非常強大的控制使用攔截的請求的機制的攔截器會被調用。攔截器負責大部分請求處理。它們在調用動作之前和之後由控制器調用,因此它們位於控制器和動作之間。攔截器執行任務,如日誌記錄,驗證,文件上傳,雙後衛等提交
我採取這種以上線路由:
http://viralpatel.net/blogs/2009/12/struts2-interceptors-tutorial-with-example.html
在這個例子中,你將看到如何在執行動作之前和之後調用攔截器,以及如何將結果呈現給用戶。
我採取這種以上線路從
http://www.vaannila.com/struts-2/struts-2-example/struts-2-interceptors-example-1.html
我寫了一個基本的攔截器,並將其插入到我的Action類:
public class InterceptorAction implements Interceptor {
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("Action class has been called : ");
return success;
}
}
struts.xml的
<action name="login" class="com.DBAction">
<interceptor-ref name="mine"></interceptor-ref>
<result name="success">Welcome.jsp</result>
<result name="error">Login.jsp</result>
</action>
按從他們的網站上面的陳述,我認爲這條線Action類被稱爲是在控制檯上的兩倍(這是行動Action類之前和之後),但它已被印只有一次?
請讓我知道,如果我的理解是錯誤的,或者作者是錯在該網站?
短版四元數的回答:攔截器不是「兩次調用」,攔截包裹的動作調用,就像一個Servlet過濾器「包圍「一個servlet請求。唯一的「難題」是結果已經由時間控制返回到攔截器呈現出來;如果你想在結果呈現之前做某些事情,你必須實現一個'PreResultListener'。 – 2012-03-31 18:40:24
謝謝戴夫,那是有用的信息。 – Pawan 2012-03-31 19:18:40