重定向

重定向是指由原请求地址重新定位到某个新地址,原有的request请求失效,客户端看到的是新的request请求返回的响应结果,客户端浏览器地址栏变为新请求地址。

一次重定向过程存在两次请求和两次响应。

重定向通过HttpServletResponse对象的sendRedirect()方法实现,该方法会通知客户端去重新访问新指定的URL地址,其语法格式如下:public void sendRedirect(String location)throws java.io.IOException,location参数用以指定重定向的URL,它可以是相对路径或绝对路径。

sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

请求转发

请求转发是指将请求再转发到其他地址,转发过程中使用的是同一个request请求,转发后浏览器地址栏内容不变。

请求转发的过程发生在服务器内部,只能从当前应用内部查找相应的转发资源,而不能转发到其它应用的资源。

请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发给另外一个资源,并让该资源对此请求进行响应。

RequestDispatcher接口有以下两个方法:

  • forward()方法:将请求转发给其他资源。
  • include()方法:将其他资源并入到当前请求中。

请求转发语法:

RequestDispatcher dispatcher = request.getRequestDispatcher(String path);
dispatcher.forward(ServletRequest request,ServletResponse response);

其中:

  • path参数用以指定转发的URL,只能是相对路径。
  • request和response参数取值为当前请求所对应的HttpServletRequest和HttpServletResponse对象。

数据传递

请求转发与重定向对HttpServletRequest对象属性的存取语法:

  • request.setAttribute("attrobj", “value"); // 将attrobj属性值存储到request对象中
  • request.getAttribute("attrobj"); // 从request对象中取出attrobj属性值

辨析

重定向和请求转发都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别:

  • 请求转发只能将请求转发给同一个Web应用中的组件;而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,或者重定向到其他站点的资源。
  • 重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
  • 请求转发调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而重定向调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

【Servlet】请求转发与重定向相关推荐

  1. Servlet 请求转发(forword)与重定向(sendredirect)的区别

    servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...

  2. 详解请求转发和重定向

    ** 详解请求转发和重定向 **servlet请求转发与重定向的区别: request.setAttribute("test","hello"); reques ...

  3. 【Servlet】请求转发、重定向、Cookie使用之三天自动登陆

    三天自动登陆项目源码:GitHub地址-LoginSystem JDBC 手写SORM框架 手写Servlet 开发环境:Eclipse 一.请求乱码问题解决 // 设置请求.响应编码格式req.se ...

  4. 【JavaWeb】一文Servlet全解:继承关系、生命周期、容器和请求转发与重定向等

    文章目录 一.Servlet 概述 二.Servlet HelloWorld 三.Servlet 继承关系 四.Servlet 生命周期 五.ServletConfig 和 ServletContex ...

  5. 解决servlet请求转发、响应重定向无法实现页面跳转问题

    问题:login.html能正常运行,但当用户名和密码正确后,点击登录按钮,通过html页面的action属性值和servlet页面的urlPatterns属性值,实现servlet请求转发,无法实现 ...

  6. jsp:请求转发和重定向

    HttpServletResponse对象的sendRedirect(String location)方法称作重定向, 如果location地址前面加上"/",则表示相对于Serv ...

  7. 浅析请求转发和重定向

    浅析请求转发和重定向 1.请求转发 request.getRequestDispather("/indexServlet").forword(request,response); ...

  8. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...

    原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...

  9. 请求转发与重定向的区别和执行流程

    请求转发与重定向的区别和执行流程 文章目录 请求转发与重定向的区别和执行流程 1 请求转发与重定向区别 2 现实生活的例子 2.1 重定向 2.2 请求转发 3 重定向-流程图.代码.结果 3.1 流 ...

最新文章

  1. OpenStack 架构图
  2. 房地产企业大量海外融资,或将来资不抵债,被收购
  3. 一篇文章入门深度学习框架PyTorch
  4. pygame用精灵编组的问题的猜想和验证(未完待续)
  5. 软件问题造成的经济损失案例_公司印章管理使用哪些行为会造成法律风险隐患...
  6. 计算机网络按照延伸距离划分为,大学计算机考试练习题.doc
  7. linux里面vim自动显示行号,linux中vim永久显示行号、开启语法高亮
  8. 退出登入的php怎么写,php中退出登录怎么写
  9. Android自带硬解码解码类型说明MediaCodec使用必看
  10. linux网络客户端命令
  11. Node.js开发框架Express4.x
  12. 戴尔vStart:加快虚拟化,并马上应用戴尔私有云
  13. 量子十问之二:“爱因斯坦幽灵”能用来实现超光速通信吗?
  14. 地图中的鼠标移动响应
  15. 基于JAVA机票预定系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  16. 一个简单有效的手写识别引擎
  17. gmsh+fltk配置过程
  18. arcgis中欧氏距离操作_ArcGIS教程:欧氏距离 (空间分析)
  19. 实验8-1-8 报数 (20 分)
  20. 一些新的Blender的视频教程

热门文章

  1. [置顶] 读取pdf并且在web页面中显示
  2. print的小白用法
  3. JavaScript-Tool:jquery.qrcode.js
  4. BZOJ2976 : [Poi2002]出圈游戏
  5. MediaRecorder录像怎么旋转呀?
  6. 从马云看“穷男人”如何创业——看后信心倍增!
  7. Hadoop64位版本安装后遇到的警告处理
  8. springboot 微服务_使用 Docker 部署 Spring Boot微服务
  9. nasa注册_今天是黑洞星期五!
  10. linux 网络协议栈变化,ZZ Linux网络协议栈学习