【Spring-MVC】转发和重定向

30 篇文章 1 订阅

【Spring-MVC】转发和重定向

10.1 转发

在SpringMVC中默认的就是转发,在我们使用ModelAndView或者是直接return字符串时,其实就是默认走的转发

我们也可以显式的访问路径的前面加上forward:,这样的方式也是会去走一个转发的

注意:

  • 我们如果使用默认的方式进行转发的话,我们的路径是会去拼接视图解析器的前缀和后缀。
  • 如果我们选择显式的完整的去进行使用转发,那么这时候视图解析器就不起作用了,我们需要在forward:后面添加完整的路径

默认的方式:

@PostMapping("/login")
public String login(AdminInfo adminInfo, Model model){
  if (!isExistAdmin(adminInfo)){
    model.addAttribute("msg","用户名密码错误!");
    return "login";
  }
  // 默认的情况会去帮助我们去拼接视图解析器,我们只需要返回文件名
  return "main";
}

完整的方式:

@PostMapping("/login")
public String login(AdminInfo adminInfo, Model model){
  if (!isExistAdmin(adminInfo)){
    model.addAttribute("msg","用户名密码错误!");
    return "login";
  }
  // 我们这里把forward写出来以后,视图解析器就不会去拼接了,我们需要直接去写完整的路径
  return "forward:/templates/main.ftl";
}

好处:

  • 这样做的其实是可以让我们可以去访问其他目录下的一些文件,避免了视图解析器只能访问前缀的指定目录

10.2 重定向

在SpringMVC中默认都是使用转发,但是当我们想使用重定向时怎么办呢,其实和上面转发的完整方式是一样的,这时候需要我们显式的把redirect:写出来

注意:

  • 当我们使用这种方式来进行重定向时,和上面完整的转发方式一样,需要把完整的路径写出来,这时的视图解析器也是不会去拼接前缀和后缀
  • 重定向不可以访问WEN-INF下的文件,在WEB-INF下的目录是不可以直接方法,是被保护的
@PostMapping("/login")
public String login(AdminInfo adminInfo, Model model){
  if (!isExistAdmin(adminInfo)){
    model.addAttribute("msg","用户名密码错误!");
    return "login";
  }
  // 和使用forward一样,需要把完整的路径写出来
  return "redirect:/templates/main.ftl";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值