概述
在 Controller 方法中,也可以返回 ModelAndView 对象,通过该对象可实现 转发(传递数据)、重定向
ModelAndView
该类从名字可以看出,封装 Model 和 view:
- Model:将传递给jsp的数据,到该类对象中
- view:视图名
创建对象
ModelAndView mv=new ModelAndView();
设置视图名
mv.setViewName("result");
springmvc视图解析器会起作用,自动拼装 前缀 和 后缀
向jsp传递数据
mv.addObject("username","李雷");
相当于执行:
request.setAttribute("username","李雷");
例子:转发页面
Controller
@RequestMapping("/query")
public ModelAndView query() {
ModelAndView mv=new ModelAndView();
mv.addObject("username","李雷");
mv.setViewName("result");
return mv;
}
result.html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${username}
<%=request.getAttribute("username")%>
</body>
</html>
例子:重定向页面
Controller
@RequestMapping("/query")
public ModelAndView query() {
ModelAndView mv=new ModelAndView();
mv.setViewName("redirect:/result.jsp");
return mv;
}
说明:
mv.setViewName("redirect:/result.jsp"); 实现重定向,此时视图解析器不起作用,所以要写全路径