转发与重定向

一、重定向
1.方法一:再返回结果前加一个前缀 “ redirct”;
可以重定向到一个指定的页面,也可以是另一个页面。
例: return “redirect:action2”;
2. 为了实现重定向时传递复杂数据,可以使你用Flash属性

@RequestMapping("/action3")
public String action3(Model model, RedirectAttributes redirectAttributes) {
Product product = new Product(2, “iPhone7 Plus”, 6989.5);
redirectAttributes.addFlashAttribute(“product”, product);
return “redirect:action2”;
}
二、转发

  1. str = forword : 路径
  2. str = forword : controller 的映射 请求转发到一个 controller 方法中
@RequestMapping("/act12")
    public String act12(Model model){
        model.addAttribute("msg","act12");
        return "forward:act11";
    }

三、
(一). forward与redirect的区别?
a、转发在服务端完成,重定向在客户端完成
b、转发的速度快,重定向速度慢
c、转发是同一次请求,重定向是两次不同的请求
d、转发不会执行转发后的代码,重定向会执行重定向之后的代码
e、转发地址栏没变化,重定向有变化
f、转发必须是在同一台服务器完成,重定向可以在不同的服务器下完成
注:1.转发,可以传递request的值;重定向是重新发送请求,原来的请求参数值没有了。
2.重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域,浏览器中所显示的URL会变成新页面的URL, 重定向的速度比转发慢,因为浏览器还得发出一个新的请求。
(二)Flash属性
1.使用重定向之后,在reqeust之中的属性将会丢失,但是可以在控制器方法中指定@RedirectAttributes传递参数,然后通过其的addAttribute进行参数的指定即可
2.使用@RedirectAttributes指定属性之后经过重定向可以使用reqeust.getParameter进行获取
(三)返回值是String的时候,重定向是通过在返回地址前加上"redirect:"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值