Struts2使用11 — 攔截器1 — 概述

來源:互聯網
上載者:User

 

Struts2中提供的很多特性都是通過攔截器實現的,例如異常處理,檔案上傳,生命週期回調與驗證。攔截器從概念上來講和Servlet過濾器或者JDK 的Proxy類是一樣的。它提供了一種對Action進行預先處理和事後處理的功能。和Servlet 過濾器一樣,攔截器可以被分層和排序。它還可以訪問所執行的Action和所有的環境變數與執行屬性。

Struts2內建了大量的攔截器,這些攔截器以name-class對的形式配置在struts-default. xml檔案中,其中name是攔截器的名字,就是以後使用該攔截器的唯一標識;class則指定了該攔截器的實作類別,如果我們定義的package繼承了Struts2的預設struts-default包,則可以自由使用下面定義的攔截器,否則必須自己定義這些攔截器。

讓我們從依賴注入來開始對攔截器的介紹。正如我們已經看到的一樣,依賴注入可以多種不同的實現方式。下面就是對應於不同實現方式的攔截器:

l         Spring 架構——ActionAutowiringInterceptor攔截器

l         請求字串和表單值—— ParametersInterceptor攔截器

l         基於Servlet的對象——ServletConfigInterceptor攔截器

前兩種攔截器可以獨立工作,不需要Action的協助,但是最後一種不同,它是在以下幾種介面的輔助下工作的:

l         SessionAware ——通過Map來提供對所有session屬性的訪問

l         ServletRequestAware——提供對HttpServletRequest對象的訪問

l         RequestAware ——通過Map來提供對所有request屬性的訪問

l         ApplicationAware ——通過Map來提供對所有applicatin屬性的訪問

l         ServletResponseAware ——提供對HttpServletResponse對象的訪問

l         ParameterAware ——通過Map來提供對所有request string和表單資料的訪問

l         PrincipalAware ——提供對PrincipleProxy對象的訪問;該對象實現了HttpServletRequest對象的有關principle 和role的方法,但是它提供了一個Proxy,因此所有的實現都是獨立於Action的。

l         ServletContextAware ——提供對ServletContext對象的訪問

如果要把資料注入到Action中去,那麼對應的資料就需要實現必需的介面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.