<interceptors> <!--定义一个名为authority的拦截器--> <interceptor class="com.***.rights.RightInterceptor" name="rightInterceptor"/> <!--定义一个包含权限检查的拦截器栈--> <interceptor-stack name="mydefault"> <!--配置内建默认拦截器--> <interceptor-ref name="defaultStack"/> <!--配置自定义的拦截器--> <interceptor-ref name="rightInterceptor"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="mydefault" /> <!--定义全局Result--> <global-results> <result name="login">Login.jsp</result> <result name="error">/error.jsp </result> </global-results>
import java.util.HashMap; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.ActionContext; public class RightInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { //System.out.println("拦截器开始验证"); try { ActionContext actionContext = ActionContext.getContext(); Map<String,Object> session = actionContext.getSession(); String user=session.get("usercode").toString(); //当前用户session无效且访问的action不是登录action时,执行拦截,跳转 if((user==null || user.equals("")) && !invocation.getAction().getClass().getName().equals("登录action")) { return Action.LOGIN; } } catch(Exception e) { e.printStackTrace(); return Action.LOGIN; } //System.out.println("拦截器通过验证"); return invocation.invoke();//执行访问的action } }