用Logger来解释拦截

HZ

动态代理学了 不知道在工作中杂用哦

HE

现在一般不会直接用吧,一般都是用aspectJ这种完整aop的实现

STST

拦截方法调用

HZ

我见过把所有accessor方法放到切面的

还有transaction肯定都是在切面的

STST

比如一个方法,记录要保存起来
用来验证用户名密码,如果不拦截的话就要如下处理
bool Valid(string user,string pwd)
{
ret=验证用户名密码(user,pwd);
记录日志(time,user,pwd,ret);
返回 ret;
}

ZH

典型的就是你会用spring就好了

STST

这种方式把不是Valid必须要得逻辑牵扯进来了

HE

嗯嗯,spring实现的事务是一个比较好的例子

简单理解就是在service方法执行之前动态调用申明事务开始,在方法结束后执行事务提交,方法本身中看不到和事务打交道的代码

ZH

前段时间测的一个jar,开发用了动态代理,不过一般web开发是用不上的

STST

如果拦截的话就相当于下面,客户端对Valid的调用被拦截到另外一个方法:
bool Valid2(string user,string pwd)
{
ret=Valid(user,pwd);
记录日志(time,user,pwd,ret);
return ret;
}

这样把记录日志的 功能从Valid方法移动到Valid2方法上来了

HZ

ok

STST

而Valid2方法是用户来写的代码,不是Valid方法的作者写的

HE

logger也是个非常棒的例子

STST

这样Valid2实际上是可扩展的,因为是由客户写的

HZ

这样说拦截器 都是动态代理实现的了

STST

,是一个说法

不过动态代理有多种实现

前面提到的直接修改字节码,外覆类都是一种途径

还有就是在源程序编译时拦截,对于静态类型的语言来说,这是唯一的方式,如C/C++

时间: 2024-08-09 02:20:36

用Logger来解释拦截的相关文章

struts详细解释拦截器

1.拦截器:Struts2拦截器将一个Action要么Action的方法.之前或截取后场,和Struts2拦截器是可插拔,拦截器AOP一种实现. WebWork:拦截器是动态拦截Action调用的对象. 它提供了一种机制能够使开发人员能够定义在一个Action运行的前后运行的代码.也能够在一个action运行前阻止其运行. 同一时候也提供了一种能够提取Action中可重用的代码的方式. 拦截器栈(Interceptor Stack):Struts2拦截器栈就是将拦截器按一定的顺序连接成一条链.在

Struts2内置拦截器的简要介绍

标记有(*)要着重了解: (1)alias(别名拦截器):允许参数在跨越多个请求时使用不同别名,该拦截器可将多个Action采用不同名字链接起来,然后用于处理同一信息. (2)autowiring(自动装配拦截器):主要用于当Struts2和Spring整合时,Struts2可以使用自动装配的方式来访问Spring容器中的Bean. (3)(*)chain(链拦截器):构建一个Action链,使当前Action可以访问前一个Action的请求信息,一般和<result type="chai

Struts之 拦截器配置 ( Interceptor )

拦截器运行我们在执行前后插入代码执行.Struts2中的拦截器是一个强有力的工具,他可以为action动态添加输入验证(验证用户的输入是否正确). 对象组装(将用户输入的数据转换为对象的属性).权限控制(确保访问中是登录用户).日志记录(记录action的执行情况)等功能,而不需要修改action. 要为action配置引用的拦截器,首先乣在interceptors元素中使用interceptor元素定义拦截器,然后在action元素中使用interceptor-ref元素指定引用的拦截器.in

Struts2默认拦截器栈及内建拦截器使用详解

Struts2内建拦截器介绍: alias (别名拦截器):允许参数在跨越多个请求时使用不同别名,该拦截器可将多个Action采用不同名字链接起来,然后用于处理同一信息. autowiring (自动装配拦截器):主要用于当Struts2和Spring整合时,Struts2可以使用自动装配的方式来访问Spring容器中的Bean. chain (链拦截器):构建一个Action链,使当前Action可以访问前一个Action的属性,一般和<result type="chain"

java笔记整理

Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep

struts2中struts.xml配置文件详解

struts.xml的常用配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts

struts2配置文件详解

本文转载自:http://blog.csdn.net/baple/article/details/9420877 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" ><struts> <!-- include节点是s

struts2,登录功能模块实现

功能: ·UserLogin作为控制登录的Action,校验密码成功后记录session,可以选择记住登陆状态,登陆成功后自动跳转到登陆前的URL: ·UserLogout作为控制登录推出的Action,移除session,删除cookie: ·MainInfo和HeadInfo模拟了两个相对独立的Action用于展示页面内容: ·LoginInterceptor作为检查登录状态的拦截器,先检查session,后检查本地cookie: ·mainInfo.action和headInfo.acti

struts2的工作原理与文件结构

struts2框架的工作原理: Struts2的文件详解: 1. web.xml 过滤器遇到.action后缀的请求就会拦截处理,当遇到.jsp .html等就会放行. 2. struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd&qu