`
zhouxianglh
  • 浏览: 267445 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2 拦截器 和 Java 中的动态代理

阅读更多

今天把上个星期看的关于 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 拦截器动态代理

    Struts拦截器是Java Web开发框架Struts2中的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,实现AOP(面向切面编程)的理念。动态代理则是Java提供的一种机制,允许在运行时创建接口的实现类实例...

    详解Struts2拦截器

    拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。本文将深入探讨Struts2拦截器的基本概念、工作原理以及其实现机制,并结合实际应用场景来展示如何利用拦截器提高代码的复用性与可维护性。...

    struts2 拦截器实例

    1. **拦截器的概念**:拦截器是基于Java的动态代理机制实现的,它在Action调用前后进行处理,形成一个拦截链。每个拦截器都可以实现特定的功能,比如验证用户输入、记录日志或执行安全检查。 2. **拦截器栈**:在...

    Struts2 拦截器

    在Struts2中,拦截器是基于Java的动态代理机制实现的。当你定义一个拦截器时,实际上创建了一个实现了`Interceptor`接口的类。这个接口有一个关键方法`intercept()`,它是执行拦截逻辑的地方。通过在`struts.xml`或`...

    Struts2拦截器实现权限控制demo

    拦截器是基于Java的动态代理模式实现的,它们按照配置的顺序在Action执行之前和之后执行。通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建自定义拦截器。在Struts2的核心配置文件`struts.xml...

    Struts2拦截器原理分析

    拦截器是基于Java的动态代理机制实现的,它允许我们在Action执行前后插入自定义的行为。在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它定义了`intercept()`方法,该方法会在Action执行之前和之后被调用...

    Struts2拦截器源码

    首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的一个概念,在Struts2中,拦截器是基于Java的动态代理机制实现的。它们是一系列实现了`Interceptor`接口的类,可以在Action执行前后插入额外的行为。这些行为...

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

    在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照配置的顺序形成一个拦截器链。每个拦截器都可以在Action执行之前或之后执行特定的任务,而无需修改Action本身。这遵循了“开闭原则”,使得代码更易于...

    struts2拦截器_动力节点Java学院整理

    拦截器是基于Java的动态代理机制实现的,它遵循AOP(面向切面编程)的概念,能够对业务逻辑进行非侵入式的增强。 1. **工作原理** Struts2拦截器的工作流程如下:当一个HTTP请求到达应用时,请求会经过一系列按...

    Struts2 拦截器过滤方法(二十八)

    首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行前后介入,形成一个拦截链。拦截链是由配置文件(通常为struts.xml)定义的,每个拦截器按照顺序执行。当一个请求到达时,先执行拦截链上的所有拦截器...

    struts2拦截器时序图

    在Struts2中,拦截器是一种动态拦截Action调用的对象。它允许开发者在Action执行之前、执行之后,或者在执行过程中根据需要插入自定义逻辑。拦截器可以被看作是一个过滤器,它拦截了Action的调用,并在调用前后执行...

    运用struts2技术的拦截器实现的页面检测和用户注册

    拦截器是基于Java的动态代理机制实现的,它们在Action调用之前和之后执行,形成一个拦截器链。开发者可以通过配置struts.xml或struts.properties文件来定义拦截器链和其顺序。 1. **创建拦截器** 在Struts2中,...

    struts拦截器的例子

    Struts拦截器是Java Web开发中的重要概念,尤其在基于Struts 2框架的应用中扮演着核心角色。这个"struts拦截器的例子"提供了一个学习和理解拦截器工作原理的起点,非常适合对这一主题感兴趣的初学者。 Struts 2框架...

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

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

    struts2拦截器原理

    Struts2中的拦截器实现基于Java的动态代理机制,通过`Invocation`接口和`InterceptorStack`类来协调拦截器的执行。当一个请求到达时,Struts2会根据配置文件中的拦截器栈定义,逐个调用拦截器的`intercept()`方法,...

    struts2实现拦截器、

    在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截器链。当请求到达Action时,这些拦截器会按照顺序逐个执行其`intercept()`方法,最后调用实际的动作方法。拦截器可以独立于...

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

    拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨Struts2拦截器的原理、功能和配置。 1. **拦截器的工作原理**: 拦截器按照配置的顺序组成一个拦截器栈,在...

    struts2拦截器

    Struts2拦截器的实现基于Java的动态代理机制。每个拦截器都是一个实现了`Interceptor`接口的类,该接口定义了一个`intercept()`方法,该方法会在Action执行前后被调用。开发者可以通过实现自定义拦截器并将其添加到...

    Struts2拦截器例子

    在Struts2中,拦截器(Interceptor)是核心功能之一,它扮演着处理请求、增强功能和控制流程的重要角色。本例子主要探讨了如何使用Struts2拦截器实现登录拦截,确保用户在没有正确登录的情况下无法访问受保护的页面...

Global site tag (gtag.js) - Google Analytics