一种新的动态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中:
<body>
<p>
We have now stolen <%= session.getAttribute("dollars") %>
from your credit-card account. Please stop by again.
</p>
</body>
所有的Java代码被包含在<%...%>中 ,<%=...%>用来直接输出表达式和变量,这点大家都很熟悉,这看其来也很简单,但是对一个JSP项目来说,需要在很多地方嵌入JAVA代码,如果web设计者只会用HTML而不是Java,那他需要一些Java程序员的协助来修改<% ... %>中的java代码,另外这样还会给项目带来分工上的困难
为了要解决这种问题,JSP提供了custom tags的机制,使一些tags看起来像是HTML,但实际上这些tags却连接了一些Java代码,比如一个java程序员写了一个显示人名的方法,使用<user:firstName>的tag来调用这个方法,这样一个页面的代码可能会象如下的样子:
<p>
Dear <user:firstName/>,
</p>
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)
转载自 http://mag.javadigest.net
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/