天天看點

Struts2攔截器

簡單了解攔截器 

 攔截器,在AOP中用于在某個方法或字段被通路之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的一種實作政策。

攔截器是動态攔截Action調用的對象。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的代碼,也可以在一個action執行前阻止其執行。同時也是提供了一種可以提取action中可重用的部分的方式。 攔截器鍊,也被稱為攔截器棧。攔截器鍊就是将攔截器按一定的順序聯結成一條鍊。在通路被攔截的方法或字段時,攔截器鍊中的攔截器就會按其之前定義的順序被調用。

Struts 2已經提供豐富多樣的,功能齊全的攔截器實作。具體可以到struts2-core-2.3.16.jar包的struts-default.xml檢視關于預設的攔截器與攔截器鍊的配置。

如果想要使用struts2自帶攔截器,隻需要在應用程式struts.xml檔案中将package中繼承其中的struts-default,然後在action配置中,使用“<interceptor-ref name="xx" />”引用攔截器或攔截器棧。

需要注意: 一旦package繼承了struts-default,該package中所有的action都會調用攔截器棧 ——defaultStack。但是,如果在action配置中加入“<interceptor-ref name=”xx“ />”,預設的defaultStack攔截器棧将不起作用。

這裡測試記錄登入日志的攔截器(使用方法一)----自定義攔截器使用

自定義攔截器的三個方法:

方法一:實作Interceptor接口

方法二:繼承AbstractInterceptor類

方法三:繼承MethodFilterInterceptor類

在struts.xml裡的設定

LoginAction.java 部分代碼;

顯示結果:

Struts2攔截器