实际发生位置不同,地址栏不同
转发是发生在服务器的
转发是由服务器进行跳转的,细心的朋友会发现,在转发的时候,浏览器的地址栏是没有发生变化的,在我访问Servlet111的时候,即使跳转到了Servlet222的页面,浏览器的地址还是Servlet111的。也就是说浏览器是不知道该跳转的动作,转发是对浏览器透明的。通过上面的转发时序图我们也可以发现,实现转发只是一次的http请求,一次转发中request和response对象都是同一个。这也解释了,为什么可以使用request作为域对象进行Servlet之间的通讯。
重定向是发生在浏览器的
重定向是由浏览器进行跳转的,进行重定向跳转的时候,浏览器的地址会发生变化的。曾经介绍过:实现重定向的原理是由response的状态码和Location头组合而实现的。这是由浏览器进行的页面跳转实现重定向会发出两个http请求,request域对象是无效的,因为它不是同一个request对象转发和重定向的区别
转发和重定向使用哪一个?根据上面说明了转发和重定向的区别也可以很容易概括出来。转发是带着转发前的请求的参数的。重定向是新的请求。
典型的应用场景:
转发: 访问 Servlet 处理业务逻辑,然后 forward 到 jsp 显示处理结果,浏览器里 URL 不变
重定向: 提交表单,处理成功后 redirect 到另一个 jsp,防止表单重复提交,浏览器里 URL 变了
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73323.html
请求转发:request.getRequestDispatcher(跳转页面).forward(request,response);重定向:response.sendRedirect(跳转页面); 区别showImg(https://segmentfault.com/img/bVbpx8n?w=583&h=295); 请求转发的流程 showImg(https://segmentfault....
摘要:二请求转发与响应重定向中路径参数区别假设通过请求到达该方法所属的。请求转发参数可以指定为相对路径或绝对路径。同理提交表单给路径问题页面提交表单给时,路径的写法要格外注意。 转自:http://blog.sina.com.cn/s/blo... 一、请求转发与响应重定向的种类 有两种方式获得Servlet转发对象(RequestDispatcher):一种是通过HttpServletRe...
摘要:浏览器的中文数据提交给服务器,以编码对中文编码,当我在读取数据的时候,拿到的当然是乱码。接下来使用方式传递中文数据,把表单的方式改成即可当我们访问的时候,又出现乱码了于是我按照上面的方式,把对象设置编码为试试结果还是乱码。 什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信...
阅读 738·2019-08-29 12:49
阅读 3515·2019-08-29 11:32
阅读 3405·2019-08-26 10:43
阅读 2390·2019-08-23 16:53
阅读 2009·2019-08-23 15:56
阅读 1664·2019-08-23 12:03
阅读 2751·2019-08-23 11:25
阅读 2060·2019-08-22 15:11