码迷,mamicode.com
首页 > 其他好文 > 详细

Struts框架学习之拦截器

时间:2015-06-08 17:17:44      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:interceptor   struts2   mvc      

为什么用拦截器?

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自带的拦截器

技术分享
 技术分享


Struts框架学习之拦截器

标签:interceptor   struts2   mvc      

原文地址:http://blog.csdn.net/ning_xian_hong/article/details/46415141

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!