URL操作标签
JSTL包含3个与URL操作有关的标签,分别为:<c:import>、<c:redirect>和<c:url>标签。
它们的作用为:显示其他文件的内容、网页导向、产生URL。下面将详细介绍这3个标签的使用方法。
1.4.1、<c:import>标签
【功能】:该标签可以把其他静态或动态文件包含到本JSP页面。同<jsp:include>的区别为:只能包含同一个web应用中的文件。
而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
【语法1】:
<c:import url=”url” [context=”context”][ value=”value”]
[scope=”page|request|session|application”] [charEncoding=”encoding”]>
语法2:
<c:import url=”url” varReader=”name” [context=”context”][charEncoding=”encoding”]>
<c:import>标签参数说明
名称 | 说明 | EL | 类型 | 必须 | 默认值 |
url | 被导入资源的URL路径 | Y | String | 是 | 无 |
context | 相同服务器下其他的web工程,必须以“"”开头 | Y | String | 否 | 无 |
var | 以String类型存入被包含文件的内容。 | N | String | 否 | 无 |
Scope | var变量的JSP范围 | N | String | 否 | page |
charEncoding | 被导入文件的编码格式 | Y | String | 否 | 无 |
varReader | 以Reader类型存储被包含文件内容 | N | String | 否 | 无 |
【参数说明】:
(1)URL为资源的路径,当应用的资源不存在时系统会抛出异常,因此该语句应该放在<c:catch></c:catch>语句块中捕获。
应用资源有两种方式:绝对路径和相对路径。
使用绝对路径示例如下:
<c:import url=”http://www.baidu.com”>
使用相对路径的实例如下:
<c:import url=”aa.txt”> aa.txt放在同一文件目录。
如果以“/”开头表示应用的根目录下。例如:tomcat应用程序的根目录文件夹为webapps。导入webapps下的文件bb.txt的编写方式为:
<c:import url=”/bb.txt”>
如果访问webapps管理文件夹中其他web应用就要用context属性。
(2)context属性用于在访问其他web应用的文件时,指定根目录。
例如,访问root下的index.jsp的实现代码为:
<c:import url=”/index.jsp” context=”/root”>
等同于webapps/root/index.jsp
(3)var、scope、charEncoding、varReader是可选属性。具体使用方式见示例代码。
【示例代码】:代码实现了从绝对路径导入文件和从相对路径导入,同时使用var对象指定用变量来存储文件,并输出存入的文件内容。
代码1.4.1 <c:import>标签示例:coredemo10.jsp
1 <%@ page contentType="text/html;charset=GBK" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <html>
4 <head>
5 <title>JSTL: -- import标签实例</title>
6 </head>
7 <body>
8 <h4><c:out value="import实例"/></h4>
9 <hr>
10 <h4><c:out value="绝对路径引用的实例" /></h4>
11 <c:catch var="error1">
12 <c:import url="http://www.baidu.com"/>
13 </c:catch>
14 <c:out value="${error1}"></c:out>
15 <hr>
16 <h4>
17 <c:out value="相对路径引用的实例,引用本应用中的文件" /></h4>
18 <c:catch>
19 <c:import url="a1.txt" charEncoding="gbk"/>
20 </c:catch>
21 <hr>
22 <h4><c:out value="使用字符串输出、相对路径引用的实例,并保存在session范围内" /></h4>
23 <c:catch var="error3">
24 <c:import var="myurl" url="a1.txt" scope="session" charEncoding="gbk"></c:import>
25 <c:out value="${myurl}"></c:out>
26 <c:out value="${myurl}" />
27 </c:catch>
28 <c:out value="${error3}"></c:out>
29 </body>
30 </html>
【代码解析】:
(1)第12行使用绝对路径导入百度首页,导入时使用<c:catch></c:catch>(11和12行)捕获异常。
(2)使用相对路径导入同一文件夹下的a1.txt文件,接收的字符编码格式使用charEncoding设置为gbk。
(3)同样导入a1.txt,不同的时使用var定义的变量接收要导入的文件,并存储在session中,如果在其他页面同样也要导入该文件,
只须使用<c:out>输出a1.txt的值即可。
【说明】:(1)在使用绝对路径导入时,因为电脑没有联网所以抛出异常。
(2)使用相对路径输出时,同样是引入的a1.txt文件显示的结果却不相同,这可以说明直接使用<c:import>导入,
不设定var参数是直接在页面中显示的文本信息。而使用var参数输出时输出的实现存入的字符串。
提示:读者在练习时可以使用Tomcat的首页来导入url=”http://127.0.0.1:8080”来显示效果。
1.4.2、<c:redirect>标签
【功能】:该标签用来实现了请求的重定向。同时可以在url中加入指定的参数。
例如:对用户输入的用户名和密码进行验证,如果验证不成功重定向到登录页面;或者实现web应用不同模块之间的衔接。
【语法1】:
<c:redirect url=”url” [context=”context”]>
【语法2】:
<c:redirect url=”url”[context=”context”]>
<c:param name=”name1” value=”value1”>
</c:redirect>
【参数说明】:
(1)url指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址。
(2)用于导入其他web应用中的页面。
【示例代码】:代码实现了当请求页面时重定向到tomcat首页。
<c:redirect>标签示例:coredemo11.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:redirect url="http://127.0.0.1:8080">
<c:param name="uname">olive</c:param>
<c:param name="password">01234</c:param>
</c:redirect>
【代码解析】
(1)使用重定向与载入页面不同,载入页面时在本页面中插入其他页面,而重定向是请求转发,等于在页面中重新输入了一次url。
当重定向到某个页面时浏览器中的地址会发生变化。
(2)使用重定向时不用使用<c:catch>语句,当输入页面访问不到时,浏览器会报错,跟程序运行无关。
如果使用重定向时页面定义的内容将不会得到显示。
(3)在重定向时为URL添加了两个参数和参数值:uname=olive和password=01234。
1.4.3、<c:url>标签
【功能】:该标签用于动态生成一个String类型的URL,可以同<c:redirect>标签共同使用,也可以使用html的<a>标签实现超链接。
【语法1】:指定一个url不做修改,可以选择把该url存储在JSP不同的范围中。
<c:url value=”value” [var=”name”][scope=”page|request|session|application”][context=”context”]/>
【语法2】:给url加上指定参数及参数值,可以选择以name存储该url。
<c:url value=”value” [var=”name”][scope=”page|request|session|application”]
[context=”context”]>
<c:param name=”参数名” value=”值”>
</c:url>
【示例代码】:代码 实现了使用动态生成 url 实现了网页的超链接。<c:url>标签示例:coredemo12.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out value="url标签使用"></c:out>
<h4>使用url标签生成一个动态的url,并把值存入session中.</h4>
<hr>
<c:url value="http://127.0.0.1:8080" var="url" scope="session">
</c:url>
<a href="${url}">Tomcat首页</a>