Web中关于转发和重定向的区别

转发

服务端内部页面的跳转, 只作用于服务器内部, 和浏览器无关

在这里插入图片描述

特点:

  • 地址栏不发生变化,显示的是上一个页面的地址

  • 请求次数:只有1次请求

  • 请求域中数据不会丢失

关键方法:

1
request.getRequestDispatcher("/jump_ad").forward(request, response)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

@CrossOrigin
@RestController
class JumpControllor {

@Autowired
lateinit var shortService: ShortKeyService


@GetMapping("/test")
fun test(
response: HttpServletResponse,
request: HttpServletRequest
) {
request.getRequestDispatcher("/jump_ad").forward(request, response)
}

@GetMapping("/jump_ad")
fun jumpAd(request: HttpServletRequest,response: HttpServletResponse) {
response.writer.println("哈哈哈")

}


}

转发

浏览器端的页面跳转, 同时作用于浏览器和服务端

在这里插入图片描述

特点:

  • 地址栏:显示新的地址
  • 请求次数:2次
  • 请求域中的数据会丢失,因为是2次请求

关键方法:

1
response.sendRedirect("新地址")

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@CrossOrigin
@RestController
class JumpControllor {

@Autowired
lateinit var shortService: ShortKeyService


@GetMapping("/test")
fun test(
response: HttpServletResponse,
request: HttpServletRequest
) {
response.sendRedirect("http://www.baidu.com")
}


}

本文为作者原创 转载时请注明出处 谢谢

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%