快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
TABLE_3 常量仅仅是 TD、TR 和 TABLE 结束标记的组合。这种方式似乎 有点儿古怪,但是掌握了它之后,就可以用简洁的代码建立良好的 HTML 设计, 这意味着只将它用于页面结构,而将尽可能多的样式放在样式表中。

现在完成这个页面:

out.printEndBox(); out.printPostContent();

第一行结束前面开始的框,printPostContent() 输出页面的其余部分,包括 页脚。Picks 表单页面完成了。

处理器 servlet(PicksAction)对提交的 Picks 页面进行响应,它从请求 对象收集选择的球队 ID,并将它们传递给业务层来更新适当的 Player 实体, 在此之后返回到 Picks 表单页面。这里也执行一项安全检查,确保用户在比赛 开始之后无法更新他们的选择。表单和它的处理器都是 servlet,不需要将它们 写到单独的界面。它们都使用同样的业务对象来响应参数化的浏览器请求,它们 一起构成一个 UI 组件。如果使用 MVC 框架,那么就会将原本简单的事情复杂 化了。

其他方面

尽管 Web 框架往往让事情变得复杂,但是它们能够解决许多比较小的问题。 基于 servlet 的设计提供了很高的灵活性,可以适当地解决这些问题,而不需 要依赖于任何解决方案。

安全性

在企业应用程序中,页面级的安全性往往在 XML 描述符文件中以声明性方式 来处理。同样,根据我的经验,往往需要一个更动态的代码级接口来管理页面中 特殊的行为 —— 例如,Picks servlet 中与日期相关的逻辑。这可以用 Servlet API 内置的安全方法来处理,比如请求对象上的 isUserInRole(),也 可以将它写成单独的接口。使用 Servlet API 对这两种方式都有帮助。

国际化

尽管许多框架都可以以属性文件的形式对文本值进行国际化,但是可以在 HTML 写出器中用少量代码实现同样的结果。可以添加一个方法,比如 printText(),它以一个键作为自变量并输出翻译后的文本值(text() 会直接返 回文本)。servlet 输出代码仍然很简洁,而且执行与等效的 JSP 相同的功能 (如果不是更多的话)。这还可以更好地控制如何处理缺失的翻译词 —— 是抛 出异常,还是使用默认语言。

智能皮肤

March Madness 设计实现了一些很有意思的东西。进入主页并登录,就会看 到一个欢迎消息。如果点击 “Welcome” 后面的逗号,就会发现外观和感觉发 生了变化。替换的皮肤仅仅是另一个 CSS 文件。我扩展了 MadnessWriter;当 选择替换皮肤时,servlet 基类对这个子类进行实例化,并将实例传递给受保护 的服务方法。因此,MadnessWriter 子类不但可以覆盖默认的样式表,还可以覆 盖结构性 HTML 输出代码,例如显示不同的徽标以及在框周围显示更复杂的边框 。servlet 中不需要特殊代码。

关于缩进的说明

关于这种方式,有一点需要注意:生成的 HTML 没有缩进,其格式的可读性 不好。(但是,通过混合 HTML 和 scriptlet 在模板代码中创建缩进常常导致 混乱。即使不使用 scriptlet,随着时间的推移,剪切和粘贴也会使代码支离破 碎。)

只需在输出中添加一些新行字符,就能够让 March Madness 站点生成的 HTML 具有更好的可读性。但是对于这种方法来说,HTML 的格式是否漂亮并不重 要,因为可以通过检查 Java 代码轻松地找到大多数布局 bug,不需要查看生成 的 HTML 源代码。将元素和结构放在方法中大大提高了简洁性和可维护性。

结束语

本文鼓励读者脱离常用 Web 框架的思维模式,考虑直接用 Java Servlet API 构建 Web 界面。Java Web 开发人员可用的框架和模板系统非常多,这让人 误以为这些是必不可少的,但是它们往往非常复杂,很难使用。尽管有的框架非 常适合某种类型的 Web 应用程序,但是也可以考虑用内置的语言特性(比如扩 展和封装)来实现。正如 Bruce Tate 所说的(参见 参考资料)

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