-
Struts2.1.3以后核心控制器就發生了變化,不再是以前的FilterDispatcher而是StrutsPrepareAndExcuteFilter查看全部
-
在實際應用中,如果要使用多個攔截器,可以自定義一個攔截器棧包含多個攔截器, 在Action標簽中使用時,只需要引用該攔截器棧即可查看全部
-
WEB-INF下的資源默認是不允許被外部直接訪問的 可以通過創建一個默認的action來訪問WEB-INF下的頁面,此action不需要關聯Action類查看全部
-
默認攔截器棧: <!-- 為Action顯示引用攔截器后,默認的攔截器defaultStack不再生效,需要手工引用。而且從順序角度去講,最好把默認的攔截器寫在自定義攔截器上面 --> <interceptor-ref name="defaultStack"></interceptor-ref>查看全部
-
Struts2內置常用的攔截器: 1.params攔截器: -負責將請求參數設置為Action屬性 2.staticParams攔截器: -將配置文件中action元素的子元素param參數設置為Action屬性 3.servletConfig攔截器: -將源于Servlet API的各種對象注入到Action,必須實現對應接口 4.fileUpload攔截器: -對文件上傳提供支持,將文件和元素設置到對應的Action屬性,實際上內部依然使用了Commons-FileUpload組件。 5.exception攔截器: -捕獲異常,并且將異常映射到用戶自定義的錯誤頁面 6.validation攔截器: -調用驗證框架進行數據驗證 更多的攔截器可在struts核心包的struts-default.xml中查看查看全部
-
注冊和使用攔截器: 注意:package里元素必須按照一定的順序排列: result-types interceptors default-interceptor-ref default-action-ref default-class-ref global-results global-exception-mappings action*(所有action放到最后)查看全部
-
自定義攔截器:查看全部
-
自定義攔截器: 方法一: 實現Interceptor接口,三個實現方法: 1.void init():初始化攔截器所需資源; 2.void destroy():釋放在init()中分配的資源; 3.String intercept(ActionInvocation ai)throws Exception:實現攔截器功能、利用ActionInvocation參數獲取Action狀態、返回result字符串作為邏輯視圖 方法二: 繼承AbstractIntercept類:提供了init()和destroy()方法的空實現、只需要實現intercept方法即可查看全部
-
攔截器: Struts2大多數核心功能是通過攔截器實現的,每個攔截器完成某項功能。 攔截器方法在Action執行之前或者之后執行。 攔截器棧: 從結構上看,攔截器棧相當于多個攔截器的組合。 在功能上看,攔截器棧也是攔截器。 攔截器的執行過程是一個遞歸的過程,工作原理類似于過濾器。查看全部
-
客戶端通過httpservletrequest向servlet容器,也就是tomcat提交一個請求,這個請求會經過一些列的過濾器,如ActionContentClearUp過濾器,最終被struts核心過濾器過濾,也就是FilterDispatcher.從struts2.1.3版本以后struts的核心控制器發生了變化,變成了PrepqreAndExecuteFiletr,核心過濾器過濾以后,調用訪問ActionMapping,決定是否調用某一action,如果用戶請求的是jsp頁面或者是其他資源,不會調用某一action,如果決定調用某一action,ActionMapping會將控制權委派給ActionProxy,也叫action代理,此時action代理會通過一個Configuration Manager也就是配置管理器對象加載struts核心配置文件,也就是struts.xml.如果在struts.xml找到需要創建的action,ActionProxy會創建一個Action Invocation實例,action Invocation包括一些列的攔截器和action,先順序執行一些列的攔截器,然后執行action處理,返回一個結果,通過result返回一個視圖或者調用另外某個action.當返回這個視圖以后,將之前執行過的攔截器反向執行一遍,然后通過response響應客戶端的請求.查看全部
-
默認攔截器查看全部
-
Struts2架構查看全部
-
自定義攔截器: 1.方法一:實現Interceptor接口 -void init():初始化攔截器所需資源 -void destroy() :釋放在init()中分配的資源 -String intercept(ActionInvocation ai)throws Exception 實現攔截器功能,利用ActionInvocation參數獲取Action狀態,返回result字符串作為邏輯視圖。 2.方式二:繼承AbstractInterceptor類 -提供了init()和destroy() 方法的空實現 -只需要實現intercept方法即可 實際開發當中一般會去繼承AbstractInterceptor這個父類查看全部
-
默認攔截器棧查看全部
-
自定義攔截器查看全部
舉報
0/150
提交
取消