重定向和转发的区别及应用_重定向是什么意思

重定向和转发的区别及应用_重定向是什么意思请求转发:客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在stude…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

请求转发:

客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在student_list中都能取出来,因此,student_list能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。

 

重定向:

客户发送一个请求到服务器,服务器匹配servlet,servlet处理完之后调用了sendRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问student_list.jsp,紧接着客户端收到这个请求后,立刻发出一个新的请求,去请求student_list.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。(服务器向浏览器发送一个302状态码以及一个location消息头,浏览器收到请求后会向再次根据重定向地址发出请求)

请求转发:request.getRequestDispatcher(“/test.jsp”).forword(request,response);

重定向:res

区别:

1、请求次数:重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次;

2、地址栏不同:重定向地址栏会发生变化,转发地址栏不会发生变化;

3、是否共享数据:重定向两次请求不共享数据,转发一次请求共享数据(在request级别使用信息共享,使用重定向必然出错);

4、跳转限制:重定向可以跳转到任意URL,转发只能跳转本站点资源;

5、发生行为不同:重定向是客户端行为,转发是服务器端行为;

使用:

1、可以利用request的域对象的特点,由源组件向其中存放写数据;
2、可以让用户访问到存放在WEB-INF目录中的目标资源;
3、重定向的速度比转发慢,因为浏览器还得发出一个新的请求,所以如果在使用转发和重定向都无所谓的时候建议使用转发;
4、因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。

ponse.sendRedirect(“/test.jsp”)

 

转载自:https://www.cnblogs.com/kingofjava/p/10761679.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195895.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OutputDebugString()

    OutputDebugString()

    2021年11月24日
    42
  • 二进制与十进制的讲解与转换「建议收藏」

    二进制与十进制的讲解与转换「建议收藏」文章目录?什么是十进制呢??什么是二进制??十进制和二进制之间可以转换吗??十进制与二进制之间的转换?二进制转十进制?十进制转二进制?写在最后哈喽,大家好!这是我的第一篇博客,就先来介绍一下自己吧,我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在CSDN上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。本文主要讲解二进制以及进制之间的转换,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎❤️点赞

    2022年10月18日
    3
  • settime和setinterval_setinterval是异步还是同步

    settime和setinterval_setinterval是异步还是同步setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。这两个函数的区别是:setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。有一次我没有分清,使用了setInterval,导致电脑崩溃了。setTimeout表面上是只执行一次,只是起到延迟作用。但是也可以通过创建一个函数循环重复调用…

    2022年10月4日
    2
  • matlab检验贝塔分布规律,贝塔分布背后的直觉:概率的概率分布

    matlab检验贝塔分布规律,贝塔分布背后的直觉:概率的概率分布编者按 贝塔分布的定义很简单 具有两个参数 gt 0 的一组定义在 0 1 区间的连续概率分布 但是 它背后的直觉却不是那么明显 StackOverflo 数据科学家 DavidRobinso 在 CrossValidat 解释了贝塔分布背后的直觉 简而言之 贝塔分布代表 probabilitie 概率的复数形式 的分布 也就是说 它代表当我们不知道概率是什么时 概率的所有

    2025年8月29日
    4
  • sql server 日期转字符串_db2 日期转字符串

    sql server 日期转字符串_db2 日期转字符串Whileworkingwithrawdata,youmayfrequentlyfacedatevaluesstoredastext.Convertingthesevaluestoadatedatatypeisveryimportantsincedatesmaybemorevaluableduringanalysis.In…

    2022年10月8日
    3
  • Mybatis的多表关联查询(多对多)「建议收藏」

    Mybatis的多表关联查询(多对多)「建议收藏」Mybatis的多表关联查询(多对多)项目目录结构实现Role到User多对多业务要求用户与角色的关系模型编写角色实体类编写Role持久层接口实现的SQL语句编写映射文件测试代码实现User到Role的多对多业务要求编写用户实体类编写User持久层接口实现的SQL语句编写映射文件测试代码mybatis中的多表查询: 示例:用户和角色 一个用户可以有多个角色 一个角色可以赋予多个用户 步骤: 1、建立两张表:用户表,角色表 让用户表和角色表具有多对多的关

    2022年5月1日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号