我是靠谱客的博主 故意红酒,最近开发中收集的这篇文章主要介绍javaweb中重定向和请求转发和request.getRequestDispatcher(url).forward(request,response)的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先来两张图,方便理解:

在这里插入图片描述

可以看出,重定向时,是服务器向游览器重新发送了一个response命令,让游览器再次向url2发送请求,以获取url2的资源

而请求转发时,类似于是服务器自己向自己发了一个跳转,然后将结果直接给游览器,这也是问什么游览器会不改变url地址。下面是具体总结他们的区别

一、response.sendRedirect(url)-服务器将新url发送给游览器,游览器再根据新url请求

Request.getRequestDispatcher(url).forward(request,response);请求转发到指定url(服务器内部跳转url然后将结果发给游览器)

二、response.sendRedirect(url)–客户端跳转

Request.getRequestDispatcher(url).forward(request,response)–服务器跳转

三、response.sendRedirect(url)–跳转到指定url地址后,上个页面的请求会结束,request对象会消亡,数据会消亡。

Request.getRequestDispatcher(url).forward(request,response)–内部跳转,request对象一直存在

四、response.sendRedirect(url)–网址会改变

Request.getRequestDispatcher(url).forward(request,response)–以游览器角度来看,他只是发送一个request然后收到一个response,所以url不变

五、response.sendRedirect(url)–传参数需要在url后加参数。

Request.getRequestDispatcher(url).forward(request,response)-传参数可以操作request对象方法setAttribute(“name”,value)

六、response.sendRedirect(url)-可以定位到任意的网址

Request.getRequestDispatcher(url).forward(request,response)-只能定位到服务器资源

七、response.sendRedirect(url)–可以重定向有frame的jsp文件

Resquest.getRequestDispatcher(url).forward(request,response)-不可以重定向有frame的jsp文件,可以定向到有frame的html文件,只有在客户端没有输出时才可以调用forward方法,如果当前页面缓冲区不是空的,那么该句可能不起作用,由于这种提交不会改变url地址,刷新会重复提交。

最后

以上就是故意红酒为你收集整理的javaweb中重定向和请求转发和request.getRequestDispatcher(url).forward(request,response)的区别的全部内容,希望文章能够帮你解决javaweb中重定向和请求转发和request.getRequestDispatcher(url).forward(request,response)的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部