目录

 

重定向和转发

请求次数

浏览器地址栏的区别

跳转的范围

request共享问题

异步请求和转发页面


 

部分摘自 https://blog.csdn.net/u010452388/article/details/80398929

java web中重定向和转发

 

重定向和转发

重定向和转发都是跳转到另一个地方,从一个servlet跳转到另一个servlet或者从一个页面跳转到另一个页面

我们访问了这个TestServlet之后就会跳转到test.html页面

java web中重定向和转发

 

重定向还有一种写法,其实sendRedirect 就是封装了下面2个方法

//设置状态码

response.setStatus(302);

//设置头文件类型

response.setHeader("location", "test.html");

 

请求次数

重定向会请求2次,而转发只会请求一次

为什么会请求2次,我们不是只访问了一次嘛?

因为有一次是服务器向浏览器请求

看下图可知,右边是重定向,重定向执行完重定向的代码后,会发送一个请求给浏览器,这个请求叫302重定向

浏览器接受后,再发送请求给服务器,跳转到相应的页面

而左边的请求转发,直接在服务器的内部跳转到资源处

java web中重定向和转发

 

浏览器地址栏的区别

且重定向的第二次请求因为是浏览器发出的,所以浏览器的地址栏会发生变化

这是之前的地址

java web中重定向和转发

访问之后,地址栏发生变化

java web中重定向和转发

而对应的转发,同样能访问到内容,但是地址栏却不变化

java web中重定向和转发

 

跳转的范围

重定向可以跳转到任意地址,甚至可以跳到其他网站

而转发只能在本项目里跳转

java web中重定向和转发

 

request共享问题

首先我们要知道request的作用域范围是  "本次请求" ,下次请求后之前的request就没了,且执行完servlet后,request也没了

也就是说浏览器带着参数数据发送请求过来后

如果我们使用重定向跳转到另一个页面,那么浏览器等于再发送一次请求,而这次请求肯定是没有数据的

因为这是浏览器自动发的,浏览器肯定不知道我们需要什么参数

所以会数据丢失

而转发是程序内部的传递,并且会把request传递过去

 

 

异步请求和转发页面

https://blog.csdn.net/yzj17025693/article/details/88420097  jQuery仿百度搜索下拉框 的案例中

我们发现异步请求的情况下,转发页面是不会跳转到对应页面的,而是会把对应页面的数据一起传递

给异步请求接收的地方

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • 2021-11-21
猜你喜欢
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-06
  • 2021-12-19
相关资源
相似解决方案