struts2_拦截器的使用

1. 什么是拦截器?
 拦截器是java中动态拦截action调用的对象。它提供了一种机制,能够保证我们在action访问前后访问后进行增强。我们可以通过拦截器进行控制的访问,比如权限控制。拦截器引用的是AOP思想。而AOP的底层实现就是使用了动态代理。
 并且在拦截其中使用的是责任链模式。在责任链模式中,很对对象由每一个对象对其下家的引用而连接起来形成一条链。在责任链每一个链点,都可以继续调用下一个节点,也可以阻止流程继续执行。

2. 拦截器的声明
 struts2在struts-default.xml文件中声明了所有的拦截器。
 而struts2框架默认使用的是defaultStack这个拦截器栈。而在这个拦截器栈中使用了18个拦截器。默认的情况下,struts2会加载这18个拦截器。

3. 自定义拦截器步骤
<1>创建一个类,实现com.opensymphony.xwork2.interceptor.Interceptor接口
 在这个接口中,有三个方法,init方法、destory方法和intercept方法。其中,intercept才是真正实现拦截的方法。
 在intercept方法中如果要向下继续执行,通过其参数ActionInvocation调用它的invoke()方法就可以。
 如果想要对方法的执行进行终止,我们可以通过返回某个视图进行终止。视图就是result标签下的input、login等等5个视图。

<2>声明拦截器
 找到struts-default.xml文件,在这个文件中对其进行声明。

//自己声明一个interceptor可以在struts.xml文件中声明
<interceptors>
    <interceptor name="起个别称" class="全类名"/>
</interceptors>

<3>在action中指定使用哪些拦截器。
 在action视图下,配置子标签<interceptor-ref name="别称"/>
注意:只要显示声明使用了一个拦截器。那么默认的拦截器就不在加载。

4. 怎样解决只控制action中某些方法的拦截?

1.创建类不在实现Interceptor接口,而是继承其下的一个子类.MethodFilterInterceptor,不用在重写intercept方法,而是重写 doIntercept方法。

2.在struts.xml文件中声明
<interceptors>
        <intercept name="" class="">
            <param name="includeMethods">add,update,delete(这些是要进行拦截的方法)</param>
            <param name="excludeMethods">search(不进行拦截的方法)</param>
        </intercept>
</interceptors>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值