-
在自己配置攔截器的時候,Aciton不會再引用默認的攔截器,這時候需要手動的引入默認的攔截器(一般放在自己設置的攔截器之前)查看全部
-
默認攔截器棧查看全部
-
在struts.xml中配置攔截器:1.在package下面配置攔截器。 2.在action下面引入攔截器查看全部
-
定義計算action時間的攔截器,其中invocation.invoke();方法返回的是Action執(zhí)行結果返回的頁面。查看全部
-
struts的執(zhí)行流程: 1用戶發(fā)送請求到服務器,服務器通過ActionMapper執(zhí)行一系列的過濾器,其中包括struts的核心過濾器StrutsPrepareAndExecuteFilter 2.ActionProxy(Action代理)通過ConfigurationManager(配置管理器)加載struts的核心配置文件struts.xml,找到需要調(diào)用的action返回給action代理 3.然后執(zhí)行Action Invocation,其中包含一個或者多個攔截器,依次執(zhí)行,然后才是執(zhí)行Action,Action返回一個結果決定跳轉到哪個視圖或者是action(result的type屬性決定)。然后依次反向執(zhí)行攔截器,之后將結果反饋給用戶查看全部
-
攔截器的工作原理查看全部
-
攔截器棧查看全部
-
在創(chuàng)建攔截器時需要繼承ActionInterceptor類查看全部
-
struts2 默認攔截器棧查看全部
-
默認攔截器棧 1.在struts-default.xml中定義一個defaulStack攔截器棧,并將其指定為默認攔截器. 2.只要在定義包的過程中繼承struts-default包,那么defaultStack將是默認的攔截器. 3.當為包中的某個action顯式指定了某個攔截器,則默認攔截器不會起作用. 4攔截器棧中的各個攔截器的順序很重要.查看全部
-
攔截器配置: 1.注冊攔截器 <package>標簽下創(chuàng)建<interceptors>標簽 <interceptors>標簽內(nèi)創(chuàng)建<interceptor>子標簽,并給其name屬性賦值 2.引用攔截器 <action>標簽下使用<interceptor-ref>標簽引用,<interceptor-ref>標簽的name屬性值對應攔截其的name查看全部
-
自定義攔截器: 有兩種方式: 方式一:實現(xiàn)Interceptor接口 有三個方法: -void init():初始化攔截器所需資源 -void destroy() :釋放在init()中分配的資源 -String intercept(ActionInvocation ai)throws Exception 實現(xiàn)攔截器功能 利用ActionInvocation參數(shù)獲取Action狀態(tài) 返回result字符串作為邏輯視圖 方式二:繼承AbstractInterceptor類 -提供了init()和destroy() 方法的空實現(xiàn) -只需要實現(xiàn)intercept方法即可 實際開發(fā)當中一般會去繼承AbstractInterceptor這個父類查看全部
-
攔截器工作原理: 攔截器的執(zhí)行過程是一個遞歸的過程。 攔截器的工作原理與web中的過濾器Filter很相似查看全部
-
客戶端通過httpservletrequest向servlet容器,也就是tomcat提交一個請求,這個請求會經(jīng)過一些列的過濾器,如ActionContentClearUp過濾器,最終被struts核心過濾器過濾,也就是FilterDispatcher.從struts2.1.3版本以后struts的核心控制器發(fā)生了變化,變成了PrepqreAndExecuteFiletr,核心過濾器過濾以后,調(diào)用訪問ActionMapping,決定是否調(diào)用某一action,如果用戶請求的是jsp頁面或者是其他資源,不會調(diào)用某一action,如果決定調(diào)用某一action,ActionMapping會將控制權委派給ActionProxy,也叫action代理,此時action代理會通過一個Configuration Manager也就是配置管理器對象加載struts核心配置文件,也就是struts.xml.如果在struts.xml找到需要創(chuàng)建的action,ActionProxy會創(chuàng)建一個Action Invocation實例,action Invocation包括一些列的攔截器和action,先順序執(zhí)行一些列的攔截器,然后執(zhí)行action處理,返回一個結果,通過result返回一個視圖或者調(diào)用另外某個action.當返回這個視圖以后,將之前執(zhí)行過的攔截器反向執(zhí)行一遍,然后通過response響應客戶端的請求.查看全部
-
自定義攔截器: 有兩種方式: 方式一:實現(xiàn)Interceptor接口 有三個方法: -void init():初始化攔截器所需資源 -void destroy() :釋放在init()中分配的資源 -String intercept(ActionInvocation ai)throws Exception 實現(xiàn)攔截器功能 利用ActionInvocation參數(shù)獲取Action狀態(tài) 返回result字符串作為邏輯視圖 方式二:繼承AbstractInterceptor類 -提供了init()和destroy() 方法的空實現(xiàn) -只需要實現(xiàn)intercept方法即可 實際開發(fā)當中一般會去繼承AbstractInterceptor這個父類查看全部
舉報
0/150
提交
取消