struts.xml配置:
<!-- struts2攔截器 -->
<package name="struts2" extends="json-default">
<interceptors>
<!-- 自定義攔截器 -->
<interceptor name="myinterceptor"
class="com.rd.common.util.MyInterceptor">
</interceptor>
<!-- 自定義攔截器棧 -->
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="defaultStack">
</interceptor-ref>
<interceptor-ref name="myinterceptor">
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 將自定義攔截器棧設置默認的攔截器 -->
<default-interceptor-ref name="myDefaultStack">
</default-interceptor-ref>
<!-- 定義全局Result -->
<global-results>
<!-- 當返回login視圖名時,轉入/login.jsp頁面 -->
<result name="login_out">/show_login.jsp</result>
</global-results>
</package>
注意:struts.xml中的攔截器配置好後,如果想使用攔截器,可以讓那個文件夾繼承該文件夾,即extends=”struts2”即可。
攔截器類定義:
package mypackage;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
@SuppressWarnings("serial")
public class MyInterceptor implements Interceptor {
@Override
public void destroy() {
System.out.println("-------銷毀了攔截器-------");
}
@Override
public void init() {
System.out.println("------初始化了攔截器------");
}
@SuppressWarnings("rawtypes")
@Override
public String intercept(ActionInvocation arg0) throws Exception {
ActionContext ctx = arg0.getInvocationContext();
Map session = ctx.getSession();
Integer userId = (Integer) session.get("userid");
if (userId == null) {
ctx.put("tip", "您未登錄,請重新登錄!");
return "login_out";
}
return arg0.invoke();
}
}