亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts2學習筆記(十)——自定義攔截器

2019-11-15 00:55:38
字體:
來源:轉載
供稿:網友
Struts2學習筆記(十)——自定義攔截器

Struts2攔截器是基于AOP思想實現的,而AOP的實現是基于動態代理。Struts2攔截器會在訪問某個Action之前或者之后進行攔截,并且Struts2攔截器是可插拔的;Struts2攔截器棧就是將攔截器按照順序連接在一起的鏈,當滿足攔截的要求時,則會按照實現聲明的順序依次執行攔截器。

1、Struts2自定義攔截器介紹

Struts2所有攔截器都必須實現Interceptor接口,Interceptor接口主要有3個方法:

  • init():初始化方法,只在攔截器加載時執行一次
  • intercept(ActionInvocation invocation):攔截器執行方法,每一次請求就執行一次
  • destory():銷毀方法,只在攔截器釋放時執行一次

AbstractInterceptor抽象類實現了Interceptor 接口。并為init()和destroy()提供了一個空白的實現,所以在實際開發中,自定義攔截器只需要繼承AbstractInterceptor類, 并且實現intercept(ActionInvocation invocation)方法就可以了。

2、Struts2自定義攔截器創建步驟

1).創建一個類實現Interceptor接口或繼承AbstractInterceptor類。 2).重寫intercept方法,這個方法是真正攔截操作,如果想要繼續向下訪問其它攔截器,必須在intercept方法中通過參數ActionInvocation調用invoke方法。 3).配置攔截器,需要在struts.xml文件中配置,分為兩種情況:

  • 為package包下所有<action>配置共用攔截器,需要通過設置<default-interceptor-ref>來設置默認攔截器,需要在<action>之前配置
    • 不配置攔截器棧,只會執行<default-interceptor-ref>設置的攔截器
       1 <package name="default" namespace="/" extends="struts-default"> 2      <interceptors> 3           <interceptor name="login" class="com.sunny.interceptor.LoginIntercept"></interceptor> 4      </interceptors> 5      <default-interceptor-ref name="login"></default-interceptor-ref> 6      <action name="loginAction" class="com.sunny.action.LoginAction"> 7           <result>/success.jsp</result> 8           <result name="error">/error.jsp</result> 9      </action>10 </package>
    • 配置攔截器棧
       1  <package name="default" namespace="/" extends="struts-default"> 2      <interceptors> 3          <interceptor name="login" class="com.sunny.interceptor.LoginIntercept"></interceptor> 4          <interceptor-stack name="my"> 5              <interceptor-ref name="login"></interceptor-ref> 6              <interceptor-ref name="defaultStack"></interceptor-ref> 7          </interceptor-stack> 8       </interceptors> 9       <default-interceptor-ref name="my"></default-interceptor-ref>10       <action name="loginAction" class="com.sunny.action.LoginAction">11           <result>/success.jsp</result>12           <result name="error">/error.jsp</result>13       </action>14  </package>
  • 為package包下某個<action>配置攔截器,需要在<action>中通過設置<interceptor-ref>來設置攔截器,如果想要執行defaultStack,則需要在<action>中配置
    • 不配置攔截器棧
       1 <package name="default" namespace="/" extends="struts-default"> 2     <interceptors> 3         <interceptor name="login" class="com.sunny.interceptor.LoginIntercept"></interceptor> 4     </interceptors> 5     <action name="loginAction" class="com.sunny.action.LoginAction"> 6         <result>/success.jsp</result> 7         <result name="error">/error.jsp</result> 8         <interceptor-ref name="login"></interceptor-ref> 9         <interceptor-ref name="defaultStack"></interceptor-ref>10     </action>11 </package>
    • 配置攔截器棧
       1 <package name="default" namespace="/" extends="struts-default"> 2     <interceptors> 3         <interceptor name="login" class="com.sunny.interceptor.LoginIntercept"></interceptor> 4         <interceptor-stack name="my"> 5             <interceptor-ref name="login"></interceptor-ref> 6             <interceptor-ref name="defaultStack"></interceptor-ref> 7         </interceptor-stack> 8     </interceptors> 9     <action name="loginAction" class="com.sunny.action.LoginAction">10         <result>/success.jsp</result>11         <result name="error">/error.jsp</result>12         <interceptor-ref name="my"></interceptor-ref>13     </action>14 </package>

2、Struts2自定義攔截器實現示例:判斷是否登錄

該示例主要是用來驗證用戶是否登錄,如果沒登錄,就跳轉到error.jsp頁面,提示需要登錄系統。

攔截器類:

 1 public class LoginIntercept extends AbstractInterceptor { 2  3     @Override 4     public String intercept(ActionInvocation invocation) throws Exception { 5         Map session = ServletActionContext.getContext().getSession(); 6         if (session.get("user")==null) { 7             return "error"; 8         } else { 9             return invocation.invoke();10         }11     }12 }

Action類:

 1 public class LoginAction extends ActionSupport { 2     PRivate String name; 3     public String getName() { 4         return name; 5     } 6     public void setName(String name) { 7         this.name = name; 8     } 9     @Override10     public String execute() throws Exception {11         return "success";12     }13 }

struts.xml配置文件:

 1 <struts> 2     <constant name="struts.devMode" value="true" /> 3      4     <package name="default" namespace="/" extends="struts-default"> 5         <interceptors> 6             <interceptor name="login" class="com.sunny.interceptor.LoginIntercept"></interceptor> 7             <interceptor-stack name="my"> 8                 <interceptor-ref name="login"></interceptor-ref> 9                 <interceptor-ref name="defaultStack"></interceptor-ref>10             </interceptor-stack>11         </interceptors>12         <action name="loginAction" class="com.sunny.action.LoginAction">13             <result>/success.jsp</result>14             <result name="error">/error.jsp</result>15             <interceptor-ref name="my"></interceptor-ref>16         </action>17     </package>18 </struts>

input.jsp頁面:

1 <body>2  <form action="${pageContext.servletContext.contextPath}/loginAction.action">3     姓名:<input type="text" name="name"><br>4     <input type="submit" value="提交">5  </form>6 </body>

error.jsp頁面:

1 <body>2 請登錄系統3 </body>

登錄界面:

由于沒有登錄系統,所以點擊提交之后,會顯示:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视屏在线播放| 欧美国产日韩中文字幕在线| 亚洲小视频在线| 98视频在线噜噜噜国产| 色偷偷888欧美精品久久久| 理论片在线不卡免费观看| 91久久精品日日躁夜夜躁国产| 中文字幕日韩欧美在线视频| 国产一区二区三区精品久久久| 久久久亚洲国产| 久热精品视频在线观看| 不卡在线观看电视剧完整版| 97精品伊人久久久大香线蕉| 最近2019中文字幕一页二页| 国产欧美一区二区三区在线看| 亚洲人成欧美中文字幕| 亚洲成人激情视频| 亚洲一区二区福利| 国产综合在线视频| 久久久久国产精品免费网站| 欧美日韩在线免费| 一区二区欧美在线| 亚洲一区免费网站| 青草热久免费精品视频| 欧美亚洲在线观看| 日韩在线激情视频| 亚洲天堂开心观看| 7777免费精品视频| 欧美日韩国产在线看| 原创国产精品91| 91网站免费看| 国产欧美婷婷中文| 热门国产精品亚洲第一区在线| 亚洲第一福利网站| 中文字幕日韩有码| 日本乱人伦a精品| 国产精品美女视频网站| 国产精品欧美一区二区三区奶水| 国产精品三级在线| 日韩精品极品在线观看播放免费视频| 91久久精品国产91性色| 欧美视频二区36p| 在线性视频日韩欧美| 91免费看国产| 成人黄色免费网站在线观看| 精品国偷自产在线视频99| 国产精品小说在线| 国产999在线| 欧美黑人性生活视频| 欧美一区二粉嫩精品国产一线天| 国产欧美精品一区二区| 久久精品国产一区二区电影| 日韩极品精品视频免费观看| 国产亚洲视频在线观看| 亚洲精品日韩丝袜精品| 日韩欧美国产成人| 在线观看日韩www视频免费| 久久视频在线直播| 国产精品亚洲第一区| 国模视频一区二区| 97免费中文视频在线观看| 日韩精品中文字幕视频在线| 亚洲色图17p| 91a在线视频| 精品中文字幕在线| 国产精品视频白浆免费视频| 中文字幕亚洲欧美日韩在线不卡| 九九九久久久久久| 亚洲爱爱爱爱爱| 中文字幕在线观看日韩| 中国人与牲禽动交精品| 欧美成人精品在线视频| 欧美超级乱淫片喷水| 91精品视频在线看| 欧美激情乱人伦一区| 亚洲国产精品久久久久久| 国产精品欧美久久久| 欧美一级成年大片在线观看| 日韩精品在线观看视频| 欧美巨乳在线观看| 久久精品中文字幕电影| 亚洲欧美另类自拍| 久久久精品欧美| 人人做人人澡人人爽欧美| 欧美日本精品在线| 69av在线播放| 97精品视频在线播放| 国产噜噜噜噜噜久久久久久久久| 成人黄色生活片| 中文字幕av日韩| 国产丝袜一区二区三区| 欧美成人精品激情在线观看| 日韩中文在线中文网三级| 亚洲aa中文字幕| 日韩成人中文字幕| 在线播放国产一区二区三区| 国内精品视频久久| 亚洲精品中文字幕有码专区| 国产福利视频一区二区| 81精品国产乱码久久久久久| 正在播放亚洲1区| 一区二区三区美女xx视频| 久久久久久久成人| 中文字幕av一区二区| 久久精品2019中文字幕| 精品国产户外野外| 国内精品小视频在线观看| 中文国产成人精品| 欧美一区二区三区免费观看| 国产精品视频免费在线观看| 2019中文字幕全在线观看| 97久久伊人激情网| 欧美成人在线影院| 日本精品va在线观看| 国产丝袜一区视频在线观看| 91天堂在线观看| 国产精品久久久久久久久久三级| 色噜噜狠狠狠综合曰曰曰88av| 久久久久五月天| 国产精品十八以下禁看| 亚洲成年人在线播放| 狠狠色噜噜狠狠狠狠97| 欧美美最猛性xxxxxx| 国产亚洲一区二区精品| 国产性猛交xxxx免费看久久| 国产成人av在线播放| 亚洲国产古装精品网站| 日韩免费视频在线观看| 国产精品成人va在线观看| 久久久久久久电影一区| 夜夜嗨av色综合久久久综合网| 亚洲国产日韩欧美在线图片| 中文字幕一精品亚洲无线一区| 亚洲国产成人爱av在线播放| 免费99精品国产自在在线| 欧美午夜电影在线| 麻豆国产va免费精品高清在线| 成人免费视频网| 久久久精品久久久久| 色偷偷噜噜噜亚洲男人| 欧美精品videosex性欧美| 国产精品久久久久久久久久小说| 国内精品久久久久| 91av视频在线播放| 亚洲国产欧美一区二区三区久久| 国内久久久精品| 57pao国产精品一区| 精品一区二区三区三区| 欧美性猛交丰臀xxxxx网站| 欧美在线观看日本一区| 国产精品aaaa| 精品性高朝久久久久久久| 午夜精品一区二区三区视频免费看| 国产一区红桃视频| 91九色在线视频| 久久久久久久久久久久av| 亚洲va欧美va在线观看| 亚洲资源在线看| 亚洲一区二区三区乱码aⅴ| 欧美肥老太性生活视频| 国产91露脸中文字幕在线| 91国偷自产一区二区三区的观看方式| 亚洲精品一区av在线播放| 欧美国产日韩xxxxx|