<c:url>标签
在访问一个JSP页面时,通常会在URL中传递一些参数信息,为了方便完成这种功能,Core标签库中提供了一个<c:url>标签,该标签可以在JSP页面中构造一个新的URL地址,实现URL的重写。<c:url>标签有两语法格式,具体如下:
语法1:没有标签实体的情况
<c:url value="value" [context="context"] [var="varName"]
[scope="{page|request|session|appliction}"]>
语法2:有标签实体的情况,在标签体中指定构造URL参数
<c:url value="value" [context="context"] [var="varName"]
[scope="{page|request|session|appliction}"]>
<c:param>标签
</c:url>
在上述语法格式中,可以看到<c:url>标签中有多个属性,接下来将针对这些属性进行讲解,具体如下:
● value属性用于指定构造的URL;
● context属性用于指定导入同一个服务器下其它Web应用的名称;
● var属性用于指定将构造的URL地址保存到域对象的属性名称;
● scope属性用于指定将构造好的URL保存到域对象中。
为了使初学者更好的学习<c:url>标签,接下来通过一个具体的案例来演示如何使用<c:url>标签,如例1所示。
例1 c_url.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"
2 pageEncoding="utf-8" import="java.util.*"%>
3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4 <html>
5 <head></head>
6 <body>
7 使用绝对路径构造URL:<br>
8 <c:url var="myURL"
9 value="http://localhost:8080/chapter08/register.jsp">
10 <c:param name="username" value="张三" />
11 <c:param name="country" value="中国" />
12 </c:url>
13 <a href="${myURL}">register.jsp</a><br>
14 使用相对路径构造URL:<br>
15 <c:url var="myURL"
16 value="register.jsp?username=Tom&country=France" />
17 <a href="${ myURL}">register.jsp</a>
18 </body>
19 </html>
打开IE浏览器,在地址栏中输入http://localhost:8080/chapter08/c_url.jsp
访问c_url.jsp页面,此时,浏览器窗口中显示的结果如图1所示。
图1 c_url.jsp
从图1可以看出,在浏览器窗口中已经显示了c_url.jsp页面的内容,此时查看该页面的源文件,可以看到如下信息:
<html>
<head></head>
<body>
使用绝对路径构造URL:<br>
<a href="http://localhost:8080/chapter08/register.jsp?
username=%e5%bc%a0%e4%b8%89&country=%e4%b8%ad%e5%9b%bd">
register.jsp
</a><br>
使用相对路径构造URL:<br>
<a href="register.jsp?username=Tom&country=France">register.jsp</a>
</body>
</html>
在上述源代码中,可以看到在c_url.jsp页面中构造的URL地址实际上会变成一个超连接,并且使用<param>标签构造的参数会进行URL编码,将参数张三转换为“%e5%bc%a0%e4%b8%89”,中国转换为“%e4%b8%ad%e5%9b%bd”,这样就构造了一个新的URL地址,完成了URL的重写功能。