`
jsjxqjy
  • 浏览: 118344 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

strtus2 interceptor

阅读更多

1.interceptor的配置

方法1. 普通配置法

<struts> 

    <package name="struts2" extends="struts-default"> 

        <interceptors> 

            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor> 

        </interceptors> 

        <action name="register" class="edu.hust.action.RegisterAction"> 

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

            <result>/result.jsp</result> 

             

            <!-- 在自定义interceptor并将其ref系统会覆盖掉默认的interceptor-stack(defaultStack), 为了保证系统默认的defaultStack不受印象我们需要显式的将其引入 --> 

            <!-- 注意两个interceptor-ref的顺序顺序不同执行效果也不同先配置的先执行/后配置的先退出(先进后出) --> 

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

            <interceptor-ref name="myInterceptor"></interceptor-ref> 

        </action> 

    </package> 

</struts>

方法2. 配置拦截器栈(即将多个interceptor串联的一种元素)。然后在<action>中引入该拦截器栈就可以了。

<struts> 

    <package name="struts2" extends="struts-default"> 

         

        <interceptors> 

            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor> 

         

            <interceptor-stack name="myInterceptorStack"> 

                <interceptor-ref name="myInterceptor"></interceptor-ref> 

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

            </interceptor-stack> 

        </interceptors> 

         

        <action name="register" class="edu.hust.action.RegisterAction"> 

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

            <result>/result.jsp</result> 

             

            <interceptor-ref name="myInterceptorStack"></interceptor-ref> 

        </action> 

    </package> 

</struts>

方法3. 修改默认拦截器,将自定义的拦截器栈定义为struts2的默认拦截器。

<struts> 

    <package name="struts2" extends="struts-default"> 

         

        <interceptors> 

            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor> 

            <interceptor-stack name="myInterceptorStack"> 

                <interceptor-ref name="myInterceptor"></interceptor-ref> 

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

            </interceptor-stack> 

        </interceptors> 

        <!-- 此默认interceptor是针对所有action的 --> 

        <!-- 如果某个action中引入了interceptor, 则在这个action中此默认interceptor就会失效 --> 

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

         

        <action name="register" class="edu.hust.action.RegisterAction"> 

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

            <result>/result.jsp</result> 

        </action> 

         

    </package> 

</struts>

2. Interceptor的角色对象

(1)拦截目标对象(被代理对象),这里目标对象就是action

(2)拦截器(一个类,动态的将某些方法插入到目标对象的某方法的beforeafter)

(3)对目标对象生成的(动态)代理对象(代理对象内部方法综合了目标对象方法+拦截器方法)。程序最终执行的是目标对象的代理,而这个代理已经插入了interceptor

拦截器作用:拦截actioninterceptor相当于一个入口和出口,通过interceptor进入action,执行完action的代码再通过interceptor出去。

针对"struts2 -- interceptor(Interceptor怎么写)"这篇文章的MyInterceptor.classMyInterceptor2.class。根据下面的配置文件执行程序

<struts> 

    <package name="struts2" extends="struts-default"> 

         

        <interceptors> 

            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor> 

            <interceptor name="myInterceptor2" class="edu.hust.interceptor.MyInterceptor2"></interceptor> 

            <interceptor-stack name="myInterceptorStack"> 

                <interceptor-ref name="myInterceptor"></interceptor-ref> 

                <interceptor-ref name="myInterceptor2"></interceptor-ref> 

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

            </interceptor-stack> 

        </interceptors> 

         

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

         

        <action name="register" class="edu.hust.action.RegisterAction"> 

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

            <result>/result.jsp</result> 

        </action> 

         

    </package> 

</struts>

Console会得到以下打印输出

intercept start

intercept2 start

2008-9-19 19:42:06 com.opensymphony.xwork2.validator.ActionValidatorManagerFactory <clinit>

信息: Detected AnnotationActionValidatorManager, initializing it...

intercept2 finish

intercept finish

这个结果解释了"interceptor相当于一个入口和出口,通过interceptor进入action,执行完action的代码再通过interceptor出去"这句话。

3. extends MethodFilterInterceptor的拦截器如何配置哪些方法该拦截、哪些方法不该拦截(针对方法拦截的配置)

<struts> 

    <package name="struts2" extends="struts-default"> 

         

        <interceptors> 

            <interceptor name="myInterceptor3" class="edu.hust.interceptor.MyInterceptor3"></interceptor> 

        </interceptors> 

         

        <action name="register" class="edu.hust.action.RegisterAction" method="queryAll"> 

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

            <result>/result.jsp</result> 

            <!-- myInterceptor3拦截器只对RegisterAction中的queryAll()方法和insert()方法进行了拦截其他方法未进行拦截 --> 

            <interceptor-ref name="myInterceptor3"> 

                <param name="includeMethods">queryAll, execute</param> 

            </interceptor-ref> 

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

        </action> 

         

        <action name="register" class="edu.hust.action.RegisterAction" method="insert"> 

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

            <result>/result.jsp</result> 

            <interceptor-ref name="myInterceptor3"> 

                <param name="includeMethods">queryAll, insert</param> 

            </interceptor-ref> 

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

        </action> 

         

        <action name="register" class="edu.hust.action.RegisterAction" method="update"> 

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

            <result>/result.jsp</result> 

            <interceptor-ref name="myInterceptor3"> 

                <param name="includeMethods">queryAll, insert</param> 

            </interceptor-ref> 

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

        </action> 

         

    </package> 

</struts>

<!--EndFragment-->
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    struts2 Interceptor详解

    Struts2 Interceptor详解 Struts2作为一款流行的Java Web框架,其强大的功能之一就是拦截器(Interceptor)。拦截器在MVC模式中扮演着重要角色,它可以对请求进行预处理和后处理,提供了灵活的扩展机制,使得业务...

    struts2 Interceptor拦截器

    ### Struts2 Interceptor 拦截器详解 #### 一、概述 在现代Web开发中,特别是基于Java的Web应用程序开发中,Struts2框架因其简洁性和强大的扩展能力而备受青睐。Struts2框架的核心设计理念之一是MVC(Model-View-...

    Struts2_interceptor_和_filter区别

    标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...

    struts2 interceptor annotation plugin

    而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用注解来配置拦截器的方式,这种方式更加简洁、直观,减少了XML配置文件的复杂性。 注解(Annotation)是Java编程语言的一个重要特性,它...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    Struts2 拦截器 Interceptor

    ### Struts2 拦截器 Interceptor #### 一、概述 在Struts2框架中,拦截器(Interceptor)是一种非常重要的机制,它能够帮助开发者实现诸如权限控制、事务管理、日志记录等跨切关注点的功能。通过定义不同的拦截器...

    STRUTS2:拦截器Interceptor

    STRUTS2:拦截器Interceptor

    struts2 拦截器写法

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

    saif(struts1 interceptor)

    然而,在Struts1的原生设计中,并没有内置拦截器(Interceptor)这一概念,这与后来的Struts2框架有所不同。Struts2引入了拦截器,极大地增强了框架的灵活性和可扩展性。但是,由于Struts1的流行和项目需求,"saif...

    struts2 拦截器的使用(继承抽象拦截器)

    Struts2是一个非常流行的Java Web框架,它提供了一种优雅的方式来组织和控制应用程序的行为。拦截器是Struts2的核心组件之一,它们在Action调用前后执行,提供了诸如日志、事务管理、性能监控等附加功能。这篇博客...

    struts2 intercepter

    Struts2 Interceptor是Java Web开发中非常关键的一个概念,它是Apache Struts2框架的核心组成部分。Struts2是一个基于Model-View-Controller (MVC)架构模式的开源框架,用于构建企业级的Java web应用程序。...

    Struts2整合JSF

    - Struts2框架提供了Action、Interceptor、Result等概念,使得业务逻辑处理、数据校验和结果呈现分离,提高了代码的可维护性和可扩展性。 2. **JSF框架简介**: - JSF是一个用于构建企业级Web应用程序的Java EE...

    Struts2.x_Interceptor

    Interceptor(拦截器)是Struts2框架的核心组件之一,它在Action调用前后执行,实现了业务逻辑的分离,增强了代码的复用性和灵活性。 Interceptor是Struts2实现AOP(面向切面编程)的一种方式,主要负责处理请求和...

    struts2项目开发

    Struts2 框架的主要组件包括 Action、Interceptor、Result、View 等。Action 负责处理用户的请求,Interceptor 负责拦截和处理请求,Result 负责处理请求的结果,View 负责将处理结果显示给用户。 Struts2 项目开发...

    struts2jar包

    1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等关键对象。 2. **xwork-core.jar**:XWork是...

    Struts2接口文档

    Struts2的核心组件包括Action、Result、Interceptor(拦截器)等,这些组件通过特定的接口进行交互。Action接口定义了处理用户请求的方法,如execute(),开发者通常会自定义Action类来实现业务逻辑。Result接口则...

    留言板留言板struts2留言板struts2

    3. **拦截器(Interceptor)**:Struts2的核心组件之一,可以理解为对请求和响应进行预处理和后处理的中间层。拦截器链是Struts2的一大特色,允许开发者自定义拦截器,实现如权限验证、日志记录、事务管理等功能。 4....

    struts2jar.zip

    1. **Struts2核心库**:struts2-core.jar,包含了框架的核心功能,如Action、Result、Interceptor等。 2. **插件包**:根据项目需求,可能需要其他的插件,如struts2-convention-plugin.jar(用于自动配置)、...

Global site tag (gtag.js) - Google Analytics