今天把上个星期看的关于 Struts2 拦截器 总结了一下.
这里有一些详细信息可以参考一下.
http://blog.csdn.net/lywtc128/archive/2009/01/06/3720892.aspx
有三种实现方式
1
public class FirstInterceptor extends MethodFilterInterceptor
它可以设置 类似于 黑名单,白名单
2
public class SecondInterceptor extends AbstractInterceptor
它是通过继承一个抽象类来实现的 算是个简易版的
3
public class ThirdInterceptor implements Interceptor
通过这种直接的方式实现.
在Struts.xml 里配制:
<interceptors>
<interceptor name="MethodFilterInterceptor"
class="com.isw2.Interceptor.FirstInterceptor">
<param name="value">FirstInterceptor</param>
<!-- 白名单 -->
<!-- <param name="includeMethods">test,test2</param> -->
<!-- 黑名单 -->
<!-- <param name="excludeMethods">test3,test4</param> -->
</interceptor>
<interceptor name="AbstractInterceptor"
class="com.isw2.Interceptor.SecondInterceptor">
<param name="value">SecondInterceptor</param>
</interceptor>
<interceptor name="Interceptor"
class="com.isw2.Interceptor.ThirdInterceptor">
<param name="value">ThirdInterceptor</param>
</interceptor>
<interceptor-stack name="stack">
<interceptor-ref name="MethodFilterInterceptor" />
<interceptor-ref name="AbstractInterceptor" />
<interceptor-ref name="Interceptor" />
</interceptor-stack>
<interceptor-stack name="defaultPrj">
<interceptor-ref name="stack">
<!-- 给拦截器栈加参 -->
<param name="MethodFilterInterceptor.value">
1
</param>
<param name="AbstractInterceptor.value">2</param>
<param name="Interceptor.value">3</param>
</interceptor-ref>
<!-- defaultStack 是默认的,包括了许多(i18N),最好是带上,而且放到最里面 -->
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 设置默认拦截器 -->
<default-interceptor-ref name="defaultPrj"></default-interceptor-ref>
当然,还少不了监听
public class MyListener implements PreResultListener {
public void beforeResult(ActionInvocation ai, String result) {
System.out.println("MyListener.beforeResult " + result);
}
}
在这里设置
public String intercept(ActionInvocation ai) throws Exception {
// 注册监听器
ai.addPreResultListener(new MyListener());
// 获取参数
Map<String, Object> map = ai.getInvocationContext().getParameters();
String[] userName = (String[]) map.get("userName");
if (null != userName && null != userName) {
userName[0] = userName[0] + value + "-*-AbstractInterceptor-*-";
}
// 执行代理
System.out.println("SecondInterceptor.intercept begin");
String result = ai.invoke();
System.out.println("SecondInterceptor.intercept end");
return result;
}
上传的代码里有更详细的例子. 这里就不多说了.
分享到:
相关推荐
Struts拦截器是Java Web开发框架Struts2中的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,实现AOP(面向切面编程)的理念。动态代理则是Java提供的一种机制,允许在运行时创建接口的实现类实例...
拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。本文将深入探讨Struts2拦截器的基本概念、工作原理以及其实现机制,并结合实际应用场景来展示如何利用拦截器提高代码的复用性与可维护性。...
1. **拦截器的概念**:拦截器是基于Java的动态代理机制实现的,它在Action调用前后进行处理,形成一个拦截链。每个拦截器都可以实现特定的功能,比如验证用户输入、记录日志或执行安全检查。 2. **拦截器栈**:在...
在Struts2中,拦截器是基于Java的动态代理机制实现的。当你定义一个拦截器时,实际上创建了一个实现了`Interceptor`接口的类。这个接口有一个关键方法`intercept()`,它是执行拦截逻辑的地方。通过在`struts.xml`或`...
拦截器是基于Java的动态代理模式实现的,它们按照配置的顺序在Action执行之前和之后执行。通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建自定义拦截器。在Struts2的核心配置文件`struts.xml...
拦截器是基于Java的动态代理机制实现的,它允许我们在Action执行前后插入自定义的行为。在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它定义了`intercept()`方法,该方法会在Action执行之前和之后被调用...
首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的一个概念,在Struts2中,拦截器是基于Java的动态代理机制实现的。它们是一系列实现了`Interceptor`接口的类,可以在Action执行前后插入额外的行为。这些行为...
在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照配置的顺序形成一个拦截器链。每个拦截器都可以在Action执行之前或之后执行特定的任务,而无需修改Action本身。这遵循了“开闭原则”,使得代码更易于...
拦截器是基于Java的动态代理机制实现的,它遵循AOP(面向切面编程)的概念,能够对业务逻辑进行非侵入式的增强。 1. **工作原理** Struts2拦截器的工作流程如下:当一个HTTP请求到达应用时,请求会经过一系列按...
首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行前后介入,形成一个拦截链。拦截链是由配置文件(通常为struts.xml)定义的,每个拦截器按照顺序执行。当一个请求到达时,先执行拦截链上的所有拦截器...
在Struts2中,拦截器是一种动态拦截Action调用的对象。它允许开发者在Action执行之前、执行之后,或者在执行过程中根据需要插入自定义逻辑。拦截器可以被看作是一个过滤器,它拦截了Action的调用,并在调用前后执行...
拦截器是基于Java的动态代理机制实现的,它们在Action调用之前和之后执行,形成一个拦截器链。开发者可以通过配置struts.xml或struts.properties文件来定义拦截器链和其顺序。 1. **创建拦截器** 在Struts2中,...
Struts拦截器是Java Web开发中的重要概念,尤其在基于Struts 2框架的应用中扮演着核心角色。这个"struts拦截器的例子"提供了一个学习和理解拦截器工作原理的起点,非常适合对这一主题感兴趣的初学者。 Struts 2框架...
在Struts2中,拦截器工作在Action和结果(Result)之间,形成一个拦截器栈,每个拦截器按照配置的顺序依次执行。 Struts2的拦截器执行流程如下: 1. **初始化拦截器栈**:当Struts2框架启动时,会根据配置文件...
Struts2中的拦截器实现基于Java的动态代理机制,通过`Invocation`接口和`InterceptorStack`类来协调拦截器的执行。当一个请求到达时,Struts2会根据配置文件中的拦截器栈定义,逐个调用拦截器的`intercept()`方法,...
在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截器链。当请求到达Action时,这些拦截器会按照顺序逐个执行其`intercept()`方法,最后调用实际的动作方法。拦截器可以独立于...
拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨Struts2拦截器的原理、功能和配置。 1. **拦截器的工作原理**: 拦截器按照配置的顺序组成一个拦截器栈,在...
Struts2拦截器的实现基于Java的动态代理机制。每个拦截器都是一个实现了`Interceptor`接口的类,该接口定义了一个`intercept()`方法,该方法会在Action执行前后被调用。开发者可以通过实现自定义拦截器并将其添加到...
在Struts2中,拦截器(Interceptor)是核心功能之一,它扮演着处理请求、增强功能和控制流程的重要角色。本例子主要探讨了如何使用Struts2拦截器实现登录拦截,确保用户在没有正确登录的情况下无法访问受保护的页面...