jsp 转发和重定向 request 和 response

转发和重定向,request 和 response

1.request 和 response

转发和重定向:
都是用来做页面的跳转

	1.转发跳转可以将request对象中的内容共享到下一个页面
	2.重定向不可以将request对象中的内容共享到下一个页面
	3.转发地址不变,重定向地址改变
	4.重定向请求两次
	5.转发是在服务器内部跳转

区别:

①:转发使用request.getRequestDispatcher("网页").forward(request, response);
重定向使用request.getRequestDispatcher("网页").forward(request, response);
②:转发:浏览器url的地址栏不变,重定向:浏览器的url地址栏改变
③:转发是浏览器内部的执行操作,重定向是客户端的执行操作.
④:转发是浏览器请求一次,重定向是浏览器请求两次
⑤:转发使用同一个request 重定向使用一个新的request

重定向的速度比转发的速度慢,因为浏览器还要重新发送一个新的请求,当对项目无影响的时候选择转发
转发只能访问当前web项目下的所有页面,如果需要访问不同项目中的页面必须使用重定向.

举一个简单的例子就是:这里列举三个人胡歌,杨幂,胡建华.

①:胡歌去找杨幂借钱,杨幂告诉胡歌我没钱,你去找霍建华借,然后将霍建华的联系方式交给了胡歌.胡歌重新去找霍建华.这种就是重定向
②:胡歌去找杨幂借钱,杨幂告诉胡歌说没钱,然后杨幂找霍建华借了钱,借给胡歌了.这种方式叫做转发.

下面直接上代码: 第一个文本框为用户名,第二个文本框问密码:
新建login.jsp
核心代码

<form action="doLogin.jsp" method="post">
		<input name="uname">
		<input type = "password" name="pwd">
		<input	type="submit" value="提交">
</form>

新建doLogin
核心代码

<%
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("uname");
		String password = request.getParameter("pwd");
		if("admin".equals(name) && "123456".equals(password)){
			
			request.getRequestDispatcher("main.jsp").forward(request, response);
			//下面是重定向
			//response.sendRedirect("main.jsp");
		}else{
			request.getRequestDispatcher("login.jsp").forward(request, response);
			//下面是重定向
			//response.sendRedirect("login.jsp");
		}
%>

新建main.jsp
核心代码

<%
		<h1>欢迎你!<%=request.getParameter("uname")%></h1>
%>

运行结果:当用户名和密码输入错误的时候
在这里插入图片描述
在这里插入图片描述
正确输入用户名和密码后发现:请求地址是没有发生变化的了,但是request对象还是原来的request对象,所以能通过<%=request.getParameter(“uname”)%> 来取到客户端请求的用户名.

注意观察地址是并没有发生变化的,也就是每一次刷新网页的时候都执行了一次doLogin.jsp网页
这就是转发.

再来看重定向 正确输入用户名和密码后发现:请求地址是刷新的了,但是request对象不再是原来的request对象了
在这里插入图片描述

如果有不清楚,欢迎提出你宝贵的意见,如果有错误的地方,欢迎评论纠正…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值