struts2 拦截器interceptor
2015-12-11 15:36
441 查看
1.自定义拦截器
@SuppressWarnings("serial") public class SessionInterceptor extends AbstractInterceptor { private static final Object LOGIN_KEY = "admin"; public static final String LOGIN_PAGE = "loginPage"; @Override public String intercept(ActionInvocation actionInvocation) throws Exception { Map session = actionInvocation.getInvocationContext().getSession(); Admin admin = (Admin) session.get(LOGIN_KEY); if (admin != null) { return actionInvocation.invoke(); } else { return LOGIN_PAGE; } } }
2.配置拦截器
有三种配置方法:
方法1. 普通配置法
<struts> <package name="struts2" extends="struts-default"> <interceptors> <interceptor name="myInterceptor" class="SessionInterceptor"></interceptor> </interceptors> <action name="register" class="edu.hust.action.RegisterAction"> <result name="input">/register.jsp</result> <result>/result.jsp</result> <!-- 在自定义interceptor并将其ref时, 系统会覆盖掉默认的interceptor-stack(defaultStack), 为了保证系统默认的defaultStack不受印象, 我们需要显式的将其引入 --> <!-- 注意两个interceptor-ref的顺序, 顺序不同, 执行效果也不同: 先配置的先执行/后配置的先退出(先进后出) --> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="myInterceptor"></interceptor-ref> </action> </package> </struts>
方法2. 配置拦截器栈
<struts> <package name="struts2" extends="struts-default"> <interceptors> <interceptor name="myInterceptor" class="SessionInterceptor"></interceptor> <interceptor-stack name="myInterceptorStack"> <interceptor-ref name="myInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <action name="register" class="edu.hust.action.RegisterAction"> <result name="input">/register.jsp</result> <result>/result.jsp</result> <interceptor-ref name="myInterceptorStack"></interceptor-ref> </action> </package> </struts>
方法3. 修改默认拦截器,将自定义的拦截器栈定义为struts2的默认拦截器
<struts> <package name="struts2" extends="struts-default"> <interceptors> <interceptor name="myInterceptor" class="SessionInterceptor"></interceptor> <interceptor-stack name="myInterceptorStack"> <interceptor-ref name="myInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 此默认interceptor是针对所有action的 --> <!-- 如果某个action中引入了interceptor, 则在这个action中此默认interceptor就会失效 --> <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref> <action name="register" class="edu.hust.action.RegisterAction"> <result name="input">/register.jsp</result> <result>/result.jsp</result> </action> </package> </struts>
阅读更多
相关文章推荐
- Struts2拦截器(Interceptor)
- Struts2中的(Interceptor)拦截器的执行顺序
- struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
- struts2 拦截器 interceptor
- Struts2拦截器Interceptor学习笔记
- Struts2拦截器(Interceptor)原理详解
- struts2 角色权限 filter(过滤器)和interceptor(拦截器)
- struts2 拦截器 interceptor
- Struts2拦截器(Interceptor)
- struts2的拦截器(3):通过实现Interceptor接口定义自己的拦截器
- Struts2_Interceptor(拦截器)
- struts2 角色权限 filter(过滤器)和interceptor(拦截器)
- struts2 角色权限 filter(过滤器)和interceptor(拦截器)
- struts2中关于拦截器Interceptor中的excludeMethods和includeMethods的理解
- struts2 拦截器 interceptor
- struts2的拦截器(Interceptor)与过滤器(Filter)
- Struts2拦截器(Interceptor)
- Struts2 的核心——拦截器[Interceptor]
- Struts2拦截器(Interceptor)
- Struts2——MethodFilterInterceptor--方法拦截器