快速业务通道

纯 servlet:重新考虑视图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
和 for 循环可以采用大家熟悉的形式。页面元素可以重构成方法,这样就很容易理解和 维护它们。(对较大的 JSP 页面进行维护是非常麻烦的,非常容易出现错误, 尤其是在缺少良好的注释的情况下。)通过使用纯 servlet,可以尽可能增加代 码重用,因为不需要为每个页面的构造编写新的类。

狂热的设计

为了演示纯 servlet 的概念,我为一个 NCAA March Madness 锦标赛奖金池 构建了一个计分界面。(参见 三月狂热 和 下载)。用户可以从参加锦标赛的 64 支球队中选择他们认为最出色的 20 支球队,并给每个球队分配一个加权的 分数。比赛开始之后,他们的选择就变成只读的;当比赛结束时,管理员输入获 胜球队的名称。根据用户选择的球队,自动地计算用户的累积分数并显示分数的 排名。

这个项目大约花费了我三周的业余时间,大部分时间花在样式和图像上(毕 竟我不是画家)。除了一个 HTML 文件和其他静态资源之外,UI 层由 21 个 Java 类组成,根据 JavaNCSS 的度量标准,一共有 1,334 个 Java 语句(参见 参考资料)。

纯 servlet:重新考虑视图(2)

时间:2011-06-11 Jason Van Cleve

逃离 MVC

这里演示的纯 servlet 设计在客户机和业务逻辑之间建立一个视图层。 Model-View-Controller(MVC,或者说 Model 2)实际上不是万能的,而且支持 它的 Web 框架往往比较难以处理。Spring MVC 和 JavaServer Faces(JSF)太 过复杂,我可以断言,Struts 的麻烦程度不亚于此,每次调整控制逻辑时都必 须调整臃肿复杂的配置文件。N. Alex Rupp(参见 参考资料)甚至将 MVC 称为 反模式,一种 “看似聪明其实非常愚蠢的” Web 技术。

例如,开发人员常常误解 Struts 中 Action 模块的用途。业务逻辑常常被 放在这里(如果不是都放在 JSP 中的话)。将视图和控制器实现为 servlet 可 以促使业务逻辑放入恰当位置,因为 servlet 明确关注与浏览器的接口。

对于这个项目,我使用了几个来自我自己的 elseforif-servlet 库的类(参 见 参考资料)。这是 设计的关键,因为它为生成 HTML 提供了一个方便的接口 。但是,本文的重点不是这个库,而是证明我的方法的优点。

图 1 是部分类图,其中的 elseforif-servlet 元素以绿色表示:

图 1. 部分类图

纯 servlet:重新考虑视图 - 编程入门网

树结构的顶部是一个包含 HTML 字符串常量的接口,它为 HTML 写出器对象 和使用它们的 servlet 提供了方便。(在后面将看到它们的作用。)接下来是 HTMLWriter 和 HTMLFlexiWriter,它们实现一些基本的低级 HTML 方法,它们 对于任何 Web 站点都是有用的。这两者之间的区别是,HTMLWriter 直接写到输 出中,而 HTMLFlexiWriter 还可以以字符串形式返回输出。将一个输出方法的 结果作为参数传递给另一个方法常常是很方便的,例如:

out.printA(URL_ELSEFORIF, out.IMG("/img/elseforif.gif", 88, 31));

然后是 MadnessWriter 类,它增加了这个 Web 站点需要的高级输出特性: 页眉、页脚和菜单等常见元素,即这个站点特有的所有重复内容。这是一个轻量 级、非线程安全的对象,抽象 servlet 基类 MadnessServlet 使用一个工厂方 法为各请求实例化此对象。

这个基类负责处理核心 servlet 控制逻辑,使具体子类可以将注意力放在它 们特有的任务上。在设置一些标准的 HTTP 头并执行一些页面级安全检查之后, 它将 MadnessWriter 实例传递给受保护的 doBoth() 方法:

protected void doBoth(HttpServletRequest request, HttpServletResponse response,     HttpSession session, MadnessWriter out) throws ServletException, IOException

MadnessServlet 还实现了 MadnessConstants,它使子类能够轻松地访问 HTMLConstants 中定义的静态值。所以,通过结合使用 Mad

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号