-
String result = invocation.invoke(); 這行代碼去執行action并獲得返回結果查看全部
-
使用攔截器進行用戶權限驗證1.創建被訪問的資源如后臺管理頁面manager.jsp將其放到WEB-INF下外部不能直接訪問 2.創建authAction將請求轉發到被訪問資源manager.jsp 3.創建登陸頁面login.jsp接收用戶登錄信息 4.創建loginAction處理登陸請求校驗登錄信息并將有效登陸信息或錯誤信息放到session中 其中有效登錄信息loginInfo用于步驟5攔截器校驗會話信息錯誤信息用于前臺頁面展示 5.創建攔截器authInterceptor對訪問authAction的請求進行攔截處理通過ActionContext獲取會話session并校驗session的登陸信息如果不為空即獲取權限放行否則攔截并轉發到登陸界面 總結如果只是一次登陸的話這里的2和5確實看起來很多余但是這個功能實際是為了多頁面訪問時校驗同一個session下是否有權限因此使用了兩個action進行請求轉發當第一次登陸之后用戶只需要直接訪問authAction就可以訪問到后臺資源無需再次登陸。查看全部
-
攔截器實例(統計Action的執行時間) 在攔截器中的intercept()方法實現攔截操作. 其中System.currentTimeMillis();方法可以記錄當前時刻的時間.單位是毫秒. 在intercept()方法中的ActionInvocation參數有一個invoke()方法,此方法類似過濾器的doFilter()方法.當有下一個攔截器的時候,便會執行下一個攔截器,否則就直接執行Action.此方法返回字符串類型,此字符串是執行Action的方法時的返回值. 只要在intercept()方法中調用 invoke()方法后,如果能成功的調用了對應Action類中的方法,strtus2就會按照該方法的返回值去找對應的result, 從而忽略攔截器的返回值,如果你不調用invoke()方法,那么頁面就會跳轉到你在攔截器中指定的result對應的頁面.這個方式通常用于權限驗證, 當符合權限要求的時候才會調用invoke()方法,執行Action類中的方法,不滿足權限的直接返回錯誤頁面,這是就用到了攔截器中的返回值了.查看全部
-
自定義攔截器: 1.方法一:實現Interceptor接口 -void init():初始化攔截器所需資源 -void destroy() :釋放在init()中分配的資源 -String intercept(ActionInvocation ai)throws Exception 實現攔截器功能,利用ActionInvocation參數獲取Action狀態,返回result字符串作為邏輯視圖。 2.方式二:繼承AbstractInterceptor類 -提供了init()和destroy() 方法的空實現 -只需要實現intercept方法即可 實際開發當中一般會去繼承AbstractInterceptor這個父類查看全部
-
defaultStack,默認攔截器棧,定義在Struts-defaults.xml中,很重要!!查看全部
-
struts-core jar包的struts-defaults.xml中190行左右(Struts2.5)有默認包,內置攔截器定義在這里面查看全部
-
攔截器實現權限控制 1.將資源放到WEB-INF目錄下(禁止直接訪問) 2.使用Action轉發到資源(建立訪問資源的唯一通道) 3.為Action添加攔截器,若權限符合則調用Action并返回其邏輯視圖,否則不調用攔截器,返回一個錯誤的邏輯視圖(如跳轉到登陸頁)查看全部
-
為action顯式指定攔截器后,默認攔截器不起作用,要顯示指定 攔截器引用順序很重要查看全部
-
內建攔截器2查看全部
-
內建攔截器1查看全部
-
3.Action引用攔截器查看全部
-
2.配置文件定義攔截器查看全部
-
1.創建攔截器類 繼承AbstractInterceptor 實現String intercept(ActionInvocation invocation)方法查看全部
-
使用自定義攔截器 1. 創建攔截器類 2.在配置文件中定義攔截器 3.在配置文件中引用攔截器查看全部
-
自定義攔截器方式二:繼承AbstractIntercepter類查看全部
舉報
0/150
提交
取消