重定向和转发
来源:互联网 发布:ubuntu maven m2 编辑:程序博客网 时间:2024/06/01 07:28
单单从写法上来看,重定向和转发分别是这样的:
request.getRequestDispatcher("xxx.jsp").forward(request, response); //转发到xxx.jspresponse.sendRedirect("xxx.jsp"); //重定向到xxx.jsp
区别上来看,有以下几种区别: 1. 重定向会导致浏览器的url地址改变,但是转发不会造成url地址的改变 2. 转发前后的页面是共享request和response对象的,它们属于同一个访问请求和响应过程;而重定向前后页面属于不通的访问请求和响应过程,所以request和response不会共享。 (举个例子:重定向过程好比有个绰号叫“浏览器”的人写信找张三借钱,张三回信说没有钱,让“浏览器”去找李四借,并将李四现在的通信地址告诉给了“浏览器 ”。于是,“浏览器”又按张三提供通信地址给李四写信借钱,李四收到信后就把钱汇给了“浏览器”。可见,“浏览器”一共发出了两封信和收到了两次回复,“ 浏览器”也知道他借到的钱出自李四之手。 RequestDispatcher.forward 方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。这个过程好比绰号叫“ 浏览器”的人写信找张三借钱,张三没有钱,于是张三找李四借了一些钱,甚至还可以加上自己的一些钱,然后再将这些钱汇给了“浏览器”。可见,“浏览器”只 发出了一封信和收到了一次回复,他只知道从张三那里借到了钱,并不知道有一部分钱出自李四之手。) 3. 转发方法只能将请求转发给同一个WEB应用中的组件;重定向方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。 (如果传递给HttpServletResponse.sendRedirect方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。) 4.无论是RequestDispatcher.forward 方法,还是HttpServletResponse.sendRedirect 方法,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中清除。
转载自:http://www.cnblogs.com/shenliang123/archive/2011/10/27/2226892.html
0 0
- 转发和重定向
- 转发和重定向
- 转发和重定向
- 重定向和转发
- 转发和重定向
- 转发和重定向
- 重定向和转发
- 转发和重定向
- 转发和重定向
- 转发和重定向
- 重定向和转发
- 重定向 和转发
- 转发和重定向
- 转发和重定向
- 转发和重定向
- 转发和重定向
- 重定向和转发
- 转发和重定向
- 数据库连接池、读取properties配置文件小结
- 李欣老师视频笔记,只记录自己可能会忘的基础Efficient java
- Codeforces Round #363 (Div. 2), problem: (B)
- Spring事务管理(3)-AOP创建Advisors
- 系统编程(文件操作续)--C语言学习(3)
- 重定向和转发
- android 模拟表单文件上传servlet
- error C2065: 'IDD_DIALOG1' : undeclared identifier
- 一种适合服务器运行程序保护的思路
- The specified child already has a parent. You must call removeView() on the child's parent first.
- 主题模型及其变种的实现代码汇总
- 编译链接的基本步骤
- 面试金典之数据结构(1)
- Java学习笔记-基本数据类型与运算符