快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

纯 servlet:重新考虑视图

时间:2011-06-11 Jason Van Cleve

设计 JSP 的目的是将 Web 开发人员的任务与设计动态页面 UI 的非开发人 员的任务分离开来。遗憾的是,JSP 对于许多设计人员来说太复杂了,为解决各 种动态内容问题添加的软件层让他们觉得非常棘手。(例如,国际化要求将文本 存储在其他地方并通过键来引用。)所以对于大多数项目,Java 开发人员只好 自己处理 JSP 代码,这常常会包含本属于设计人员的工作,使他们的精力消耗 在标记库和其他东西上,无法集中于 Java 代码。

与正统的方式不同,可以使用简单的 helper 对象,根据常规 servlet 构建 简洁优美的 Web 界面。本文讲解如何以标准的 Java 形式编写动态 Web 页面的 视图输出。我将解释这种方法的好处,并用一个计分应用程序演示这种方法,这 个程序管理一个 NCAA 三月狂热 奖金池。

HTML 是动态的

这种纯 servlet 方法非常简单。它涉及一个 servlet 基类和一个定制的写 出器对象,servlet 子类使用这个对象产生输出。代码很简洁,因为大多数 HTML 封装在 helper 对象的方法中,都可以按需重写。代码重用总是令人愉快 ,而且大多数 Web 站点的页面共享许多 HTML,所以重用应该是个重要的考虑因 素。HTML 输出方法产生直观紧凑的 servlet 代码,因此可维护性很高,这使代 码的维护成本差不多直接与代码规模成正比。通过将 JSP 界面重写成纯 servlet,可以将代码缩减三分之二。

例如,要根据用户权限输出一个链接,就需要下面这样冗长的构造代码:

<c:if test="${user.permission[ sessionScope.ConstantMap[ EDIT_WIDGET ] ] != 0}">   <c:url var="editUrl" value="/EditWidget.jsp"/>   <div class="navigation"><a href="<c:out value="${editUrl}"/>">Edit      this widget</a></div> </c:if>

通过使用 Java 语法,代码就简洁多了:

if (user.getPermission(Constants.EDIT_WIDGET) != 0)   out.printNavlinkDIV("/EditWidget.jsp", "Edit this widget");

另外,在同一个地方获取和输出业务对象,而不是通过请求对象传递它们, 这也会节省大量代码。简洁是美。

使用 JSP 和其他视图技术可能是 Web 开发中最让人头疼的部分。JSP 页面 不是 HTML 或 XML、Java 代码、JavaServer Pages Standard Tag Library (JSTL)代码或表达式语言(EL),而是这些东西的大杂烩。JSP 代码不但是奇 怪的组合体,而且每个抽象层都给开发带来新的障碍。例如,对 JSP 页面进行 调试简直就像探矿那样困难。您知道某个地方出了毛病,但是无法找到出问题的 位置;神秘难懂的错误消息虽然指出了行号,但这个行号往往不是问题的真正所 在。

JSP 技术不能扩展基类,所以代码重用只能通过 bean、include 文件和定制 的标记库来进行。标记库太麻烦,不适合进行有效的重用。为您所做的每处 API 修改维护一个 XML 是非常麻烦的,而且 “标记设计就是语言设计”(参见 参 考资料 中 Noel Bergman 的文章)。结果是在本已分了很多层的接口上又加了 一层。

我们正面对着全新的 World Wide Web。无论 Ajax 能否引领 Web 开发的方 向,Web 站点都会继续向着更加智能化的方向发展。另外,尽管 HTML 本身总是 声明性的,但是产生它的代码却不一定如此。JSP 技术和其他模板化系统必然过 分复杂,因为它们试图以声明式的方式表达本质上动态的输出。这正是开发人员 无法容忍在 JSP 源代码中添加 scriptlet 的原因:我们试图表达的逻辑 具有 各种各样的形式。

通过将 HTML 封装成 Java 代码,可以简洁地表达输出逻辑。if 语句

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号