Struts2拦截器总结学习
2017-10-23 16:10
387 查看
拦截器(Interceptor)是struts2的核心组成部分。
Struts2很多功能都是构建在拦截器基础之上的 例如文件的上传 下载 国际化 数据类型转换和数据校验等等
Strust2拦截器可以访问某个action方法之前或之后实施拦截
Strust2拦截器是可插拔的 拦截器是AOP(面向切面编程)的一种实现
拦截器栈(Interceptor Stack):将拦截器按一定顺序联结成一条链 在访问被拦截的方法时 Struts2拦截器链中的拦截器就会
按其之前定义的顺序被一次调用
Interceptor接口
每个拦截器都是实现另外com.opensymphony.xwork2.interceptor.Interceptor接口的Java类
init :该方法将在拦截器被创建之后立即被调用 它在拦截器的生命周期内只被调用一次 可以在该方法中对相关资源进行必要的
初始化
intercept:每次拦截一个请求 该方法就会被调用一次
destory:该方法将在拦截器被销毁之前被调用 它在拦截器的生命周期内也只被调用一次
Struts会依次调用为某个action而注册的每一个拦截器的intercept方法
每次调用intercept方法时 Struts会传递一个ActionInvocation接口的实例
ActionInvocation:代表一个给定Action的执行状态 拦截器可以从该类的对象里获得与该Action相关联的Action对象
和result对象 在完成拦截器自己的任务之后拦截器将调用ActionInvocation对象的invoke方法前进到Action处理流程的
下一个环节
AbstraceInterceptor类实现了Interceptor接口 并为init destory提供一个空白实现
如何自定义一个拦截器
1.定义一个拦截器的类
可实现Interceptor接口
继承AbstractInterceptor抽象类
2.在struts.xml文件中配置
<Interceptors>
<interceptor name="hello" class="自定义拦截器类">
</Interceptors>
<action name="testToken" class="自定义Action">
<interceptor-ref name="hello"><interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result>/success.jsp</result>
<result name='invalid.token">/error.jsp<result>
</action>
注意 在自定义的拦截器中可以选择不调用ActionInvocation的invoke()方法
那么后续的拦截器和Struts会渲染自定义拦截器intercept方法返回值对应的result
Struts2很多功能都是构建在拦截器基础之上的 例如文件的上传 下载 国际化 数据类型转换和数据校验等等
Strust2拦截器可以访问某个action方法之前或之后实施拦截
Strust2拦截器是可插拔的 拦截器是AOP(面向切面编程)的一种实现
拦截器栈(Interceptor Stack):将拦截器按一定顺序联结成一条链 在访问被拦截的方法时 Struts2拦截器链中的拦截器就会
按其之前定义的顺序被一次调用
Interceptor接口
每个拦截器都是实现另外com.opensymphony.xwork2.interceptor.Interceptor接口的Java类
init :该方法将在拦截器被创建之后立即被调用 它在拦截器的生命周期内只被调用一次 可以在该方法中对相关资源进行必要的
初始化
intercept:每次拦截一个请求 该方法就会被调用一次
destory:该方法将在拦截器被销毁之前被调用 它在拦截器的生命周期内也只被调用一次
Struts会依次调用为某个action而注册的每一个拦截器的intercept方法
每次调用intercept方法时 Struts会传递一个ActionInvocation接口的实例
ActionInvocation:代表一个给定Action的执行状态 拦截器可以从该类的对象里获得与该Action相关联的Action对象
和result对象 在完成拦截器自己的任务之后拦截器将调用ActionInvocation对象的invoke方法前进到Action处理流程的
下一个环节
AbstraceInterceptor类实现了Interceptor接口 并为init destory提供一个空白实现
如何自定义一个拦截器
1.定义一个拦截器的类
可实现Interceptor接口
继承AbstractInterceptor抽象类
2.在struts.xml文件中配置
<Interceptors>
<interceptor name="hello" class="自定义拦截器类">
</Interceptors>
<action name="testToken" class="自定义Action">
<interceptor-ref name="hello"><interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result>/success.jsp</result>
<result name='invalid.token">/error.jsp<result>
</action>
注意 在自定义的拦截器中可以选择不调用ActionInvocation的invoke()方法
那么后续的拦截器和Struts会渲染自定义拦截器intercept方法返回值对应的result
相关文章推荐
- Struts2学习总结(八):拦截器
- struts2 学习总结 ---- 拦截器(interceptor)
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- 【转载】struts2 学习总结 ---- 拦截器(interceptor)
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- 学习struts2建bbs总结三:登录拦截器
- Struts2学习整理总结
- Struts2学习(五)拦截器介绍
- Java学习笔记 Struts2拦截器实现权限登录
- 新手学习Struts2的简单总结
- Struts学习总结(二)---Struts2的架构和运行流程
- struts2 学习总结(request,session的使用)
- struts2学习(三)--拦截器
- Struts2学习第六天:Result总结
- Struts2学习总结(三):Action与ActionSupport
- struts2系列学习笔记(11)---------------拦截器
- struts2学习笔记 -- day09 Struts2的拦截器
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
- 学习struts2建bbs总结四:解决jsp/action中文传值乱码问题
- Struts2学习:拦截器篇(一)