Struts2的核心在于它復(fù)雜的攔截器,幾乎70%的工作都是由攔截器完成的。比如我們之前用于將上傳的文件對應(yīng)于action實例中的三個屬性的fileUpload攔截器,還有用于將表單頁面的http請求參數(shù)設(shè)置成action中對應(yīng)的屬性的param攔截器等??傊?,在整個Struts框架中攔截器的作用是相當(dāng)大的,本篇將從以下幾點詳細(xì)介紹下有關(guān)Struts攔截器的內(nèi)容:

  • 攔截器在Struts中的作用

  • 自定義攔截器實現(xiàn)類

  • 配置攔截器(包含配置默認(rèn)攔截器)

  • 引用攔截器

  • 配置攔截指定方法的攔截器

  • 攔截器的攔截順序

一、攔截器在Struts中的作用
     在我們的web.xml中,我們配置了一個過濾器,實現(xiàn)將所有請求交付StrutsPrepareAndExecuteFilter類。一旦接受到任意action的請求,該類會創(chuàng)建和初始化一個ActionProxy實例,它代理了具體的action,在其中我們可以添加任意攔截器在execute方法執(zhí)行之前和之后做一些額外的操作,最終會調(diào)用該action實例的execute方法,為用戶返回視圖結(jié)果字符串,然后系統(tǒng)會根據(jù)該視圖結(jié)果字符串調(diào)取相應(yīng)的視圖頁面。下圖是攔截器和action之間的關(guān)系:

電腦培訓(xùn),計算機培訓(xùn),平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

這是一種典型的AOP思想,當(dāng)我們在Struts.xml中定義一個包的時候,大部分情況下我們會繼承struts-default文件,所以雖然我們在自己的配置文件中并沒有手動配置任何的攔截器,但是我們創(chuàng)建的action卻被很多攔截器攔截處理,就是因為struts-default中配置的攔截器生效了。Struts中內(nèi)建了很多的攔截器,他們大多被配置在struts-default文件中,詳細(xì)的內(nèi)建攔截器的介紹可以參考官方API,接下來我們看如何自定義一個攔截器。

二、自定義攔截器實現(xiàn)類
     想要實現(xiàn)自己的攔截器類只需要實現(xiàn) com.opensymphony.xwork2.interceptor.Interceptor.Int