- 浏览: 543334 次
- 性别:
- 来自: 湖南娄底
文章分类
- 全部博客 (252)
- C#资料 (0)
- java资料 (22)
- 数据库资料 (0)
- Java :开发中遇到的问题 (4)
- 书写属于我的人生 (6)
- spring (6)
- hibernate (16)
- struts (17)
- SSH (5)
- Linux操作系统 (1)
- Ext (5)
- Jquery (9)
- Tomcat部署出错 (2)
- xml (5)
- JSON (5)
- javascript 专题 (5)
- 开发环境配置 (2)
- web 开发 (27)
- Eclipse (7)
- Integration (1)
- 解决方案搜罗 (7)
- 网站收藏 (8)
- 测试框架 (1)
- iframe 专题 (6)
- JSTL (2)
- 各种插件收集 (2)
- 权限设计模型探讨 (1)
- DWR (1)
- log4j (3)
- java (11)
- java 格式化 (1)
- 软件工程 (2)
- 乱码专题 (1)
- UML (4)
- java 设计模式 篇 (1)
- 用法收集 (0)
- sourceforge apache solutions (2)
- Struts2 + JPA + Spring 开发 (1)
- 自定义工具箱 (0)
- IDE (4)
- opencms (1)
- jeecms (1)
- ant (0)
- maven (2)
- 数据库连接池 (0)
- spring MVC (0)
- android (1)
- web-server (1)
- iphone-开发环境 (1)
- iphone-软件开发 (6)
- iPhone-软件设计 (1)
- iphone-应用 (3)
- iPhone-设置 (2)
- iphone-软件开发-设计模式篇 (0)
- iphone-软件开发-OC基础 (9)
- iphone-软件开发- UI篇 (9)
- iphone-软件开发-工具类篇 (1)
- iphone-软件开发-第三方篇 (0)
- iphone-软件开发-特效篇 (2)
- iphone-软件开发-动画篇 (1)
- oracle (1)
- Java-Security (0)
- Three20 UI (1)
- IOS-HOW-TO-专题 (1)
- Mark-Develope Issues (1)
- iphone-软件开发- 资料参考篇 (1)
- C 语言-基本语法 (0)
- Java Servlet (2)
- Eclipse optimization (1)
- IOS Basic (0)
- ecl (0)
- FRONT-HTML (0)
- FRONT-JS (0)
- PHP (0)
最新评论
-
qq_29862421:
[[color=brown]color=yellow][url ...
java 上传图片同时获得图片的宽和高 -
hhb19900618:
NSString <==> NSNumber 之前 ...
OC 常用数据类型之间的转换 -
baohuan_love:
果然能解决问题,感谢分享
Tomcat Error Page配置 与 Error Page在IE下不能转发的问题 -
唐丽梅6313:
很细致。。
键盘样式风格有关设置-iOS开发 -
olived:
哥哥,为什么我的没有破解成功,总是提示许可文件丢失!!QQ:3 ...
[软件测试解决方案] soapUI 4.0.1破解方法
Java实现的拦截器
拦截器在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。
理解拦截器的核心原理对理解这些开源框架的体系结构至关重要。
下面以一个简单的模型的来说明拦截器的实现的一般方法。
模型分为以下模块:
业务组件:是被代理和被拦截的对象。
代理处理器:实现了InvocationHandler接口的一个对象
代理对象:Proxy对象。
拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法。
客户端:执行业务处理的入口。
以下是模型的实现
一、业务组件:分为业务接口和业务类
/**
* 业务组件接口
*/
public interface BusinessInterface {
public void doSomething();
}
/**
* 业务组件
*/
public class BusinessClass implements BusinessInterface{
public void doSomething() {
System.out.println("业务组件BusinessClass方法调用:doSomething()");
}
}
二、代理处理器:包含了业务对象绑定动态代理类的处理,并实现了 InvocationHandler接口的invoke方法。
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* 动态代理处理器工具
*/
public class DynamicProxyHandler implements InvocationHandler {
private Object business; //被代理对象
private InterceptorClass interceptor = new InterceptorClass(); //拦截器
/**
* 动态生成一个代理类对象,并绑定被代理类和代理处理器
*
* @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();
}
}
发表评论
-
java 上传图片同时获得图片的宽和高
2012-02-01 19:00 4526java 上传图片同 ... -
Tomcat 6中配置SSL双向认证
2012-01-09 20:58 0参考资料:http://wangking717.ite ... -
使用exe4j打包jar生成exe常用设置
2012-01-07 22:49 1086使用exe4j打包jar生成exe常用设置 ... -
字符串工具箱
2011-12-25 21:01 1018import java.io.File; import ja ... -
Java创建、重命名、删除文件和文件夹
2011-12-25 21:00 7075Java的文件操作太基础, ... -
JAVA 正则表达式
2011-12-03 22:37 795在Sun的Java JDK 1.40版本中 ... -
java 格式化字符串输出
2011-11-12 10:46 1296输出指定格式的字符串: Java代 ... -
java中实现换行的几种方法
2011-11-12 10:22 48251.使用java中的转义符"\r\n&quo ... -
java 访问修饰符
2011-11-06 12:04 834private package-private 只可以在同一 ... -
java集合框架
2011-10-12 08:10 866待续。。。 -
java中的io系统总结(转)
2011-10-09 09:02 948java中的io中的(input/outp ... -
属性文件的读写
2011-09-17 23:06 927附件中包含:属性文件的读写操作! -
javassist:增强型的java反射工具,获取方法参数名,获取方法参数标注值
2011-09-03 14:24 5057java的反射是不能获取方法的参数名的。比如: publi ... -
quartz cronExpression详解<转载>
2011-08-18 20:14 1025quartz cronExpression详解 2009 ... -
java获取真实客户端ip地址 <转载>
2011-08-12 11:35 1918在JSP里,获取客户端的IP地址的方法是:request.ge ... -
java class.getResource()方法获取文件资源
2011-08-06 22:34 1573《转载》 用JAVA获取文件,听似简单,但对于很多像我这样的 ... -
求数组中最小的不重复的整数
2011-03-19 11:23 1003public class minNoRepeatNum{ ... -
WEB计时器的实现——Timer(转载)
2010-10-21 07:55 1719Java定时器(java.util.Timer)有定时触发计划 ... -
依赖注入的几种实现类型
2010-10-18 10:28 887Type1 接口注入 我们常 ... -
spring 中Pointcut的定义(转)
2010-10-18 09:47 1576在Spring 2.0中,Pointcut的定义包括两个部分 ...
相关推荐
本文根据java代理实现CXF拦截器异常时只能进入fault拦截器而不能继续向下执行的问题。 利用java代理让RMI具有拦截器的功能。
在Java中,有两种主要的方式来实现拦截器:一种是基于接口的JDK动态代理,另一种是基于类的CGLIB动态代理。这里我们将深入探讨这两种方式以及与责任链模式的关系。 首先,让我们理解什么是拦截器。拦截器是一种设计...
### Java Struts 实现拦截器的关键知识点 #### Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它利用一系列的组件来处理用户请求并生成响应。其中,拦截器...
本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...
在`TokenInterceptor.java`中实现拦截器逻辑: ```java import com.alibaba.fastjson.JSONObject; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; import org....
总之,Java项目中的拦截器是一种强大的工具,它能够帮助我们在不侵入业务代码的情况下,实现对请求的控制和处理。了解并熟练掌握拦截器的使用,对于提升项目的架构质量以及开发效率具有重要意义。
以下将详细讲解基于Java实现的IP黑白名单拦截器及其核心概念。 首先,我们来看标题提及的“ip黑白名单拦截器java示例”。IP拦截器的主要任务是检查请求的源IP地址,如果该地址存在于黑名单中,拦截器会阻止其访问;...
自定义拦截器需要实现`com.opensymphony.xwork2.interceptor.Interceptor`接口,然后在配置文件中声明并配置拦截器。例如,你可能想要创建一个日志拦截器,记录每个Action执行前后的信息。 6. **拦截器栈**: - ...
在Java Web开发中,拦截器(Interceptor)是一个重要的概念,特别是在使用MVC框架如Struts2时。拦截器可以理解为一种预处理和后处理机制,它在请求到达控制器之前和离开控制器之后进行操作,例如日志记录、权限检查...
Java拦截器是面向切面编程(AOP)在Java Web应用中的一个重要实现,主要用于扩展或增强应用程序的行为。在Struts2框架中,拦截器扮演着关键角色,它们可以在请求到达Action之前或之后执行某些操作,比如日志记录、...
首先,创建自定义拦截器类并实现`HandlerInterceptor`接口是实现拦截器功能的第一步。如示例代码所示,我们需要创建一个名为`ErrorInterceptor`的类,并在其中实现`preHandle`和`postHandle`方法。这两个方法都是在...
本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...
MyBatis拦截器实现通用权限字段添加的方法 MyBatis拦截器是一种非常实用的技术,可以用来实现各种复杂的数据库操作。本文将详细介绍如何使用MyBatis拦截器来实现通用权限字段添加,达到灵活、可靠、可维护的数据库...
利用反射和动态代理机制实现自定义拦截器Interceptor 在本文中,我们将探讨如何利用反射和动态代理机制来实现自定义拦截器Interceptor。拦截器Interceptor是一种常见的设计模式,用于在方法调用前后执行某些操作,...
本文将详细介绍如何在Spring Boot中实现拦截器以进行权限校验和登录验证,通过一个简单的Demo来阐述整个过程。 首先,我们需要创建一个自定义的拦截器类。这个类通常会继承`HandlerInterceptorAdapter`,这是一个...
Java中的动态代理(Dynamic Proxy)是实现拦截器机制的基础。动态代理允许我们在运行时创建一个实现了指定接口的新类。这个新类可以在方法调用前后插入自定义的行为,类似于拦截器的功能。Java的`java.lang.reflect....
java 元注解+拦截器实现自定义注解 @CmwAutoWired:自定义依赖注入 注意:注入的接口和实现类需要在同一包名下,注解的是类则无限制 @FieldAnnotation:自定义属性注解 @MethodAnnotation:自定义方法注解 @...
本文将深入探讨如何使用拦截器(Interceptor)来实现这一目标,特别是不直接与数据库交互的情况。 首先,我们需要理解拦截器的概念。拦截器是一种设计模式,常见于像Spring MVC或Struts2这样的MVC框架中。它允许...