Struts2拦截器总结学习

来源:互联网 发布:快意电梯营销网络 编辑:程序博客网 时间:2024/05/29 15:27

拦截器(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






原创粉丝点击