`

Struts2中的拦截器栈实现原理

 
阅读更多
一个Interceptor接口

public interface Interceptor {
void intercept(ActionInvocation invocation);
}

一个ActionInvocation类用于调用拦截器

/**
* 保存着 很多interceptor
* @author Administrator
*
*/
public class ActionInvocation {

List<Interceptor> interceptors = new ArrayList<Interceptor>();
public ActionInvocation(){
  interceptors.add(new ParamInterceptor());
  interceptors.add(new ConfigInterceptor());
}
private int i = 0;
public void invoke(){
  if(i< interceptors.size()){
   Interceptor it = interceptors.get(i++);
   //调用 方法前
   it.intercept(this);
   //调用 方法后
  }else{

     //调用Action中的execute方法
   new Action().execute();
  }
 
};
}

Interceptor的实现类

public class ConfigInterceptor implements Interceptor{
public void intercept(ActionInvocation invocation) { 
  System.out.println("------ConfigFilter----");
  invocation.invoke();
}
}

public class ParamInterceptor implements Interceptor{
public void intercept(ActionInvocation invocation) {
  System.out.println("------ParamFilter----");
  invocation.invoke();
}
}

//main 来调用

public class Main {

/**
  * @param args
  */
public static void main(String[] args) {
  new ActionInvocation().invoke();

}

}

输出为:

------ParamFilter----
------ConfigFilter----
----action--------
分享到:
评论

相关推荐

    Struts2拦截器实现权限控制demo

    首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的顺序在Action执行之前和之后执行。通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建...

    Struts2拦截器的实现原理(csdn)————程序.pdf

    在Struts2中,拦截器工作在Action和结果(Result)之间,形成一个拦截器栈,每个拦截器按照配置的顺序依次执行。 Struts2的拦截器执行流程如下: 1. **初始化拦截器栈**:当Struts2框架启动时,会根据配置文件...

    浅谈Struts2拦截器的原理与实现.docx

    拦截器栈是Struts2中拦截器的组织方式,它将多个拦截器按照预设的顺序组合成一个链式结构。在Action的执行过程中,这些拦截器会被依次调用,每个拦截器都有机会在Action方法执行前后进行干预。拦截器栈的顺序至关...

    Struts2拦截器原理分析

    Struts2中的拦截器不是单独工作的,而是以链式结构组织起来,形成所谓的拦截器栈。每个拦截器栈由多个拦截器按照特定顺序排列,当请求到来时,会依次通过这些拦截器。这种配置通常在`struts.xml`或`struts-plugin....

    struts2实现拦截器、

    3. **配置拦截器栈**:在上面的配置中,我们创建了一个名为`authStack`的拦截器栈,它包含了默认的拦截器栈和我们的`auth`拦截器。这意味着每个被`authStack`引用的Action在执行前都会先经过`auth`拦截器。 4. **...

    struts2 用拦截器 实现用户权限登录

    在Struts2中,拦截器是实现业务逻辑和控制流程之间解耦的关键组件。本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它...

    struts2拦截器实现权限控制

    3. 配置拦截器栈:Struts2使用拦截器栈的概念,即将多个拦截器组织成一个栈,按照栈的顺序依次执行。在`struts.xml`中,可以创建一个或多个拦截器栈,并将权限拦截器包含在内。 4. 应用拦截器:在Action配置中,...

    struts2 拦截器实现登录控制

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志、性能优化等核心功能的关键组件。这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用...

    Struts2拦截器源码

    例如,`struts-default.xml`中包含了默认的拦截器栈,如`params`拦截器用于处理请求参数,`exception`拦截器用于处理异常,`validation`拦截器进行数据校验。 在深入源码之前,我们需要了解几个关键类: 1. `...

    struts2 拦截器

    3. **注册拦截器**:将自定义拦截器加入到`struts-default`或`struts-plugin`拦截器栈中,或者创建新的拦截器栈并应用到特定Action。 ### 四、Struts2内置拦截器 Struts2提供了一些内置的拦截器,如: 1. **...

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

    - XML配置:在`struts.xml`文件中,使用`&lt;interceptor&gt;`元素定义拦截器,`&lt;interceptor-stack&gt;`元素组合多个拦截器,`&lt;package&gt;`元素下的`interceptors`属性指定拦截器栈。 ```xml &lt;!-- 可以添加其他内置或...

    struts2拦截器应用小例子

    拦截器是一个实现了`Interceptor`接口的Java类,它们按照指定的顺序组成一个拦截器栈。当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器...

    Struts2学习案例(拦截器)

    8. **国际化和本地化**:如果案例涉及,了解如何在Struts2中实现多语言支持。 通过深入学习和实践这个案例,你可以更全面地理解和掌握Struts2框架,特别是拦截器的使用,以及如何结合JPA进行数据访问。这将有助于...

    struts2拦截器原理

    在这个例子中,`defaultStack`是Struts2默认提供的拦截器栈,包含了一些基础的拦截器,如`params`(处理请求参数)、`i18n`(国际化)等。`myCustomInterceptor`则是我们自定义的拦截器。 创建自定义拦截器有三种...

    struts2 拦截器实例

    2. **拦截器栈**:在Struts2中,拦截器可以组成一个栈,按照栈的顺序执行。当请求到达Action时,会先执行栈中的所有拦截器,然后执行Action,最后再按相反的顺序返回。 3. **配置拦截器**:拦截器可以通过Struts2...

    Struts2拦截器源程序

    在`struts.xml`配置文件中,可以通过`&lt;interceptors&gt;`标签定义拦截器栈,并通过`&lt;interceptor&gt;`标签定义单个拦截器。使用`&lt;interceptor-stack&gt;`标签可以组合多个拦截器形成拦截器栈。通过`&lt;package&gt;`标签的`default-...

    使用struts2拦截器对登陆权限验证

    在Struts2配置中,我们需要将这个拦截器添加到拦截器栈中,通常是在`struts.xml`文件中。这样,每次请求到达Action之前,都会先经过这个拦截器: ```xml &lt;struts&gt; ...

    struts2拦截器实现拦截不文明字迹

    我们需要在struts.xml配置文件中声明这个拦截器,并将其加入到默认的拦截器栈或者特定Action的拦截器配置中。例如: ```xml &lt;struts&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;!-- ...

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

    在Struts2的配置文件(如struts.xml)中,可以定义一个拦截器或者拦截器栈。拦截器栈是由多个拦截器按照特定顺序组成的,每个拦截器都有自己的名字和属性。例如: ```xml *" class=...

    Struts2之拦截器原理分析及使用案例struts008

    在Struts2中,拦截器需要实现`Interceptor`接口或继承`AbstractInterceptor`抽象类。`intercept`方法是拦截器的核心,它接收一个`ActionInvocation`对象,该对象包含了当前Action的上下文信息。 ```java public ...

Global site tag (gtag.js) - Google Analytics