亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Struts2攔截器淺析

難度中級
時長59分
學習人數
綜合評分9.77
231人評價 查看評價
9.9 內容實用
9.7 簡潔易懂
9.7 邏輯清晰
  • 1.定義攔截器 1.1.創建一個攔截器類繼承自AbstractInterceptor類 1.2.實現intercept方法 eg: public String intercept(ActionInvocation invocation) throws Exception { //1.執行action之前 long start=System.currentTimeMillis(); //2.執行下一個攔截器,如果是最后一個攔截器,則執行目標action String result=invocation.invoke(); //3.執行action之后 long end=System.currentTimeMillis(); //4.花費的時間 long time=end-start; System.out.println("執行花費的時間: "+time+" ms"); return result; } 2.配置攔截器 <interceptors> <interceptor name="timeinterceptor" class="com.imooc.interceptor.TimerInterceptor"></interceptor> </interceptors> 3.引用攔截器 <interceptor-ref name="timeinterceptor"></interceptor-ref>
    查看全部
  • 自定義攔截器: 1.方法一:實現Interceptor接口 -void init():初始化攔截器所需資源 -void destroy() :釋放在init()中分配的資源 -String intercept(ActionInvocation ai)throws Exception 實現攔截器功能,利用ActionInvocation參數獲取Action狀態,返回result字符串作為邏輯視圖。 2.方式二:繼承AbstractInterceptor類 -提供了init()和destroy() 方法的空實現 -只需要實現intercept方法即可 實際開發當中一般會去繼承AbstractInterceptor這個父類
    查看全部
  • 客戶端通過HttpServletRequest提交一個請求,這個請求通過一系列的過濾器,最終被Struts2核心控制器過濾到,核心控制器通過ActionMapper決定是否要調用某一個Action ,即用戶是否請求某個Action,Action代理,通過配置管理器加載Strusts核心配置文件,加載Struts.xml ActionProxy創建Action實例(攔截器),調用攔截器,再調用action,調用action中的業務處理方法進行業務處理,同時業務返回一個結果,再次將攔截器反向執行,通過HttpServletResponse響應客戶端請求
    查看全部
  • 再增刪改查過程中,加入關于權限的攔截器
    查看全部
  • 完成權限的校驗
    查看全部
  • 相關代碼——(下): @login.jsp 信息:${session_error} <form action="Login" method="post"><!-- 默認情況下:Login.action或Login都行。 --> 用戶名:<input name="user" type="text" /> 密碼:<input name="pwd" type="password" /> <input value="Login" type="submit" /> </form> @manager.jsp 后臺管理頁面。只有已登錄的用戶才能訪問!
    查看全部
  • 相關代碼——(中): @struts.xml <struts> <package name="default" extends="struts-default" namespace="/"> <!-- 注冊攔截器 --> <!-- Ps:攔截器棧內的攔截器(除了默認攔截器)的name要與攔截器棧外的攔截器要一致,因為引用攔截器棧的時候,里面的攔截器是從外面的攔截器中的class引用的 --> <interceptors> <interceptor name="AuthI" class="com.imooc.interceptor.AuthInterceptor"></interceptor> <!-- 自定義攔截器mystack:組合了defaultStack和AuthI --> <interceptor-stack name="mystack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="AuthI"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 通過此Action訪問后臺管理頁面,需要判斷用戶是否已登錄,如果未登錄則跳轉到登錄頁面 --> <action name="Auth"> <result>/WEB-INF/page/manager.jsp</result> <result name="login">/login.jsp</result> <!-- 引用自定義的攔截器 --> <interceptor-ref name="mystack"></interceptor-ref> </action> <action name="Login" class="com.imooc.action.LoginAction" method="login"> <result>/WEB-INF/page/manager.jsp</result> <result name="error">/login.jsp</result> </action> </package> </struts>
    查看全部
  • 相關代碼——(上): @LoginAction.java public class LoginAction extends ActionSupport implements SessionAware{ private String user; private String pwd; private Map<String,Object> session; public void setSession(Map<String, Object> session) { this.session=session; } // setter/getter... public String login(){ if("admin".equals(user)&&"admin".equals(pwd)){ session.put("session_user", user); return SUCCESS; }else{ session.put("session_error", "用戶名或密碼不正確!"); return ERROR; } } } @AuthInterceptor.java public class AuthInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { ActionContext context=ActionContext.getContext(); Map<String , Object> session=context.getSession(); if(session.get("session_user")!=null){ String result=invocation.invoke(); return result; }else{ return "login"; } } }
    查看全部
  • Struts2內置常用的攔截器: 1.params攔截器: -負責將請求參數設置為Action屬性 2.staticParams攔截器: -將配置文件中action元素的子元素param參數設置為Action屬性 3.servletConfig攔截器: -將源于Servlet API的各種對象注入到Action,必須實現對應接口 4.fileUpload攔截器: -對文件上傳提供支持,將文件和元素設置到對應的Action屬性,實際上內部依然使用了Commons-FileUpload組件。 5.exception攔截器: -捕獲異常,并且將異常映射到用戶自定義的錯誤頁面 6.validation攔截器: -調用驗證框架進行數據驗證 更多的攔截器可在struts2-core包的struts-default.xml中查看
    查看全部
  • 默認攔截器棧: <!-- 為Action顯示引用攔截器后,默認的攔截器defaultStack不再生效,需要手工引用。而且從順序角度去講,最好把默認的攔截器寫在自定義攔截器上面 --> <interceptor-ref name="defaultStack"></interceptor-ref>
    查看全部
  • 1.定義攔截器 1.1.創建一個攔截器類繼承自AbstractInterceptor類 1.2.實現intercept方法 eg: public String intercept(ActionInvocation invocation) throws Exception { //1.執行action之前 long start=System.currentTimeMillis(); //2.執行下一個攔截器,如果是最后一個攔截器,則執行目標action String result=invocation.invoke(); //3.執行action之后 long end=System.currentTimeMillis(); //4.花費的時間 long time=end-start; System.out.println("執行花費的時間: "+time+" ms"); return result; } 2.配置攔截器 <interceptors> <interceptor name="timeinterceptor" class="com.imooc.interceptor.TimerInterceptor"></interceptor> </interceptors> 3.引用攔截器 <interceptor-ref name="timeinterceptor"></interceptor-ref>
    查看全部
  • 相關代碼——(下): @login.jsp 信息:${session_error} <form action="Login" method="post"><!-- 默認情況下:Login.action或Login都行。 --> 用戶名:<input name="user" type="text" /> 密碼:<input name="pwd" type="password" /> <input value="Login" type="submit" /> </form> @manager.jsp 后臺管理頁面。只有已登錄的用戶才能訪問!
    查看全部
  • 相關代碼——(中): @struts.xml <struts> <package name="default" extends="struts-default" namespace="/"> <!-- 注冊攔截器 --> <!-- Ps:攔截器棧內的攔截器(除了默認攔截器)的name要與攔截器棧外的攔截器要一致,因為引用攔截器棧的時候,里面的攔截器是從外面的攔截器中的class引用的 --> <interceptors> <interceptor name="AuthI" class="com.imooc.interceptor.AuthInterceptor"></interceptor> <!-- 自定義攔截器mystack:組合了defaultStack和AuthI --> <interceptor-stack name="mystack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="AuthI"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 通過此Action訪問后臺管理頁面,需要判斷用戶是否已登錄,如果未登錄則跳轉到登錄頁面 --> <action name="Auth"> <result>/WEB-INF/page/manager.jsp</result> <result name="login">/login.jsp</result> <!-- 引用自定義的攔截器 --> <interceptor-ref name="mystack"></interceptor-ref> </action> <action name="Login" class="com.imooc.action.LoginAction" method="login"> <result>/WEB-INF/page/manager.jsp</result> <result name="error">/login.jsp</result> </action> </package> </struts>
    查看全部
  • 相關代碼——(上): @LoginAction.java public class LoginAction extends ActionSupport implements SessionAware{ private String user; private String pwd; private Map<String,Object> session; public void setSession(Map<String, Object> session) { this.session=session; } //setter/getter... public String login(){ if("admin".equals(user)&&".".equals(pwd)){ session.put("session_user", user); return SUCCESS; }else{ session.put("session_error", "用戶名或密碼不正確!"); return ERROR; } } } @AuthInterceptor.java public class AuthInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { ActionContext context=ActionContext.getContext(); Map<String , Object> session=context.getSession(); if(session.get("session_user")!=null){ String result=invocation.invoke(); return result; }else{ return "login"; } } }
    查看全部
  • 下面是4個開發模式常用配置的簡介--- <!-- 開啟使用開發模式,詳細錯誤提示 --> <!-- <constant name="struts.devMode" value="true"/>--> <!-- 指定每次請求到達,重新加載資源文件 --> <!-- <constant name="struts.i18n.reload" value="true"/>--> <!-- 指定每次配置文件更改后,自動重新加載 --> <!-- <constant name="struts.configuration.xml.reload" value="true"/>--> <!-- 指定XSLT Result使用樣式表緩存 --> <!-- <constant name="struts.xslt.nocache" value="true"/>-->
    查看全部

舉報

0/150
提交
取消
課程須知
本課程主要講解Struts2中的攔截器,小伙伴們需要對Struts2基本用法、 Action配置等相關知識有一定的基礎。
老師告訴你能學到什么?
1、攔截器概念、作用 2、Struts2內建的攔截器 3、如何自定義攔截器 4、使用攔截器實現權限控制

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!