`

Struts2拦截器基本实现原理

 
阅读更多

1. 首先定义拦截器类

    拦截器类就是一个普通的类,它有两个方法,一个方法用来定义被拦截对象执行方法前做什么,另一个方法定义被拦截对象执行方法后做什么。

/*
 * 拦截器类
 */
public class Interceptor {
	public void doBefore(){
		System.out.println("do before");
	}
	public void doAfter(){
		System.out.println("do after");
	}
}

 

2. 定义一个目标类

    目标类即被拦截处理的对象类。

写道
/**
* 定义目标类接口
* @author JyeChou
*
*/
public interface TargetInterface {
public void doSomething();
}



 

/**
* 目标类
* @author JyeChou
*
*/
public class Target implements TargetInterface {

@Override
public void doSomething() {

System.out.println("Do something!");

}

}

  

 

3. 定义一个处理器类

    处理器类定义什么时候,对目标类的什么方法进行拦截处理。

/**
 * 处理类
 * @author JyeChou
 *
 */
public class MyHandler implements InvocationHandler {
	
	private Object object;
	private Interceptor interceptor = new Interceptor();

	public void setObject(Object object){
		this.object = object;
	}
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result = null;
		
		interceptor.doBefore();
		
		result = method.invoke(object, args);
		
		interceptor.doAfter();
		
		return result;
	}

}

 

 

4. 定义一个代理工厂类

    通过反射机制对目标对象进行动态代理。

/**
 * 代理类
 * @author JyeChou
 *
 */
public class MyProxy {
	
	//代理是为了获得最终的代理对象,所以返回Object
	public Object getProxy(Object object){
		
		MyHandler myHandler = new MyHandler();
		
		myHandler.setObject(object);
		
		return Proxy.newProxyInstance(Target.class.getClassLoader(), object.getClass().getInterfaces(), myHandler);
		
		
	}

}

 

 

 

5. 使用代理工厂类实现对象代理

    

/**
 * 代理消费类
 * @author JyeChou
 *
 */
public class Client {

	public static void main(String[] args) {
		
		//目标对象
		TargetInterface target = new Target();
		
		MyProxy myProxy = new MyProxy();//代理工厂
		
		//生成目标对象的代理
		TargetInterface proxy = (TargetInterface) myProxy.getProxy(target);
		
		//执行的是代理对象的方法
		proxy.doSomething();
		
	}

}

 

 

 

分享到:
评论

相关推荐

    Struts2拦截器实现权限控制demo

    通过以上步骤,我们可以实现一个基本的基于Struts2拦截器的权限控制系统。这个demo对于初学者来说,是一个很好的起点,可以帮助他们理解如何在实际项目中结合Struts2的拦截器和权限控制来增强应用的安全性。在实际...

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

    下面我们将深入探讨Struts2拦截器的实现原理。 首先,让我们理解一下拦截器的基本概念。拦截器是基于Java的动态代理机制实现的,它可以看作是一个过滤器,它在Action调用前后执行一些额外的任务,如日志记录、权限...

    详解Struts2拦截器

    本文将深入探讨Struts2拦截器的基本概念、工作原理以及其实现机制,并结合实际应用场景来展示如何利用拦截器提高代码的复用性与可维护性。 #### 二、拦截器的概念与作用 拦截器(Interceptor)是一种设计模式,...

    struts2拦截器的使用方法

    ### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 ...通过以上介绍,我们可以了解到Struts2拦截器的基本使用方法及配置方式,这对于理解Struts2框架的工作机制以及优化应用架构具有重要意义。

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

    首先,让我们了解Struts2拦截器的基本工作原理。拦截器在Action执行前后被调用,形成一个拦截器链。每当一个HTTP请求到达,Struts2的DispatcherServlet会按照配置的顺序逐个调用这些拦截器,直到最后执行Action。...

    Struts2学习案例(拦截器)

    在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...

    struts2.X 拦截器源码

    了解了拦截器的基本原理后,我们可以通过`Struts2.x 拦截器.avi`这个视频文件深入学习Struts2拦截器的实现细节,比如如何编写自定义拦截器、如何配置拦截器链、如何处理异常等。`readme.txt`可能是关于这个主题的...

    struts1.2拦截器使用插件

    2. **注册拦截器**:在`struts-config.xml`配置文件中,通过`<interceptors>`标签定义拦截器栈,然后通过`<action>`标签的`interceptor-ref`属性引用拦截器栈。 3. **配置拦截器栈**:在`struts-config.xml`中,...

    12 struts2拦截器

    Struts2提供了一系列内置的拦截器,如`params`拦截器用于处理请求参数,`exception`拦截器处理异常,`i18n`拦截器实现国际化,`chain`拦截器使请求继续执行下一个Action,`timer`记录Action的执行时间等。这些拦截...

    struts2拦截器

    拦截器是 Struts2 框架中实现业务逻辑控制、权限验证、日志记录等功能的重要手段,极大地提高了代码的可复用性和可维护性。 1. **拦截器的基本原理** - 在 Struts2 中,拦截器的工作方式类似于过滤器(Filter),但...

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

    本篇文章将深入剖析Struts2拦截器的工作原理,并通过案例"struts007"来展示如何实际应用。 首先,我们了解下拦截器的基本概念。拦截器是一个实现了Struts2提供的`Interceptor`接口的类,它定义了两个方法:`...

    Struts2的拦截器的使用详解

    至此,你已经掌握了Struts2拦截器的基本使用。实际开发中,你可以根据项目需求灵活组合和扩展拦截器,实现更复杂的功能,提高代码复用性和可维护性。在深入研究源码时,可以关注`ActionInvocation`接口和`...

    模拟Struts2拦截器代码

    本文将深入探讨如何模拟Struts2的拦截器,并通过一个实际的Filter类来阐述其工作原理。 首先,我们需要理解Struts2拦截器的基本概念。拦截器是一个实现了`Interceptor`接口的Java类,它位于动作调用之前和之后,...

    struts2拦截器笔记

    通过深入学习 Struts2 的拦截器机制,开发者可以更好地理解框架的工作原理,并且能够定制化地处理业务需求,提高应用程序的效率和安全性。同时,这也为团队协作和代码规范提供了有力的支持。因此,熟悉并熟练运用...

    自定义拦截器struts2源代码

    通过阅读和理解这些代码,你可以更好地掌握Struts2拦截器的工作原理,并在实际项目中灵活运用。 此外,`web.xml`主要配置了Struts2的前端控制器`DispatcherServlet`,确保Struts2能够正确地处理HTTP请求。在理解...

    struts2拦截器的使用

    在深入探讨Struts2拦截器的使用之前,我们先来了解一下拦截器的基本概念以及它在Struts2框架中的角色和重要性。 ### Struts2拦截器的概念 拦截器(Interceptor)是Struts2框架的核心组件之一,它允许开发者在...

    struts2拦截器一些用法

    通过以上介绍可以看出,Struts2的拦截器机制非常灵活强大,不仅可以方便地控制Action的执行流程,还能帮助开发者轻松实现各种跨切关注点的功能。正确理解和使用拦截器对于开发高质量的Struts2应用来说至关重要。

    Struts2.0拦截器总结

    ### Struts2.0拦截器详解 ...理解拦截器的工作原理及其实现方式对于Struts2框架的学习和应用具有重要意义。此外,深入学习Struts2的拦截器机制还有助于更好地掌握AOP思想,从而在实际项目开发中灵活运用。

    struts2工作原理及拦截器和过滤器

    Struts2 工作原理及拦截器和过滤器 Struts2 框架的工作原理可以分为以下几个步骤: 1. 客户端发出一个指向 Servlet 容器的请求(Tomcat); 2. 这个请求会经过几个过滤器,最后会到达 FilterDispatcher 过滤器。...

    struts2的基本实现原理

    这个压缩包文件"mymvc"可能包含了一个简单的Struts2应用实例,让我们来深入理解Struts2的基本实现原理。 首先,Struts2的核心是Action类,它是业务逻辑的入口点。在描述中提到的"execute"方法,就是Struts2 Action...

Global site tag (gtag.js) - Google Analytics