tempad

jsp2.0新特性

ReadyGo!技术成就梦想 网络搜索 efish 2008-2-24 3:14:34

SUN 的新版J2EE1.4提供了在J2EE中开发Web Service的基础,对开发工具做了一些重要的增强,在应用程序部署和服务器管理方面也提供了新的标准,在集成性和安全性方面有所增强,提升了J2EE 开发Web应用程序的能力;在编程模型方面的重要变化包括JSP表达式语言、简化的标记库等;EJB 2.1中提供了新的timer服务,查询语言(QL)也有所增强;Jdbc3.0 API把通常的Jdbc API与扩充API结合起来;J2EE Connectors规范和独立于消息类型的EJB提供了对双向通信的支持。下面给大家重点介绍J2EE1.4中包含的JSP2.0、 Servlet2.4、Jdbc3.0以及EJB2.1方面的新特性。

JSP 2.0属于J2EE 1.4平台,它在JSP 1.2基础之上增加了新的功能。它保证了向下兼容,原先使用的JSP技术在JSP 2.0中都可以支持。JSP 2.0的新功能主要包括下面几部分:

一)运行环境变化

1、web.xml格式变化

我们知道JSP 1.2可以在Java 2标准版1.3版本运行,而JSP 2.0要求使用Java 2标准版1.4或更新版本,JSP 2.0使用由Servlet 2.4规定的Web程序部署描述格式。

在Web程序描述文件web.xml中需要使用xml schema打头的格式。在web.xml中主要的变化是所有有关JSP的设置信息要放在<jsp-config>标记中。下面程序例1显示了一个web.xml大致的样子。

    例1:

    <?xml version="1.0" encoding="IS0-8859-1"?>

    <web-app xmlns=http://java.sun.com/xml/ns/j2ee

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

    xsi:schemaLocation=http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd

    version="2.4">

    .......

    <jsp-config>

    <taglib>  

    <taglib-uri>

    http://www.icconcept.com/ics/sample-taglib

    </taglib-uri>

    <taglib-location>

    /WEB-INF/jsp/sample-taglib.tld

    </taglib-location>

    </taglib>

    ........

    <jsp-property-group>

    <description>

    For config the ICW sample application

    </description>

    <display-name>JSPConfiguration</display-name>

    <url-pattern>/jsp/datareset.jsp</url-pattern>

    <el-ignored>true</el-ignored>

    <page-encoding>ISO-8859-1</page-encoding>

    <scripting-invalid>true</scripting-invalid>

    <include-prelude>/jsp/prelude.jspf</include-prelude>

    <include-coda>/jsp/coda.jspf</include-coda>

    </jsp-property-group>

    </jsp-config>

    </web-app>

2、JSP设置

在<jsp-config>标记提供了Web程序中JSP程序的设置信息。<jsp-config>包括< taglib>和<jsp-property-group>两类元素。<taglib>定义了Web程序使用的 custom tag,它的用法和以前JSP 1.2中的用法相同。<jsp-property-group>定义了一组JSP的特性。这些特性实际上对应JSP的page directive定义的特性。通过<jsp-property-group>只不过可以方便地对多个具有相同属性的JSP统一定义。

<jsp-property-group>定义一个或多个URL样式,在<jsp-property-group>中定义的属性会适用于匹配这些URL样式的所有JSP文件。在<jsp-property-group>中的属性可以定义以下设置:

    (1)允许或禁止使用表达式语言(EL)

在<jsp-property-group>中可以设定是否允许对应<url-pattern>的JSP使用JSTL表达式语言 (EL)。如果<el-ignored>属性标记被设定为false,JSP中的EL表达式会被处理;如果是true,Web容器会在转换 JSP时忽略EL表达式。

    (2)允许或禁止使用scripting

<scripting-invalid>属性可以允许或禁止使用JSP的脚本语言(scripting)。如果这个属性标记对应为true,即scripting元素被禁止,则JSP中不能使用scriptlet,scripting表达式和declaration,否则会有转换错误。当这个属性标记为false时,JSP可以像在1.2版本之前那样使用脚本语言。

    (3)声明JSP编码

通过<page-encoding>标记可以设置对应<url-pattern>的JSP网页的编码。这个属性对应每个JSP中的pageEncoding属性,Web容器将根据这个属性对JSP内容进行编码。

    (4)对应隐含包括(Implicit Includes)

在<jsp-property-group>中可以在对应JSP中加入抬头(preludes)和结尾(coda),使用< include-prelude>和<include-coda>属性可以设定在JSP网页中包括的preludes和coda的 jspf文件。这些文件的位置相对于当前Web程序的context。当有超过一个preludes或coda元素在<jsp-property- group>中时,JSP会按照其顺序加入到内容中。

 
二)引入表达式语言(EL)

JSP 2.0的一个主要特点是它支持表达语言(expression language)。JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流程和循环控制功能。自制标记也有自定义函数的功能,因此基本上所有seriptlet能实现的功能都可以由JSP替代。在JSP 2.0中,建议尽量使用EL而使JSP的格式更一致。

在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL,在每个JSP中也可以指定是否该JSP使用EL。在page directive中的isELIgnored属性用来指定是否忽略。格式为:

<%@ page isELIgnored="true|false"%>

如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000 % 20}</p>在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。

虽然JSP 2.0可以使JSP中完全使用表达语言而避免scriptlet,在实际编程中,应该根据程序的功能要求和编程人员的自身条件选择合适的方式。使用表达语言的JSP比较方便规整,但是由于需要将标记进行转换,在第一次被调用时会比较慢;有些编程人员由于对Java比较了解,因而更习惯JSP 1.2之前的编程方式,因此,在使用中应因地制宜地选择适用的编程方法。 

三)SimpleTag

JSP 2.0中加入了新的创建自制标记的API,javax.servlet.jsp.tagext.SimpleTag定义了用来实现简单标记的接口。和 JSP 1.2中的已有接口不同的是,SimpleTag接口不使用doStartTag()和doEndTag()方法,而提供了一个简单的doTag()方法。这个方法在调用该标记时只被使用一次。而需要在一个自制标记中实现的所有逻辑过程、循环和对标记体的评估等都在这个方法中实现。从这个方面来讲, SimpleTag和IterationTag可以达到同等的作用。但SimpleTag的方法和处理周期要简单得多。在SimpleTag中还有用来设

    

[1]  [2]  [3]  [4]  [5]  上一页  下一页
责任编辑: efish 参与评论 查找更多:
相关文章
一个开发人员眼中的JSP技术(下) 一个开发人员眼中的JSP技术(下)
tomcat 3.1在RedHat下的安装 tomcat 3.1在RedHat下的安装
JSP 2.1和JSF 1.2规范发布预览版本 JSP 2.1和JSF 1.2规范发布预览版本
JSP 2.1技术规范投票通过 表达式语言有所改进 JSP 2.1技术规范投票通过 表达式语言有所改进
Unify eWave ServletExec 泄露jsp源代码漏洞 Unify eWave ServletExec 泄露jsp源代码漏洞
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想