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也會把參數帶過去
__