SpringMVC中的转发和重定向怎么用?有什么区别?(只看一遍,以后再也不会问什么是转发什么是重定向了!!!)

在这里插入图片描述

举例

小明带女朋友想去上海 Disney 玩,从海南坐飞机到了上海。第一次来上海,人生地不熟的,打个车去Disney吧。 路上打车老师傅说,“现在
Disney 的人太多了,一天下来排队玩不了几个项目, 别花冤枉钱了,去海昌公园玩吧”
小明一想,好不容易来一次,不能排一天的队,就玩两个项目! 打开滴滴打车软件,修改了目的地-“上海海昌公园”

小明带女朋友想去上海 Disney 玩,从海南坐飞机到了上海。第一次来上海,人生地不熟的,打个车去Disney吧。 到了Disney
之后,小明发现排队进园的人上千米,跟女朋友商量了一下,重新打车,去海昌公园!

这两个例子,在车上改目的地,是“请求转发”, 重新打车是“请求重定向”

请求转发时,浏览器地址栏中的地址不会变换,二请求重定向时,浏览器地址栏中的地址会变化。也就是请求转发通过浏览器发了一次请求,请求重定向是通过浏览器发了2次请求。

SpringMVC中如何使用请求转发和请求重定向?

1.请求页

<br>
<a th:href="@{/toDisneyForward}">to Disney forward</a>

<br>
<a th:href="@{/toDisneyRedirect}">to Disney redirect</a> 
  1. SpringMVC控制器方法
@RequestMapping("/toHaiChang")
public String toHaiChang(ModelMap modelMap){
    modelMap.addAttribute("haichangdesc", "welcome to Hai Chang Ocean Park.");
    return "arrive";
}

@RequestMapping("/toDisneyRedirect")
public String testRedirect(ModelMap modelMap){
    modelMap.addAttribute("disneydesc", "welcome to Disney.");
    return "redirect:/toHaiChang";
}

@RequestMapping("/toDisneyForward")
public String testForward(ModelMap modelMap){
    modelMap.addAttribute("disneydesc", "welcome to Disney.");
    return "forward:/toHaiChang";
}
  1. 执行完成之后的 arrive.html
<p th:text="${disneydesc}"></p>
<p th:text="${haichangdesc}"></p>
  1. 执行结果
    在这里插入图片描述
    对于转发,框架中重定向视图是 InternalResourceView 的实例, 重定向框架中重定向视图是 RedirectView 的实例。

请求转发和请求重定向的注意点

  1. 转发可以请求request域中的数据, 而重定向之后,最开始request域中的数据丢失了,因为是两次请求。

  2. 转发可以访问WEB-INF中的资源,而重定向不可以直接访问(浏览器不可以直接访问WEB-INF中的资源)。

  3. 转发不可以跨域,只能访问服务器中的资源, 请求重定向可以跨域访问,可以访问本服务器之外的资源,比如访问百度、谷歌等外部Internet resource。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值