webwork

1、Action与HtmlAction之间最大的区别,就是Action更加的简单与纯粹。在Action中,我们根本看不到HttpServletRequest的痕迹,execute方法并没有包含任何参数,因此Action就是纯粹的业务逻辑主体,不搀杂任何其他无关的内容。而在HtmlAction中,perform方法的参数就是HttpServletRequest。这样的话,HtmlAction确如其名了,只能用在Web应用中,一旦改变了表示层,根本就没有办法实现移植。相比之下,Action由于没有和某种特定的表现技术绑定在一起,仅是业务逻辑的主体,就可以很容易的进行移植了。
事实上,在WebWork中,httpServletRequest只是出现在了类ServletDispatcher中,但是呢,ServletDispatcher的工作只是将request包装了一下,并且建立一个extraContext,然后将extraContext作为一个重要参数传递给ActionProxyFactory类的createActionProxy方法,并且由这个方法返回了一个ActionProxy的实例,最后调用ActionProxy的execute方法,完成所有的操作。在这里,有三个地方需要做进一步的说明,一个是extraContext,一个是虚类ActionProxyFactory,而另一个则是createActionProxy方法。extraContext本身并没有什么特别的地方,它就是一个HashMap,在这个HashMap中,Context按照作用域的不同,分成parameterMap,sessionMap,ApplicationMap,requestMap等几个部分;ActionProxyFactory类承担着两个任务:创建ActionProxy和创建ActionInvocation,而createActionProxy方法担起了创建ActionProxy的任务——调用了实现ActionProxy接口的类(在这里是DefaultActionProxy)的构造函数;而创建ActionInvocation则是在构造函数中完成的,毕竟ActionInvocation的实例必须与一个ActionProxy实例相匹配。
2、Action与HtmlAction相比,还有一个很重要的不同,就是通过Interceptor的使用,实现了一定程度的AOP。在HtmlAction中,我们通常都需要调用getParameter方法,将页面中form所包含的元素一个个从request中取出来,事实上这些代码重复是不必要的。在WebWork中,Action的调用是由ActionInvocation去完成的,但是在Action被调用的过程使用了Interceptor(拦截器),由Inteceptor去完成在大多数Action被调用过程中都需要处理的逻辑。这好比在Action被调用这个纵向过程中增加了若干个横向切面,这就是AOP的一个基本思想。再回到刚才所说的从request中获得form所包含的元素的例子,在WebWork中,我们看不到getParameter的身影,说实在的,刚开始我还真的不习惯,还担心我需要的元素是不是真的取到了呢。我的担心根本就是多余的,在Action被调用之前,或者说是在ActionInvocation的invoke方法被调用之前(Action中的execute方法是在invoke方法中被调用),ParametersInterceptor就已经帮我们做好了这样烦琐的事情了。我们所需要做的就只剩下在Action中增加与页面中form所包含的元素对应的setter方法即可。
3、Action与HtmlAction相比,从测试的方便程度来看,很明显Action更加易于测试。象以前在做HtmlAction的测试的时候,我不得不模拟一个HttpServletRequest作为参数传递给perform方法,而在Action的测试当中,根本就不需要这样。我们从Action被调用的代码即可以看出其简洁:
ActionProxyFactory factory = ActionProxyFactory.getFactory();
ActionProxy proxy = factory.createActionProxy("", "Login", null);
System.out.println(proxy.execute());

通过比较,我们可以发现这样的设计为我们的开发带来了莫大的好处,可是我又开始想了,如果不这样设计,或者说换了另外的设计,我们能够拥有如此好的可移植性、灵活性和可测性吗?
本项目采用C++编程语言结合ROS框架构建了完整的双机械臂控制系统,实现了Gazebo仿真环境下的协同运动模拟,并完成了两台实体UR10工业机器人的联动控制。该毕业设计在答辩环节获得98分的优异成绩,所有程序代码均通过系统性调试验证,保证可直接部署运行。 系统架构包含三个核心模块:基于ROS通信架构的双臂协调控制器、Gazebo物理引擎下的动力学仿真环境、以及真实UR10机器人的硬件接口层。在仿真验证阶段,开发了双臂碰撞检测算法和轨迹规划模块,通过ROS控制包实现了末端执行器的同步轨迹跟踪。硬件集成方面,建立了基于TCP/IP协议的实时通信链路,解决了双机数据同步和运动指令分发等关键技术问题。 本资源适用于自动化、机械电子、人工智能等专业方向的课程实践,可作为高年级课程设计、毕业课题的重要参考案例。系统采用模块化设计理念,控制核心与硬件接口分离架构便于功能扩展,具备工程实践能力的学习者可在现有框架基础上进行二次开发,例如集成视觉感知模块或优化运动规划算法。 项目文档详细记录了环境配置流程、参数调试方法和实验验证数据,特别说明了双机协同作业时的时序同步解决方案。所有功能模块均提供完整的API接口说明,便于使用者快速理解系统架构并进行定制化修改。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值