`

struts2权威指南 aop实现原理 笔误代码

阅读更多

关键字:struts2 ,aop实现原理

最近在学习李刚老师的struts2权威指南 ,从书的内容上看感觉李刚老师有丰富的开发经验。

不过在学习到213页关于aop拦截器的实现原理代码中,感觉有个笔误的地方!

   拦截器的实现原理JDK的动态代理

/**
 * 因为Dog 动态代理只能对实现了接口的实例来生成代理
 * @author Administrator
 *
 */
public interface Dog {
	
	public void info();
	public void run();

}

 

 

public class DogImpl implements Dog {
	public void info()
	{
		System.out.println("我是一个猎狗");
	}

	
	public void run()
	{
		System.out.println("我奔跑速度");
	}
	
}

 

/**
 * 拦截器类
 * @author Administrator
 *
 */
public class DogIntercepter {

	
	
	public void method1()
	{
		System.out.println("===模拟通用方法一");
	}
	
	public void method2()
	{
		System.out.println("===模拟通用方法二=======");
	}
}

 

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ProxyHandler implements InvocationHandler{

	private Object target;//被加入切面的对象
	DogIntercepter di=new DogIntercepter();
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		// TODO 自动生成方法存根
	
		Object result=null;
		if(method.getName().equals("info"))
		{
			di.method1();//切面
			result=method.invoke(target, args);
			//可以动态的调用目标对象的方法
			di.method2();
		}
		else
		{
			result=method.invoke(target, args);
		}
			
		return result;
	}
	

	public void setTarget(Object o)
	{
		this.target=o;
	}
	
	
}

 在下面的代理工厂中有点感觉不是很理想应该是笔误了

 

import java.lang.reflect.Proxy;
/**
 * 该代理工厂的主要作用是根据目标对象生成一个代理的对象
 * @author Administrator
 *
 */
public class MyProxyFactory {

 public static Object getProxy(Object object)
 {
  
  Class cls=object.getClass();
  ProxyHandler handler=new ProxyHandler();
  handler.setTarget(object);//
  return Proxy.newProxyInstance(DogImpl.getClassLoader(), object.getClass().getInterfaces(), handler);//handler
  //代理工厂负责根据目标对象和对应的拦截器生成新的代理对象
  //代理对象中的方法是目标方法和拦截器方法的组合
 }
 

特更改为

import java.lang.reflect.Proxy;
/**
 * 该代理工厂的主要作用是根据目标对象生成一个代理的对象
 * @author Administrator
 *
 */
public class MyProxyFactory {

	public static Object getProxy(Object object)
	{
		
		Class cls=object.getClass();
		ProxyHandler handler=new ProxyHandler();
		handler.setTarget(object);//
		return Proxy.newProxyInstance(cls.getClassLoader(), object.getClass().getInterfaces(), handler);//handler
		//代理工厂负责根据目标对象和对应的拦截器生成新的代理对象
		//代理对象中的方法是目标方法和拦截器方法的组合
	}
	
}

 

public class TestDog {

	public static void main(String args[])
	{
		Dog targetObject=new DogImpl();
		Dog dog=null;
		Object proxy=MyProxyFactory.getProxy(targetObject);
		if(proxy instanceof Dog)
		{
			dog=(Dog)proxy;
		}
		dog.info();
		dog.run();
	}
}

 

 

 

欢迎大家积极对struts2拦截器原理以及jdk动态代理发表意见谢谢

4
0
分享到:
评论

相关推荐

    Struts2权威指南 加源码

    本《Struts2权威指南》结合了源码分析,旨在帮助读者深入理解Struts2的工作原理以及如何在实际项目中有效利用它。 首先,Struts2的核心功能包括动作映射、结果类型、拦截器等。动作映射允许开发者将URL请求与特定的...

    struts2+spring aop demo

    在Spring框架中,AOP通过切面(Aspect)和通知(Advice)来实现,切面定义了关注点的结构,而通知则是实际执行的代码。 在这个示例中,我们可能会创建一个切面类,用于处理日志记录。切面类会包含一个或多个通知...

    spring aop实现原理

    NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/319927

    spring和struts的整合-aop的使用

    在这个"spring和struts的整合-aop的使用"主题中,我们将深入探讨如何将Spring与Struts2集成,并利用Spring的AOP实现日志记录。 首先,整合Spring和Struts2的关键在于配置。通常,我们需要在Struts2的配置文件...

    struts2权威指南

    《Struts2权威指南》这本书深入浅出地讲解了Struts2框架的各个方面,帮助开发者掌握其核心概念和技术。 首先,Struts2的核心概念包括Action、Result、Interceptor(拦截器)等。Action是处理用户请求的核心组件,它...

    struts2权威指南第13章代码

    本章节聚焦于《Struts2权威指南》第13章的代码实践部分,旨在深入理解和掌握Struts2的核心特性和实际应用。 在Struts2框架中,主要涉及以下几个关键知识点: 1. **Action类**:这是处理用户请求的核心组件,通常...

    struts2 拦截器(AOP,面向切面编程)

    在Struts2中,拦截器就是实现AOP的一种方式。 **Struts2 拦截器**是在Action执行前后插入的代码片段,它们按照定义的顺序组成一个拦截器链。每个拦截器都有机会处理请求,决定是否允许Action执行,以及如何处理...

    struts2权威指南.zip

    这本书《Struts2权威指南》是开发者学习和掌握Struts2框架的重要资源,它深入浅出地讲解了该框架的核心概念、设计模式以及实际应用。 Struts2框架基于Model-View-Controller(MVC)设计模式,它提供了全面的控制层...

    struts2学习利器(api+深入浅出struts2+struts2权威指南)高清版

    这个压缩包包含的资源是Struts2学习的宝贵资料,包括API文档、深入讲解的书籍以及权威指南,旨在帮助初学者和有经验的开发者更好地理解和掌握Struts2的核心概念和技术。 1. **Struts2_API.chm**: 这是Struts2的...

    struts2权威指南.rar

    1. **拦截器(Interceptors)**:Struts2的拦截器是基于AOP(面向切面编程)的概念,可以插入到请求处理流程中,实现如日志记录、事务管理、权限验证等功能,提高了代码的复用性和模块化。 2. **配置灵活性**:...

    Struts 2权威指南 完整版(共21章) + 源代码

    《Struts 2权威指南》这本书是深入学习该框架的重要参考资料,包含21个章节,全面覆盖了Struts 2的基础概念、核心组件、实战技巧以及最佳实践。 1. **Struts 2框架基础**:Struts 2是Apache软件基金会下的开源项目...

    Struts2权威指南完整版

    《Struts2权威指南》是李刚所著的一本详细解析Struts2框架的书籍,其完整版涵盖了Struts2的核心概念、配置、实践应用以及与其他流行技术如Spring、JSF、Hibernate的整合。 首先,让我们深入理解Struts2的基础知识。...

    Struts 2权威指南

    Struts 2 权威指南深入探讨了基于WebWork核心的MVC开发,该书旨在为读者提供关于Struts 2框架的全面理解和实践指导。Struts 2作为一款成熟的MVC框架,其发展历程和核心特性是理解其价值的关键。 在Web应用发展的...

    Struts 2权威指南--基于WebWork核心的MVC开发

    本书《Struts 2权威指南》不仅涵盖了以上的基本概念,还会深入探讨Struts 2的高级特性,如拦截器的自定义、Action的分页、国际化、AOP(面向切面编程)的应用等。通过阅读本书,开发者将能够熟练运用Struts 2框架,...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    这种通过代理模式实现的AOP方法,可以很好地将业务逻辑代码与额外的横切关注点分离,使得代码更加清晰,易于维护。如果将来需要去除日志记录功能,只需要替换掉代理类的实例,而不需要修改任何业务逻辑代码。此外,...

    《Struts 2.1权威指南》PDF版本下载.txt

    《Struts 2.1权威指南》作为一本全面介绍Struts 2框架的专业书籍,涵盖了从基本概念到高级技巧的全方位内容。对于希望深入了解并掌握Struts 2框架的开发者来说,这本书无疑是非常宝贵的资源。通过阅读本书,不仅可以...

    Struts2 技术内幕——深入解析Struts2架构设计与实现原理.zip

    这本书《Struts2技术内幕——深入解析Struts2架构设计与实现原理》深入探讨了Struts2的核心机制和设计理念,旨在帮助开发者更好地理解和运用这个框架。 首先,Struts2的出现是为了解决Struts1在MVC模式中的局限性,...

    Struts2技术内幕 深入解析Struts架构设计与实现原理

    ### Struts2技术内幕:深入解析Struts架构设计与实现原理 #### Struts2概述 Struts2是Apache Software Foundation支持的一个开源项目,它是Struts1的下一代版本,继承了Struits1的优点,并在此基础上进行了大量的...

    Struts2.1权威指南光盘源代码第9章

    2. **Interceptor(拦截器)**: Struts2的拦截器是实现AOP(面向切面编程)的关键,它们在Action调用前后执行,可以实现日志记录、权限检查、事务管理等多种功能。 3. **ValueStack与OGNL**: ValueStack是Struts2中...

    PhotoShopCS2与Struts2权威指南

    综上所述,《PhotoShopCS2与Struts2权威指南》是一本综合性的技术图书,旨在帮助读者掌握图像设计与Web开发的关键技能,特别是如何在Java环境中利用Struts2框架构建高效的应用,并结合Spring和MyBatis实现数据库操作...

Global site tag (gtag.js) - Google Analytics