`
wj131
  • 浏览: 142493 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

struts2-拦截器

阅读更多

 

strusts2的拦截器底层采用的是动态代理机制实现的。而我们只是需要在struts.xml配置文件中配置拦截器就可以实现了。自定义拦截器会和struts.xml文件一起随着服务器的启动而加载。

对于strust2的拦截器它是针对的是表单提交数据的一种过滤机制,一个自己定义的过滤器可以针对一个action,也可以针对多个action

1.       自定义拦截器的定义的第一种写法:自定义拦截器是要继承Interceptor这个struts给的拦截器接口。我们只需要实现的它的里面的三个方法

比如说:import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.Interceptor;

public class MyInterceptor implements Interceptor {

//这个定义的成员变量,可以从strust.xml文件中传递值过来

private String message;

public MyInterceptor() {}

/**销毁方法**/public void destroy() {  

      System.out.println("destory");

System.out.println(this.message);}

public void init() /**初始化方**/

{     System.out.println("init");}

/**这个方法就是你拦截时候执行的方法,具体内容要根据业务来定**/

public String intercept(ActionInvocation invocation) throws Exception {

              String result = invocation.invoke();

    return result;}

    public String getMessage() {

       return message;  }

    public void setMessage(String message) {

       this.message = message;  }}

struts.xml文件中:

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

      <!-- 自己定义的拦截器 -->

      <interceptors>

        <interceptor name="myInterceptor" class="org.interceptor.MyInterceptor">

         <param name="message">  hello  </param> </interceptor>

        <!—自定义拦截器栈-à

        <interceptor-stack name="myinterceptor">

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

        </interceptor-stack>  </interceptors>

      <!-- action中,加了自定义的拦截器,还要加默认的"defaultStack"拦截器栈,因为你引入其他的拦截器的时候,就不默认引入"defaultStack" -->  

       <action name="login" class="org.www.RegistertAction">

            <interceptor-ref name="myInterceptor">

             <param name="message">china</param>

            </interceptor-ref>

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

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

           <result>/success.jsp</result>

       </action></package> 

注意的事项  1、在声明的时候加入了给该自定义的拦截器类的成员变量赋值,在action中执行的时候,也赋值了。最后得到的是值action中执行的时候赋值的那个值。

2、每个包体下默认的action都有一个拦截器是

  <default-interceptor-ref name="defaultStack"/>,而当如果你在action中引入了自定义的拦截器,那么在这个action中还要手动配置 defaultStack

3、拦截器栈里可以套多个拦截器。也可以套多个拦截器栈。

2、自定义拦截器的第二种写法:

package org.interceptor;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/** * 该类继承了AbstractInterceptor。而AbstractInterceptor继承的是Interceptor接口,它精简了方法.只是叫你实现一个方法就可以自己定义拦截器*/

public class MyInterceptor1 extends AbstractInterceptor {

    public MyInterceptor1() {   }

    public String intercept(ActionInvocation invocation) throws Exception {

       String result = invocation.invoke();

       return result;  }}

struts.xml文件中的配置和第一种的是一致的

3、对action中方法的拦截  import com.opensymphony.xwork2.ActionInvocation;

                                               import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

                                               public class MyInterceptor2 extends MethodFilterInterceptor {

       /*** 该自定义拦截器类针对的是对方法的action中方法的拦截

        * MethodFilterInterceptor类中:该类继承AbstractInterceptor

       * 成员变量 excludeMethods :表示不拦截那些方法  成员变量 includeMethods:   表示拦截那些方法

    * 这个对action中动态调用方法,很有效 */

       public MyInterceptor2() {          }

       protected String doIntercept(ActionInvocation invocation) throws Exception {

              String result = invocation.invoke();    return result;   }}

struts.xml文件的配置<package name="login"  extends="struts-default">

       <interceptors>

        <interceptor name="myInterceptor2" class="org.interceptor.MyInterceptor2">

        </interceptor>

       <action name="login!*" class="org.www.RegistertAction" method="{1}">

 <interceptor-ref name="myInterceptor2">

<!-- 不拦截的方法 --> <param name</

1
0
分享到:
评论

相关推荐

    struts2-拦截器.docx

    Struts2 拦截器是基于AOP(面向切面编程)的一种实现,它允许在Action调用前后插入特定的操作,提供了灵活的控制流程,增强了框架的功能和可扩展性。拦截器的主要作用包括:增强代码复用性、提供事务管理、日志记录、...

    [原]Struts2-拦截器

    在Struts2中,拦截器(Interceptor)扮演着非常重要的角色,它是实现业务逻辑控制和数据处理的核心组件。这篇文章将深入探讨Struts2中的拦截器机制,以及其在实际开发中的应用。 首先,我们要了解什么是拦截器。在...

    struts2-showcase.rar

    2. **拦截器(Interceptors)**:Struts2的核心功能之一,拦截器可以插在Action调用之前和之后,实现如日志、事务管理、验证等通用功能,增强了代码的可复用性。 3. **动态方法调用(Dynamic Method Invocation,DMI...

    struts2-2拦截器与SiteMesh

    struts2-2拦截器与SiteMeshstruts

    struts2-json-plugin源码

    4. **拦截器**:Struts2的拦截器机制允许在Action调用前后执行特定逻辑。JSON插件可能包含用于处理JSON请求和响应的拦截器,比如处理JSON参数的解析和验证。 5. **Action与模型驱动**:如果Action使用模型驱动模式...

    struts2-core-2.0.12.jar

    Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...

    信息系统软件设计:第3章 Struts2.0-拦截器.ppt

    Struts2作为一款流行的MVC框架,它的核心特性之一就是拦截器(Interceptor)。拦截器允许在Action执行前后的特定时刻执行额外的功能,从而实现了AOP(面向切面编程)的逻辑。 **1. 拦截器的作用和意义** - **解耦**...

    struts2-core-2.3.7源码

    3. **Interceptor(拦截器)**: 拦截器是Struts2的核心特性,它们按照预设的顺序执行,可以在Action执行前后进行额外的操作,如日志记录、权限检查等。 4. **Value Stack**: 用于存储Action实例和其他Action上下文...

    Struts2-2.5.13最新jar下载

    2. **Interceptor**:拦截器是Struts2的一个重要特性,它们是插件式的,可以插入到Action调用流程中,实现如日志、权限检查、事务管理等通用功能。 3. **Result**:结果是Action执行后返回的对象,通常用于渲染视图...

    struts-2.5所有jar包

    - **拦截器**:拦截器是Struts2的核心机制之一,通过定义拦截器链,可以实现如权限验证、日志记录、性能监控等功能。 - **配置方式**:可以选择传统的XML配置,也可以使用更加灵活的注解和Conventions配置。 - **...

    struts2-tags-文档.rar

    "struts2.chm"可能是Struts2的基础教程,涵盖了框架的基本概念、配置、动作、拦截器等核心组件。在这个文档中,你可以了解到如何设置Struts2的配置文件,如何创建Action类,以及如何使用拦截器进行业务逻辑处理。...

    Struts2之拦截器原理分析及使用-上案例struts007

    Struts2作为一款流行的Java Web框架,其核心机制之一就是拦截器(Interceptor)。拦截器是AOP(面向切面编程)思想在Struts2中的具体实现,它允许开发者在动作执行前后插入自定义的处理逻辑,提升了代码的可复用性和...

    Struts2--自定义拦截器

    自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...

    struts2-2.3.4.1-all

    2. **拦截器(Interceptor)**:这是Struts2的一个强大特性,它可以拦截Action调用前后,实现事务管理、日志记录、权限验证等功能。通过配置拦截器栈,开发者可以灵活控制请求处理流程。 3. **OGNL(Object-Graph ...

    struts2-core-2.2.1 jar下载、源码下载 非常全面!!绝对可用!! 所需资源分最少。

    Struts2的核心组件是`struts2-core.jar`,这个文件是整个框架的基础,包含了处理请求、调度、拦截器等核心功能。`struts2-core-2.2.1`版本是Struts2的一个特定发行版,可能包含了一些特定的改进和修复。 在Java Web...

    Struts2拦截器及其用法详细说明

    在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...

    struts2-lib.zip

    2. **拦截器**:Struts 2的拦截器是AOP(面向切面编程)概念的应用,允许在Action执行前后插入自定义逻辑,如日志、权限验证、性能统计等。这些拦截器通过在struts.xml中配置并组合成拦截器栈。 3. **Action**:...

    struts2实现拦截器、

    本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...

    struts2--4.拦截器

    在Struts2中,拦截器扮演着核心角色,极大地增强了框架的功能和灵活性。本文将深入探讨Struts2中的拦截器,以及如何使用它们来优化应用的性能和功能。 ### 1. 拦截器的概念 拦截器是Struts2框架的一个关键特性,它...

Global site tag (gtag.js) - Google Analytics