精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>JAVA编程>>Java与XML>>Java & XML手记(3)

主题:Java & XML手记(3)
发信人: 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操作元素如下所示:
&#8226;jsp:useBean元素
&#8226;jsp:setProperty元素
&#8226;jsp:getProperty元素
&#8226;jsp:include元素
&#8226;jsp:forward元素
&#8226;jsp:param元素
&#8226;jsp:params元素
&#8226;jsp:plugin元素
&#8226;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文
档。
&#8226;在源程序前面加上jsp:root元素,并对xmlns属性赋值。
&#8226;把所有使用JSP的include编译指令包含的文件在主文档相应的位置展开。
&#8226;把所有的<%元素转换为合法的与之对应的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]
--------------------------------------------------------------------------------
.. 返回



----
象我这一种男人,学不懂怎快乐!
       

[关闭][返回]