Spring MVC 视图层解析
调⽤ Web 资源给域对象传值
page
request
session
application
业务数据的绑定是指将业务数据绑定给 JSP 域对象,业务数据的绑定是由 ViewResolver 来完成的,开发时,我们先添加业务数据,再交给 ViewResolver 来绑定,因此学习的重点在于如何添加业务数据,
Spring MVC 提供了以下几种⽅式来添加业务数据:
Map
Model
ModelAndView
@SessionAttribute
@ModelAttribute
Servlet API
业务数据绑定到 request 域对象
Map
Spring MVC 在调⽤业务方法之前会创建⼀个隐含对象作为业务数据的存储容器,设置业务⽅法的⼊参为 Map 类型,Spring MVC 会将隐含对象的引用传递给⼊参。
@RequestMapping("/map")
public String map(Map<String,Object> map){
User user = new User();
user.setId(1);
user.setName("张三");
map.put("user",user);
return "show"; }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html> <head>
<title>Title</title>
</head> <body>
${requestScope.user}
</body>
</html>
Model
Model 与 Map 类似,业务方法通过⼊参来完成业务数据的绑定。
@RequestMapping("/model")
public String model(Model model){
User user = new User();
user.setId(1);
user.setName("张三");
model.addAttribute("user",user);
return "show"; }
ModelAndView
与 Map 或者 Model 不同的是,ModelAndView 不但包含业务数据,同时也封装了视图信息,如果使用ModelAndView 来处理业务数据,业务方法的返回值必须是 ModelAndView 对象。
业务方法中对 ModelAndView 进⾏两个操作:
1、填充业务数据
2、绑定视图信息
@RequestMapping("/mav1")
public ModelAndView modelAndView1(){
ModelAndView modelAndView = new ModelAndView();
User user = new User();
user.setId(1);
user.setName("张三");
//填充业务数据
modelAndView.addObject("user",user);
//绑定视图信息
modelAndView.setViewName("show");
return modelAndView; }