Java中重定向与请求转发的区别
来源:互联网 发布:软件著作权许可使用 编辑:程序博客网 时间:2024/06/05 03:23
比喻:
无论进行多少次请求,如果使用请求转发来实现,浏览器地址栏中只显示第一次发送请求的地址; 从本质上讲,请求转发时,从发送第一次到最后一次请求的过程中,WEB容器只创建一次request和response对象,请求之间始终共享这两个对象,所以每个请求可以访问他之前请求中的参数和属性的值;
Java代码 1). String forward ="/a.jsp"; 2). RequestDispatcher rd =request.getRequestDispatcher(forward); 3). rd.forward(request,reponse);
1) 说明将要重定向的资源; 2)调用response对象中sendRedirect方法 Java代码 1. String resource =request.geContextPath() + "/a.jsp"; 2. response.sendRedirect(resource);
4、知情人不同 请求转发的过程只有WEB服务器知道,而浏览器不知道进行了多少次转发,以及都转发给哪些组件(servlet,JSP),它只是在等待WEB服务器最终的结果。
请求转发:A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己完成不了,于是B请C帮忙,C接收到B的请求后最终完成了该项工作,并把最后的结果返回给A。此过程A只发送了一次请求给B,A只知道把请求发给B,至于B是怎么完成的A并不关心,他只等待最终的结果。
重定向:A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己无法完成,就立即告诉A情况,并向A推荐C可以完成该项工作,于是A就找C帮忙,C最终完成该项工作,返回给A。
不同点:
1、浏览器地址栏显示不同(表面区别):
如果使用重定向来实现,浏览器地址栏显示的是每次请求的新地址。这只是表面上看到的不同地方。
2、组件之间可否共享信息不同(本质区别)
而重定向时,浏览器每发送一次请求,WEB容器都会重新创建新的request和response对象,所以请求之间不能共享信息,即不能在请求中访问到他之前请求中的参数和属性的值。
3、实现方式不同:
3.1 请求转发的实现步骤:
1)说明将要转发的资源;
2)获取请求转发的对象;
3) 调用请求转发对象中forward()方法
综合:request.getRequestDispatcher("/a.jsp").forward(request,response);
3.2 重定向的实现步骤:
综合:response.sendRediect(request.geContextPath() +"/a.jsp");
而重定向时,每发送一次请求,WEB服务器都会通知浏览器的,所以重定向了几次请求以及每次都向哪个组件发送的请求,浏览器很清楚,当让WEB服务器也很明白。
相同点: 两者都可以进行多次请求的转发。
总结:什么情况下使用重定向,什么情况下请求转发,这个不是看我们的习惯,而是什么情况下必须用什么:
重定向:之前的request中存放的变量全部失效并进入一个新session的作用域;
请求转发:之前的request中存放的变量没有失效,就想把两个页面拼在一起
0 0
- Java中重定向与请求转发的区别
- Java中重定向与请求转发的区别
- Java中重定向与请求转发的区别
- Java中重定向与请求转发的区别
- Java中重定向与请求转发的区别
- JSP中请求重定向与请求转发的区别
- jsp 中重定向与请求转发的区别
- HTTP中请求转发与重定向的区别
- Servlet应用中重定向与请求转发的区别
- javaweb中请求转发与重定向的区别
- 请求转发与重定向的区别
- 请求转发与重定向的区别:
- 请求转发与重定向的区别
- 请求重定向与转发的区别
- 《请求转发与重定向的区别》
- 请求转发与重定向的区别:
- 请求转发与重定向的区别
- 请求转发与重定向的区别
- 【POJ 3034】 Whac-a-Mole(DP)
- Mina框架实现最简单的服务端(三)
- Linux下Apache+mysql+PHP运行环境搭建教程
- Qt QImage与OpenCV Mat转换
- C++实验2-标准体重
- Java中重定向与请求转发的区别
- 程序员适合哪些社区?
- 机器学习第二节-监督学习应用.梯度下降
- simulate std string
- Mina框架实现最简单的服务端(四)
- 9.png图片的处理
- eclipse关闭html/jsp/js的hover提示
- 修改 Content-Disposition 可激活操作系统预览,不在浏览器内查看
- Mina框架实现最简单的服务端(五)