这种配置拦截器方式比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---