jsp中response.sendRedirect()和 jsp:forward的用法和区别

  • response.sendRedirect()会在客户端呈现跳转后的URL地址;(可以执行后面的语句eg:Request.jsp)这种称为客户端跳转,使用response.sendRedirect()方法将重定向的URL发送到客户端,浏览器再根据这个URL重新发送请求。用这个方法时,在浏览器地址栏上会看到新的请求资源的地址。并且这时的request和response都与第一次的不一样了,因为重新产生了response和request。
  • 使用< jsp:forward>完全是在服务器上进行。浏览器上的地址栏中的地址保持不变。(不能执行后面的语句eg:testjspforward.jsp所示)这种跳转称为服务器端的跳转。所以使用这个方法时没有产生新的request和response。因为request没有变,所以可以用request传递参数。
  • response.sendRedirect()方法想带参数的话,在地址中写成 XXX.jsp?param1=aaa&... 这种形式传递参数。< jsp:forward>能使用< jsp:param/>标签向目标文件传递参数和值,目标文件必须是一个动态的文件,能够处理参数。
  • < jsp:forward>后面的语句不会被执行也不会继续发送到客户端,response.sendReedirect()方法后面的语句会继续执行,除非语句前面有return。
  • < jsp:forward>是在服务器的内部转换,只发送给客户端最后转到的页面,速度会比较快;response.sendReedirect()方法需要服务器与客户端之间的往返,可以转到任何页面包括网络有效的域名,但速度比较慢。

使用Redrect.jsp对象
1.Redrect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sendRedirect</title>
</head>
<body>
<form action="Redirect.jsp" method="post">
		输入用户名:
		<input type="text" name="name">
		<input type="submit" value="login">
		</form>
			<% String name=request.getParameter("name");
			if(name!=null){
				response.sendRedirect("redirect.jsp?sendname="+name);
				System.out.print("重定像后的语句执行");
			}
			 %>
</body>
</html>

2.testRedrect.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>重定向的页面</title>
</head>
<body>
	<%
		String sendname=request.getParameter("sendname");
	%>
	用户名:
	<%=sendname %>
</body>
</html>

运行结果
在这里插入图片描述[
使用jsp:forward对象

先将部分代码注释掉
1.usejspforward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!--把注释的代码直接去掉就行-->
	<!--<jsp:forward page="testjspforward.jsp">
		<jsp:param value="hello" name="sendname"/>
	</jsp:forward>-->
	<%= "hello jspforward" %>
</body>
</html>

运行结果
在这里插入图片描述
取消注释后

1.usejspforward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:forward page="testjspforward.jsp">
		<jsp:param value="hello" name="sendname"/>
	</jsp:forward>
	<!--此时不显示下面这句话-->
	<%= "hello jspforward" %>
</body>
</html>

2.testjspforward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% String sendname=request.getParameter("sendname");%>
	用户名=<%=sendname %>
</body>
</html>

运行结果
在这里插入图片描述

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值