发信人: zeus_h(i番茄)
整理人: zjxyz(2002-09-08 22:58:02), 站内信件
|
发信人: javalover (欲下未下风悠扬), 信区: Java
标 题: Java & XML手记(3)
发信站: 北大未名站 (2001年11月17日01:10:09 星期六) , 站内信件
Java & XML手记(3)----(10)将介绍与JSP Document有关的内容
3.JSP Documents
JSP程序其实有两种语法形式,一种就是用得最普遍的普通形式,另一种是XML形式。在本
节中,我们将系统介绍JSP程序的XML语法形式并解释如何运用这种语法编写JSP程序。我们使
用JSP文档(JSP Documents)这个术语指代使用XML语法编写的JSP程序。JSP程序的XML语法形
式在JSP 1.1技术规范中就已经提出来了,但是JSP文档这个概念是在JSP 1.2技术规范中才提
出来,这是一个十分新颖的概念。
4.对JSP程序使用XML语法(XML Syntax)
使用XML语法的JSP程序看起来就像是一个标准的XML文件,为什么我们需要编写使用XML语
法的JSP程序呢?JSP 1.2规范指出了下面几条原因:
1.使用XML语法的JSP程序亦即JSP文档可以直接传送给JSP容器,当越来越多的信息以XML文档
的格式保存时,这一点变得尤为重要。
2.可以使用XML-aware工具操作编辑JSP文档。
3.JSP程序的XML视图可以用于检验JSP程序的正确性和有效性。
4.JSP文档可以从某些文本的表达形式中自动产生,这需要用到某些XML转换技术,例如
XSLT技术。
在JSP 1.2技术规范中支持对JSP程序检验其有效性与正确性,这是通过与Tag Library关
联在一起的Tag Library Validator类实现的。Tag Library Validator类作用于JSP程序的X
ML视图。
5. JSP文档语法(一)
JSP文档其实就是XML文档。XML Namespaces(命名空间)可以在JSP程序中标识核心语法元
素和以及所使用的Tag Libraires,所有用到的Tag Libraries的命名空间在JSP文档的root根
元素下定义。一个使用XML语法的JSP程序可以使用下列元素:
•jsp:root元素
•directive元素
•scripting元素
•标准操作元素
•自定义操作元素
•jsp:text元素
•其他的XML代码段
语义上的JSP文档模型(指采用XML语法的JSP程序)同采用标准语法的JSP程序相比,在功能
上并没有任何改变:JSP程序产生字符流输出,应答客户端的请求。下面我们分别介绍在JSP文
档中可用的元素,首先是jsp:root元素。
◆jsp:root元素
jsp:root元素是任何一个JSP文档的根元素,这个根元素具有xmlns属性,利用xmlns属性声
明命名空间jsp之后,我们便可以在JSP文档中应用JSP 1.2技术规范所定义的标准JSP元素。特
别地,JSP文档中所用到Tag Libraries的命名空间也必须使用xmlns属性在jsp:root根元素处
声明。jsp:root元素还有一个必须的属性(version),指定当前JSP文档所使用的JSP规范的版
本号。
例:
<jsp:root xmlns:jsp=”http://java.sun.com/JSP/Page ”
xmlns:prefix1=”URI-for-taglib1 ”
xmlns:prefix2=”URI-for-taglib2 ”
…
version="1.2">
JSP page
</jsp:root>
◆jsp:directive.page元素
JSP文档中的jsp:directive.page元素相当于JSP标准语法中的page编译指令,它定义了一
些从属于页面的属性并且与JSP容器产生交互作用。jsp:directive.page元素必须是jsp:roo
t元素的子节点,而且必须位于JSP文档的前面。语法形式如下:
<jsp:directive.page page_directive_attr_list />
page_directive_attr_list的具体形式请参考JSP 普通语法中的page编译指令。
例:
<jsp:directive.page language=”java”>
<jsp:directive.page import=”java.sql.*”>
<jsp:directive.page buffer=”8kb”>
jsp:directive.page元素的作用范围是当前的JSP文档以及被包含到该文档中的其他文档
。
◆jsp:directive.include元素
jsp:directive.include 元素的作用相当于JSP标准语法中的include编译指令,主要用于
包含外部文件。该元素可以出现在JSP文档中的任何位置。它的语法形式如下:
<jsp:directive.include file="relativeURLspec ” />
关于file属性的详细用法,读者可以参考JSP普通语法中的include编译指令。
例:
<jsp:directive.include file="include/database.jsp ” />
<jsp:directive.include file="include/footer.html ” />
JSP程序的XML视图不包含jsp:directive.include 元素, jsp:directive.include 元素
的位置被file属性所指定的文件所占据。这样做的好处是可以简化检验JSP文档正确性的复杂
程度。
6.JSP文档语法(二)
◆jsp:declaration元素
jsp:declaration元素相当于JSP标准语法中的JSP声明,它用于定义脚本语言结构,如变量
、函数、类等等,以提供给所有的脚本元素使用。jsp:declaration元素没有任何属性,它的语
法形式如下:
<jsp:declaration>declaration goes here </jsp:declaration>
例:
<jsp:declaration>
int i=0;
</jsp:declaration>
<jsp:declaration>
public String getSignature()
{
return “小楼一夜听春雨,深巷明朝卖杏花。“;
}
</jsp:declaration>
◆jsp:scriptlet元素
jsp:scriptlet元素相当于JSP标准语法中的JSP程序段。该元素内部包含了Java代码段,
可以针对客户端的请求产生动态内容。jsp:scriptlet元素没有任何属性,它的内容就是Jav
a代码段。它的语法形式如下:
<jsp:scriptlet>code fragment goes here</jsp:scriptlet>
例:
<jsp:declaration>
public String getSignature()
{
return “小楼一夜听春雨,深巷明朝卖杏花。“;
}
</jsp:declaration>
<jsp:scriptlet>
out.println(getSignature());
</jsp:scriptlet>
上面这一段代码的输出结果应该是:小楼一夜听春雨,深巷明朝卖杏花。
◆jsp:expression元素
jsp:expression元素相当于JSP标准语法中的JSP表达式。jsp:expression元素没有任何
属性,它的内容也就是表达式本身。它的语法形式如下所示:
<jsp:expression>expression goes here </jsp:expression>
例:
<jsp:declaration>
public String getSignature()
{
return “小楼一夜听春雨,深巷明朝卖杏花。“;
}
</jsp:declaration>
<jsp:expression>getSignature()</jsp:expression>
上面这一段代码的输出结果应该是:小楼一夜听春雨,深巷明朝卖杏花。
◆标准的和自定义的操作元素
在JSP文档中,我们可以使用JSP标准语法中所定义的那些JSP操作指令,因为这些JSP操作
指令的语法形式已经建立在XML语法之上,所以我们可以直接应用它们。在JSP文档中,按照习
惯,我们称呼JSP操作指令为JSP操作元素。这些JSP操作元素如下所示:
•jsp:useBean元素
•jsp:setProperty元素
•jsp:getProperty元素
•jsp:include元素
•jsp:forward元素
•jsp:param元素
•jsp:params元素
•jsp:plugin元素
•jsp:text元素
关于这些操作元素的作用和使用方法,读者不妨参考文献[1]关于JSP操作指令的内容,以
获得更详尽的信息。在上面所列举的操作元素中jsp:text元素并不是标准的JSP操作指令,关
于jsp:text元素的用法,我们将在下文中介绍。
在JSP文档中,我们也可以使用Tag Libraries,通过应用自定义的Tags,我们可以很容易的
扩展JSP技术的功能。至于Tag Libraries的用法和Tag的用法,无论是在JSP文档中还是在标准
的JSP程序中,都没有太大的区别。唯一不同的是:在采用标准JSP语法的JSP程序中,需要使用
taglib编译指令声明所要使用的Tag Libraries的命名空间,而在JSP文档中,则把这个声明移
到了jsp:root元素中。
◆jsp:text元素
jsp:text元素亦即jsp:text操作元素, jsp:text元素用于把模板数据以XML的表现形式封
装起来。jsp:text元素没有任何属性,它可以用在JSP文档的任何地方。模板数据仅仅可以在
某个元素的属性中或者是在jsp:text元素中出现。jsp:text元素的语法形式如下所示:
<jsp:text>template data </jsp:text>
jsp:text元素经JSP引擎的翻译,执行结果是:jsp:text元素中所包含的模板数据将被直接写入
到当前的对客户端的输出流中。jsp:text元素和XSLT语言的xsl:text元素十分相似。
◆其他的XML代码段
JSP文档中允许出现其他的XML代码段,而且这些XML代码段可以出现在JSP文档中的任何地
方。这些XML代码段可以不是well-formed的,但是从整体来看,JSP文档必须是well-formed的
。JSP引擎翻译XML代码段的结果是:把它们连同它们内部的空格一起,写入到当前的对客户端
的输出流中。XML代码段中可以拥有自己的xmlns属性。
文献[1].黄理,李积善,网站开发新动力----用JSP开发网站,希望,2000-12
7. JSP文档的XML视图(一)
本小节将仔细描述JSP文档的XML视图:也就是使用标准JSP语法编写的JSP程序与使用XML
语法编写的JSP文档之间的映射关系。
使用标准JSP语法编写的JSP程序经过下列几个转换步骤可以转化为基于XML语法的JSP文
档。
•在源程序前面加上jsp:root元素,并对xmlns属性赋值。
•把所有使用JSP的include编译指令包含的文件在主文档相应的位置展开。
•把所有的<%元素转换为合法的与之对应的XML元素。在上文,我们已经描述了所有合法
的与特定<%元素对应的XML元素,你可以根据上文的描述进行转化。
•转换JSP形式的引用为XML形式的引用。
•将tablib编译指令转换为jsp:root元素的xmlns属性。
•将JSP程序中所有与JSP元素不协调的代码段(例如HTML标记)都用<jsp:text>元
素包含起来。
表7.1 概括了上面的几个转换步骤。
表 7.1 directives和scripting元素的XML视图
JSP page element XML view
<%--comment --%> 删除
<%@page ...%> <jsp:directive.page .../>
<%@taglib ...%> <jsp:root xmlns=”…”>
<%@include ...%> 原处展开
<%!...%> <jsp:declaration>....</jsp:declaration>
<%...%> <jsp:scriptlet>...</jsp:scriptlet>
<%=...%> <jsp:expression>...</jsp:expression>
--
小楼一夜听春雨,深巷明朝卖杏花。
※ 来源:·北大未名站 bbs.pku.edu.cn·[FROM: 162.105.106.162]
--------------------------------------------------------------------------------
.. 返回
---- 象我这一种男人,学不懂怎快乐!
|
|