Struts框架学习之拦截器

为什么用拦截器?

Struts是基于mvc模式的开发框架。任何框架,都会预先实现一部分功能。struts框架自带功能的实现,是通过一个个拦截器完成的。

Struts早起版本中,核心功能是通过一个类完成的,这个类叫做核心过滤器。

Struts2.0之后的版本,每一个拦截功能,都由一个单独的类实现,形成一个独立的拦截器,用户可以自由组合这些拦截器来完成自己想要的功能。

有了拦截器,我们的开发就类似于组装电脑配件。带来的好处:解耦。

拦截器简介:

Struts2预定义了一些拦截器,实现了某些功能,如文件上传等,默认的拦截器在struts-default.xml文件中配置。

 如果使用struts2的相应功能,可以一个个引用拦截器! 也可以定义拦截器栈,包含多个拦截器!开发中就直接使用拦截器栈即可!

struts2定义了默认执行的拦截器栈!

拦截器可以对action请求进行拦截, 从而执行一些预处理操作,预处理操作完成后,控制权进入到action!

        action处理请求完成,又回到拦截器!

        注意:

            如果struts自带的拦截器完成不了需要,用户也可以自定义拦截器!

            如果用户自定义了拦截器,并使用,struts2默认的拦截器就不会调用!

            自定义拦截器的时候,要引用默认的拦截器!(defaultStack)

        <interceptors>

            // 拦截器定义

<interceptor name="params"  class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

    拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用。

            // 拦截器栈定义 (包含多个拦截器)

            <interceptor-stack name="defaultStack">

                    <interceptor-ref name="exception"/>

                    <interceptor-ref name="alias"/>

                    <interceptor-ref name="servletConfig"/>

                    <interceptor-ref name="i18n"/>

                    <interceptor-ref name="prepare"/>

                    <interceptor-ref name="chain"/>

                    <interceptor-ref name="scopedModelDriven"/>

                    <interceptor-ref name="modelDriven"/>

                    <interceptor-ref name="fileUpload"/>

                    <interceptor-ref name="checkbox"/>

                    <interceptor-ref name="multiselect"/>

                    <interceptor-ref name="staticParams"/>

                    <interceptor-ref name="actionMappingParams"/>

                    <interceptor-ref name="params">

            </interceptor>  

            // 执行拦截器

            <default-interceptor-ref name="defaultStack"/>

        </interceptors>

拦截器与过滤器区别

        共同点:都可以对请求进行拦截! 处理一些公用的操作!

        区别:

            1.作用范围

                拦截器是struts2的概念!(只在struts中用)

                过滤器是servlet中技术!(在servlet/struts中都可以使用!)

            2. 拦截区域

                拦截器,拦截的是action中方法的执行!

                过滤器,可以拦截任何请求!

Struts2自定义拦截器实现

      1、定义一个类实现Interceptor接口

      2、实现生命周期方法

      3、声明和引用自定义拦截器

     Interceptor接口

     com.opensymphony.xwork2.interceptor.Interceptor

     所有的自定义拦截器都需要实现该接口,且以单例运行。

      init: 创建后初始化时被调用, 它在拦截器的生命周期内只被调用一次。

      interecept: 每拦截一个动作请求, 该方法就会被调用一次。

      destroy: 拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次.


 

Struts2自带的拦截器


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值