转发是服务器行为,重定向是客户端行为

1.转发在服务器端完成的;重定向是在客户端完成的

2.转发的速度快;重定向速度慢

3.转发的是同一次请求;重定向是两次不同请求

4.转发不会执行转发后的代码;重定向会执行重定向之后的代码

5.转发地址栏没有变化;重定向地址栏有变化

6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

在servlet中调用转发、重定向的语句如下:

request.getRequestDispatcher("index.jsp").forward(request,

response);//转发到index.jsp

response.sendRedirect("index.jsp");//重定向到index.jsp

转发过程:客户浏览器发送http请求,web服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

重定向过程:客户浏览器发送http请求,web服务器接受后发送302状态码响应及对应新的location给客户浏览器,客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址,服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

重定向,其实是两次request

第一次,客户端request

A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

(来源百度...)

java 转发与重定向_Java 转发和重定向的区别相关推荐

  1. java实现请求发送_java实现响应重定向发送post请求操作示例

    本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...

  2. java post重定向_java实现响应重定向发送post请求操作示例

    本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...

  3. java 二进制流转图片_java转发二进制图片流【原】

    packagecom.rosellete.iescp.cshop.tool.http;importjavax.servlet.http.HttpServletResponse;import java. ...

  4. java两种异常_JAVA两种异常的区别 (转)

    Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而 ...

  5. java与c语言_Java与C语言的区别之我见

    Java 是由C++演变而来的,而C++却是由C 演变而来的,Java与C既有相同 的地方,但是也具备了各自的特点. 一.Java的特点 1.平台独立性 2.面向对象的技术 3.多线程 4.动态性 5 ...

  6. java内省的意思_java内省和反射的区别

    展开全部 经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java的反射和内e68a843231313335323631343130323136353331333363366237省机制,希望对 ...

  7. java中null与_java中NULL与 的区别

    null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s ...

  8. java notify什么意思_Java notify和notifyAll的区别和相同

    经常在往上逛,关于在java中notify和notifyAll,经常有人有以下的说法: notify只会通知一个在等待的对象,而notifyAll会通知所有在等待的对象,并且所有对象都会继续运行 并且 ...

  9. java 构造方法和成员方法_java构造方法和成员方法的区别

    构造方法和成员方法的区别 1.构造方法 构造方法作用概述 给对象的数据进行初始化 构造方法格式 方法名与类名相同 没有返回值类型,连void都没有 没有具体的返回值 构造方法注意事项 如果你不提供构造 ...

最新文章

  1. c语言可视化_这些算法可视化网站助你轻松学算法
  2. java实现排序二叉树
  3. 初创公司MongoDB最佳实践策略和躲坑秘笈
  4. Flutter State 的生命周期
  5. Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——例题9-3
  6. 计划doing.....
  7. 石川:股票多因子模型的回归检验
  8. 科大讯飞语音合成的引入
  9. 深度学习简明教程系列 —— 经典模型(合集)
  10. WebService测试工具,提供下载链接
  11. Hbase、Kudu和ClickHouse横向对比V2.0
  12. 男生拍照姿势大全,这样拍才帅
  13. Mybatis批量update修改实例
  14. CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器
  15. 001.flink内存分配机制
  16. Excel技巧—名称框的妙用
  17. library Interpositioning 库(内插)干预技术
  18. python实现erp系统后端_python开发erp教程《PYTHON编一套完整ERP系统,15万元能下来吗》...
  19. 飞腾S2500平台PCIe SWITCH下热插拔验证
  20. C语言/771.宝石与石头

热门文章

  1. Win 10禁用APPX Deployment Service(APPXSVC)服务方法【解决内存占用高】
  2. php信用卡卡号验证函数
  3. 《分析服务从入门到精通读书笔记》第一章、数据分析层次结构(2)
  4. php 数组转换逗号_PHP implode():数组转字符串
  5. 深度学习-基础镜像发布系列
  6. 一键从Prompt到PowerPoint,斯坦福博士生自制的PPT生成神器火了
  7. python多个分隔符分割字符串_Python之使用多个分割符分割字符
  8. C盘无法拓展的解决方案
  9. webstorm的git切换分支
  10. eNSP无法启动路由器解决