| 网站首页 | 文章 | 下载 | 图库 | 留言 | 论坛 | 邮箱 | 黑客商城 | 资源 | 博客 | 会员区 | 黑客动画 | 视频资源 | 经典收集 | 
免费服务 发表文章 在线破解 黑客游戏 精华收集 电影频道 音乐频道 二级域名 免费代理 免费 FTP 交换资源
收费服务 黑客培训 光盘刻录 黑客书籍 视频下载 主力频道 空间域名 网站建设 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> 经典收集 >> 程序设计 >> Java语言 >> STRUTS >> 收集正文 用户登录 新用户注册
[图文]Struts,MVC的一种开放源码实现用这种 servlet 和 JSP 框架管理复杂的大型网站(4)           ★★★★ 【字体:
Struts,MVC的一种开放源码实现用这种 servlet 和 JSP 框架管理复杂的大型网站(4)
作者:unknown 文章来源:IBM中国 点击数: 更新时间:2005-9-5
Struts,MVC的一种开放源码实现用这种 servlet 和 JSP 框架管理复杂的大型网站(4)

ActionForm 类
ActionForm 维护 Web 应用程序的会话状态。 ActionForm 是一个抽象类,必须为每个输入表单模型创建该类的子类。当我说 输入表单模型 时,是指 ActionForm 表示的是由 HTML 表单设置或更新的一般意义上的数据。例如,您可能有一个由 HTML 表单设置的 UserActionForm 。Struts 框架将执行以下操作:

  • 检查 UserActionForm 是否存在;如果不存在,它将创建该类的一个实例。
  • Struts 将使用 HttpServletRequest 中相应的域设置 UserActionForm 的状态。没有太多讨厌的 request.getParameter() 调用。例如,Struts 框架将从请求流中提取 fname ,并调用 UserActionForm.setFname() 。
  • Struts 框架在将 UserActionForm 传递给业务包装 UserAction 之前将更新它的状态。
  • 在将它传递给 Action 类之前,Struts 还会对 UserActionForm 调用 validation() 方法进行表单状态验证。 注: 这并不总是明智之举。别的网页或业务可能使用 UserActionForm ,在这些地方,验证可能有所不同。在 UserAction 类中进行状态验证可能更好。
  • 可在会话级维护 UserActionForm 。

注:

  • struts-config.xml 文件控制 HTML 表单请求与 ActionForm 之间的映射关系。
  • 可将多个请求映射到 UserActionForm 。
  • UserActionForm 可跨多页进行映射,以执行诸如向导之类的操作。

· Action 类

Action 类是业务逻辑的一个包装。 Action 类的用途是将 HttpServletRequest 转换为业务逻辑。要使用 Action ,请创建它的子类并覆盖 process() 方法。

ActionServlet (Command) 使用 perform() 方法将参数化的类传递给 ActionForm 。仍然没有太多讨厌的 request.getParameter() 调用。当事件进展到这一步时,输入表单数据(或 HTML 表单数据)已被从请求流中提取出来并转移到 ActionForm 类中。

注:扩展 Action 类时请注意简洁。 Action 类应该控制应用程序的流程,而不应该控制应用程序的逻辑。通过将业务逻辑放在单独的包或 EJB 中,我们就可以提供更大的灵活性和可重用性。

考虑 Action 类的另一种方式是 Adapter 设计模式。 Action 的用途是“将类的接口转换为客户机所需的另一个接口。Adapter 使类能够协同工作,如果没有 Adapter,则这些类会因为不兼容的接口而无法协同工作。”(摘自 Gof 所著的 Design Patterns - Elements of Reusable OO Software )。本例中的客户机是 ActionServlet ,它对我们的具体业务类接口一无所知。因此,Struts 提供了它能够理解的一个业务接口,即 Action 。通过扩展 Action ,我们使得我们的业务接口与 Struts 业务接口保持兼容。(一个有趣的发现是, Action 是类而不是接口)。 Action 开始为一个接口,后来却变成了一个类。真是金无足赤。)

Error 类

UML 图(图 6)还包括 ActionError 和 ActionErrors 。 ActionError 封装了单个错误消息。 ActionErrors 是 ActionError 类的容器,View 可以使用标记访问这些类。 ActionError 是 Struts 保持错误列表的方式。

图 7. Command (ActionServlet) 与 Model (Action) 之间的关系的 UML 图
Relationship of ActionServlet to Action

ActionMapping 类

输入事件通常是在 HTTP 请求表单中发生的,servlet 容器将 HTTP 请求转换为 HttpServletRequest 。控制器查看输入事件并将请求分派给某个 Action 类。 struts-config.xml 确定 Controller 调用哪个 Action 类。 struts-config.xml 配置信息被转换为一组 ActionMapping ,而后者又被放入 ActionMappings 容器中。(您可能尚未注意到这一点,以 s 结尾的类就是容器)

ActionMapping 包含有关特定事件如何映射到特定 Action 的信息。 ActionServlet (Command) 通过 perform() 方法将 ActionMapping 传递给 Action 类。这样就使 Action 可访问用于控制流程的信息。

ActionMappings

ActionMappings 是 ActionMapping 对象的一个集合。

再访邮件列表样例

下面我们看一下 Struts 是如何解决困扰 join.jsp 的这些问题的。改写后的方案由两个项目组成。第一个项目包含应用程序的逻辑部分,这个应用程序是独立于 Web 应用程序的。这个独立层可能是用 EJB 技术实现的公共服务层。为了便于说明,我使用 Ant 构建进程创建了一个称为 business 的包。有几个原因促使我们使用独立的业务层:

  • 划分责任
    单独的包使管理人员能够在开发小组内委派责任。这也有助于提高开发人员的责任心。
  • 通用件
    我们设想开发人员将这个包看作一个商业软件。将它放在另外的包中使它更像通用件。这个包可能是通用件,也可能是由组织内部的另一个小组开发的。
  • 避免不必要的构建和单元测试。
    分开的构建进程有助于避免不必要的构建和单元测试。
  • 使用接口开发
    在进行开发和避免不必要的耦合时,它有助于从接口的观点来思考问题。这是极重要的一个方面。当开发您自己的业务包时,这些业务类不应该关心到底是 Web 应用程序执行调用,还是独立应用程序执行调用。因此,应该避免在业务逻辑层使用对 servlet API 或 Struts API 调用的任何引用。
  • 稳定性
    并不是每个组织都每天、每周甚至每月进行检修。因此,在进行开发时,稳定的接口点是重要的。不能因为业务包处于变迁阶段就认为 Web 项目也应该处于变迁阶段。
(未完待续)
 
收集录入:华夏总编辑    责任编辑:华夏总编辑 
  • 上一篇收集:

  • 下一篇收集:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    最新热点资讯
    最新推荐资讯
    相关收集
  • Java程序员认证模拟题及详细分析…

  • Java程序员认证模拟题及详细分析…

  • Java程序员认证模拟题及详细分析…

  • Java程序员认证模拟题及详细分析…

  • SUN认证Java2程序员考试(SCJP) 试…

  • JAVA图形设计卷I AWT 第一章绪论

  • SCJP考试心得

  • SUN认证JAVA程序员考试大纲

  • 答疑解惑:一道SCJP考题

  • Test of the Java Skill(4)

  • 最新推荐软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 有事给站长留言!
    热线电话: 86-10-63643422/63643423
    京ICP证041431号