- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于Java中redirect与forward的区别
关于Java中redirect与forward的区别五月 14, 20136 条评论今天遇到了一个超级郁闷的问题,在公司的门户上做了二开,理想的效果是用户通过我给定的URI提交数据之后,若数据正确跳转到首页,若错误则跳转到登录页。修改完成之后部署上,发现无论用户给出的凭据是正确还是错误都往错误页上跳转。调试过程中我发现,用户输入正确的凭据以后系统确实往主页跳转了,但是最后的结果却是又返回到了登录页。仔细查看代码后发现,我在往主页跳转的时候,错误的使用了forward,造成不能将用户本地的cookie等凭证带到主页,令系统以为我已经退出了,故又返回了登录页。关于redirect与forwad的区别,找到一篇博文,见下:(转载自:/tenor/article/details/4077079)在Servlet中两种实现: forward方式:request.getRequestDispatcher(“/somePage.jsp”).forward(request, response); redirect方式:response.sendRedirect(“/somePage.jsp”);?forward是服务器内部重定向,程序收到请求后重新定向到另一个程序,客户机并不知道;redirect则是服务器收到请求后发送一个状态头给客 户,客户将再请求一次,这里多了两次网络通信的来往。当然forward也有缺点,就是forward的页面的路径如果是相对路径就会有些问题了。 forward 会将 request state , bean 等等信息带往下一个 jspredirect 是送到 client 端后再一次 request , 所以资料不被保留.使用 forward 你就可以用 getAttribute() 来取的前一个 jsp 所放入的 bean 等等资料forward是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值,如果你需要在下一个页面中能从中获取新的信息的话,你可以Request.setAttribute()来放置一些标志,这样从下一个页面中获取。redirect是完全的跳转,浏览器将会得到跳转的地址, 并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,forward更加高效,在forward可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 HttpServletResponse.sendRequest()方法。forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect(“”);forward 是服务器内部重定向,程序收到请求后重新定向到另一个程序,而客户机并不知晓;forward会将?? request? state、bean、等信息带到下一个jsp页面;使用getAttribute()来取得前一个jsp所放的信息redirect? 是服务器收到请求后发送一个状态头给客户,客户将再次请求,就有两次网络通行的来往。redirect 是送到客户端后再次request,因此上一个jsp的信息不被保留forward方式:request.getRequestDispatcher(“/somePage.jsp”).forward(request, response);redirect方式:response.sendRedirect(“/somePage.jsp”);redirect forward的区别1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。2.从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据.假如从a页面 到 b页面 在到c页面 如果用在a页面中:request.setAttribute(“a”
文档评论(0)