SpringMVC控制器的返回值詳解與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>Title</title>
</head>
<body>
${name},${age}
</body>
</html>

在這裏插入圖片描述

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也會把參數帶過去
在這裏插入圖片描述
__

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章