关于struts2的拦截器学习

        最近在计划做一个家庭网站,其中会用到框架的架构,就对struts2重新复习了一遍,以前对struts的学习停留在照着书写的层面。发现很多东西还是很模糊。最近就又碰到了拦截器的使用。作为一个学习的笔记。

       相信每个一开始学习struts2的都会看到这句话,struts2和struts1的关系不大,确实,struts2是apache旗下的一个基金会结合一个成熟的框架webwork和struts1而开发出来的。其核心其实是webwork,就我所知,拦截器这部分是webwork的xwork部分来实现的。学过servlet的人知道里面有一个过滤器,拦截器和它的原理是差不多。最重要的方法分别是servlet中的doFilter方法和interceptor中的intercept方法 。拦截器的执行代码就写在这个方法中。

        拦截器struts.xml文件中的配置如下:(这部分属于步骤,记住就行了)

  1. <struts>  
  2.    <package name="struts2" extends="struts-default">  
  3.       <interceptors>  
  4.          <interceptor name="xiaoze" class="你的拦截器类的路径">  
  5.               <param name="hello">interceptor</param>  
  6.          </interceptor>  
  7.       </interceptors>  
  8.    </package>  
  9. <struts>  
       自定义的拦截器的使用如下:

  1. <action name="register" class="com.test.action.RegisterAction" >  
  2.          <result name="input"></result>  
  3.          <result name="success"></result>  
  4.          <interceptor-ref name="xiaoze"></interceptor-ref>  
  5.       </action> 
之后可以对自己定义的拦截器进行验证。
可能会遇到一个问题,原来没有自定义拦截器的时候,struts2框架其实是会给action中添加默认的拦截器的,包括基本的验证以及错误信息提示等。当添加了我们自定义的拦截器时,就不会添加那个默认的拦截器了。我们当然可以手动的进行默认拦截器的添加。加入下面一行代码:
<interceptor-ref name="defaultStack"></interceptor-ref>即可。

下面是关于拦截器栈的知识了,
我们可以把拦截器栈当作是一个包含拦截器的容器,在执行的时候会按顺序执行拦截器。具体的代码如下:
<interceptor-stack>
    <interceptor name="" class=""></interceptor>
    <interceptor name="" class=""></interceptor>
    <interceptor name="" class=""></interceptor>
</interceptor-stack>

在编写自定义的拦截器的时候,有两个可以实现的接口和类分别是interceptor接口和abstractinterceptor抽象类。第二个抽象类默认实现了init和destroy方法。所以,为了简化代码,可以实现该抽象类,只用实现doIntercept方法就可以了。

最后需要说到的一点是:拦截器的执行机制是在action方法执行之前执行一次,action方法执行之后还要执行一次。可以比喻成开了灯拿完东西后还是要关灯的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值