作者:Flyingis<!----><o:p></o:p>
在Struts中,ActionServlet担任分配工作的控制器角色,实际的工作是交给Action对象来进行的。Action是Struts框架的核心类之一,它主要用来访问业务层、为表现层准备数据对象和处理错误异常。<o:p></o:p>
Action在Struts框架中基本上属于控制器的角色,通常不建议在Action中加入过多的业务逻辑,将业务逻辑封装在其他的类中,然后在Action中建立这些类的对象,调用对象的方法来实现业务功能。比较遗憾的是,当业务逻辑中出现异常的时候没有办法将异常说明在页面中直接反应出来,展现给用户,在Action中控制这些异常可以做到这点。<o:p></o:p>
要更详细的了解Action的工作机理,就要剖析ActionServlet控制器的工作流程及其核心方法。在Struts中,担任控制器角色的核心是ActionServlet,所有的请求都必须先通过它,而对所有请求的处理是交付给RequestProcessor来完成的,既然处理请求的任务是交给RequestProcessor来完成,那么可以直接查看org.apche.struts.action.RequestProcessor类,看其process()方法实现了哪些功能,从源代码中的英文注释我们可以更深入了解到整个处理过程,很多书籍和网上不少文章都描述了这个过程,还有典型的处理过程图示,这里就不再详述。只是从这个过程可以看出,通过继承ActionServlet来定义自己的控制器请求意义不大,重写init()方法倒是可以修改初始化工作,如果需要定义自己的控制器,可以继承RequestProcessor并修改其中的process()方法来实现。<o:p></o:p>
在Struts应用中,除了直接继承org.apache.struts.action.Action类实现Action功能外,Struts还提供了其他几种Action类来满足某种特定需要,这些书本上已经写了很多,这里只是照葫芦画瓢略作总结:<o:p></o:p>
ForwardAction—当需要从一个页面转到另一个页面或资源时,不提倡直接使用页面或资源路径调用,除了与MVC/Model2架构向背之外,有时还会带来其他的问题,前几天在网上看到一个帖子就是因为直接调用资源出现了异常,具体出自于哪里没有记住。这里,应该通过控制器使用ForwardAction来完成链接的跳转,使用属性parameter设定forward的链接地址。<o:p></o:p>
IncludeAction—和ForwardAction类似,当需要引入一个资源时,可以使用IncludeAction来实现,属性parameter设定include的链接地址。<o:p></o:p>
SwitchAction—用于从一个模块转换至另一个模块,一种方法是使用相对于Context的路径来进行forward查找,另外一种就是使用SwithAction,它需要在请求中带两个参数,一个是prefix用来指定模块前缀名称,一个是page用来指定相对于模块的资源路径。<o:p></o:p>
DispatchAction—随着Struts Web应用规模扩大,维护Action复杂度提高,可以使用模块化来管理Action。另一方面,当一个页面需要多个Action时,我们就可以使用DispatchAction来将一个页面中所有相关的动作放在一个action类中实现,此时不需要重定义execute()方法,它已经在DispatchAction抽象类中定义,我们需要编写自己的方法来响应一个页面上不同的动作。它的关键属性是parameter。<o:p></o:p>
LookupDispatchAction—它是DispatchAction的子类,不同的是,当页面按钮的property属性相同的时候,它可以通过查询资源文件来确定相应的动作,这个功能主要是通过重写getKeyMethodMap()方法实现的。<o:p></o:p>
分享到:
相关推荐
重温微积分 - 齐民友
根据共形场理论的最新结果,我们将重新讨论由Kehrein,Pismak和Wegner获得的Wilson-Fisher不动点的ε扩张算子。 我们的方法是代数的,仅基于对称原理。 我们分析的出发点是,对扩张算子的第一次校正是保形不变性,这...
2021年重温中国记忆--共创辉煌未来.docx
重温 Iso-Recursive 子类型化(工件)抽象的这个包包含与论文“Revisiting Iso-Recursive Subtyping”相关的 Coq 公式。 本文档解释了如何运行 Coq 公式。入门我们强烈建议您通过opam2安装 Coq 证明助手。 安装 (>=...
- `struts-config.xml`是Struts1的核心配置文件,它定义了应用的Action类、Form Bean、数据源、国际化资源等关键元素。 2. **Action**: - Action类是处理用户请求的核心,每个Action对应一个特定的业务操作。当...
总的来说,这个“struts2.1包”对于想要学习或重温Struts2基本概念和用法的人来说是一个不错的起点。但考虑到安全性和社区支持,建议在实际生产环境中使用最新稳定版本的Struts2或其他现代的Web框架。
在这个“重温Observer模式--热水器·改”的讨论中,作者将再次阐述如何不依赖C#的委托和事件来实现Observer模式,而是采用GOF(GoF,Gang of Four)的经典方式。 在Observer模式中,有两个核心角色:Subject(主题...
齐民优经典微积分教程,打开新世界的大门!!相对于枯燥无味的高数教材,这本书能带来不一样的启发和更为深入地理解
由 Hiemstra 和 Jones 开发的著名的 Hiemstra-Jones 检验(HJ 检验)在研究非线性因果关系方面发挥了重要作用。 在过去的二十年里,有许多基于这项开创性工作的应用和理论扩展。 然而,有几项工作指出,HJ 测试得到...
经典重温C#开发------------------------------------------------------------------------------------------------------------------------------------------------
专题研究:重温“信贷脉冲”-0217-浙商证券-11页.pdf
齐民友所著的《重温微积分》是一本旨在引导学生深入理解微积分,并启发他们探索现代数学领域的书籍。书中不仅回顾了微积分的发展历史,还涉及了数学与物理学之间的内在联系,以及现代数学的发展和应用。作者认为,...
恐龙来袭-重温侏罗纪.ppt
PPT模板-重温春夏秋冬(动态.dpt
视频会议技术从诞生至今已经走过了几个重要的发展阶段,每一个阶段都紧密依赖于当时的通信技术发展水平,以及用户需求的变化。以下是视频会议技术发展的主要知识点总结: 1. 视频会议的发展历程: ...
齐民友教授的著作《重温微积分》,不仅向我们展现了微积分的起源和发展历程,更重要的是,它让我们认识到了微积分是如何在不同领域的需求推动下不断发展壮大的。 微积分的历史可以追溯到17世纪,两位伟大的科学家...
《重温微积分》是齐民友教授所著的一部关于微积分及其相关数学领域的深入探讨书籍。该书不仅涵盖微积分的传统内容,还深入探讨了微积分在现代数学中的应用和相关领域的发展。在知识点方面,该书从多个维度对微积分...
《重温微积分》一书由齐民友教授编著,该书旨在帮助读者深入理解微积分及其相关领域的核心概念和技术,并通过历史回顾的方式,揭示这些理论背后的深刻含义和发展脉络。本书不仅覆盖了传统的微积分知识,还探讨了与之...
重温老三篇心得体会精选13篇.doc
轻工制造行业家居深思考(二):重温汉森,聚焦家居渠道大变革的发展史-0121-中泰证券-24页.pdf