-
攔截器工作原理查看全部
-
struts構(gòu)架: 客戶端通過httpservletrequest向servlet容器,也就是tomcat提交一個請求,這個請求,會經(jīng)過一些列的過濾器,如ActionContentClearUp過濾器,最終被struts核心過濾器過濾,也就是FilterDispatcher從struts2.1.3版本以后struts的核心控制器發(fā)生了變化,變成了PrepqreAndExecuteFiletr,核心過濾器過濾以后,調(diào)用訪問ActionMapping,決定是否調(diào)用某一action,如果action請求的是jsp頁面或者是其他資源,不會調(diào)用某一action,如果決定調(diào)用某一action,ActionMapping會將控制權(quán)委派給ActionProxy,也叫action代理,這是action代理會通過一個Configuration Manager也就是配置管理器對象加載struts核心配置文件,也就是struts.xml。如果在struts.xml找到需要創(chuàng)建的action,ActionProxy會創(chuàng)建一個Action Invocation實例,action Invocation包括一些列的攔截器和action,先順序執(zhí)行一些列的攔截器,然后執(zhí)行action處理,返回一個結(jié)果,通過result返回一個視圖或者調(diào)用另外某個action。當返回這個視圖以后,將之前執(zhí)行過的攔截器反向執(zhí)行一遍,然后通過response響應客戶端的請求。查看全部
-
自定義攔截器的實現(xiàn)方法查看全部
-
默認攔截器棧 1.在struts-default.xml中定義一個defaulStack攔截器棧,并將其指定為默認攔截器. 2.只要在定義包的過程中繼承struts-default包,那么defaultStack將是默認的攔截器. 3.當為包中的某個action顯式指定了某個攔截器,則默認攔截器不會起作用. 4攔截器棧中的各個攔截器的順序很重要.查看全部
-
fileUpload攔截器 對文件愛你上傳提供支持,將文件和元數(shù)據(jù)設(shè)置到對應的Action屬性 exception攔截器 -捕獲異常,并且將異常映射到用戶自定義的錯誤頁面 validation攔截器 調(diào)用驗證框架進行數(shù)據(jù)驗證查看全部
-
Struts2內(nèi)建攔截器 params攔截器 負責將請求參數(shù)設(shè)置為Action屬性 staticParams攔截器 將配置文件中action元素的子元素param參數(shù)設(shè)置為Action屬性 servletConfig攔截器 - 將源于Servlet API的各種對象注入到Action,必須實現(xiàn)對應接口查看全部
-
方式二`: 繼承AbstractInterceptor類 提供了init()和destory()方法的空實現(xiàn) 只需要實現(xiàn)intercept方法即可查看全部
-
如何自定義攔截器 方式一: 實現(xiàn)Interceptor接口 void init() : 初始化攔截器中所需的資源 void destroy(): 釋放在init()中分配的資源 String intercept(ActionInvocation ai) throws Exception 實現(xiàn)攔截器功能 利用ActionInvocation參數(shù)獲得Action狀態(tài) 返回result字符作為邏輯視圖查看全部
-
攔截器的執(zhí)行過程是一個遞歸的過程查看全部
-
攔截器棧 從結(jié)構(gòu)上看,攔截器棧相當于多個攔截器的組合. 從功能上看,攔截器棧也是攔截器.查看全部
-
Struts2大多數(shù)核心功能是通過攔截器實現(xiàn)的,每個攔截器完成某項某項功能. 數(shù)據(jù)轉(zhuǎn)移,類型轉(zhuǎn)換,數(shù)據(jù)校驗 攔截器方法在Action執(zhí)行之前或者之后執(zhí)行.查看全部
-
攔截器棧: 注冊: 在interceptors標簽中注冊,和interceptor注冊好像 <interceptor-stack name=""> <interceptor name=""/> ........ </interceptor-stack> 配置: 和interceptor配置一樣,使用<interceptor-ref>引用 指定默認攔截器或攔截器棧 <default-interceptor-ref>標簽name屬性指定 一般先引用默認攔截器棧,再引用其他攔截器 自定義攔截器棧,在攔截器棧標簽內(nèi)使用interceptor-ref引用其他攔截器或攔截器棧 如: <interceptors> <interceptor name="authInterceptor" class="com.interceptor.AuthInterceptor"></interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="authInterceptor"></interceptor-ref> </interceptor-stack> </interceptors>查看全部
-
攔截器:Interceptor 攔截器的創(chuàng)建: 實現(xiàn)Interceptor接口(實現(xiàn)該接口的init、destory、interceptor方法,init、destory方法可以空實現(xiàn)) 或者繼承AbstractInterceptor抽象類(該類已經(jīng)空實現(xiàn)了init、destory方法,所以只需要實現(xiàn)interceptor方法即可) interceptor方法: 第一次攔截操作; 執(zhí)行下一個攔截器,如果為最終攔截器,則執(zhí)行Action的執(zhí)行方法(invocation.invoke();,//invocation為interceptor方法的ActionInvocation參數(shù)名,invocation.invoke()返回一個string類型的返回值,該值等于action執(zhí)行方法的返回值,可以使用變量result接受) 第二次攔截操作,return result; 攔截器配置: 1.注冊攔截器 <package>標簽下創(chuàng)建<interceptors>標簽 <interceptors>標簽內(nèi)創(chuàng)建<interceptor>子標簽,并給其name屬性賦值 2.引用攔截器 <action>標簽下使用<interceptor-ref>標簽引用,<interceptor-ref>標簽的name屬性值對應攔截其的name查看全部
-
什么是攔截器? struts中很多功能都是通過攔截器實現(xiàn)的,每個攔截器完成某項功能 攔截器在action執(zhí)行之前或者是在action執(zhí)行之后執(zhí)行 什么是攔截器棧? 從結(jié)構(gòu)上看,攔截器棧相當于多個攔截器的組合 從功能上看,攔截器棧也是攔截器 攔截器棧的使用和攔截器使用完全相同 過濾器的執(zhí)行流程和攔截器幾乎一樣查看全部
-
struts構(gòu)架: 客戶端通過httpservletrequest向servlet容器,也就是tomcat提交一個請求,這個請求,會經(jīng)過一些列的過濾器,如ActionContentClearUp過濾器,最終被struts核心過濾器過濾,也就是FilterDispatcher從struts2.1.3版本以后struts的核心控制器發(fā)生了變化,變成了PrepqreAndExecuteFiletr,核心過濾器過濾以后,調(diào)用訪問ActionMapping,決定是否調(diào)用某一action,如果action請求的是jsp頁面或者是其他資源,不會調(diào)用某一action,如果決定調(diào)用某一action,ActionMapping會將控制權(quán)委派給ActionProxy,也叫action代理,這是action代理會通過一個Configuration Manager也就是配置管理器對象加載struts核心配置文件,也就是struts.xml。如果在struts.xml找到需要創(chuàng)建的action,ActionProxy會創(chuàng)建一個Action Invocation實例,action Invocation包括一些列的攔截器和action,先順序執(zhí)行一些列的攔截器,然后執(zhí)行action處理,返回一個結(jié)果,通過result返回一個視圖或者調(diào)用另外某個action。當返回這個視圖以后,將之前執(zhí)行過的攔截器反向執(zhí)行一遍,然后通過response響應客戶端的請求。查看全部
舉報
0/150
提交
取消