1. 转发

@Controller
@RequestMapping("/test7")
public class Test7Controller {

    /**
     * 当方法满足三个条件后,会当做转发进行处理
     * 1. 接口返回值为String类型
     * 2. 返回值格式:forward:转发的路径
     * 3. 方法或者类上不要标注@ResponseBody注解
     */
    @GetMapping("/init1")
    public String init1() {

        // 将 /test7/init 的请求转发给 /test6/init
        return "forward:/test6/init";
    }
}

⭕效果

  • 地址栏是test7/init,但是页面展示的是test6的页面
    在这里插入图片描述

2. 重定向

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

@Controller
@RequestMapping("/test7")
public class Test7Controller {

    /**
     * 当方法满足三个条件后,会当做重定向进行处理
     * 1. 接口返回值为String类型
     * 2. 返回值格式:redirect:重定向的路径
     * 3. 方法或者类上不要标注@ResponseBody注解
     */
    @GetMapping("/init2")
    public String init2(RedirectAttributes redirectAttributes) {

        /*
         * 通过redirectAttributes.addAttribute丢进去的参数,
         * SpringMVC重定向的时候,会自动将这些参数以?参数1=值1&参数2=值2拼接到重定向的地址上
         */
        redirectAttributes.addAttribute("name", "jmw");
        redirectAttributes.addAttribute("age", "28");
        // 💪💪💪重定向
        return "redirect:/test6/init";
    }
}
@Controller
@RequestMapping("/test6")
public class Test6Controller {

    @GetMapping("/init")
    public ModelAndView init(
            @RequestParam(required = false) String name
            , @RequestParam(value = "age", required = false) Integer age
    ) {

        System.out.println(name);
        System.out.println(age);

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("test6");
        return  modelAndView;
    }
}

⭕效果

  • 地址栏输入
    在这里插入图片描述
  • 重定向到新画面,地址栏url改变
    在这里插入图片描述
  • 被重定向到的页面,接收参数
    在这里插入图片描述
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐