在Servlet中实现页面的跳转有两种方式:转发和重定向

转发

概念

由服务器端进行的页面跳转

原理图

在这里插入图片描述

转发的方法:

在这里插入图片描述

转发的特点

  1. 地址栏不发生变化,显示的是上一个页面的地址
  2. 请求次数:只有1次请求
  3. 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
  4. 请求域中数据不会丢失

重定向

概念

由浏览器端进行的页面跳转

原理图

在这里插入图片描述

重定向方法:

在这里插入图片描述

重定向的特点

  1. 地址栏:显示新的地址
  2. 请求次数:2次
  3. 根目录:http://localhost:8080/ 没有项目的名字
  4. 请求域中的数据会丢失,因为是2次请求

总结

重定向和转发的区别

区别 转发forward() 重定向sendRedirect()
根目录 包含项目访问地址 没有项目访问地址
地址栏 不会发生变化 会发生变化
哪里跳转 服务器端进行的跳转 浏览器端进行的跳转
请求域中数据 不会丢失 会丢失

疑问

  1. 问:什么时候使用转发,什么时候使用重定向?

    如果要保留请求域中的数据,使用转发,否则使用重定向。

    以后访问数据库,增删改使用重定向,查询使用转发。

  2. 问:转发或重定向后续的代码是否还会运行?

    无论转发或重定向后续的代码都会执行