Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1530674
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 20:09:04

一起学习
"JSP Standard Tag Library: Learning JSTL"的作者bayern向您介绍有关JSP Standard Tag Library的一些基础知识(它的历史、目标、计划),包括对expression language(一种更简洁的脚本语言,在文中被描述为下一代的JSP)和开发自己的custom tag的一些简单介绍,以及一些JSTL的后续文章的资源指导...

一种新的动态web设计语言
当我加入Java Community Process(JCP)去创建JSP Standard Tag Library标准和实现的时候,我自己都没想到会完全改变以前对JSP的看法。JSTL表面看起来只是JSP一个插件,但事实上它也可以算上是一种新的用于构建动态web页的语言。

无论是对程序员非程序员,JSTL提供了诸如循环、条件、数据库访问、XML处理、国际化(i18n)等开发上的工具和流程,本文主要介绍它的基础知识--它的历史\目标\计划

什么是JSTL?
JSTL是一组型如HTML的标签(tag)使你即使不需要学习Java也可以编写动态web页。在2002年中期发布后,它将会作为JSP平台的一个标准组成部分。使用JSTL你可以不需要按以往传统的语言编程方式来创建用于读取XML、访问数据库等各种任务的web页。

JSTL是建立在JSP上的某种custom actions(自定操作)或custom tags(自定标签),下面我们来走近JSTL

当一些传统的编程语言比如象java出现在web页中,他们需要包含在一些标记中,比如在Jsp中:



We have now stolen <%= session.getAttribute("dollars") %>
from your credit-card account. Please stop by again.




所有的Java代码被包含在<%...%>中 ,<%=...%>用来直接输出表达式和变量,这点大家都很熟悉,这看其来也很简单,但是对一个JSP项目来说,需要在很多地方嵌入JAVA代码,如果web设计者只会用HTML而不是Java,那他需要一些Java程序员的协助来修改<% ... %>中的java代码,另外这样还会给项目带来分工上的困难

为了要解决这种问题,JSP提供了custom tags的机制,使一些tags看起来像是HTML,但实际上这些tags却连接了一些Java代码,比如一个java程序员写了一个显示人名的方法,使用的tag来调用这个方法,这样一个页面的代码可能会象如下的样子:


Dear ,



JSTL:标准的tag
不同的需要会使用不同的custom tags,比如一些用来遍历数据产生表格和列表,另一些用来访问数据库或者读取XML文件

一些JSP容器的厂商和开放源代码组织为一般的应用提供了很多tag,这些被成为tag libraries,比如说JRun提供了自己的tag libraries,Jakarta项目组也提供了用于XML处理、HTML表单生成、数据库访问的tag libraries

许多的开发者使用某种tag libraries,这种方法不是标准化的,比如当你项目迁移了应用平台,你以前所使用的tag library可能就无法再使用了,有的可能依赖于Jakarta的 Taglibs,有的依赖JRun的library。为了要解决这种分裂局面Java Community Process决定提供自己的标准tag library,JSTL 1.0是该标准的第一个版本,它支持以下基本任务:

  • 遍历数据来产生表格,列表等
  • 条件操作 (比如 当超过18岁时显示成人内容)
  • 导入和处理其他web页的数据
  • 简单的xml处理
  • 数据库访问
  • 文本格式和国际化


JSTL 1.0 将会于2002中期发布,The JSP Standard Tag Library这本书将会详细介绍这些内容

一个新的名词 “expression language”

在JSTL中最大的改变在于,它介绍了下一代的JSP:一种expression language,它将会取代JSP中传统的java表达式
比如表达式

<%= session.getAttribute("username").getFirstName() %>

将会改变为更为简单的形式:

${sessionScope.username.firstName}

这种JSP/JSTL的expression language将会使用比JavaScript更为简单的语法

expression language并不是通用语言,它是专门为JSP设计的,它的目的是使jsp可更简单的访问数据。该语言使页面通过scopes来访问数据信息,所谓scopes是jsp环境中定义的一些按不同的生命周期划分的一个集合数据。在图1中可以了解scope的含义expression language(一些细节仍在JCP的专家组中创建)最常使用的是request参数和cookie



图1:JSP使你可以在scope中组织你的数据,比如一些全局的数据在整个application scope中,一些面对用户的数据在session中,实现所有这些数据的访问都不需要你写任何Java代码(本图来自JSP Standard Tag Library第2章)

对程序员也有好处
虽然JSTL的主要听众是web开发者,但JSTL也同样为Java程序员带来一些东西,可以使Java程序员更容易的开发出自己的custom tags
,要开发custom tag,需要了解相应的API的用于管理生命周期的tag handlers(有关tag handlers的信息,请参阅JSP Tag Libraries ,by Shachor, Chace, and Rydin)

JSTL提供了一系列的基类来帮助开发员开发自己的tags。比如如果你要实现一个iteration tag,你只要关心怎样去实现java.util.Iterator,你用不着关心如何处理类似doStartTag() 和 doAfterBody()用于处理tag-handler的方法。相应的,要实现一个conditional tag,只要简单的编写一个返回boolean的方法(这些在JSP Standard Tag Library的第4部分会有详细介绍)

当然JSTL同样带来了很多易用的工具:对数据库访问的预编译tag、预测试tag、XML处理等等。使用expression language的JSTL将会在2002年中期发布,实验性的实现将会在Jakarta Taglibs的网页中出现

About the Author
Shawn Bayern is the reference-implementation lead for JSTL and the author of Manning's "JSP Standard Tag Library: Learning JSTL," which will be available July, 2002.

英文原文:Introducing the JSP Standard Tag Library (JSTL)

本文中没提及的参考,请参见原文

翻译 yife 下载本文示例代码


JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍JSP Standard Tag Library (JSTL)介绍
阅读(114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~