阿七 |
2006-04-03 11:24 |
JSP 2.0 新功能介绍 ;fsZ7k4]do 1|RANy http://now.net.cn/support/host/tomcatjsp.net %{ABaeb] YwteZSbp6M JSP2.0 新功能介绍 a
AJU`=uq -------------------------------------------------------------------------------- ~5_Ad\n9 QOjqQfmM; 作为国内首家推出JSP虚拟主机的网络提供商,时代互联一直都致力于为用户提供更好的、更稳定、更先进的空间服务。我们经过一段时间的对JSP服务器Tomcat最新版本5.0.16的跟踪和测试,感觉到其各方面的性能比前面的版本的确有很大的提高。同时由于对jsp2.0的支持,极大的提高了WEB程序开发和维护的效率,所以时代互联的Tomcat服务器定在2004年2月上旬左右升级为Tomcat5.0.x。 _]yn"p 5i>$]*o 以下就简要介绍一下JSP2.0很多全新特性,让大家对JSP2.0有一个初步的了解。要知道, 5V6G=H s}j{#xT 时代互联的Tomcat5.0.x服务器支持JSP2.0的所有特性的。 JSP(JavaServer Pages)技术是对Servlet的进一步抽象,它由JCP(Java Community Process)开发,是用于生成动态内容的开放式的、可免费获取的规范,也是J2EE(Java 2 Enterprise Edition)规范的重要组成部分。JSP2.0版是对JSP1.2的升级,增加了一些有趣的新特性。JSP2.0的目标是: =x!2Ak/) 使动态网页的设计更加容易 } ~h3c| 简化JSP页面,使得JSP页面容易维护 C
'v+f= 使WEB应用程序前后台应用更清晰 i;NUAmx 无需学习Java编程语言就可以编写JSP页面 [K9'<Qnu whpfJNz 除了其他一些改进外,JSP 2.0引入的最主要的新特性包括: gXYI\. 一种简单的表达式语言(EL),能够用来容易地从JSP页面访问数据,这种表达式语言简化了基于JSP的不含脚本的应用程序的编写,不需要使用Java Scriptlet或者Java表达式; Y,WuBH
用于直接使用JSP技术来定义可重用的自定义行为的新语法,该语法使用.tag和.tagx文件,这类文件可由开发人员或者网页作者编写; 6I1,:nLL< XML语法得到了实质性的改进,增加了新的标准文件扩展名(.tagx用于标签文件,.jspx用于JSP文件)。 vV[eWd.o6M 时代互联新升级的TOMCAT5.0.x服务器支持以上JSP2.0的全部特性,下面讨论表达式语言、简化的标签API和标签文件,以下的JSP程序都是在TOMCAT5.0.X上实现的。相信目前的JSP开发人员将会发现这些重要的特性不但有趣,而且非常有用。 L!rw[x {7 $c8i 一. JSP表达式语言 _ EL扩展表达式语言 1abtgDL kB/D!1
" EL(表达式语言)是一种数据访问语言,可以方便地访问和处理应用程序数据,而无需使用scriptlet或者请求时(request-time)表达式的值。(不需要使用<% 和%>来获得数据,EL使JSP页面编写人员摆脱了java语言,使用户即使不懂JAVA也可以轻松编写JSP程序. I2 j}Am ?mWw@6G, 在JSP2.0之前,网页作者只能使用表达式<%= aName %>访问系统的值,比如: b+@JY2dvj VG,u7A*Z# <someTags:aTag attribute="<%= pageContext.getAttribute("aName") %>"> 或者 <%= aCustomer.getAddress().getCountry() %> 'f[T&o&L/ pV20oSJ
Nt 而表达式语言允许网页作者使用简单的语法访问对象。比如要访问一个简单变量,可以像下面这样写: aCQ?fq 2C/$Ei^t
<someTags:aTag attribute="${aName}"> 4T!+D sYjpU 而访问JavaBeans属性,可以使用:${aCustomer.address.country} JS*m65e *Txl+zTY Tomcat对EL扩展表达式的支持和配置: #;%JT tomcat5.0默认支持EL,同时用户可以在Web.xml文件中对整个web应用程序进行设置或者在每个页面中单独设置page指令来控制TOMCAT是否对EL的支持。EL扩展表达式语言的设置 2_zp:v 表达式运算符号: .2>p3|F EL表达式运算符包括算数运算符(+-*/),关系运算符(><)和逻辑运算符(&& || !),还有empty 判断值是否为空,同时EL能够对字符串,数字等各种类型的数据之间的自动转换,使EL 兼容了JAVASCRIPT等脚本语言的优点,摆脱了JAVA语言严格的数据类型限制,使用起来简单,只需要几分钟就可以轻松掌握(对于不懂java的网页编写人员实在是一件好事)。各种运算符运算实例 RA G3o- 内置的11个隐含对象: cfcim.jB 为方便的获得WEB应用程序的相关数据,EL表达式语言定义了一些隐含对象。隐含对象共有11个对象,(JSP中具有9个隐含对象,EL比JSP中具有更多的隐含对象,这样EL比JSP更方便的获取数据) 使用这些对象可以很方便的访问Web 程序数据。 "\}@gV#r$A 隐含对象包括Session(获得当前web程序的Session值),cookie(获得WEB程序的Cookie值),header,headerValues(获得用户的Http数据访问头部信息),Param和ParamValues(获得用户提交数据参数)等。 0%m)@ukb {_S}H1, 使用${隐含对象名称["元素"]} 就可以获得这个值了,例如${header("host")} 可以显示http头部中host的值,${param("username")},可以获得显示用户表单提交的用户. 使用${empty(param("username")} 可以判断用户提交表单是否为空等。(这样比jsp1.2中使用request.getParamter("username") 要简化和方便很多了) f}1&HI8r qe!fk?T} 隐含对象及隐含对象访问实例 P@,nA41,j 访问应用程序数据 'bo~%WA]n 除了可以方便的访问内置的隐含对象外,EL还可以方便的到应用程序数据,访问应用程序数据使用两种方式 . (点号运算符)访问对象的属性,也可以使用[] 来访问数组元素(实际上EL中访问隐含对象数据也是使用这两种方式的) 访问应用程序实例 ;PjQt=4K tQH+)* 表达式${data}表示名为data的scoped变量。可以使用点号(.)或方括号([])运算符从集合中检索属性值:(两种数据访问方式演示) Y]L9Y9 cG?cUw).E 点号运算符用于访问命名的属性,比如表达式${customer.name}表示scoped变量customer的name属性; yQ
^($#Yk 方括号运算符可用于检索命名的属性,比如在${customer[“name”]}中。也可以通过${customers[0]}的形式来访问集合customers中的第一项。 #Sa27$&.> EL表达式语言同时还统一了对点号和方括号运算符的处理,因此${customer.name}与${customer[“name”]}是等价的。 j{NNSi3 DqX{'jj 访问应用程序数据需要进行以下几个步骤: (iR
ide 1.编写public类的static public 方法,只有static public的方法才能被标记表达试访问。 hWKJ,r%9; 2.将方法映射到TLD表中 ]ut5S>," 3.在JSP页面中调用要引用的Taglib标记,然后就可以在jsp页面中访问了。 Ay
!G1; *&d<yJM`b 上面关于EL 表达式语言的介绍就暂告一个段落,EL表达式是不是很简单,很方便? 下面的要说的才是EL 显示其真正威力的地方--简单标记库扩展 SimpleTag L~ IhsiB *P#WDXRwd 二. 简单标志库扩展 _SimpleTag
] Puy!Q 在jsp1.2时代已经有标记库了, 并且功能强大,但标记库的编程和调用都比较复杂,导致真正使用到WEB开发中的还是不多。JSP2.0推出的简单标记库扩展解决了以上的问题。简单标记库相对JSP1.2中的标记库来说,优点在于: F35#dIs`& bzvh%RsW 对后台程序员来说:结构更简单,实现接口更少,可以轻松实现后台程序 Dgx8\~(E' Bf$_XG3
JSP 2.0中加入了新的创建自制标记的API:javax.servlet.jsp.tagext.SimpleTag,该API定义了用来实现简单标记的接口。和JSP 1.2中的已有接口不同的是,SimpleTag接口不使用doStartTag()和doEndTag()方法,而提供了一个简单的doTag()方法。这个方法在调用该标记时只被使用一次。而需要在一个自制标记中实现的所有逻辑过程、循环和对标记体的评估等都在这个方法中实现。从这个方面来讲,SimpleTag可以和IterationTag达到同等的作用。但SimpleTag的方法和处理周期要简单得多。在SimpleTag中还有用来设置JSP内容的setJspBody()和getJspBody()方法。Web容器会使用setJspBody()方法定义一个代表JSP内容的JspFragment对象。实现SimpleTag标记的程序可以在doTag方法中根据需要多次调用getJspBody().invoke()方法以处理JSP内容。 n_
B"-n V=lfl1Ev0J 对于前台WEB页面制作人员:在JSP1.2时代,Taglib页面调用实际上是比较复杂的,SimpleTag+EL表达式语言极大的简化了Taglib调用,真正达到不懂JAVA的人员也可以轻松编写JSP页面的目的。 x ul]m*Z i
,|0@Vy 一个Taglib页面的编写和调用包括三个流程(简单标志扩展实例): J@OB`2?Zv 1. 后台程序员编写要被调用的程序 P)uDLFp] 2. 编辑Tag标志描述文件,这个文件要放在WEB-INF\jsp2下面,并且这个文件要以tld为文件结尾。 l27\diKPJ 3.JSP页面人员就可以直接调用了。 UThB7(O, 使用标签文件(JSP fragment): >y}M.Mm 使用简单标签扩展机制的另一种简单的方法是通过标签文件。 e{KByFl 标签文件是一种资源文件,网页作者可以利用它抽取一段JSP代码,通过定制功能来实现代码的复用。换句话说,标签文件允许JSP网页作者使用JSP语法创建可复用的标签库。标签文件的扩展名必须是“.tag”。表面上标签文件文件和jsp1.2中的jsp:include 指令中的包含文件好像是一样的,但实际上还是有一些不同的,标签文件一般功能比较短小简单而且重复使用率高的一些代码。看一个简单的标签文件吧 Gdg)9 标签文件(JSP fragment)的基本特点是可以使处理JSP的容器推迟评估JSP标记属性。我们知道一般JSP是首先评估JSP标记的属性,然后在处理JSP标记时使用这些属性,而JSP fragment提供了动态的属性。也就是说,这些属性在JSP处理其标记体时是可以被改变的。标签文件是用文本文件格式(JSP语法)实现自制标记,这也是JSP 2.0的一个主要新功能。我们再看一下标签文件的动态复用的一个例子 nN~~
cV g/&T[FOr iA,kX\nK 体验到了JSP2.0的新特性吗?是不是非常方便好用? 提醒你一下时代互联的JSP服务器Tomcat5.0.x支持以上jsp2.0的各种特性。赶快来时代互联申请一个支持jsp2.0的JSP空间体验一下吧。这里可有很多款规格的JSP空间来满足你的需要哦。 |
|