首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Servlets和JSP Pages最佳实践(2)
【标  题】:Servlets和JSP Pages最佳实践(2)
【关键字】:Servlet,实践,JS,JSP,Servlets,Page,Serv,Pages,Servlets,JSP,Pages
【来  源】:网络

Servlets和JSP Pages最佳实践(2)

Servlets和JSP Pages最佳实践(2)
  • 使用自定义标记: 并不是所有HTML内容开发者都喜欢将Java代码(或scriptlets)嵌入在HTML文档中的,可能是因为他们不了解Java语言并且也不乐意学习它的语法。但是不能使用JavaBeans组件封装很多Java代码,在JSP页面中使用它们仍然要求内容开发者具有Java语法的知识。

    JSP技术允许你通过标记库设备引入新的自定义标记。作为一个Java开发者,你可以通过引入能够部署并在HTML这类语法中使用的自定义标记扩展JSP页面。自定义标记通过进一步分隔业务逻辑和表示逻辑也允许你提供更好的封装。另外,它们提供了自定义表示的方法,而使用JSTL却很难做到这一点。

    自定义标记的好处:
    1. 他们能够消除JSP应用程序中的scriptlets。标记必需的参数可以作为属性或内容体传递,因此,不需要Java代码初始化或设置组件属性。
    2. 它们的语法非常类似。Scriptlets是使用Java代码编写的,但是可以在类似于HTML语法中使用自定义标记。
    3. 它们能够提高非程序员内容开发者的生产率,允许它们执行HTML不行完成的任务。
    4. 它们是可重用的。节省了开发和测试的时间。Scriptlets不是可重用的,除非你通过剪切粘贴 来“重用”。


简而言之,你可以使用和使用HTML创建表达式一样的方法来通过自定义标记完成复杂的任务。

编写自定义标记库的时候,可以使用下列编程指南:

    1. 保持简单性:如果需要在一个标记中包含多个属性,那么最好将它分为多个标记。
    2. 使它具有可用性:咨询标记的使用者(HTML开发者)从而获得高可用性。
    3. 不要在JSP页面中发明一种编程语言:不要开发自定义标记让用户编写显式的程序。
    4. 尽量不要重新发明轮子:目前有多个JSP标记库可用,如Jakarta Taglibs Project。查看这些标记库,看看是否有你所想要的东西。
  • 不要重新发明轮子: 虽然自定义标记提供了重用宝贵的组件的方法,但是仍然要创建、测试和调试它们。另外,开发者仍然要不断地重新发明轮子,该解决方案的效率不是最高的。问题就是通过提供一组颗重用的标准标记解决JavaServer Pages Standard Tag Library (JSTL) 。JSTL定义了一组在任何地方都一样工作的标准标记库,这样你就不再需要使用scriptlet(或各类供应商提供的迭代标记)在集合中进行迭代。JSTL 包括各类标记,循环、不使用Java语法就读取属性、迭代各类数据结构、有条件地计算表达式、通过一种精确的方式设置属性和脚本变量并分析XML文档。
  • 使用 JSTL 表达式语言: 使用JSP范围属性和请求参数将信息传递给JSP页面。表达式语言 (EL)是为页面作者特别设计的语言,将JSP范围属性提升为业务逻辑到JSP页面通讯的标准方法。然而,注意,然而EL是JSP技术的一个关键方面,它不是一个通用编成语言。而且,它是简单的数据存取语言,它不需要使用scriptlet或请求时间表达式值就能方便地存取(并操作)应用数据。

    在JSP 1.x中,页面作者必须使用表达式<%= aName %> 来存取系统的值,如下面的例子所示:
<someTags:aTag attribute="<%=
pageContext.getAttribute("aName") %>">

或自定义的JavaBeans组件的值:

                                                        <%= aCustomer.getAddress().getCountry() %>

表达式语言允许页面作者使用简化的语法存取对象。例如,可以使用下面的语句存取简单变量:

                                                        <someTags:aTag attribute="${aName}">

如果想要存取嵌套的JavaBeans属性,可以使用下面的语句:

                                                        <someTags.aTag attribute="${
   aCustomer.address.country}">

如果你使用JavaScript,你将会觉得非常熟悉,因为EL采用JavaScript语法存取结构化数据。

  • 如果可能使用过滤器: 过滤器是JSP技术的一项新功能。如果你曾经遇到过这样一种情况,那就是有多个servlet或JSP页面需要压缩它们的内容,那么在这种情况下你就能够编写一个简单的压缩过滤器并将它应用到所有的资源上。例如,在Java BluePrints中,通过过滤器来提供SignOn。
  • 使用可移植的安全模型:

    绝大多数服务器提供服务器或供应商特定的安全功能,这样就将开发者局限于某台特定的服务器。为了最大化企业应用的可移植性,使用一个可移植的Web应用安全模型。然而,到最后,这归结成权衡问题。例如,如果你有一组早就定义好的用户,你可以使用基于表单的登录或基本认证来管理他们。但是如果你希望动态创建用户,你就需要使用容器特定的API来创建和管理用户。但是容器特定的API不具有可移植性,使用适配器(Adapter)设计模式能够克服这一点。
  • 使用数据库存储持久信息:

    可以使用HttpSession 对象实现会话,该对象提供了一个简单方便的机制来存储用户、识别用户的cookie。使用会话存储临时信息—所以即便这些信息丢失了,你也不用担心。(当会话过期或客户端改变浏览器的时候,会话数据就会丢失。) 如果你希望存储持久信息,使用数据库,在浏览器之间共享数据库中的持久信息更加安全更具有可移植性。
  • 缓存内容:

    永远都不要动态重新生成请求之间不会改变的内容。你可以在客户端、代理端或服务器端缓存内容。
  • 使用连接缓冲池:

    推荐使用JSTL进行数据库存取。但是如果你希望自己定制编写数据库存取的行为,推荐你使用连接池,这样能有效地让所有请求共享数据库连接。然而,注意,J2EE服务器在背后提供了该项功能。
  • 缓存数据库请求结果:

    如果你希望缓存数据库结果,不要使用JDBC的ResultSet 对象作为缓存对象。它和一个链接紧密结合,这个链接和连接池相冲突。将数据从ResultSet 复制到特定应用的bean,如Vector或JDBC的RowSets。
  • 在必要的时候采取新的

    JSP XML

    语法:

    实际上这基于你希望你的应用程序如何遵守XML。然而,这需要进行权衡,因为这使得JSP成为更加强大的工具,但是对开发者却不怎么友好。
  • 读取并应用

    Enterprise BluePrints

    :Sun的 Enterprise BluePrints 给开发者提供了 指南 模式 、 和 例子应用程序 ,如Adventure Builder和Pet Store。总的来说, J2EE BluePrints提供了最佳实践和一组设计模式,这些实践和模式是构建具有可移植性、强壮可扩展的Java应用程序中经常出现的问题的解决方案。

· 集成Servlets和JSP页面

JSP规范给出了使用JSP页面构建Web应用程序的两个方案:JSP模型1和模型2体系结构。这两个模型的区别在于处理的位置。在模型1的体系结构中,如图2所示,JSP页面负责处理请求并将响应发送给客户端。


图 2: JSP 模型 1 体系结构

模型2体系结构,如图3所示,集成使用了servlets 和JSP页面。在该模型中,JSP页面用于表示层,并且servlets负责处理各类任务。Servlet作为一个 控制器 ,负责处理请求并创建JSP页面所需的任何bean。该控制器也负责确定将该请求传递到哪个JSP页面。JSP页面检索servlet创建的对象,并提取动态内容插入在一个模板中。


图 3: JSP 模型 2 体系结构

该模型促进了模型视图控制器(MVC)体系结构风格设计模式的使用。注意,早就存在多个框架能够实现该有用的设计模式,并将内容和表示真正地独立开来。Apache Struts是MVC的形式化框架。该框架非常适用于复杂的应用程序,在这些复杂的应用程序中单个请求或表单提交会产生看起来截然不同的结果。

· 结束语

最佳实践—事实证明是经常重复出现的问题的解决方案—产生了高质量的应用程序。本文是开发servlet时需要遵守的多个指南和最佳实践-和基于JSP的Web应用程序。

请留心servlets和JSP技术,因为在这些技术中有许多激动人心的东西。例如,JavaServer Faces (JFC),是一个Java程序社区(Java Community Process),它的目标是定义一个标准的Web应用框架,这将很好地和Apache Struts集成。

Jsp最佳实践:【上一篇】
Servlets和JSP Pages最佳实践(1):【下一篇】
【相关文章】
  • Jsp最佳实践
  • JSP best practices
  • 使用JSP技术设计电子商务应用系统(1)
  • 使用JSP技术设计电子商务应用系统(2)
  • 再谈jsp和asp的比较问题
  • 在Linux下装PHP+JSP
  • jsp留言板源代码(4)
  • JSP 1.2 的新功能(1)
  • JSP 1.2 的新功能(2)
  • 编译时标签(对JSP进行的XSLT预处理)
  • 【随机文章】
  • .NET客户端应用程序:.NET应用程序更新组件(4)
  • DEBUG命令详解 下
  • 防止空连接#返回到页面顶端
  • 随时改变文字大小的程序
  • Linux下应急响应流程与步骤
  • Tuxedo服务端如何访问informix数据库
  • 操作系统常见问题:操作系统启动变慢的几个原因
  • XPlayer
  • 使用VC++6.0制作ASP服务器控件简介
  • 无线宽带路由器
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.