1.新建拦截器实现MethodFilterInterceptor接口
public class PrivailegeInterceptor extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//获取并打印访问地址
ActionProxy proxy = invocation.getProxy();
String actionName = proxy.getActionName();
String namespace = proxy.getNamespace();
System.out.println("url为"+namespace+actionName);
//1.获得session
Map<String, Object> session = ActionContext.getContext().getSession();
Object session1 = session.get("user");
if(session1!=null){
//2.有就放行
invocation.invoke();
}
//3.没有就回到登录页面 这里注意需要配置全局结果集
return "tolgoin";
}
}
这里注意为什么要继承MethodFilterInterceptor接口 根据源码可以看到 其中定义了excludeMethods不拦截的()方法这样我们更易配置
protected Set<String> excludeMethods = Collections.emptySet();
protected Set<String> includeMethods = Collections.emptySet();
2.在struts配置文件中配置
<package name="Action" namespace="/" extends="struts-default">
<interceptors>
<!-- 注册拦截器 -->
<interceptor name="PrivailegeInteceptor" class="cn/txj/web/Interceptor/PrivailegeInterceptor.java"></interceptor>
<!-- 注册拦截器栈(其中excludeMethods代表不执行的方法名称)-->
<interceptor-stack name="systemInteceptor">
<interceptor-ref name="PrivailegeInteceptor">
<param name="excludeMethods">regist,login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 指定拦截器 -->
<default-interceptor-ref name="systemInteceptor"></default-interceptor-ref>