A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘴角上揚ぃ读不 中级黑马   /  2014-4-23 12:10  /  1662 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 嘴角上揚ぃ读不 于 2014-4-23 20:02 编辑

转发和重定向有什么区别?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

倒序浏览
转发和重定向的区别
重定向response.sendRedirect("success.jsp");
转发:request.getRequestDispatcher("success.jsp").forward(request,response);
1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发不会执行转发后的代码;重定向会执行重定向之后的代码
5.转发地址栏没有变化;重定向地址栏有变化
6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
重定向和转发有一个重要的不同,当使用转发时,jsp容器使用一个内部的方法来调用目标文件,新的页面继续处理同一个请求,而浏览器不知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求,因此,当你使用重定向时,浏览器中所显示的url会变成新页面的url,而当使用转发时,该url会保持不变。所以经过一次重定向后,request内的对象将无法使用。
    怎么选择是重定向还是转发呢?通常情况下,转发更快,而且能保持request内的对象,所以它是第一选择,但是由于在转发之后,浏览器中url仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用,如过你不想看到这样的情况,则选择重定向。
    重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域
    转发:以前的requset中存放的变量不会失效,就像把两个页面拼到了一起。

    转发仅仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,重定向是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接,这样,从浏览器的地址栏中可以看到跳转后的链接地址,所以前者更加高效,在前者可以满足需要时,尽量使用前者,并且这样有助于隐藏实际的链接,在有些情况下,比如跳转到一个其他服务器上的资源,则必须使用重定向。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
☆枫の云 发表于 2014-4-23 17:32
转发和重定向的区别
重定向response.sendRedirect("success.jsp");
转发:request.getRequestDispatcher("s ...

谢谢         知道了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马