SpringMVC控制器的返回值详解与SpringMVC请求转发和重定向

文章目录

    • SpringMVC控制器的返回值分类
        • 返回字符串
        • 返回值 void
        • 返回值 ModelAndView对象
    • SpringMVC请求转发和重定向
        • 请求转发
        • 重定向

SpringMVC控制器的返回值分类

返回字符串

回顾:springmvc.xml配置文件中配置 视图解析器 的作用
SpringMVC控制器的方法返回字符串,通过配置视图解析器,可以直接指定逻辑视图(页面名称,不加后缀)的名称,跳转到指定页面。

返回值 void

返回值是void,则会跳转到 视图解析器配置的前缀+所访问的url+视图解析器配置的后缀
如访问的是:http://localhost:8080/user/get
则执行对应方法后就会跳转到: /WEB-INF/pages/user/get.jsp
在这里插入图片描述

@Controller
@RequestMapping(value = "/user")
public class UserController {


    /*返回值是void
            会跳转到 视图解析器的前缀+URL+后缀 对应的页面
            /WEB-INF/pages/user/get.jsp
			
			没有该页面则报404的异常
     */
    @RequestMapping(value = "/get")
    public void getUser(){
        System.out.println("getUser  void");
    }
 }

返回值 ModelAndView对象

ModelAndView对象可以用来调整JSP视图

@Controller
@RequestMapping(value = "/user")
public class UserController 
    /*
      ModelAndView
        Model:数据模型,用于存储逻辑数据
        View:视图对象,用于存储视图名称
     */
    @RequestMapping(value = "/mv")
    public ModelAndView mvTest(){
        ModelAndView modelAndView = new ModelAndView();
        //存储逻辑数据,可在跳转JSP页面获取
        modelAndView.addObject("name","张三三");
        modelAndView.addObject("age","18");

        //存储逻辑试图名,跳转到该页面
        modelAndView.setViewName("test");
        return  modelAndView;
    }
}

test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
head>
<body>
${name},${age}
body>
html>

SpringMVC控制器的返回值详解与SpringMVC请求转发和重定向_第1张图片

SpringMVC请求转发和重定向

回顾:在控制器中使用原生的ServletAPI对象实现请求转发与重定向

请求转发

	/*请求转发
    	注意:转发的路径,不经过视图解析器了,所以要写完整的路径
     */
    @RequestMapping("/forward")
    public String forwardTest() throws Exception {
        return "forward:/WEB-INF/pages/test.jsp";
    }


    /*请求转发
        可以通过Model将数据放入到request域对象中
     */
    @RequestMapping(value = "/forward2")
    public String forward(Model model){
        model.addAttribute("name","张三三");
        model.addAttribute("age","18");
        return "forward:/WEB-INF/pages/test.jsp";
    }

重定向

    /*重定向
        可以通过Model将数据放入到request域对象中,也可不使用。
     */
    @RequestMapping(value = "/redirect")
    public String redirect(Model model){
        model.addAttribute("name","张三三");
        System.out.println("hello!");
        return "redirect:https://blog.csdn.net/qq_45615417";
    }

注:重定向SpringMVC也会把参数带过去
在这里插入图片描述
__

你可能感兴趣的:(#,SpringMVC)