Struts2自定義攔截器
概述
本文簡單介紹如何自定義一個Struts攔截器,但不涉及攔截器基礎、原理等其他知識,僅僅只是介紹自定義攔截器的步驟。本人目前的能力只能如此。我是學習Struts2時寫的這段文字,請帶著懷疑的態度閱讀。
詳細步驟
建立一個Struts2專案
建立一個HelloWorld專案,上一篇已經介紹過了,不贅述。
建立一個攔截器類
建立攔截器類必須要實現一個Interceptor 介面:
public interface Interceptor extends Serializable{
void destroy();
void init();
String intercept(ActionInvocation invocation)
throws Exception;
}
該介面中有3個方法:init(),intercept(),destroy()。init方法是初始化攔截器方法;destroy方法是攔截器清理方法;intercept 是攔截器方法,是實現攔截器功能的主要方法。
本例中攔截器繼承AbstractInterceptor,使用AbstractInterceptor預設的init和destroy方法,建立MyInterceptor類:
package com.xxx.action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class MyInterceptor extends AbstractInterceptor{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
/* let us do some pre-processing */
String output = "Pre-Processing";
System.out.println(output);
/* let us call action or next interceptor */
String result = invocation.invoke();
/* let us do some post-processing */
output = "Post-Processing";
System.out.println(output);
return result;
}
}
簡單的解釋一下,String result = invocation.invoke();這行的作用是:如果還有其他攔截器,則呼叫其他攔截器,如果沒有,那麼就呼叫action方法。也就是說,在 invocation.invoke();之前是在呼叫action之前做的預處理,在 invocation.invoke();之後是對呼叫action後的結果的處理。
配置攔截器
在strtuts.xml中註冊攔截器:
<interceptors>
<interceptor name="myinterceptor" class="com.xxx.action.MyInterceptor"/>
</interceptors>
name是攔截器名,是引用攔截器的標誌,class是攔截器的實現類的路徑。
在<action>標籤下為action配置攔截器:
<action name="hello"
class="com.xxx.action.HelloWorldAction">
<result name="success">/HelloWorld.jsp</result>
<result name="error">/Erro.jsp</result>
<interceptor-ref name="params"></interceptor-ref>
<interceptor-ref name="myinterceptor"></interceptor-ref>
</action>
在<interceptor-ref name="myinterceptor"></interceptor-ref>中填寫正確的攔截器名。
部署到伺服器執行測試
在伺服器中執行即可,最終的專案結構如下:
相關文章
- HandlerInterceptor - 自定義攔截器
- Dubbo自定義日誌攔截器
- Flume內建攔截器與自定義攔截器(程式碼實戰)
- day13-自定義攔截器
- Struts2 ---攔截器的理解
- struts的常用配置以及自定義攔截器
- flume自定義攔截器遇到的問題
- Struts2教程8:攔截器概述
- Struts2攔截器實現原理
- spring boot 新增自定義監聽器、過濾器、攔截器Spring Boot過濾器
- 短視訊開發app,webservice自定義加入攔截器APPWeb
- 【Struts2】:攔截器實現方法過濾
- 自定義攔截器,攔截到了某個請求就返回給前端一個JSON串前端JSON
- SpringBoot自定義攔截器實現IP白名單功能Spring Boot
- Struts2中攔截器的簡單實現
- 攔截器,攔截器棧總結
- 我自定義的攔截器為什麼會靠後執行?
- Struts2 原始碼分析-----攔截器原始碼解析 --- ParametersInterceptor原始碼
- struts2的execAndWait攔截器使用AI
- MyBatis攔截器MyBatis
- Mybatis 攔截器MyBatis
- sql攔截器SQL
- Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高階配置”SpringMVC
- 【Struts2】:自定義Interceptor
- SpringMVC攔截器,設定不攔截的URLSpringMVC
- axios攔截器iOS
- Mybatis Interceptor 攔截器MyBatis
- axios 攔截器iOS
- spring攔截器Spring
- Java interceptor 攔截器Java
- SpringMVC攔截器SpringMVC
- ArkWeb頁面攔截與自定義響應 - 控制載入過程Web
- vue中用axios攔截器攔截請求和響應VueiOS
- SpringMVC-攔截器SpringMVC
- 攔截過濾器模式過濾器模式
- gRPC(3):攔截器RPC
- 【SpringMVC】 4.3 攔截器SpringMVC
- web api新增攔截器WebAPI