在springmvc中 我们可以知道 model使用来传输数据用的 如图所示:
model:
@GetMapping("/")
public String getStudents(Model model){
List<Student> list = new ArrayList<>();
Student s1 = new Student();
s1.setIdNo("N01");
s1.setName("Tom");
list.add(s1);
Student s2 = new Student();
s2.setIdNo("N02");
s2.setName("David");
list.add(s2);
model.addAttribute("students",list);
model.addAttribute("hello","Hello Thymeleaf!");
return "student";
}
这里我就思考了一个问题 为什么model这个参数可以返回数据给前台呢?
后来经过查证可知model对象负责在控制器和展示数据的视图之间传递数据。实际上,放到model属性中的数据将会被复制到Servlet Response的属性中 而像thymeleaf和其他引擎模板就能去访问到他们了
modelAndView:
public ModelAndView hello() {
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("message", "Hello World, Hello Kitty");
return modelAndView;
}
而modelAndView不只是会传输数据 还会返回一个view视图,但是每次使用起来都需要手动new一个,一般适合用于@RestController
map:
@GetMapping("/main")
public String main(Map<String,Object> map){
map.put("name","zlc");
return "hello";
}
这里博主用了map参数来传输数据给前台,却依然能行,这里博主去研究了一下,发现其实model其实是一个接口继承了一个叫modelMap类,实现类为ExtendModelMap.
这里博主只作为一个技术分享,学习与记录