JSP中重定向与转发的区别

什么是重定向,什么是转发?

重定向就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。”
转发通过各种方法发送请求时,实际上访问的是同一个web容器下的URL,不能跳转到本web容器以外的路径。

重定向和转发到底有什么区别

两者区别转发重定向
语句request.getRequestDispatcher(‘跳转的地址 ’).forward(request,response)response.sentRedirect(‘跳转的地址’)
访问服务器的次数1次2次
地址栏是否变化变化不变
跳转后面的语句是否执行不执行执行【除非return】

上面的概念比较抽象,我现在用具体代码来解释
首先这个代码主要有四个页面,一个是login.jsp登录页面,一个是check.jsp页面,一个是index.jsp页面,一个是error.jsp页面。
实现的功能 :用户在login.jsp页面中输入用户名和密码,通过按钮提交到check.jsp页面进行判断,如果用户名和密码检验是对的,那么通过重定向跳转的index.jsp页面显示“某某某登录成功”;如果用户名和密码不匹配,那么通过转发跳转到error.jsp页面显示“某某某登录失败”。该案例以用户名“张三”与密码“123”为登录成功的条件
login.jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录页面</title>
</head>
<body>
	<form action="check.jsp" method="get">
		用户名:<input type="text" name="username" /><br> 
		密  码:<input  type="password" name="password" /><br>
		      <input type="submit" value="提交"/>
	</form>
</body>
</html>

check.jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>检查用户名和密码的页面</title>
</head>
<body>
	<%
	   String user = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"); //防止乱码
	   String pass = request.getParameter("password");
	if ("admin".equals(user) && "123".equals(pass)) {
		response.sendRedirect("index.jsp");//重定向
	} else {
		request.getRequestDispatcher("error.jsp").forward(request, response);//转发
	}
	%>
</body>
</html>

index.jsp页面

 	<%
		String user = request.getParameter("username");
		if (user != null) {
			user = new String(request.getParameter("username").getBytes(
					"ISO-8859-1"), "UTF-8");
		}
	%>
	<%=user%>登录成功

error.jsp页面

    <%String user = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"); %>
    <%=	user%>登录失败

login.jsp登录页面图片
在这里插入图片描述
登录成功的页面 index.jsp
index.jsp是通过重定向实现的
在这里插入图片描述
登录失败的页面 error.jsp
error.jsp是通过转发实现的
在这里插入图片描述
由上面几个图片可以得出的结论:
1.地址栏发生变化,转发能够将参数一并的传过去。而重定向并不能一并将参数传过去。
2。页面发生变化,转发还是上个页面。而重定向跳转到新的页面。
重定向和转发的运行机制:
重定向
在这里插入图片描述
请求转发
在这里插入图片描述
如有错误,望谅解,并且能够说一下哪里错误,一起进步嘛

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值