Struts2拦截器Interceptor学习笔记

 

2012/6/26 星期二 天气阴有雨

今天详细讲解一下Struts中的拦截器的作用和用法。

拦截器是Struts2的一个重要的概念,Struts中有80%的功能都通过拦截器实现。

意义:完成更高层次的解耦,无须侵入框架本身即可添加新的功能。拦截器是AOP的一个实现,底层通过动态代理模式完成。

拦截器是Action的拦截器,可以将一些重用功能放到拦截器中,降低Action的复杂性,提高代码的重用性。

常用功能:封装请求参数,文件上传,异常处理等。这些都是默认的拦截器defaultStack为我们完成的工作,一旦为Action指定了相应的拦截器,则默认的拦截器不再起作用,如果需要它再起作用,则必须显示制定默认拦截器。

拦截器继承AbstractInterceptor抽象类或者实现Interceptor接口类,重写方法。

主要方法:String interccept(ActionInvocation invocation);执行拦截动作和处理事件。

参数invocation包含了Action的引用,invocation.invoke()方法将控制权转给下一个拦截器或者调用的Action方法。返回值是逻辑视图。

拦截器配置及使用:

<interceptors>

<interceptor name="timer" class=".."/>

<interceptor name="logger" class=".."/>

</interceptors>


 

为了方便使用,我们可以配置拦截器栈,相当于多个拦截器的集合。

<interceptor-stack name="myStack">

<interceptor-ref name="timer"/>

<interceptor-ref name="logger"/>

</interceptor-stack>


 

然后在Action中使用:

action name="login" class="tutuorial.Login">

<interceptor-ref name="myStack"/>

<result name="input">login.jsp</result>

<result name="success"

type="redirect-action">/secure/home</result>

</action>


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值