struts interceptor

本文介绍了Struts2框架中的拦截器概念及其工作流程。详细解释了拦截器如何增加Struts2的灵活性,并通过示例代码展示了如何创建和配置自定义拦截器。

struts interceptor

  编辑
本词条缺少 概述名片图,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧!
中文名
拦截器
外文名
struts interceptor
类    型
程序
特    点
增加了Struts的灵活性
国    家
中国

目录

  1. 1 工作流程
  2. 2 拦截类型

工作流程编辑

Struts从2代开始,将核心功能放在了拦截器(Interceptor)上,这大大增加了Struts的灵活性。
拦截器可以在用户请求Struts的Action时的前或后,进行一些业务处理。拦截器可以是1或N个,看看下面的图大家可能会对Struts2的工作流程有所了解:
Struts2 工作流程图 Struts2 工作流程图
最初服务器接收到用户客户端的请求,通过ActionContextCleanUp,Other filters……,FilterDispatcher,这些其实也是一些拦截器,到达ActionMapper,ActionMapper是Struts对Action类的Map形式封装,接着,ActionMapper再通过开始的3个拦截器到达ActionProxy,ActionProxy是Action类的一个代理类,此时到达了ActionInvocation类,ActionInvocation类是ActionProxy(代理)类产生的一个Action对象,再经过Interceptor1至Interceptor3,这只是一个演示,实际可能有更多的Interceptor或更少,下面就可以访问Action和Result了,Action下的Result决定了将以什么样的视图或称为(模板)去反馈给用户,下面的拦截器,Interceptor3到Interceptor1其实还是上面的拦截器,只是这时倒序执行了,这是拦截器依然可以对数据进行一些处理,但不同的是,这时已经反馈给用户一个视图了。
这个过程的重点是拦截器的执行流程,可以理解成拦截器的三个阶段:
1、对Action进行预处理。(正序执行)
2、拦截器自身决定该不该执行后续的拦截器(由invoke()方法的返回值决定)。
3、对Action进行后期处理。(倒序执行)
(注:如果大家对Struts框架有一点了解或了解其基本工作原理,可能对上面的解释不屑一顾,但却可能使初学者更加的困惑,所以)说了这么多,还是让我们用代码来解释吧!
用(Java)代码定义一个Struts2的拦截器:
public class MyInterceptor extends  AbstractInterceptor{
public String interceptor(ActionInvocation args0) throws Exception{
System.out.println("=========预处理========="); //这里仅仅做一个示意,可以在此处添加任何代码
String result=args0.invoke();//得到invoke()的返回值
System.out.println("=========后续处理========"); //这里仅仅做一个示意,可以在此处添加任何代码
return result;//返回invoke()方法的返回值
}
}
配置一个Struts2的拦截器:
<struts>
<package name="mystruts" extends="struts-default">
<interceptors>
<interceptor name="myInterceptor" class="interceptor的全局限定名"/>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="defaultStack"><!--这里要先引用Struts默认的拦截器栈,不然无法实现Struts的基本功能-->
<interceptor-ref name="myInterceptor">
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myInterceptorStack"/>
</package>
</struts>
<interceptor>

拦截类型编辑

在Struts2中,Interceptor [1]   的拦截类型,分成以下三类:
1. before
before拦截,是指在拦截器中定义的代码,它们存在于invocation.invoke()代码执行之前。这些代码,将依照拦截器定义的顺序,顺序执行。
2. after
after拦截,是指在拦截器中定义的代码,它们存在于invocation.invoke()代码执行之后。这些代码,将一招拦截器定义的顺序,逆序执行。
3. PreResultListener
有的时候,before拦截和after拦截对我们来说是不够的,因为需要在Action执行完之后,但是还没有回到视图层之前,做一些事情。Struts2同样支持这样的拦截,这种拦截方式,是通过在拦截器中注册一个PreResultListener的接口来实现.

内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导与仿真实践,利用人工神经网络对复杂的非线性关系进行建模与逼近,提升机械臂运动控制的精度与效率。同时涵盖了路径规划中的RRT算法与B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模与ANN求解方法;②理解拉格朗日-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿与高精度轨迹跟踪控制;④结合RRT与B样条完成平滑路径规划与优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析与神经网络训练,注重理论推导与仿真实验的结合,以充分理解机械臂控制系统的设计流程与优化策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值