1. 程式人生 > >Struts2框架核心之攔截器&標籤庫

Struts2框架核心之攔截器&標籤庫

4、Struts2框架核心之攔截器&標籤庫


上接Struts2與頁面間的資料互動(2)--OGNL表示式&ValueStackhttps://blog.csdn.net/biggerchong/article/details/84573784 

目錄

4、Struts2框架核心之攔截器&標籤庫

4.1 什麼是Struts2的攔截器?

4.2 為什麼使用Struts2的攔截器?

4.3 怎樣使用Struts2的攔截器?

4.3.1 編寫攔截器類

4.3.2 對攔截器進行配置

4.4 Struts2的標籤庫

   4.4.1 通用標籤庫(常用)

4.4.2 UI標籤庫(有爭議)


4.1 什麼是Struts2的攔截器?

Filter

         過濾器,過濾客戶端向伺服器傳送的所有請求。

Interceptor

         攔截器,起到攔截客戶端對Action的訪問;Interceptor是更加細粒度的攔截Action中的具體方法。Interceptor是Struts2中的核心功能,Struts2就是依賴於Interceptor來實現其核心功能的。

InterceptorStruts2中的執行流程:

         客戶端向伺服器傳送一個Action的請求,執行核心過濾器(doFilter方法);

         在doFilter方法中呼叫executeAction()方法;

         在executeAction()內部呼叫dispatcher.serviceAction()方法;

         在dispatcher.serviceAction()內部建立一個Action代理,最終執行的是Action代理中的execute();

         在execute()中呼叫ActionInvocation()的invoke()方法;

         在invoke()中來執行一組攔截器(完成部分功能),再遞迴遍歷其他攔截器;

      當攔截器全部執行完畢,就會執行目標Action,根據Action的返回結果進行頁面跳轉。

以上整體示意圖如下:

 

攔截器這裡只有弄清了其真正原理才能得心應手來操作,這裡先提供一個連結:https://blog.csdn.net/xwnxwn/article/details/7086567,之後等博主本人深入學習Struts2之後會附上詳細解讀Struts2框架的原理系列。 


4.2 為什麼使用Struts2的攔截器?

         Struts2的攔截器是Struts2框架設計的核心所在,利用攔截器可以使我們更加方便的來控制訪問許可權,攔截器比過濾器更加的精確,能夠允許我們直接過濾到指定的Action中的指定Method,使得許可權管理更加合理高效且方便。


4.3 怎樣使用Struts2的攔截器?

4.3.1 編寫攔截器類

         編寫一個類實現Interceptor介面,或者繼承AbstractInterceptor類,或者繼承MethodFilterInterceptor類等;一般我們不使用Interceptor介面的方法,應為這種方法讓我們必須實現Interceptor中的init等無關的方法。

攔截器myInterceptor

攔截器myInteceptor2

 

4.3.2 對攔截器進行配置

定義攔截器來配置

說明:當配置中有global-result時要放在interceptors之後,在action中新增攔截器時不要忘記struts2的預設攔截器defaultStack,一旦我們在action中使用自定義攔截器後struts2預設攔截器就失效了,需要手動配置一下。

 

定義攔截器棧來配置

 

攔截效果圖:


4.4 Struts2的標籤庫

   4.4.1 通用標籤庫(常用)

 

判斷標籤

    <s:if>、<s:elseif>、<s:else>

       

    <s:iterator>

 

其他常用的標籤

 

  1. <s:property/>
  2. <s:debug/>
  3. <s:date />     ---在頁面上進行日期格式化。

 

4.4.2 UI標籤庫(有爭議)

傳統表單標籤:

 

 

UI表單標籤:

 

 

         從傳統表單與UI表單的效果圖對比可知,UI表單佈局更加工整、使用者體驗也更佳,編寫較為方便,但是業界對UI標籤的評價不一,UI標籤的最大優點是支援資料回顯,這是因為UI標籤能自動讀取值棧中相應的資料回顯,而傳統表單則需要自己來手動回顯。


     如果您已經完成博主下的Struts2系列共4篇部落格,恭喜您已經入門struts2框架了,接下來將會更新Struts2實戰之J2EE網購整合,敬請期待!

                                                                                    ----謝謝閱讀!                     ----知飛翀