灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:5095回复:0

JSP操作技巧(15)

楼主#
更多 发布于:2012-09-10 19:55

他们能够消除JSP应用程序中的scriptlets。标记必需的参数可以作为属性或内容体传递,因此,不需要java代码初始化或设置组件属性。
  它们的语法非常类似。Scriptlets是使用java代码编写的,但是可以在类似于HTML语法中使用自定义标记。
  它们能够提高非程序员内容开发者的生产率,允许它们执行HTML不行完成的任务。
  它们是可重用的。节省了开发和测试的时间。Scriptlets不是可重用的,除非你通过剪切粘贴 来“重用”。
  简而言之,你可以使用和使用HTML创建表达式一样的方法来通过自定义标记完成复杂的任务。
  编写自定义标记库的时候,可以使用下列编程指南:
  保持简单性:如果需要在一个标记中包含多个属性,那么最好将它分为多个标记。
  使它具有可用性:咨询标记的使用者(HTML开发者)从而获得高可用性。
  不要在JSP页面中发明一种编程语言:不要开发自定义标记让用户编写显式的程序。
  尽量不要重新发明轮子:目前有多个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。使用会话存储临时信息—所以即便这些信息丢失了,你也不用担心。(当会话过期或客户端改变浏览器的时候,会话数据就会丢失。) 如果你希望存储持久信息,使用数据库,在浏览器之间共享数据库中的持久信息更加安全更具有可移植性。

喜欢0 评分0
游客

返回顶部