Model
除了ModelAndView以外,还可以使用Model来向页面传递数据,
Model是一个接口,在参数里直接声明model即可。
如果使用Model则可以不使用ModelAndView对象,Model对象可以向页面传递数据,View对象则可以使用String返回值替代。
不管是Model还是ModelAndView,其本质都是使用Request对象向jsp传递数据。
/** * 根据id查询商品,使用Model * * @param request * @param model * @return */ @RequestMapping("/itemEdit") public String queryItemById(HttpServletRequest request, Model model) { // 从request中获取请求参数 String strId = request.getParameter("id"); Integer id = Integer.valueOf(strId); // 根据id查询商品数据 Item item = this.itemService.queryItemById(id); // 把结果传递给页面 // ModelAndView modelAndView = new ModelAndView(); // 把商品数据放在模型中 // modelAndView.addObject("item", item); // 设置逻辑视图 // modelAndView.setViewName("itemEdit"); // 把商品数据放在模型中 model.addAttribute("item", item); return "itemEdit"; }
ModelMap
ModelMap是Model接口的实现类,也可以通过ModelMap向页面传递数据
使用Model和ModelMap的效果一样,如果直接使用Model,springmvc会实例化ModelMap。
/** * 根据id查询商品,使用ModelMap * * @param request * @param model * @return */ @RequestMapping("/itemEdit") public String queryItemById(HttpServletRequest request, ModelMap model) { // 从request中获取请求参数 String strId = request.getParameter("id"); Integer id = Integer.valueOf(strId); // 根据id查询商品数据 Item item = this.itemService.queryItemById(id); // 把结果传递给页面 // ModelAndView modelAndView = new ModelAndView(); // 把商品数据放在模型中 // modelAndView.addObject("item", item); // 设置逻辑视图 // modelAndView.setViewName("itemEdit"); // 把商品数据放在模型中 model.addAttribute("item", item); return "itemEdit"; }