转发和重定向区别
转发的特点: 服务端负责跳转
- 地址栏不发生变化,显示的是上一个页面的地址
- 请求次数:只有1次请求
- 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
- 请求域中数据不会丢失
转发使用哪个方法?
属于请求对象的方法
request.getRequestDispatcher("/地址").forward(request, response);
重定向的特点:客户端负责
- 地址栏:显示新的地址
- 请求次数:2次
- 根目录:http://localhost:8080/ 没有项目的名字
- 请求域中的数据会丢失,因为是2次请求
属于响应对象的方法
response.sendRedirect("要跳转的地址");
区别 | 转发forward() | 重定向sendRedirect() |
---|---|---|
根目录 | 包含项目访问地址 | 没有项目访问地址 |
地址栏 | 不会发生变化 | 会发生变化 |
哪里跳转 | 服务器端进行的跳转 | 浏览器端进行的跳转 |
请求域中数据 | 不会丢失 | 会丢失 |
-
问:什么时候使用转发,什么时候使用重定向?
如果要保留请求域中的数据,使用转发,否则使用重定向。
访问数据库,增删改使用重定向,查询使用转发。
-
问:转发或重定向后续的代码是否还会运行?
无论转发或重定向后续的代码都会执行