【Dongle】【Web】【JSP】重定向与转发

27 篇文章 0 订阅
4 篇文章 0 订阅

         在学习网上商城的时候又遇到重定向和转发的学习,但是一直不是很清楚他们有什么用,今天偶然在慕课上学习JSP时,导师有讲了重定向和转发的作用及区别。

请求重定向

        属于客户端行为,使用的是response.sendRedirect(url)方法,参数url为要定向的链接。
       本质上等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变


请求转发

        属于服务器行为,request . getRequest D ispatcher (url). forward ( request,response ),参数url也是要定向的链接,不过后面传递的是request 对象和response对象,这样挑战到下一个页面时,里面的数据也是可以获取的。
       转发是一次请求,转发后 请求对象会保存 地址栏URL地址不会改变。
 

解释

重定向

        假设一个人需要去A局盖章,但是A局说这个章需要B局去盖,然后让这个人自己出去到B局,然后再盖章。盖完章之后,如果他人问起去哪里盖章,这个人直接说去B局盖章,中间就没有了A局的事,然后就丢了到A局的信息,同时地址也就变成了B局的。

转发

        这个人到A局后,同样A局人员告诉他需要B局盖章。但是工作人员没有让他去B局,因为B局就在附近,工作人员打电话给B局人员,让他们送过来。然后这个人拿到了章。这时候若有人问起,他就会说去A局盖章,他们会处理好的。这个过程他不知道B局的信息,所以地址是不会改变的。


代码

       下面弄个小程序,进行下测试

test.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en">
 <head>
  <title>Document</title>
 </head>
 <body>
	<form name="regForm" action="response.jsp" method="post">
      用户: <input type="text" name="username" /></br>
	  性别:
	  <select name="sex">
		<option value="man">男</option>
		<option value="woman">女</option>
	  </select>
	  </br>
	  <input type="submit" value="提交"/>
	</form>
 </body>
</html>

request.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<h1>用户名:<%=request.getParameter("username") %><br></h1>
<h2>性别:<%=request.getParameter("sex") %></h2>

        通过response.jsp将test.jsp文件信息传递到request.jsp

重定向

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	response.sendRedirect("request.jsp");
	
%>

结果


       我们通过实际是访问的response.jsp,现在变成了request.jsp对象,并且用户名和性别都是null。


转发

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	request.getRequestDispatcher("request.jsp").forward(request,response);
%>

结果

        通过转发,我们会发现地址栏的地址还是test.jsp要访问的地址,但是实际内容已经变成了request.jsp内容,并且这时候的reques.jsp里面可以接收到test.jsp里面的请求的数据。

       是不是很神奇?期待您的交流~


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值