作用检查用户是否登录,如果没有登录跳转到登录页面
struts.xml 配置
<package name="struts-shop" extends="struts-default,json-default">
<interceptors>
//配置拦截器,param配置要传递的参数
<interceptor name="LoginInterceptors" class="com.bonc.Interceptor.LoginInterceptor">
<param name="excludeName">login,index</param>
<param name="sessionName">user_session</param>
</interceptor>
//定义拦截器链,拦截器就会按定义的顺序被调用
<interceptor-stack name="myInterceptors">
<interceptor-ref name="LoginInterceptors"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
//这个必须有
<default-interceptor-ref name="myInterceptors" />
//定义错误是跳转的页面
<global-results>
<result name="exp">/view/error.jsp</result>
<result name="login">/view/login.jsp</result>
</global-results>
//定义catch到的错误
<global-exception-mappings>
<exception-mapping result="exp" exception="java.lang.Exception" />
</global-exception-mappings>
</package>
//在下面的package中要继承struts-shop
<package name="login" extends="struts-shop">
</package
拦截器代码实现
package com.bonc.Interceptor;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.bonc.entity.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
private String sessionName;
private String excludeName;
private List<String> list;
public List<String> strList(String str) {
List<String> list = new ArrayList<String>();
if(str != null) {
String[] arr = str.split(",");
for(String s : arr) {
list.add(s);
}
}
return list;
}
public void init() {
list = strList(excludeName);
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String actionName = invocation.getProxy().getActionName();
System.out.println("in intercept actionName is " + actionName);
if(list.contains(actionName)) {
return invocation.invoke();
}
Map<String,Object> session = invocation.getInvocationContext().getSession();
User user = (User) session.get(sessionName);
if(user == null) {
return "login";
} else {
return invocation.invoke();
}
}
public String getSessionName() {
return sessionName;
}
public void setSessionName(String sessionName) {
this.sessionName = sessionName;
}
public String getExcludeName() {
return excludeName;
}
public void setExcludeName(String excludeName) {
this.excludeName = excludeName;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}