欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何理解response对象的转发和重定向

程序员文章站 2022-04-20 22:21:05
...

用代码理解response对象的转发和重定向

register页面代码
<body>
	<%
		// 接收传递过来的值
		String price = (String) request.getAttribute("price");
		if (price == null)
			price = "";
	%>
	<form action="changeOver.jsp" method="post"> 
		用户名:<input type="text" name="userName" /> <br/>
		密码:<input type="password" name="pwd" /> 
			<span style="color:red"><%=price%></span> <br/>
			<input type="submit" value="登录" /> 
	</form>
</body>
changeOver页面代码
<body>
    <%
    	String userName = request.getParameter("userName");
    	String pwd = request.getParameter("pwd");
    	
    	if("admin".equals(userName) && "1234".equals(pwd)){
    		response.sendRedirect("failing.jsp");
    	}else{
    		request.setAttribute("price","密码错误");
    		request.getRequestDispatcher("register.jsp").forward(request,response);
    	}
    	
     %>
  </body>
failing页面代码
<body>
   <h1>登录成功!</h1>
  </body>

转发

如何理解response对象的转发和重定向

上图是register页面代码运行后的效果如何理解response对象的转发和重定向
这是输入一个错误密码的效果 ,在这里我们会发现两个页面效果相同 ,但是密码错误之后的页面地址是changeOver.jsp,这说明register页面向changeOver页面发送一次请求之后changeOver页面又跳转到另一个页面并将信息传送到register页面,register页面一共只发送了一次请求

重定向

在register页面输入正确的密码之后的效果:如何理解response对象的转发和重定向
上图的地址是failing页面自己的地址 ,说明是从 register页面跳转过来的,可是它们中间确实有一个changeOver页面,我们可以这样理解, register页面先向changeOver页面发送了一个请求但是changeOver页面没有解决,之后 register页面又向failing页面发送了一个请求, register页面一共发送两次请求

上面的没看明白也没关系,下面我就用一个生活中的例子解释一下

转发

用户向客服A打电话,客服A解决不了这个问题,客服A帮用户打给客服B,客服B帮用户解决了问题
用户–>客服A --> 客服B -->用户

重定向

用户向客服A打电话,客服A告诉用户去找客服B,然后用户又向客服B打了电话将问题解决了
用户–>客服A
用户–>客服B