重定向与请求转发

2023-11-09

分享一下在华清远见学习的知识点,重定向与请求转发也是面试中容易问到的问题。

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

 3.重定向通过HttpServletResponse对象sendRedirect()方法实现,该方法会通知客户端去重新访问新指定的URL地址,其语法格式如下:

location 参数用以指定重定向的URL,它可以是相对路径或绝对路径

public void sendRedirect(String location)throws java.io.IOException 

示例:表示重定向到当前应用程序根目录下的index.jsp页面

response.sendRedirect("/ServletDemo1/index.jsp"); 

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

二、请求转发

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

2.请求ServletA到ServletB的转发过程:

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

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

5. RequestDispatcher接口有以下两个方法:

        forward()方法:将请求转发给其他资源。

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

6.请求转发语法:

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

其中:

path参数用以指定转发的URL,只能是相对路径;

request和response参数取值为当前请求所对应的HttpServletRequest和HttpServletResponse对象。

三、​​​​​​​请求转发与重定向数据传递

  • 请求转发与重定向对HttpServletRequest对象属性的存取。
  • HttpServletRequest 对象属性的存取语法
    • request.setAttribute("attrobj", “value"); // 将attrobj属性值存储到request对象中
    • request.getAttribute("attrobj"); //从request对象中取出attrobj属性值

四、​​​​​​​请求转发与重定向的区别

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

1、请求转发只能将请求转发给同一个Web应用中的组件;而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,或者重定向到其他站点的资源;

2、重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变;

3、请求转发调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而重定向调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。

4、不代表方法的结束,下面的代码还会继续执行,注意在转发或重定向的语句后面不要在编写代码。


总结

        本篇文章对重定向与请求转发进行了解释与对比,可以加深自己对知识的理解,也可以分享给有需要的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重定向与请求转发 的相关文章

随机推荐

  • 每日一题(两数相加)

    每日一题 两数相加 2 两数相加 力扣 LeetCode 思路 思路 由于链表从头开始向后存储的是低权值位的数据 所以只需要两个指针p1和p2 分别从链表的头节点开始遍历 同时创建一个新的指针newhead 用于构造新链表 将创建的新节点进
  • 交换两数(不使用中间变量)

    引出问题 说到交换两数的值 对大家来说应该是一个非常简单的任务 但是 我们最常用的方法就是创建一个临时变量 再通过这个临时变量来改变两值 如下 int temp a a b b temp 但是 难道交换两个变量就只有这一种做法吗 方法1 其
  • IntelliJ IDEA写JSP文件出现“cannot resolve method”解决办法

    最近在使用IDEA写JSP文件的时候 有些内置对象出现了cannot resolve method的警告提示 代码运行没有问题 在编写的时候也不会提示 最后请教了万能的搜索引擎 解决了此问题 解决办法 该错误的导致的原因是因为没有在项目中添
  • 利用 Android Studio 和 Gradle 打包多版本APK( applicationIdSuffix)

    在项目开发过程中 经常会有需要打包不同版本的 APK 的需求 比如 debug版 release版 dev版等等 有时候不同的版本中使用到的不同的服务端api域名也不相同 比如 debug api com release api com d
  • Node.js到底是什么?

    前言 Node js是一个基于Chrome V8引擎的JavaScript运行环境 JavaScript是脚本语言 脚本语言需要一个解析器 运行环境 才能运行 若运行在浏览器中 则浏览器就是JavaScript的解析器 运行环境 而对于独立
  • Spark数据分析之pyspark

    Spark数据分析之pyspark 一 大数据简史 从hadoop到Spark 1 hadoop的出现 1 问题 1990年 电商爆发以及机器产生了大量数据 单一的系统无法承担 2 办法 为了解决 1 的问题许多公司 尤其是大公司领导了普通
  • 【VUE】拖动侧边栏以便自由调整左右两侧的宽度

    效果 1 拖动前 2 拖动后 主要代码
  • Python 爬虫爬取豆瓣读书小说类前十页标签

    呜呜呜 小白的爬虫之路 留个记录 一 导入库 import requests from bs4 import BeautifulSoup import sqlite3 二 获取豆瓣读书小说类1 10页网址 获取分页的地址 root url
  • 关于Jquery中ajax方法data参数用法的总结

    data 发送到服务器的数据 将自动转换为请求字符串格式 GET 请求中将附加在 URL 后 查看 processData 选项说明以禁止此自动转换 必须为 Key Value 格式 如果为数组 jQuery 将自动为不同值对应同一个名称
  • 高级API(UDP连接&Map集合&Collection集合)

    UDP协议 DatagramSocket 该对象可以代表接收端也可以代表发送端 DatagramPacket 数据打包对象 数据报对象 将发送的内容通过该对象进行打包 在通过指定的方法将该对象进行传输 1 通过DatagramSocket建
  • STM32学习笔记—I2C通信

    1 I2C介绍 2 I2C通讯过程介绍 3 函数配置 4 代码 1 I2C介绍 i2c总线是nxp公司 philp公司 开发的两线式串行总线 用于连接微控制器及外围设备 它是由数据线SDA和时钟线SCL构成 我们平常使用还会加上一个供电即v
  • Centos下安装gitolite+git

    一直以来我都是用SVN的 但最近做迭代开发 多分支时 发现SVN使用起来极不方便 因此打算换成git做源码管理 git的理论以及特性本文就不做讲解了 本主主要讲解怎么安装 配置git 以及git权限管理服务gitolite 组网结构 git
  • 计算机视觉基础(八)—— LBP特征描述算子之人脸检测

    1 简介 LBP指局部二值模式 Local Binary Pattern 是一种用来描述图像局部特征的算子 具有灰度不变性和旋转不变性等显著优点 LBP常应用于人脸识别和目标检测中 在OpenCV中有使用LBP特征进行人脸识别的接口 也有用
  • python opencv imread()中文路径返回为空None的解决办法 (imdecode函数的使用)

    本质原因并非网上某些地方说的是中文编码UNICODE UTF 8之类的问题 其实是python版opencv不接受NON ASCII的中文路径 为了使用中文路径 可以借助一些其他的库 本文首先介绍一种通过numpy库 毕竟这个是python
  • 编程问题(持续记录)

    问题记录 一 vue问题记录 1 vue elementui项目 build后在ie下报 Promise 未定义错误 2 elementui ie下icon不显示 3 npm run dev 时 报babel runtime core js
  • 两种方法将oracle数据库中的一张表的数据导入到另外一个oracle数据库中

    oracle数据库实现一张表的数据导入到另外一个数据库的表中的方法有很多 在这介绍两个 第一种 把oracle查询的数据导出为sql文件 执行sql文件里的insert语句 如下 第一步 导出sql文件 第二步 用PL Sql Develo
  • 快速幂理解

    2 9 gt gt 2 2 8 2 2 8 gt gt 2 4 4 2 4 4 gt gt 2 16 2 2 16 2 gt gt 2 256 1 思想 通过降阶的方式每次将幂除 2 将底数每次乘方 因为幂不能为奇数 所以如果幂为奇数必须处
  • 数据筛选特征方法-方差法

    在数理统计中 方差是测算随机变量离散趋势最重要 最常用的指标 方差是各变量值与其均值离差平方的平均数 它是测算数值型数据离散程度的最重要的方法 当数据分布比较集中时 各个数据与平均数的差的平方和较小 当数据分布比较分散 即数据在平均数附近波
  • 正确理解层次方框图

    正确的层次方框图示例 图片来源 https blog csdn net qq 15037231 article details 60467793 注意 在网上搜索层次方框图会出现很多类似的图 但很多都是错的 层次方框图用树形结构的一系列多层
  • 重定向与请求转发

    分享一下在华清远见学习的知识点 重定向与请求转发也是面试中容易问到的问题 目录 一 重定向 二 请求转发 三 请求转发与重定向数据传递 四 请求转发与重定向的区别 总结 一 重定向 重定向是指由原请求地址重新定位到某个新地址 原有的 req