Sun Microsytem 最近已经帮助一些组织来创建这样的规范,制定了文档“Code Conventions for the JavaServer Pages Technology Version 1.x Language”可以免费获得,参考“Resources”(http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp.html)。如果你的公司还没有遵循JSP编程规范的话,我建议使用这个文档作为一个起点。你可以完全的遵照该文档也可以在其基础上创建自己的规范。
Application scope 是最为广泛的一个范围,应该在必要的时候才采用这种形式。你可以在非会话相关(session-aware)的JSPs中创建绑定到application的对象(You can create objects bound at application level in JSPs that are not session-aware,)在这种类型的JSPs中可以用应用范围来存储数据和信息。( so application scope is useful for storing information when using these types of JSPs)。你也可以使用绑定到application的对象用来在不同的会话(session)间共享数据。当你不需要application范围的对象的时候一定要显式的删除它们以便释放内存。
JSP的引入和采纳已经成为JSP开发人员的一个最为重要的进步。JSTL有时候也称为“JSP Standard Tag Library”。在JSTL中的T代表的是标签(Tag)而不是模板(Template)。
JSTL:背景与回顾
在我以前的文章里,我提到过JSP开发人员采纳可以得到的自定义标签库而不是自己从头开始创建。有许多的商业的或者开源的自定义标签库现在已经可以加以利用。但是有一个缺点就是:开发人员需要在JSP中按照这些自定义标签库所特定的格式来应用这些标签。JSTL的出现解决了这个问题,因为JSTL提供了自定义标签的标准接口,这些标签足以满足JSP开发人员的一些基本的要求。(The advent of JSTL has addressed this downside by providing standard interfaces to the custom tags that perform many basic functions JSP developers need.) 不同的供应商可能以不同的形式实现这些JSTL标签,但是JSP开发人员不要知道实现标签时的不同点。如果JSP开发人员使用JSTL编写了JSP page或者JSP document.JSP page或者JSP document.该适用所有的JSTL实现方法。有许多有价值的书和一些在线的资源可以去学习JSTL。这里我将主要简单的介绍JSTL的优点与特性。
3.编写自定义标签相对其他一些JSP开发任务来说需要更多的精力与经验。JSTL通过两种方法来简化这些步骤:首先,如前所述,jstl能解决很多定制(自定义)的tags的需要.(JSTL handles many common needs for custome tags)。其次,JSTL提供了一些机制使得编写你自定义的标签更简单,尤其是编写支持EL自定义标签的时候。
JSTL提供了数据访问标签库,但是我很少用它,因为我强烈的认为不应该在JSP页面内直接访问数据库。如果在JSP中直接的访问数据库将会降低重用,因为数据库访问的代码在使用数据库范围标签的JSP页面外是不可以被访问到的。在JSPs中直接的进行数据库访问将会加大表示层与数据层之间的耦合。严格的分割意味着更好的模块化,复用性,以及更容易的满足表现层和数据层之间的规范(Disciplined separation means more modularity, greater opportunity for reuse, and better opportunities for specialization of presentation and database experts)。.我推荐在JSTL的其他三种标签库可以满足JSP开放人员的需求的时候使用这些标签库,但是我不推荐使用JSTL的数据库范围标签库outside of prototypes and the simplest Web applications。
因为自定义标签库(custom tag library)在JSTL引入以前已经使用了很长的时间,许多的个体和组织都已经开发了自定义的标签库。这些标签库在很大程度上与JSTL的功能都有重复。在大多数情况下,在考虑实现相同的功能时,我推荐使用JSTL而不是自己开放的自定义标签库或者时其他一些可以得到的自定义标签库(other publicly available custom tag library)。JSTL提供的标准化是一个意义重大的优点因为API可以学一次,而后你就可以一贯的使用了。
比较Struts的标签库和JSTL标签库提供可以获得一个很好利用这些最佳实践的例子(Comparing Struts tag libraries and JSTL provides a good example of how to implement this best practice)。Struts提供了MVC框架以外其他的一些优点。其中包括的Struts的自定义标签库集合。在JSTL引入之前,Struts的自定义标签库已经支持遍历( iteration)以及条件标签,但是现在我开始使用JSTL的遍历和条件标签而不是Struts里面的标签。我现在仍然再使用Struts的form标签,这是因为这个标签与Struts的表单(form)紧密的联系在一起,而且在JSTL没有相对应的标签可用。
关于JSTL更详细的内容,她的特点,以及如何在你的jsp中应用JSTL请参考“resources” http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp-p2.html。在“resource”中包含了到“Apache's Standard Taglib(一个开源的,广泛使用的JSTL实现)的连接。Web server的提供商已经开始在他们的web服务器上发布JSTL的实现,JSTL预测将成为最终的JSP2。0规范中的一部分。