1、 在jsp中,重新定向的方法有两种,一种是response.sendRedirect(),另外一种是jsp动作指令
即:<jsp:forward page=""></jsp:forward>
2、repsonse重定向
(1)利用response对象进行重定向,方法:response.sendRedirect(目标页面路径)
下面举例演示:首先创建页面test1.jsp,用于跳转到test2.jsp,test1.jsp代码如下所示:
<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="test2.jsp">
<input type="submit" value="提交">
</form>
</body>
</html>
test2.jsp代码如下所示,其中,response.sendRedirect("Test3.jsp")用于重定向到Test3.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
response.sendRedirect("test3.jsp");
%>
</body>
</html>
test3.jsp代码如下所示,在页面上将显示“这是Test3.jsp页面”字样
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>这是Test3.jsp页面</h1>
</body>
</html>
在点击运行后,我们能够看到直接从test1.jsp跳转到Test3.jsp页面,而不显示Test2.jsp
图1 test1.jsp
图2 test3.jsp
3、对于jsp重定向,只需将test2.jsp中的代码改为:
<jsp:forward page="test3.jsp"></jsp:forward>
即可
4、两种跳转方式的区别
(1)forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该目标地址的响应内容进行读取,再把读取的内容发送给浏览器,因此客户端浏览器地址不变,而redirect是告诉客户端,是浏览器知道去请求哪一个地址,相当于客户端重新请求
使用redirect重定向后的结果
使用jsp:forward重定向后的结果
(2)forward转发的页面内容能够共享request里面的数据,,而redirect转发的页面及转发到的目标页面不能够共享request里边的数据
(3)request不仅能够重定向到当前应用程序的资源,而且还能够重定向到同一站点的其他应用程序,甚至可以定向到其他站点的资源
例如:重定向至百度:
< %
response.sendRedirect("http://www.baidu.com");
%>
若使用forward进行同样的操作,就会提示出错
(4)forward提交效率要高于redirect,因为前者是基于服务器端的,而后者是重新提交一遍URL。
以上就是两种重定向的区别。