用于包含页面的<c:import>

<c:import>标签允许包含另一个JSP页面到本页面来。它的属性和描述如表9.9所示:

9.9 <c:import>标签属性和说明

属性

描述

url

需要导入页面的URL

context

Web Context该属性用于在不同的Context下导入页面,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)

charEncoding

导入页面的字符集(可选)

var

可以定义导入文本的变量名(可选)

scope

导入文本的变量名作用范围(可选)

varReader

接受文本的java.io.Reader类变量名(可选)

下面看一个示例。

<c:import url="/MyHtml.html" var="thisPage" />

<c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/>

<c:import url="www.sample.com/MyHtml.html" var="thisPage"/>

该示例演示了三种不同的导入方法,第一种是在同一Context下的导入,第二种是在不同的Context下导入,第三种是导入任意一个URL

用于得到URL地址的<c:url>标签

<c:url>标签用于得到一个URL地址。它的属性和描述如表9.10所示:

9.10  <c:url>标签属性和说明

属性

描述

value

页面的URL地址

context

Web Context该属性用于得到不同Context下的URL地址,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)

charEncoding

URL的(可选)

var

存储URL的变量名(可选)

scope

变量名作用范围(可选)

下面看一个示例:

<c:url value="/MyHtml.html" var="urlPage" />

<a href="${urlPage}">link</a>

得到了一个URL后,以EL表达式放入<a>标签的href属性,达到链接的目的。

用于页面重定向的<c:redirect>标签

<c:redirect>用于页面的重定向,该标签的作用相当于response.setRedirect方法的工作。它包含urlcontext两个属性,属性含义和<C:url>标签相同。下面看一个示例。

<c:redirect url="/MyHtml.html"/>

该示例若出现在JSP中,则将重定向到当前Web Context下的“MyHtml.html”页面,一般会与<c:if>等标签一起使用。

用于包含传递参数的<c:param>标签

<c:param>用来为包含或重定向的页面传递参数。它的属性和描述如表9.11所示:

9.11 <c:param>标签属性和说明

属性

描述

name

传递的参数名

value

传递的参数值(可选)

下面是一个示例:

<c:redirect url="/MyHtml.jsp">

<c:param name="userName" value=”RW” />

</c:redirect>

该示例将为重的“MyHtml.jsp”传递指定参数“userName=’RW’”。

标签库

在企业级应用越来越依赖XML的今天,XML格式的数据被作为信息交换的优先选择。XML processing标签库为程序设计者提供了基本的对XML格式文件的操作。在该标签库中的标签一共有10个,被分为了三类,分别是:

q         XML核心标签:<x:parse><x:out><x:set>

q         XML流控制标签:<x:if><x:choose><x:when><x:otherwise><x:forEach>

q         XML转换标签:<x:transform><x:param>

由于该组标签库专注于对某一特定领域的实现,因此本书将只选择其中常见的一些标签和属性进行介绍。

用于解析XML文件的<x:parse>标签

<x:parse>标签是该组标签库的核心,从其标签名就可以知道,它是作为解析XML文件而存在的。它的属性和描述如表9.12所示:

9.12 <x:parse>标签属性和说明

属性

描述

doc

XML的内容,该属性的内容应该为String类型或者java.io.Reader的实例,可以用xml属性来替代,但是不被推荐

var

将解析后的XML保存在该属性所指定的变量中,之后XML processing标签库中的其他标签若要取XML中的内容就可以从该变量中得到(可选)

scope

变量的作用范围(可选)

varDom

指定保存的变量为org.w3c.dom.Document接口类型(可选)

scopeDom

org.w3c.dom.Document的接口类型变量作用范围(可选)

systemId

定义一个URI,该URI将被使用到XML文件中以接入其他资源文件(可选)

filter

该属性必须为org.xml.sax.XMLFilter类的一个实例,可以使用EL表达式传入,将对XML文件做过滤得到自身需要的部分(可选)

其中,varscopevarDomscopeDom不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被XML processing标签库的其他标签来使用。

<x:parse>标签单独使用的情况很少,一般会结合XML processing标签库中的其他标签来一起工作。下面看一个示例。

首先给出一个简单的XML文件,将对该XML文件做解析,该XML文件名为SampleXml.xml

<?xml version="1.0" encoding="UTF-8"?>

<xml-body>

         <name>RW</name>

         <passWord>123456</passWord>

         <age>28</age>

         <books>

                   <book>book1</book>

                   <book>book2</book>

                   <book>book3</book>

         </books>

</xml-body>

标签库的工作:

<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml"/>

<x:parse var="xmlFileValue" doc="${xmlFile}"/>

该读取XML文件得到了<c:import>标签的帮助,<c:import>标签将源XML文件的内容保存在“xmlFile”变量中,<x:parse>标签根据“xmlFile”变量的值“SampleXml.xml”。