Java实现的拦截器

/**

  * 动态生成一个代理类对象,并绑定被代理类和代理处理器

  *

  * @param business

  * @return 代理类对象

  */

  public Object bind(Object business) {

  this.business = business;

  return Proxy.newProxyInstance(

  //被代理类 的ClassLoader

  business.getClass().getClassLoader(),

  //要被代理 的接口,本方法返回对象会自动声称实现了这些接口

  business.getClass().getInterfaces(),

  //代理处理 器对象

  this);

  }

  /**

  * 代理要调用的方法,并在方法调用前后调用连接器的方法.

  *

  * @param proxy  代理类对象

  * @param method 被代理的接口方法

  * @param args   被代理接口方法的参数

  * @return 方法调用返回的结果

  * @throws Throwable

  */

  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

  Object result = null;

  interceptor.before();

  result=method.invoke(business,args);

  interceptor.after();

  return null;  //To change body of implemented methods use File | Settings | File Templates.

  }

  }

  三、拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的 一些方法。

  /**

  * 拦截器

  */

  public class InterceptorClass {

  public void before(){

  System.out.println("拦截器InterceptorClass方法调用:before()!");

  }

  public void after(){

  System.out.println("拦截器InterceptorClass方法调用:after()!");

  }

  }

  四、模拟客户端:执行业务处理的入口。

  /**

  * 客户端

  */

  public class Client {

  public static void main(String args[]) {

  DynamicProxyHandler handler = new DynamicProxyHandler();

  BusinessInterface business = new BusinessClass();

  BusinessInterface businessProxy = (BusinessInterface) handler.bind(business);

  businessProxy.doSomething();

  }

  }

时间: 2024-11-09 08:39:01

Java实现的拦截器的相关文章

【JAVA学习】拦截器与过滤器的区别

过滤器 它是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器 它是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单

Java三大器之拦截器(Interceptor)的实现原理及代码示例

前言:前面2篇博客,我们分析了Java中过滤器和监听器的实现原理,今天我们来看看拦截器. 1,拦截器的概念    java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式.在AOP中,拦截器用于在某个方法或者字段被访问之前,进行拦截然后再之前或者之后加入某些操作.目前,我们需要掌握的主要是Spring的拦截器,Struts2的拦截器

【java web】拦截器inteceptor

一.简介 java里的拦截器提供的是非系统级别的拦截,也就是说,就覆盖面来说,拦截器不如过滤器强大,但是更有针对性. Java中的拦截器是基于Java反射机制实现的,更准确的划分,应该是基于JDK实现的动态代理.它依赖于具体的接口,在运行期间动态生成字节码. 拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其 执行,同时也提供了一种可以提取Action中可重用部分代码的方式.在AOP中,拦截器用于在某

Java中的拦截器、过滤器、监听器

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts2的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程(AOP)的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器

Java Filter(拦截器)

多个Filter按照在配置文件中配置的filter顺序执行. 在web.xml文件中配置该Filter,使用init-param元素为该Filter配置参数,init-param可接受如下两个子元素: param-name:指定参数名. param-value:指定参数值. filter .filter-mapping .servlet.servlet-mapping 才构成一个完整的拦截器配置. Filter类需要实现Filter接口,该接口有init.doFilter.destroy3个方法

过滤器(java.filter)和拦截器(springmvc.interceptor)区别

①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用. ④拦截器可以访问action上下文.值栈里的对象,而过滤器不能访问. ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 执行顺序:拦截器是被包裹在过滤器 假设doFilter中有代码:sout1;doFilter;sout2 执行顺序:sout1--

Java代码登录拦截器例子

通常我们在点击某个按钮的时候,对某个对象进行操作,是需要登陆才能做的,这时候就需要一个拦截器对某个方法进行拦截, 比如你在一个图书管理中心中你要借书,这时候你就会被要求出示借书证,管理员才能借书给你.而拦截器就具有这样的功能 :游客点击借书按钮-->后台拦截器拦截该方法-->判断你是否登陆-->已经登陆-->允许操作-->没登陆-->请登陆-->允许操作 代码如下: UserFiler.java package com.utis.filter; import ja

Java 过滤器和拦截器的区别

昨天晚上做梦,梦见面试官问我过滤器和拦截器的区别... 过滤器和拦截器的区别:1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的. 请求结束返回也是,是在servlet处理完后,返回给前端之前.2.拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的, spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑. 而过滤器是JavaEE标准,只需依赖servlet api ,不

java拦截器(Interceptor)学习笔记

1,拦截器的概念    java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式.在AOP中,拦截器用于在某个方法或者字段被访问之前,进行拦截然后再之前或者之后加入某些操作.目前,我们需要掌握的主要是Spring的拦截器,Struts2的拦截器不用深究,知道即可. 过滤器.监听器.拦截器差异图2,拦截器的原理    大部分时候,拦截