- 浏览: 734657 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (198)
- struts 相关 (8)
- hibernate相关 (5)
- JSP相关 (3)
- javascript相关 (9)
- spring相关 (0)
- J2SE相关 (25)
- MSSQL (6)
- web服务器相关 (3)
- html相关 (8)
- Ajax相关 (1)
- VS2008 (2)
- ArcGIS Web server (2)
- WebService (5)
- ANT (4)
- Ajax (5)
- IDE (2)
- 网络相关知识点 (3)
- 算法相关 (3)
- 数据库相关 (8)
- JUnit (1)
- 搜索引擎 (1)
- JAVA模式 (11)
- Dorado (4)
- JXL (2)
- ACCESS (1)
- PHP (3)
- Mysql 数据库 (2)
- J2EE (11)
- Tomcat (1)
- Oracle (15)
- WebLogic (1)
- Eclipse (4)
- Flex (1)
- java 路上 (1)
- IIS服务器 (1)
- Pushlet (2)
- Log 4j (1)
- XML (2)
- JDOM (1)
- RMI (0)
- 常用 bat 命令 (1)
- velocity (2)
- Linux (5)
- PL/SQL (2)
- SQL (5)
最新评论
-
virtualspider:
请问我用了volatile不copy到线程内存里面的话,我怎么 ...
java中关键字volatile的作用 -
saiarmuluo:
不错,最近在看并发的知识一直没弄懂这块,谢谢!
java中关键字volatile的作用 -
java大神dxg:
Servlet、Filter和Listener -
mao_siyu:
多谢楼主 讲的很明白~~
java中关键字volatile的作用 -
qiangcz:
angole 写道jgroups 写道volatile告诉jv ...
java中关键字volatile的作用
拦截器在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。
理解拦截器的核心原理对理解这些开源框架的体系结构至关重要。
下面以一个简单的模型的来说明拦截器的实现的一般方法。
模型分为以下模块:
业务组件:是被代理和被拦截的对象。
代理处理器:实现了InvocationHandler接口的一个对象
代理对象:Proxy对象。
拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法。
客户端:执行业务处理的入口。
以下是模型的实现
一、业务组件:分为业务接口和业务类
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-3-20 23:32:06
* Company: LavaSoft(http://lavasoft.blog.51cto.com)
* 业务组件接口
*/
public interface BusinessInterface {
public void doSomething();
}
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-3-20 23:31:12
* Company: LavaSoft(http://lavasoft.blog.51cto.com)
* 业务组件
*/
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;
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-3-20 23:24:10
* Company: LavaSoft(http://lavasoft.blog.51cto.com)
* 动态代理处理器工具
*/
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,在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法。
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-3-20 23:26:31
* Company: LavaSoft(http://lavasoft.blog.51cto.com)
* 拦截器
*/
public class InterceptorClass {
public void before(){
System.out.println("拦截器InterceptorClass方法调用:before()!");
}
public void after(){
System.out.println("拦截器InterceptorClass方法调用:after()!");
}
}
四、模拟客户端:执行业务处理的入口。
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-3-21 0:32:55
* Company: LavaSoft(http://lavasoft.blog.51cto.com)
* 客户端
*/
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();
}
}
文章出处:http://www.diybl.com/course/3_program/java/javajs/200847/108477.html
发表评论
-
什么是内存泄露问题?
2010-05-21 10:23 2244·简介....................... ... -
Java同步、异步相关知识点
2009-11-12 18:02 5239一、关键字: thread( ... -
java读取properties文件
2009-10-21 08:45 1426一. .properties 文件的形式 引用# 以下为服务 ... -
JAVA推技术聊天室的实现
2009-10-14 17:37 3382基于推技术的聊天室在国内现在已经比较常见。这种聊天室最大的特点 ... -
Java中的”推”技术
2009-10-14 17:11 1246Java中的”推”技术 [/size] bromon原创 ... -
JAVA iterator 用法
2009-10-13 11:33 3313引用迭代器(Iterator) 迭代器是一种设计模式,它 ... -
java 获取MAC地址
2009-10-06 17:59 1187获取MAC地址: package com; imp ... -
java 各种类型初始值
2009-09-27 09:49 2159基本变量:byte,short,int,long 初始化为0 ... -
JAVA的日期时间相减问题
2009-09-12 12:44 3498import java.util.Date;import ja ... -
线程和进程的区别
2009-09-07 19:12 1246进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该 ... -
java中金额的精确计算问题
2009-08-25 13:26 3565import java.math.BigDecimal; ... -
读取propery文件
2009-06-30 11:30 1120http://www.iteye.com/topic/3808 ... -
获取用户输入I/O
2009-06-17 10:22 1177import java.io.BufferedReader ... -
获取 JAVA 程序当前的工作目录
2009-06-16 16:43 2631获取 JAVA 程序当前的工作目录 File file = ... -
eclipse导出jar 并制作成 bat直接运行
2009-06-16 15:29 3770在eclipse中导出生成的jar后,编写一个bat文件进行运 ... -
EJB 与 javabean 的区别
2009-05-17 22:05 2156文章出自:http://killazy.iteye.com/b ... -
java 中数据类型转换
2009-05-17 19:02 1890Java:数据类型转换。 1.J ... -
覆盖与重载
2009-05-17 17:34 1063[恶补JAVA]关于覆盖与重 ... -
java 面试必会知识点
2009-05-09 16:46 1654http://book.51cto.com/art/20090 ... -
JDK 配置参数
2009-05-06 21:06 3312JAVA环境变量的设置和对 ...
相关推荐
自定义拦截器需要实现`com.opensymphony.xwork2.interceptor.Interceptor`接口,然后在配置文件中声明并配置拦截器。例如,你可能想要创建一个日志拦截器,记录每个Action执行前后的信息。 6. **拦截器栈**: - ...
首先,创建自定义拦截器类并实现`HandlerInterceptor`接口是实现拦截器功能的第一步。如示例代码所示,我们需要创建一个名为`ErrorInterceptor`的类,并在其中实现`preHandle`和`postHandle`方法。这两个方法都是在...
在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截器链。当请求到达Action时,这些拦截器会按照顺序逐个执行其`intercept()`方法,最后调用实际的动作方法。拦截器可以独立于...
- 拦截器是Struts2的核心组件之一,它们是基于Java的动态代理机制实现的。在Action调用前后,拦截器可以执行一系列预定义的任务,如日志记录、权限验证、数据校验等。 - 拦截器链是由多个拦截器按照特定顺序组成的...
这篇博客文章“struts2 以注解的形式实现拦截器”主要探讨了如何利用注解来配置和使用Struts2的拦截器,而不是传统的XML配置方式。 首先,我们来看一下什么是拦截器。在Struts2框架中,拦截器是一个实现了`...
在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照配置的顺序形成一个拦截器链。每个拦截器都可以在Action执行之前或之后执行特定的任务,而无需修改Action本身。这遵循了“开闭原则”,使得代码更易于...
拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...
拦截器是基于Java的动态代理机制实现的,它们在Action调用之前和之后执行,形成一个拦截器链。开发者可以通过配置struts.xml或struts.properties文件来定义拦截器链和其顺序。 1. **创建拦截器** 在Struts2中,...
拦截器通常通过实现HandlerInterceptor接口来完成拦截逻辑,这个接口提供了三个主要方法:preHandle、postHandle和afterCompletion。 - preHandle方法在请求处理之前进行调用,也就是Controller方法被调用之前。...
Spring MVC的拦截器基于AOP(面向切面编程)原理,它们通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`抽象类来定义。拦截器链的概念使得多个拦截器可以按照特定顺序执行,每个拦截器都可以决定...
6. **调试和测试拦截器**:为了确保拦截器按预期工作,你需要了解如何在CXF中启用日志输出,这通常通过设置日志级别和使用如`java.util.logging`或`log4j`这样的日志框架来实现。 7. **异常处理**:自定义拦截器...
在Java的Spring框架中,SpringMVC是一个提供了构建Web应用程序的模型-视图-控制器(MVC)的流行框架。其中,拦截器是SpringMVC的一个特性,允许开发者在进入控制器之前执行特定的操作,常用于日志记录、权限检查等场景...
在Struts1中,拦截器(Interceptor)扮演着重要的角色,它们是实现业务逻辑和控制器之间解耦的关键组件。拦截器可以拦截用户的请求,执行预处理或者后处理操作,如日志记录、权限检查等,而无需在每个Action中重复...
拦截器是基于Java的动态代理模式实现的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,如验证用户、记录日志等。通过配置Struts配置文件或使用注解,我们可以指定拦截器的执行顺序...
在IT领域,掌握Java、SQL、Oracle、EJB、SSH、Struts、XML以及监听器、拦截器和过滤器等技术是至关重要的。这些技术涵盖了Web应用开发的多个层面,对于初学者而言,理解并熟练运用它们能为职业生涯打下坚实的基础。 ...
拦截器是基于Java的动态代理模式实现的,它们形成一个拦截器栈,当请求到达Action时,会按照栈中定义的顺序逐个执行每个拦截器。每个拦截器都有两个主要方法:`intercept()` 和 `void destroy()`。`intercept()` ...
在实际项目中,我们通常会结合Spring Security等安全框架,通过拦截器实现更复杂的权限控制。 总结,Struts2拦截器是其核心机制之一,它允许开发者以模块化的方式添加额外的功能,提高代码的可复用性和可维护性。...
这个拦截器的主要目标是在执行增删改操作时,自动为数据模型对象的特定属性(如创建人、创建时间、修改人、修改时间等)赋值。 在MyBatis中,拦截器通过实现`Interceptor`接口来创建。`OpeInfoInterceptor`类就是...
在Struts2中,拦截器是基于Java的动态AOP(面向切面编程)实现的,它可以在Action调用前后插入额外的逻辑,比如日志记录、权限验证、事务管理等。拦截器通过配置文件或者注解与Action关联,形成一个拦截器栈,每个...