




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP最新特性及思想的最佳实践1 作者:Dustin Marx著;chessboy译 发文时间:2003.08.19 13:43:19概要: JSP规范的不断进展,可用的jsp开发工具数量不断增多,以及jsp技术可涉及领域的不断的扩展,促进了基于jsp技术的高维护性能和标准化的网络应用的开发。这篇文章讨论了在jsp进展中的一些主要内容以及如何更容易的开发健壮的JSP网络应用。这篇文章可以帮助读者提高应用JSP强大功能的能力,并能够让你为将来JSP的升级做好准备。 自从我(原文作者)在2001年底发表了“JSP最佳实践”以来,JSP技术已经有了戏剧性的发展。许多的工具已经使得开发基于JSP技术的网页变的更加容易。在上一篇我的“最佳实践”的文章中所提到的实践依然适用。然而,随着新的特性,工具,以及JSP开发思想的出现你需要使用更多的最佳实践来开发更加平滑的高维护性能的JSP的应用。这篇文章列出了一些应用了最重要的新的特性,工具和思想的最佳实践: 开始编写JSP document 引入JSP编程约定 使用正确的范围(Scope) 小心的管理“会话”范围 利用JSTL(JavaServer Pages Standard Tag Library)的特点 利用servlet filers(Intercepting Filter pattern)的特点 创建你的Jsp pages的文档 预先编译JSP网页和文档 组织文件和目录以便于容易的开发和部署 小心使用私有的,与供应商特定的特性 HTML标签使用XHTML(Extensible HyperText Markup Language)语法 使用JSP document不是JSP pages JSP规范支持JSP pages同样也支持JSP document。两者之间主要的区别是它们对XML兼容的程度。JSP pages使用传统的或者说是“速记(shorthand)”语法,而JSP document用的语法完全与XML相兼容。JSP document时候被成为是使用了XML语法的JSP pages。但是这里我将分别称它们为JSP pages和JSP document便加以区分。 基于以下几个原因我推荐使用JSP document 1.JSP document很好组织了的XMLHTML(You can easily verify JSP document as well-formed XML/HTML) 2.可以使用XML Schema来验证JSP document l 可以很容易的使用标准的XML工具来写和解析 3.可以使用XSLT(Extensible Stylesheet Language Transformations)以不同的form来编写JSP document具体请看“JSP documentnbspwith XSLT”/javaworld/jw-07-2003/jw-0725-morejsp.html 4.JSP使用了XML相容include和forward action,custom标签,因而使得整个documentXML相容,这样就提高了编码的一致性。 5.JSP document相对JSP pages需要稍微多一点的开发规则,但是带来的好处是更加容易阅读和维持的document,特别是对于刚刚开始学习JSP的人来说。 关于创建JSP document和其特点的详细内容请参考“Write JSPs in XML Using JSP1.2”(/javaworld/jw-07-2003/jw-0725-morejsp.html) JSP document最大的缺点是没有与XML相兼容的JSP注释存在。JSP document以使用客户端的注释(HTML-/XML style)或者是嵌入的java注释。但是没有JSP document 而JSP可用的上面的两种注释方法都有其自身的缺点。你可以在得到的网页中看到客户端的注释(通过浏览器视图里面的“查看源文件”功能),而且要使用java的注释需要将java代码直接的写在JSP document中。 在本文剩下的章节中,我将使用JSPs来代表JSP pages和JSP document,因为我所讨论的最佳实践同样的适用这两种形式的JSP。 使用JSP的编码规范 无论使用任何一种语言,创建的任何工程,在提高开发,维护,和测试你的软件的角度遵循编码的标准和规范都是很明智的选择。读其他开发人员的代码并不简单而且也不是愉快的事情。但是,如果所有的开发人员都遵循同样的命名规范和其他的一些约定的化,阅读代码和维护就会使得阅读代码对他人和编程人员自己变的容易一些。 Sun Microsytem 最近已经帮助一些组织来创建这样的规范,制定了文档“Code Conventions for the JavaServer Pages Technology Version 1.x Language”可以免费获得,参考“Resources”(/javaworld/jw-07-2003/jw-0725-morejsp.html)。如果你的公司还没有遵循JSP编程规范的话,我建议使用这个文档作为一个起点。你可以完全的遵照该文档也可以在其基础上创建自己的规范。 为对象选择合适的Scope JSP 规范支持四种scope(应用application,会话session,请求request和页面page),在JSPs中你可以为创建的对象选择其中的一种,因为绑定到这些scope的对象消耗内存,并且在有些时候需要释放,所以最好选择适当的scope来完成你的任务。 应用范围(Application scope) 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范围的对象的时候一定要显式的删除它们以便释放内存。 会话范围(session scope) 在我的经验中,会话范围要比应用范围用的多。会话范围允许你创建并且将对象绑定到一个会话上面。你必须在session-aware的JSPs中创建绑定在会话的对象并且使在同一个会话中所有的JSP和servlet能够访问到这些对象。会话范围常常用在管理安全验证和管理多个页面的状态信息。绑定在会话范围的对象在不需要的时候也要显示的删除。当我计划将某个类的对象绑定到会话范围的时候我通常会使该类可串行化。 请求范围(request scope) 在绑定对象的时候,页面范围我用的最多。此类对象只在同一个请求的页面间有效。在请求处理完成的时候这些对象将会自动的被释放。因而不需要显式的释放它们,这样就没有了使系统被一些不必要内存消耗而拖累的危险。 页面范围(page scope) 当你创建只对当前页面相关的对象的时候你需要选择页面范围。和请求范围一样,绑定在页面范围的对象不要显式的删除。我很少在我的JSP应用中使用“页面范围”,但是这是的默认范围。 选择哪种范围(scope) 需要仔细的选择创建对象的范围来保证有效的利用内存,通常我会在刚刚开始的时候选择请求范围,然后在评估是否需要选择范围更大的范围。 仔细的管理会话范围 前面已经提到过,只有在必要的时候才选择会话范围并且当这些对象不在需要会话级访问的时候需要显式的去掉对象的其会话范围。当不使用会话范围的对象的JSP中你可以设置页面的directive的session属性为false,这样可以避免管理会话范围。但是,很少的网络应用不需要会话范围的支持。通常,我使用会话来支持安全机制以及其他的一些应用需求。尽管一个会在一个可以由你配置的时间后过期,但是在不需要对象的会话范围的时候最好显式的取消它们,而不是依赖会话自动释放的功能。 采用JSTL(标准标签库) 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 documentJSP page或者JSP document该适用所有的JSTL实现方法。有许多有价值的书和一些在线的资源可以去学习JSTL。这里我将主要简单的介绍JSTL的优点与特性。 JSTL的优点 简短的说,JSTL提供了所有的已经公布的自定义标签库所有的好处,而且提供标准化的标签API。JSTL促进了高可维护性和可移植性的pages和document。我列出了JSTL一些特别的特点。 1.JSTL提供了基于标签的遍历,条件以及其他一些功能,这些功能以前或者是直接在JSP中嵌入代码来实现的,或者是使用了自己创建的标签,非标准的标签库,或者是通过使用Servlet来代替JSP来实现的。 2.JSTL使用了EL(expression language)语法 3.编写自定义标签相对其他一些JSP开发任务来说需要更多的精力与经验。JSTL通过两种方法来简化这些步骤:首先,如前所述,jstl能解决很多定制(自定义)的tags的需要.(JSTL handles many common needs for custome tags)。其次,JSTL提供了一些机制使得编写你自定义的标签更简单,尤其是编写支持EL自定义标签的时候。 具体的JSTL特性与优点 下面简单的概括JSTL4个可用自定义标签库中三个标签库的一些优点,并且给出了不推荐使用数据库访问标签库(database access library)的原因。同样我也讨论了使用EL的优点。 数据访问标签库(Database access library) 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。 JSTL 核心标签库(JSTL core tag library) 正像名字一样,JSTL核心标签库是在JSTL四种标签库中最常用的一种。这个标签库提供了对collection的遍历,条件语句以及其它一些常用的程序结构。JSTL核心标签库可以使得JSP开放人员不必编写他们自己的自定义标签库或者直接在JSPs中嵌入Java代码。 JSTL XML 标签库(JSTL XML tag library) 这个标记库提供了一些令人赞叹的且功能强大的XML操纵标签和XSLT转换标签。 JSTL formatting 标签库 如果需要在多个国家提供网页和网址,那么国际化(internationalization)对网络开发项目(web development projects)来说是一个很大的挑战。JSTL formatting标签库为此向JSP开发人员提供了一些自定义标签,可以支持按照特定的区域读写数字和实践。 Expression Language JSTL以上的自定义标签库有两种类型:RT(traditional request time)自定义标签库和EL标签。因为EL要更灵活一些,所有我推荐使用EL自定义标签库。 JSTL和其他一些自定义标签库 因为自定义标签库(custom tag library)在JSTL引入以前已经使用了很长的时间,许多的个体和组织都已经开发了自定义的标签库。这些标签库在很大程度上与JSTL的功能都有重复。在大多数情况下,在考虑实现相同的功能时,我推荐使用JSTL而不是自己开放的自定义标签库或者时其他一些可以得到的自定义标签库(other publicly available custom tag library)。JSTL提供的标准化是一个意义重大的优点因为可以学一次,而后你就可以一贯的使用了。 比较Struts的标签库和JSTL标签库提供可以获得一个很好利用这些最佳实践的例子(Comparing Struts tag libraries and
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 白银熔池熔炼工晋升考核试卷及答案
- 道路危险货物运输从业人员考核试题与答案
- 重冶净化工技能巩固考核试卷及答案
- 真空垂熔工培训考核试卷及答案
- 竹藤编艺师抗压考核试卷及答案
- 卫生院医务人员手卫生规范考核试题(含答案)
- 小学音乐专业知识考试试题及答案
- 医院防灾减灾救灾工作演练计划
- 院感竞赛试题内镜清洗消毒技术操作规范试题(附答案)
- 小学生行为习惯养成教育实施计划方案
- 2024-2025学年小学劳动一年级上册人教版《劳动教育》教学设计合集
- You Raise Me Up二部合唱简谱
- 五年级开学第一课
- 雅思初级教程-unit-1-Great-places-to-be
- 心电监护仪的使用幻灯片
- 工厂设备拆除施工方案
- 《电力行业企业培训师能力标准与评价规范》
- 张掖简介介绍
- 数学的大发现:探索数学理论和发现的背后原理
- THEBQIA 203-2023 药用中硼硅玻璃管
- 关键工序卡控管理实施细则
评论
0/150
提交评论