攔截器和過濾器是類似的東西,它們的實作原理相同,但是卻不是同一種東西,過濾器是web容器層面的,而攔截器是像struts2這樣的控制器層面的。struts2本身就通過攔截器進行了諸如:參數注入,類型轉換,…
當然我們也可以自定義攔截器,方法如下:
- 繼承AbstractInterceptor,重寫intercept方法
- 在struts的配置檔案中配置攔截器
1.繼承AbstractInterceptor,重寫intercept方法
這裡模拟了一個登陸驗證的攔截器:通過判斷session裡面是否有userName這個屬性檢驗使用者是否登入過,來限制未登入使用者非法通路系統頁面。 ``` package com.lyu.struts.sysmanage.interceptor;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 5774470426465392583L;
// 重寫intercept方法,攔截器和action業務控制類一樣,也是傳回一個視圖名,在配置檔案中用result配置即可,後面詳解
@Override
public String intercept(ActionInvocation invocation) th