一个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中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的顺序在Action执行之前和之后执行。通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建...
在Struts2中,拦截器工作在Action和结果(Result)之间,形成一个拦截器栈,每个拦截器按照配置的顺序依次执行。 Struts2的拦截器执行流程如下: 1. **初始化拦截器栈**:当Struts2框架启动时,会根据配置文件...
拦截器栈是Struts2中拦截器的组织方式,它将多个拦截器按照预设的顺序组合成一个链式结构。在Action的执行过程中,这些拦截器会被依次调用,每个拦截器都有机会在Action方法执行前后进行干预。拦截器栈的顺序至关...
Struts2中的拦截器不是单独工作的,而是以链式结构组织起来,形成所谓的拦截器栈。每个拦截器栈由多个拦截器按照特定顺序排列,当请求到来时,会依次通过这些拦截器。这种配置通常在`struts.xml`或`struts-plugin....
3. **配置拦截器栈**:在上面的配置中,我们创建了一个名为`authStack`的拦截器栈,它包含了默认的拦截器栈和我们的`auth`拦截器。这意味着每个被`authStack`引用的Action在执行前都会先经过`auth`拦截器。 4. **...
在Struts2中,拦截器是实现业务逻辑和控制流程之间解耦的关键组件。本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它...
3. 配置拦截器栈:Struts2使用拦截器栈的概念,即将多个拦截器组织成一个栈,按照栈的顺序依次执行。在`struts.xml`中,可以创建一个或多个拦截器栈,并将权限拦截器包含在内。 4. 应用拦截器:在Action配置中,...
在Struts2中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志、性能优化等核心功能的关键组件。这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用...
例如,`struts-default.xml`中包含了默认的拦截器栈,如`params`拦截器用于处理请求参数,`exception`拦截器用于处理异常,`validation`拦截器进行数据校验。 在深入源码之前,我们需要了解几个关键类: 1. `...
3. **注册拦截器**:将自定义拦截器加入到`struts-default`或`struts-plugin`拦截器栈中,或者创建新的拦截器栈并应用到特定Action。 ### 四、Struts2内置拦截器 Struts2提供了一些内置的拦截器,如: 1. **...
- XML配置:在`struts.xml`文件中,使用`<interceptor>`元素定义拦截器,`<interceptor-stack>`元素组合多个拦截器,`<package>`元素下的`interceptors`属性指定拦截器栈。 ```xml <!-- 可以添加其他内置或...
拦截器是一个实现了`Interceptor`接口的Java类,它们按照指定的顺序组成一个拦截器栈。当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器...
8. **国际化和本地化**:如果案例涉及,了解如何在Struts2中实现多语言支持。 通过深入学习和实践这个案例,你可以更全面地理解和掌握Struts2框架,特别是拦截器的使用,以及如何结合JPA进行数据访问。这将有助于...
在这个例子中,`defaultStack`是Struts2默认提供的拦截器栈,包含了一些基础的拦截器,如`params`(处理请求参数)、`i18n`(国际化)等。`myCustomInterceptor`则是我们自定义的拦截器。 创建自定义拦截器有三种...
2. **拦截器栈**:在Struts2中,拦截器可以组成一个栈,按照栈的顺序执行。当请求到达Action时,会先执行栈中的所有拦截器,然后执行Action,最后再按相反的顺序返回。 3. **配置拦截器**:拦截器可以通过Struts2...
在`struts.xml`配置文件中,可以通过`<interceptors>`标签定义拦截器栈,并通过`<interceptor>`标签定义单个拦截器。使用`<interceptor-stack>`标签可以组合多个拦截器形成拦截器栈。通过`<package>`标签的`default-...
在Struts2配置中,我们需要将这个拦截器添加到拦截器栈中,通常是在`struts.xml`文件中。这样,每次请求到达Action之前,都会先经过这个拦截器: ```xml <struts> ...
我们需要在struts.xml配置文件中声明这个拦截器,并将其加入到默认的拦截器栈或者特定Action的拦截器配置中。例如: ```xml <struts> <package name="default" namespace="/" extends="struts-default"> <!-- ...
在Struts2的配置文件(如struts.xml)中,可以定义一个拦截器或者拦截器栈。拦截器栈是由多个拦截器按照特定顺序组成的,每个拦截器都有自己的名字和属性。例如: ```xml *" class=...
在Struts2中,拦截器需要实现`Interceptor`接口或继承`AbstractInterceptor`抽象类。`intercept`方法是拦截器的核心,它接收一个`ActionInvocation`对象,该对象包含了当前Action的上下文信息。 ```java public ...