<c:redirect>标签
在Web应用程序中,如果不想对客户端的请求进行处理,可以将其转发到其它资源进行处理,为了在JSP页面中完成这种功能,Core标签库提供了一个<c:redirect>标签,该标签用于将请求重定向到其它的Web资源,就相当于在Java程序中执行了response.sendRedirect()方法。<c:redirect>标签有两种语法格式,具体如下:
语法1:没有标签体的情况
<c:redirect url="value" [context="context"]>
语法2:有标签体的情况,在标签体中指定重定向时的参数
<c:redirect url="value" [context="context"]>
<c:patam>subtags
</c:redirect>
在上述语法格式中,可以看到<c:redirect>有两个属性,接下来将针对这两个属性进行讲解,具体如下:
● url属性用于指定要转发或重定向到目标资源的URL地址,可以使用相对路径和绝对路径;
● context属性用于指定重定向到同一个服务器中其它Web应用的名称。
为了使读者更好的学习<c:redirect>标签,接下来通过一个具体的案例来演示如何使用<c:redirect>标签,在使用<c:redirect>标签之前需要引入另外一个JSP页面,这个JSP页面用于获取客户端传递的请求参数,如例1所示。
例1 register.jsp
1 <%@page import="java.net.URLEncoder"%>
2 <%@ page language="java" contentType="text/html; charset=utf-8"
3 pageEncoding="utf-8"%>
4 <html>
5 <head></head>
6 <body>
7 <%
8 String username=request.getParameter("username");
9 username=new String(username.getBytes("iso-8859-1"),"utf-8");
10 String country=request.getParameter("country");
11 country=new String(country.getBytes("iso-8859-1"),"utf-8");
12 %>
13 UserName=<%= username%>
14 Country=<%= country%>
15 </body>
16 </html>
接下来在chapter08工程的WebContent的根目录中,编写一个c_redirect.jsp文件,用于完成请求的转发,如例2所示。
例2 c_redirect.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"
2 pageEncoding="utf-8"%>
3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4 <html>
5 <head></head>
6 <body>
7 <c:url var="myURL" value="register.jsp">
8 <c:param name="username" value="张三" />
9 <c:param name="country" value="中国" />
10 </c:url>
11 <c:redirect url="${myURL }" />
12 </body>
13 </html>
打开IE浏览器,在地址栏中输入http://localhost:8080/chapter08/c_redirect.jsp
访问c_redirect.jsp页面,此时,浏览器窗口中显示的结果如图1所示。
图1 c_ redirect.jsp
从图1可以看出,在浏览器中访问c_redirect.jsp页面时就直接跳转到了register.jsp页面,并且向register.jsp页面传递了两个参数username和country。这是由于在例2中使用<c:url>标签和<param>标签重新构造了一个URL地址并传递了两个参数,因此,当使用<c:redirect>标签进行转发时,便出现了图中所示的结果。