這種配置攔截器方式比struts使用注解配置攔截器的方式簡單
配置步驟:
一、先寫一個攔截器,因為我們重點在配置,這裡我寫了個登入攔截器(LoginInterceptor .java),繼承AbstractInterceptor
package com.kaishengit.web.interceptor;
import java.util.Map;
import java.util.Set;
import com.kaishengit.pojo.Employee;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.TextParseUtil;
public class LoginInterceptor extends AbstractInterceptor{
private static final long serialVersionUID = 1L;
private String excludeActionName;//剔除的攔截方法
private String sessionName;//使用者名在session中存放的key值
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String actionName = invocation.getProxy().getActionName();//擷取目前通路的action名字
Set<String> set = TextParseUtil.commaDelimitedStringToSet(excludeActionName);
if(set.contains(actionName)){
return invocation.invoke();
}else{
Map<String, Object> session = invocation.getInvocationContext().getSession();
Employee employee = (Employee) session.get(sessionName);
if(employee == null){
return "login";//沒有登入,跳轉到登入頁
}else{
return invocation.invoke();
}
}
}
//get set
public String getExcludeActionName() {
return excludeActionName;
}
public void setExcludeActionName(String excludeActionName) {
this.excludeActionName = excludeActionName;
}
public String getSessionName() {
return sessionName;
}
public void setSessionName(String sessionName) {
this.sessionName = sessionName;
}
}
二、在struts.xml中配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="myPackage" extends="struts-default">
<interceptors>
<!--配置自己寫的登入攔截器 -->
<interceptor name="loginInterceptor" class="com.kaishengit.web.interceptor.LoginInterceptor"></interceptor>
<!-- 配置一個自己的攔截器棧 -->
<interceptor-stack name="myStack">
<interceptor-ref name="loginInterceptor">
<param name="sessionName">currUser</param>
<param name="excludeActionName">index,login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<global-results>
<result name="login" type="redirectAction">index.php?state=10002</result>
</global-results>
<action name="index" class="com.kaishengit.web.AppAction">
<result>/WEB-INF/views/index.jsp</result>
</action>
....
</package>
</struts>
--end---