javaweb中重定向和请求转发(response.sendRedirect()和request.getRequestDispatcher(rul).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中重定向和请求转发(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)))的区别的更多相关文章
- response.sendRedirect(url)与request.getRequestDispatcher(url).forward(request,response)的区别
response.sendRedirect(url)跳转到指定的URL地址,产生一个新的request,所以要传递参数只有在url后加参数,如: url?id=1.request.getRequest ...
- Struts2中重定向和请求转发配置
struts2中默认跳转为dispatcher请求转发 只能往jsp转发,跳转action报404 重定向 设置为redirect ,可以是jsp也可以是action <!--同一个包下的act ...
- request.getRequestDispatcher(url).forward(request, response)
request.getRequestDispatcher().forward(request, response) 意思是将客户端的请求转向到 getRequestDispatcher()方法中参数定 ...
- 请求转发:MVC设计模式、细节、请求域属性的编程实例、请求重定向和请求转发的区别
请求转发:MVC设计模式.细节.请求域属性的编程实例.请求重定向和请求转发的区别 MVC设计模式将一次请求的响应过程分成三个功能模块(一般称之为层)来协同完成,这三个模块分别是Model(模型层) ...
- 重定向和请求转发后面加“return;”语句
请求转发 RequestDispatcher 重定向 Redirect 代码的执行: 无论是 request.getRequestDispatcher(path).forward(reque ...
- 深入浅出Java 重定向和请求转发的区别
深入浅出Java 重定向和请求转发的区别 <span style="font-family:FangSong_GB2312;font-size:18px;">impor ...
- java重定向与请求转发的区别
最近工作不算太忙,今天在这里对java中的重定向和请求转发稍作总结,希望能帮助到大家. 请求转发: request.getRequestDispatcher().forward(); 重定向: res ...
- 【Servlet】深入浅出JavaServlet重定向和请求转发
import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import javax. ...
- web初学之重定向与请求转发
重定向与请求转发的问题 (1)RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法. (2 ...
随机推荐
- 关于Actionbar的那些事
咱们来说说有趣的Actionbar吧 Actionbar这个控件是3.0以后添加的,Google在13年的时候把它加入了v7包,现在第三方的Actionbarserlock基本没什么用了, 要兼容2. ...
- RecyclerView线性分割线
由于recyclerview默认是没有分割线的,需要显示分割线的话,可以在布局里添加一条有背景色的View标签,或者通过ItemDecoration来实现,本文以后者为例. ItemDecoratio ...
- Java之集合初探(一)
一.集合概述.区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器. 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的 ...
- 【echart】学习笔记
1. x 轴 y轴 的max min 只能为5的倍数 2.
- pwnable.kr leg之write up
看代码: #include <stdio.h> #include <fcntl.h> int key1(){ asm("mov r3, pc\n"); } ...
- JAVA 中BIO,NIO,AIO的理解以及 同步 异步 阻塞 非阻塞
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步 ...
- 使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- Go语言学习笔记(七)杀手锏 Goroutine + Channel
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Goroutine Go语言的主要的功能在于令人简易使用的并行设计,这个方法叫做Goroutine,通过Gorou ...
- iframe中的模态框遮罩父窗口原理
关键点: css的position定位为fixed或absolute css的z-index, 最顶层的值最大如遮罩层为0那么弹出框最好是大于等于1的整数,总之记住弹出层要比遮罩的z-index值大就 ...
- MongoDB安全策略
一,修改启动端口 mongo的默认端口为27017 如果启用的是27017端口并且在公网上很容易被人攻击,所以第一点我们要修改端口 sudo ./mongod --dbpath=/data/db -- ...