Struts2使用12 — 攔截器2 — 配置

來源:互聯網
上載者:User

 

如果要在Action中啟用依賴注入功能(或其他任何由攔截器提供的功能),就必須要對Action進行配置。和其他元素一樣,許多攔截器都已經提供了預設的配置項。你只需要確認一下Action所在的Package繼承了“struts-default”package。

在配置一個新的攔截器之前,首先要對它進行定義。<interceptors … />和<interceptor … />標籤都要直接放到<package>標籤裡面。像我們上面提到的那些攔截器,它們的配置項就是這樣的:

<interceptors>

       …

       <interceptor name="autowiring"

class="…xwork2.spring.interceptor.ActionAutowiringInterceptor"/>

</interceptors>

我們同時還要確保Action中應用了所需的攔截器。這可以通過兩種方式來實現。第一種是把攔截器獨立的分配給每一個Action:

<action name="my" class="MyAction" >

       <result>view.jsp</result>

       <interceptor-ref name="autowiring"/>

</action>

在這種情況下,Action所應用的攔截器是沒有數量限制的。但是攔截器的配置順序必須要和執行的順序一樣。

第二種方式是在當前的Package下面配置一個預設的攔截器:

<default-interceptor-ref name="autowiring"/>

這個聲明也是直接放在<package … /> 標籤裡面,但是只能有一個攔截器被配置為預設值。

現在攔截器已經被配置好了,每一次Action所映射的URL接到請求時,這個攔截器就會被執行。但是這個功能還是很有限的,因為在大多數情況下,一個Action都要對應有多個攔截器。實際上,由於Struts2的很多功能都是基於攔截器完成的,所以一個Action對應有7、8個攔截器也並不稀奇。可以想象的到,如果要為每一個Action都逐一配置各個攔截器的話,那麼我們很快就會變得焦頭爛額。因此一般我們都用攔截器棧(interceptor stack)來管理攔截器。下面是struts-default.xml檔案中的一個例子:

<interceptor-stack name="basicStack">

    <interceptor-ref name="exception"/>

    <interceptor-ref name="servletConfig"/>

    <interceptor-ref name="prepare"/>

    <interceptor-ref name="checkbox"/>

    <interceptor-ref name="params"/>

    <interceptor-ref name="conversionError"/>

</interceptor-stack>

這個配置節點是放在<package … /> 節點中的。每一個 <interceptor-ref … />標籤都引用了在此之前配置的攔截器或者是攔截器棧。

我們已經看到了如何在Action中應用攔截器,而攔截器棧的用法也是一模一樣的,而且還是同一個標籤:

<action name="my" class="MyAction" >

       <result>view.jsp</result>

       <interceptor-ref name="basicStack"/>

</action>

預設攔截器的情況也是一樣的——只需要把單個攔截器的名字換成攔截器棧的名字就可以了。

<default-interceptor-ref name="basicStack"/>

由上面的種種情況可以得出,當配置初始的攔截器與攔截器棧時,必須要確保它們的名字是唯一的。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.