拦截器都是通过代理的方式调用,是AOP的一种实现

当请求到达Struts2的ServletDispatcher时,Struts2根据配置文件,实例化相对应的拦截器对象,形成一个List,一个一个调用。

每个action请求都包装在一系列的拦截器内部,拦截器可以在Action执行之前做准备操作init(),可以在Action执行之后做回收操作destroy(),可以将操作转交给下面的拦截器invoke(),也可以直接退出操作return Action.字符串常量,返回客户已定的视图资源。

自定义拦截器类有两种方法:实现Interceptor接口,和继承实现了接口的抽象类AbstractInterceptor,

如果实现拦截器时不需要申请和销毁资源,只需要继承AbstractInterceptor,实现public String intercept(ActionInvocation arg)throws Exception方法。

时间: 2024-12-23 14:34:45

拦截器都是通过代理的方式调用,是AOP的一种实现的相关文章

记性不如烂笔头46-java拦截器-彻底理解动态代理的概念(1)

动态代理技术是整个java技术系统中非常重要的一环,它是我们能够深入学习java框架的基础,是深入了解Spring等框架时要掌握的基础知识之一. 1. JAVA中代理的概念 动态代理技术就是用来产生一个对象的代理对象的.直接说好像也很迷糊,好像用不上的样子. (下面的例子部分来自互联网) 举一个现实生活中的例子:歌星或者明星都有一个自己的经纪人,这个经纪人就是他们的代理人,当我们需要找明星表演时,不能直接找到该明星,只能是找明星的代理人.比如王宝强在现实生活中非常有名,会唱歌,会跳舞,会拍戏.王

拦截器(由JDK动态代理实现的拦截器)

要实现拦截器,首先我们需要定义几个类和接口 package com.xiawei.reflect.interceptor; public interface JavaBenDao { public void look();} ================================================== package com.xiawei.reflect.interceptor; public class JavaBenDaoImpl implements JavaBen

拦截器的设计思想——代理模式

代理模式:静态代理和动态代理 1.代理类和被代理类必须实现同一个借口 2.代理类和别代理类有一种关联关系 静态代理: 例如实现一个日志: //定义一个接口 public interface UserDao{ public void delete(); } //定义一个实现类 public class UserDaoImpl implements UserDao{ public void delete(){ System.out.pritln("成功删除"); } } //定义一个代理类

谈谈 Struts2 的拦截器

套话 相信很多人都用过 Struts2 了,当然,对 Struts2 的原理也都比较了解.之前在一个项目中就已经用到了,当初的理解也仅仅是局限在应用的层面上,对于更深层次的原理.机制,了解的并不是很多.现在回过头来,再看 Struts2 的拦截器,相比之前的理解,又别有另一番滋味. 理解 Struts2 的拦截器,英文名为 Interceptor ,至于为什么中文要翻译为拦截器,我想这一定是有原因的,肯定不是一拍脑门,就叫拦截器了(它必定有什么含义在里边).从字面的意思,就是在发送请求的时候,有

struts2中拦截器的简介与配置使用

拦截器是struts2框架的核心,struts2很多的功能都是构建在拦截器基础之上的,它是动态拦截Action调用的对象,提供了一种机制,使得开发者能够在一个Action前后执行需要的代码,可以在一个Action执行前组织他的执行,也能在Action执行后做一些相应的工作.同时他也提供了一种可以提取Action中可重用部分的方式. 拦截器 struts2拦截器是在访问某个Action或它的某个方法 .字段之前或之后实施拦截,struts2拦截器是可插拔的,是AOP的一种实现(AOP是OOP(Ob

Spring Boot之拦截器与过滤器(完整版)

作者:liuxiaopeng 链接:http://www.cnblogs.com/paddix 作者:蓝精灵lx原文:https://blog.csdn.net/liuxiao723846/article/details/80656492 参考以上两位作者文章链接进行实验整合,仅供学习交流 一.拦截器与过滤器 先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想. 在面向对象编程的过程中,我们很容易通过继承.多态来解决纵向扩展. 但是对于横向的功能,比如,在所有的service方法

JAVA拦截器VS过滤器

拦截器的实现原理: 拦截器方法是通过代理的方式来调用的.Struts 2的拦截器实现相对简单.当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list)形成一个拦截器链,最后一个一个地调用列表中的拦截器. Servlet过滤器的基本原理         在Servlet作为过滤器使用时,它可以对客户的请求进行处理.处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请

ava中拦截器 过滤器 监听器都有什么区别

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

java 动态代理—— Mybaties 拦截器链基本原理实现

1.摘要 Mybaties 中有个分页插件,之前有特意的去了解了一下原理 :https://www.cnblogs.com/jonrain0625/p/11168247.html,从了解中得知分页插件是基于Mybaties的拦截器去实现的,这个插件就是一个拦截器,和别的拦截器组成了Mybaties的拦截器链,然后所有的拦截器都对Executor 这个类 做了动态代理.本次主要的再次去学习下这个动态代理,去实现一个最基本的拦截器链的效果.当然还有spring aop 等很多地方都是基于动态代理去实