

攔截器的工作原理如圖 攔截器是由每一個action請求(request)都包裝在一系列的攔截器的內部,通過redirectAction再一次發(fā)送請求。
攔截器可以在Action執(zhí)行直線做相似的操作也可以在Action執(zhí)行直后做回收操作。
我們可以讓每一個Action既可以將操作轉交給下面的攔截器,Action也可以直接退出操作返回客戶既定的畫面。
接下來我們該如何定義一個攔截器:
自定義一個攔截器如下:
1、實現(xiàn)Interceptor接口或者繼承AbstractInterceptor抽象類。
2、創(chuàng)建一個Struts.xml文件進行定義攔截器。
3、在需要使用的Action中引用上述定義的攔截器,為了方便也可將攔截器定義為默認的攔截器(<default-interceptor-ref name="myStack"/>),
這樣在不加特殊聲明的情況下所有的Action都被這個攔截器攔截<param name="excludeMethods">loginView,login</param>。
①Interceptor接口聲明三個方法:
public class LoginInterceptor implements Interceptor {
private Map<String,Object> session = null;
public void destroy() { }
public void init() { }
public String intercept(ActionInvocation actionInvocation) throws Exception {
8 Object myAction = actionInvocation.getAction();
if(myAction instanceof UserAction){
System.out.println("你訪問的Action是UserAction,不要校驗Session,否則死循環(huán)");
//放行
return actionInvocation.invoke();
}else{
System.out.println("你訪問的Action是:"+myAction);
}
session = ActionContext.getContext().getSession();
Object user = session.get("user");
if (user!=null){
return actionInvocation.invoke();
}else{
return "login";
}
}
注:該方法可以不加:<param name="excludeMethods">loginView,login</param>
網(wǎng)頁題目:Struts2攔截器關于解決登錄的問題-創(chuàng)新互聯(lián)
鏈接分享:http://www.chinadenli.net/article22/dgeecc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站設計、微信公眾號、商城網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)