struts2 学习总结 ---- 拦截器(interceptor)
2014-07-17 13:15
148 查看
拦截器(interceptor) 拦截器是struts2的核心,struts2的大部份特性都来自于它,通过它实现了struts2功能的可插拔, struts2内置了大量的拦截器: 常用拦截器:
了解更多,可查看 struts 核心包下的 /struts-default.xml 文件
自定义拦截器步骤:创建拦截器
声明拦截器
引用拦截器: 注意:一旦自己引用拦截器,默认的拦截器就不会被使用
拦截器 | 作用 |
params | 将请求中的数据设置 到action的属性上 |
staticParams | 将配置文件中Action元素的param子元素设置到action的属性上 |
servletConfig | 将Servlet API的各种对象注入到Action中,Action必须实现相应接口 |
fileUpload | 将文件和元数据从多重请求转为常规请求,便于设置到Action的属性上 |
validation | 执行数据校验 |
workflow | 当数据校验出错时终止流程 |
exception | 捕获异常,并映射到用户自定义错误页面,它位于最外层 |
自定义拦截器步骤:创建拦截器
<!-- 1,继承AbstractInterceptor --> public class Myintercepter extends AbstractInterceptor { @Override public String intercept(ActionInvocation arg0) throws Exception { Users user = arg0.getInvocationContext().getSession().get("LoinUser"); if(user==null){ return "login"; } return arg0.invoke(); } } <!-- 2,实现Interceptor接口 --> public class Myintercepter implements Interceptor { public void destroy() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } public String intercept(ActionInvocation arg0) throws Exception { Users user = arg0.getInvocationContext().getSession().get("LoinUser"); if(user == null){ return "login"; } return arg0.invoke(); } } <!-- 3,继承MethodFilterInterceptor :可以实现只对相应Action类中的方法进行拦截,只需要在配置拦截器时指定 excludeMethods 或 includeMethods 参数就行--> public class Myintercepter extends MethodFilterInterceptor { @Override public String doIntercept(ActionInvocation arg0) throws Exception { Users user = arg0.getInvocationContext().getSession().get("LoinUser"); if(user == null){ return "login"; } return arg0.invoke(); } }
声明拦截器
<interceptors> <!--声明拦截器--> <interceptor name="aaa" class="aa.bb.ClazzAA"/> <interceptor name="Myintercepter" class="cn.interceptor.Myintercepter"> <param name="excludeMethods">login,regist</param> </interceptor> <interceptor name="bbb" class="aa.bb.ClazzBB"/> <!--声明拦截器栈--> <interceptor-stack name="MyStack"> <interceptor-ref name="aa"/> <interceptor-ref name="bb"/> </interceptor-stack> </interceptors>
引用拦截器: 注意:一旦自己引用拦截器,默认的拦截器就不会被使用
<interceptors> <!--自定义带参拦截器--> <interceptor name="Myintercepter" class="cn.interceptor.Myintercepter"> <param name="excludeMethods">login,regist</param> </interceptor> <!--声明自定义拦截器--> <interceptor name="bbb" class="aa.bb.ClazzBB"/> <interceptor-stack name="MyStack"><!--自定义拦截器栈 --> <interceptor-ref name="Myintercepter"/> <interceptor-ref name="aa"/> <interceptor-ref name="bb"/> </interceptor-stack> </interceptors> <action name="*User" class="action.UserAction" method="{1}"> <interceptor-ref name="basicStack" /><!-- 引入struts内置拦截器栈--> <interceptor-ref name="MyStack" /><!--引入自定义拦截器栈--> <result name="input">{1}.jsp</result> </action>
相关文章推荐
- 【转载】struts2 学习总结 ---- 拦截器(interceptor)
- Struts2拦截器Interceptor学习笔记
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
- 学习struts2建bbs总结三:登录拦截器
- struts2学习dem002_拦截器(interceptor)和tomcat下BASIC认证
- struts2学习笔记之拦截器(Interceptor)
- struts2学习笔记之拦截器(Interceptor)
- Struts2学习总结(八):拦截器
- Struts2拦截器总结学习
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- Struts2 - Struts2的拦截器Interceptor(从零开始学习Strust2_08)
- struts2学习笔记之拦截器(Interceptor)
- struts2第十三讲学习笔记,拦截器interceptor的详细讲解
- struts2表单验证初步及国际化实现(学习总结)
- Struts2拦截器(Interceptor)
- struts2- Interceptor(默认拦截器)介绍
- Struts2拦截器总结
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- Struts2拦截器学习