让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
来源:互联网 发布:淘宝不给退货怎么办 编辑:程序博客网 时间:2024/05/11 16:18
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是二者是有很大的区别的,分条来说,有以下几点:
①response.sendRedirect(url)-----重定向到指定URL
request.getRequestDispatcher(url).forward(request,response) -----请求转发到指定URL
②response.sendRedirect(url)-----是客户端跳转
request.getRequestDispatcher(url).forward(request,response) -----是服务器端跳转
③response.sendRedirect(url)跳转到指定的URL地址后,上个页面(跳转之前的原来页面)中的请求全部结束,原request对象将会消亡,数据将会消失。紧接着,当前新页面会新建request对象,即产生新的request对象。
【详细过程:redirect 会首先发一个response给浏览器,然后浏览器收到这个response后再发一个requeset给服务器,服务器接收后发新的response给浏览器。这时页面从浏览器获取来的是一个新的request。这时,在原来跳转之前的页面用request.setAttribute存的东西都没了,如果在当前的新页面中用request.getAttribute取,得到的将会是null。】
request.getRequestDispatcher(url).forward(request,response)是采用请求转发方式,在跳转页面的时候是带着原来页面的request和response跳转的,request对象始终存在,不会重新创建。
【详细过程:forward 发生在服务器内部, 是在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来的,可能是在转页时己经用request.setAttribute在request里放了数据,在转到的页面就可以直接用request.getAttribute获得数据了。】
④使用response.sendRedirect()地址栏中的网址将改变
使用request.getRequestDispatcher().forward(request,response)地址栏中的网址保持不变。
①response.sendRedirect(url)-----重定向到指定URL
request.getRequestDispatcher(url).forward(request,response) -----请求转发到指定URL
②response.sendRedirect(url)-----是客户端跳转
request.getRequestDispatcher(url).forward(request,response) -----是服务器端跳转
③response.sendRedirect(url)跳转到指定的URL地址后,上个页面(跳转之前的原来页面)中的请求全部结束,原request对象将会消亡,数据将会消失。紧接着,当前新页面会新建request对象,即产生新的request对象。
【详细过程:redirect 会首先发一个response给浏览器,然后浏览器收到这个response后再发一个requeset给服务器,服务器接收后发新的response给浏览器。这时页面从浏览器获取来的是一个新的request。这时,在原来跳转之前的页面用request.setAttribute存的东西都没了,如果在当前的新页面中用request.getAttribute取,得到的将会是null。】
request.getRequestDispatcher(url).forward(request,response)是采用请求转发方式,在跳转页面的时候是带着原来页面的request和response跳转的,request对象始终存在,不会重新创建。
【详细过程:forward 发生在服务器内部, 是在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来的,可能是在转页时己经用request.setAttribute在request里放了数据,在转到的页面就可以直接用request.getAttribute获得数据了。】
④使用response.sendRedirect()地址栏中的网址将改变
使用request.getRequestDispatcher().forward(request,response)地址栏中的网址保持不变。
阅读全文
0 0
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别(转)
- 【转载】让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
- Python基础篇之__Str__和__repr__
- JavaScript -- ES6 迭代器和生成器
- 谈谈美国大学的常任轨(tenure track)制度
- Xcode下开发c静态库for ios CPU架构 静态库合并
- VisualStudio 2017预览版 任务栏图标异常 变白纸 修复
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- sublime tex3中某些设置(持续更新)
- 详情页+购物车
- Web Services Explained
- 利用UltraISO制作U盘启动盘
- Android中 View not attached to window manager错误的解决办法
- nginx实现请求的负载均衡 + keepalived实现nginx的高可用
- idea自动导入jar包的快捷键
- session的原理以及应用