一直模模糊糊的,今天做个总结,搞清楚。
区别:
区别一:
重定向时浏览器上的网址改变
转发是浏览器上的网址不变
区别二:
重定向实际上产生了两次请求
转发只有一次请求
重定向:
发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器
转发:
发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器
区别三:
重定向时的网址可以是任何网址
转发的网址必须是本站点的网址
详解:
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转 发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
1.RequestDispatcher.forward()
是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()转发至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递.
但forward()无法转发至有frame的jsp文件,可以转发至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面. 通常在servlet中使用,不在jsp中使用。
2.response.sendRedirect()
是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.
最后:
(1).Request Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
(2).response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法.
重定向后在浏览器地址栏上会出现重定向页面的URL
分享到:
相关推荐
在struts中测试登录的redirect,transmit 一个测试重定向和转发的demo。演示转发到jsp和action的过程。 供参考。
大连实习资料8月9日,主要内容有jsp中标签,对象存储与提交,还有重定向和转发的区别。
转发和重定向的区别 forward和redirect的区别 request.getRequestDispatcher()..forward(request,response);和 response.sendRedirect();的区别详解
NULL 博文链接:https://fengshayage.iteye.com/blog/842734
请求转发与重定向的区别,和对学习法的小建议,
描述转发与重定向的区别,讲的比较详细,希望大家喜欢.
请求转发与重定向
详细分析了重定向与转发的区别.互相交流!
尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。下面是HttpServletResponse.sendRedirect方法实现的...
servlet请求转发、请求重定向、请求包含 获取form数据
实现android中IP和端口的重定向,输入原始IP,端口和目标IP,端口,实现重定向功能
下面小编就为大家带来一篇简单谈谈SpringMVC转发和重定向的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
转发与重定向的执行过程,及其异同;以及在使用时,如何确定选择使用转发,还是重定向
1.RequestDispatcher.forward()――转发 是在服务器端起作用,当使用forward()时, Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的 form提交至a.jsp,在a.jsp用到了...
请求转发和重定向的区别共1页.pdf.zip
javaweb请求转发的简单实例,演示了forward()方法和getRequestDispatcher()的不同之处
java servlet请求转发重定向 适合于初学者更好的了解页面跳转和原理