Struts2 拦截器与Spring AOP的区别

在学习Spring AOP技术的同时,发现其实与以前做过的拦截器的功能很类似,于是开始抱着这两者之间有什么关系的问题进行深入研究。

我们知道struts2使用拦截器主要是用来处理用户的请求,OGNL的使用,表单验证 等。

而spring的拦截器,主要体现在AOP的事务管理方面,还有比如一些错误或者异常的日志的显示 也是通过配置spring的log拦截器来实现的。

Struts的拦截器是针对Struts的,比如SSH项目都会去使用AOP ,如果是单纯的STRUTS项目 自然使用Struts本身的拦截器,两者最终效果是一样的;对于应用来说没什么区别,但对于底层实现方式来说有细微的区别!拦截器是AOP的一种实现,struts2 拦截器采用xwork2的interceptor!而spring的AOP基于IoC基础,其底层采用动态代理与CGLIB代理两种方式结合的实现方式。

 1 public class Intercept {
 2  private Logger log = LoggerFactory.getLogger(CacheIntercept.class);
 3
 4  /**
 5   * 拦截包下的action方法
 6   *
 7   * @param pjp 真实方法的实例
 8   * @return 真实方法或者过程的返回值
 9   */
10  @Around("execution (* 包名.action(..))")
11  public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
12    //得到拦截的真实方法
13    Object target = pjp.getTarget();
14    //取得类名字
15    String className = target.getClass().getName();
16    log.debug("Run doAround with class " + className);
17     return pjp.proceed();
18
19  }
20
21 配置文件中加入:
22 <context:annotation-config />
23  <context:component-scan base-package="包名" />
24  <aop:aspectj-autoproxy />
时间: 2024-10-14 01:19:58

Struts2 拦截器与Spring AOP的区别的相关文章

Struts2.x教程(三) Struts2拦截器

一.Struts2拦截器介绍 Struts2拦截器是使用AOP实现的,主要是针对action对象进行拦截,可以在访问action的某个方法.字段之前或之后实施拦截. 可以为action配置多个拦截器,Struts2会将这一组拦截器按照一定顺序组织成一个拦截器栈.action可以直接引用某个拦截器栈来实现配置多个拦截器的目的. 对于继承struts_default的package中的action,都会默认引用name=defaultStack的拦截器栈(在struts_default中定义了Str

struts2中拦截器与过滤器之间的区别

首先是一张经典的struts2原理图 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy d) ActionProxy将会通过ConfigurationManager来查找配置struts.xml        i. 下一步将会

Struts2拦截器和过滤器的区别?

①过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器. ②Struts2 拦截器只能对Action请求起作用,而过滤器则可以对几乎所 有请求起作用. ③拦截器可以访问 Action上下文(ActionContext).值栈里的对象 (ValueStack),而过滤器不能. ④在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器 初始化时被调用一次.

过滤器和拦截器filter和Interceptor的区别

1.创建一个Filter过滤器只需两个步骤 创建Filter处理类 web.xml文件中配置Filter 2.Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request.Response)统一设置编码,简化操作:同时还可进行逻辑判断,如用户是否已经登陆.有没有权限访问该页面等等

Struts2拦截器详解

作者:禅楼望月 1. Struts2内置拦截器 Struts2内置了大量的拦截器,如下图: 图片来自:刘水镜的博客:菜鸟学SSH(四)--Struts2拦截器 这些拦截器以name-class的形式配置在struts-default.xml中: <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/> <interceptor n

转载 - Struts2 拦截器详细配置过程

出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方

浅谈Struts2拦截器的原理与实现

拦截器与过滤器           拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了一种可以提取action中可重用的部分的方式,很多业务逻辑都是靠拦截实现的,比如校验,验证登录权限(比如下载时跳转到登陆页面)等等.     过滤器是对整个的请求过程起作用!换句话说就是拦截器没有过滤器的范围广.过滤器是在java web中,你传入的request,response提前过滤掉一些信息

转载 - Struts2拦截器配置

出处:http://blog.csdn.net/axin66ok/article/details/7321430 目录(?)[-] 理解拦截器 1 什么是拦截器 2 拦截器的实现原理 拦截器的配置 使用拦截器 自定义拦截器 1 实现拦截器类 2 使用自定义拦截器 自定义拦截器示例 1 问题描述 2 实现权限控制拦截器类 3 配置权限控制拦截器 4 运行调试 1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段

Struts2拦截器原理以及实例

Struts2拦截器原理以及实例 一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack).Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链.在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用. 二.实现Struts2拦截器原理 Struts 2的拦截器实现相对