struts2拦截器详解_拦截和修改tcp数据

struts2拦截器详解_拦截和修改tcp数据Struts2中的拦截器和servelt中的过滤器是非常的相似的。如果学过过滤器的话,肯定能够感觉的到,尽管有些微的不同。可是struts2的拦截器到底如何使用呢,为什么会有这些配置呢?接下来一一来看。 过滤器和拦截器是非常相似的,过滤器publicinterfaceFilter接口里面有三个方法: init(FilterConfigfilterConfig),des

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Struts2 中的拦截器和 servelt 中的过滤器是非常的相似的。如果学过过滤器的话,肯定能够感觉的到,尽管有些微的不同。可是struts2的拦截器到底如何使用呢,为什么会有这些配置呢? 接下来一一来看。 

过滤器和拦截器是非常相似的,过滤器 public interface Filter 接口里面有三个方法: 

  • init(FilterConfig filterConfig),
  • destroy(),
  • doFilter(ServletRequest request, ServletResponse response, FilterChain chain),

 

这里面的 doFilter() 方法是最重要的,在 struts2 中  String intercept(ActionInvocation invocation)就相当于此方法。 

如何完成一个拦截器呢?在 struts2 中要实现一个接口 这个接口是什么呢?在哪呢?,是否在哪听说过?是 webwork 是我们以前听的最多的关于拦截器的框架, struts2 用了其中一个核心的东西,这个东西在是什么呢?是 xwork 。恩,有了它才可以拦截,好了我们在哪找呢?在 com.opensymphony.xwork2.interceptor 中找,里面有个 Interceptor 这是个接口,里面也有三个方法,有 init, destroy 和 intercept 三个方法,而在 struts2 里面的所有的拦截器都继承这个接口! 

 

struts2接受客户端请求时,在执行action之前已经执行了自身默认的拦截器,这些拦截器完成struts2的大部分初始化的功能,比如设置属性值等。

 

执行完这些拦截器后,再执行action,返回客户端时,还得经过拦截器的拦截,最终返回客户端。下面我们开始模拟拦截器的实现过程:

 

1、新建自己的拦截器:

 

 

 

2、拦截器的具体实现

 

 

 

 

 

3、需要执行的action

 

 

 

4、控制器,该控制器调配执行拦截器和action

 

 

 

5、main方法执行,在struts2框架中,前台的一个请求被过滤器拦截后就执行拦截,然后再执行action

 

 

 

 

模拟结果:

 

第一个拦截器开始。。。。

第二个拦截器开始…..

执行execute方法

第二个拦截器结束……

第一个拦截器结束…….

 

 

从模拟结果分析,拦截器相当于包裹在action外面的屏障,要达到执行action的目的,需要穿过屏障——–>执行action——–>穿出屏障

 

拦截器的实现其实是aop编程思想,在实现相应逻辑的前后,加上其他逻辑的实现,而且没有任何依赖关系。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188340.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10网络重置命令net_win10 重置网络设置

    win10网络重置命令net_win10 重置网络设置经常遇到局域网无法互相访问、网络连接上但无法上网的问题。如果找不到愿意,可以暴力重置一下网络:win+x,管理员方式打开cmd;输入netshwinsockreset命令;可能需要重启操作系统。

    2025年7月3日
    0
  • ubuntu上安装gcc

    ubuntu上安装gcc首先我是直接根据别人博客来的:sudoaptupdatesudoaptinstallbuild-essential主要是说build-essential中包含了GNU编辑器集合

    2022年7月3日
    25
  • 在定义adt时_ScriptableObject

    在定义adt时_ScriptableObjectADT操作分类Creators构造器:利用其他的数据类型对象产生一个新的对象可能实现为构造函数或静态工厂方法Producers生产器:用已有该类型对象产生新对象如string.concat()(连接两个字符串,产生一个新的字符串)Observers观察器如list.size()返回int(不同于原类型)Mutators变值器(改变对象属性的方法)通常范围void,如果返回void,则必然意味着它改变了某些对象的内部状态,也可能范围非空类型(如容器类的put、add方法)…

    2022年9月3日
    2
  • 数据结构中 ElemType

    数据结构中 ElemType前段时间,我带了大一的上机课,有好多同学问我,数据结构的struct中,ElemType是什么意思。我当时就操了,尼玛这不就是数据类型嘛!智商啊。后来我就慢慢想了,为什么用ElemType然后#defineElemTypeint来定义奥原来是为了好扩展,如果代码出现变化,我们可以修改最少的代码部分,是他符合你的要求。

    2022年5月12日
    48
  • sql嵌套查询效率_sql嵌套查询返回多个字段

    sql嵌套查询效率_sql嵌套查询返回多个字段文章目录问题解决问题为了查询一个字段,使用了五层嵌套循环,但是花费了约1分钟但是5个表的数据每个最多只有10条,怎么会这么慢呢?解决比如查询语句SELECT*FROMstudet分析器会先看语句的第一个词,如果它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。内存中有student表接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析SELECT*FROMstudetWHEREstu_id=1

    2022年8月10日
    4
  • noip宝藏_24日拼图寻宝

    noip宝藏_24日拼图寻宝题目描述:点击打开链接/*思路:可以看成是一个多层的约瑟夫环问题*/#include#defineN10005#defineM105intstairs[N][M];//是否有楼梯口(0/1)intsign[N][M];//房间指示牌(走的步数)intf[N];//每层楼梯口总数(记录每层楼梯口数

    2022年8月22日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号