[转载]Jsp最佳实践(2)

八、使用MVC设计模式

当然、其它设计模式可以在jsp中有效的使用,而我经常使用模型—视图—控制器(MVC)的体系机构。MVC可以使应用的开发的建立、测试、维护、改进变得更为容易。在jsp术语中,MVC体系结构的现实经常被作为Model2(来自早期的jsp规范)提起。J2EE蓝皮书的例子就是基于MVC模式的。
阅读Bin Yang的《E++: A Pattern Language for J2EE Applications, Part 1》和Govind Seshadri的《Understanding JavaServer Pages Model 2 Architecture》得到jsp和mvc的更多信息。
Struts
Struts是一个开源的MVC实现,它提供了你可在应用中继承、修改的基本控制器的功能。基本控制器是作为一个java servlet的实现,它的配置是由一个叫struts-configxml的文件控制。当一个基于Struts的jsp Web应用建立时,大多数的改动是在struts-configxml文件中的流程控制,而非它本身代码。
实现一个适应MVC模式的应用,需要初期额外的工作。但是,这个前期的投资可以得到更多“可重用、可维护”代码的值得的回报。再者,Struts对实现MVC初期工作的简化也是值得注意的。
除了提供MVC的实现,Struts还提供了一些有价值的定制标签库,比如前面提到的模版标签库。逻辑标签库包含有迭代循环、if-then-else结构的定制标签。HTML标签库是许多有价值定制标签的代表,包括实现form和用于Struts form 处理、效验的定制标签。阅读Struts文档可获得有关这些标签库和其它标签库的更详细的信息。接下来,讨论使用这些标签库的优势。
九、使用有效的标签定制库

当标签库可以容易、有效地使用在多种用途时,开发者为什么还要为重复开发、担心测试、调式而花费时间呢?一些卖方以免费或单独购买的方式为他们的客户提供定制标签。但是很多定制标签库可以在网上找到,这些资源为找到一个潜在的有用的标签库提供一个很好的起点。
当然这些第三方标签库有时候含有bug,自许多开发者在他们的应用开发中使用、测试这些标签时,绝大多数这样的问题极有可能被发现,同时很多定制标签是开源的,你可以根据自己的需要修改它们。
我发现花时间广泛了解定制标签是值得的,因为这些标签库通常提供了大多数web应用的通用功能,而学习这些标签只需要很少的时间投资,重用已有、有效的定制标签可以节约编写、调试、测试自己的定制标签的时间。正如以上所说,许多标签库是开源,由于这些原因,我可以很容易的使通用的行为适应我特定项目的情况。
十、确定适当的xml依从度

绝大多数jsp开发者使用jsp标签的速记语法而非xml语法。这个已在Sun的JSP语法参考中(列出仅是标签的速记形式)得到部分证明。
使用包括jsp标签在内的100% xml依从度jsp的优势是,xml验证工具可以验证jsp文件,以一个执行jsp基本语法规则的DTD为标准。
不过,在当前写或维护一个xml标签语法的jsp需要额外更多的工作,当把速记语法自动地转化为xml语法的工具被开发出来时,使用xml形式jsp的益处将使这些工作减少。我期待着在完全使用xml形式的标签之前,与xml形式jsp有关的jsp规范和实现能能够成熟。你可以阅读《XML in the JSP Specifications》来获得有关xml依从是如何在最新的jsp规范中运用的更多的信息。
我并不是暗示你不能在当前的jsp技术中使用xml,我只不过是期待在1.2版的规范中有更好的处理jsp-xml映射的工具。不过,有其它的方式可以将两种技术在一起运用,可以阅读有关使用xml和jsp的文章资源。
十一、尽可能多使用jsp注释

适当的注释好象是对软件开发者的挑战。Jsp或其它代码理应包含注释以描述复杂特别的功能、页面用途和其它基本信息。
由于jsp允许开发者将java、jsp标签、html标签混合在一个页面中,所以就有了多种注释jsp页面的方法,开发者应谨慎地考虑使用哪一种注释方式。Html注释在经由jsp编译而成的html源代码中是可见的,同时浏览器是我们很容易地看到这些。另一方面,jsp注释并不放在由jsp编译过程创建的html文档中,这些注释不能作为页面源代码的一部分通过浏览器看到。Java注释也可以出现在jsp文件中的java程序段中,它在浏览器中也是不可见的。但是,在jsp中包含java注释违反了分离java、html代码的原则。
注释通常是对写或维护代码的开发者才有意义的。因此,除非有非得需要在浏览器中显示出来得情况,应该使用jsp注释。
十二、遵循html最佳实践

当java从jsp中分解出放入javaBean和定制标签管理器中时,jsp大部分由jsp标签(包括定制标签)和html标签组成。遵循和html开发有关的最佳实践方法以使jsp更易于理解和维护。
W3C有一些有关HTML最佳实践和验证的资源可参阅。
十三、使用jsp异常机制

对调试代码的开发者来说,一个抛出的异常堆栈痕迹是极其重要的,而和软件使用者共享一个完整的异常堆栈信息是极其少有的。冗长的堆栈信息是不美观的,同时由于暴漏了不必要释放的信息而增加了安全风险。Jsp允许开发者在代码中捕获和处理异常。
除堆栈痕迹外的异常信息更为有用。Jsp能使用一个session变量保存当前正在执行的页面和操作的信息。接着,若一个异常产生,异常页面将被调用,它将同时访问抛出的异常信息和产生异常的起始页面的信息。异常页面可以使用接下来的在javaBean或ejb中的java代码将完全的异常信息、会话信息、异常的日期时间信息存入数据库中。
减少可见的错误信息打印到屏幕同时提高安全性。异常页面仅仅打印出简单的错误信息和可能的鉴别码,而能使开发出在数据库中找到更详细的异常信息。因为美观和安全的理由,我更愿意将绝大部分的异常信息保存进数据库或平面文件而非全部打印到屏幕上。这样同时可以使异常持续存在,甚至是在用户退出应用程序时。注意,在开发期间为了正常的测试和调试,您应当在屏幕上打印出全部的异常信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值