9.3.9 用于包含页面的 <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 。
9.3.10 用于得到 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 属性,达到链接的目的。
9.3.11 用于页面重定向的 <c:redirect> 标签
<c:redirect> 用于页面的重定向,该标签的作用相当于 response.setRedirect 方法的工作。它包含 url 和 context 两个属性,属性含义和 <C:url> 标签相同。下面看一个示例。
<c:redirect url="/MyHtml.html"/>
该示例若出现在 JSP 中,则将重定向到当前 Web Context 下的“ MyHtml.html ”页面,一般会与 <c:if> 等标签一起使用。
9.3.12 用于包含传递参数的 <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’ ”。
9.4 JSTL XML processing 标签库
在企业级应用越来越依赖 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> 。
由于该组标签库专注于对某一特定领域的实现,因此本书将只选择其中常见的一些标签和属性进行介绍。
9.4.1 用于解析 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 文件做过滤得到自身需要的部分(可选) |
其中, var 、 scope 和 varDom 、 scopeDom 不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被 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}"/>