1.主要區別
Model是每次請求中都存在的默認參數,利用其addAttribute()方法即可將服務器的值傳遞到jsp頁面中;
ModelAndView包含model和view兩部分,使用時需要自己實例化,利用ModelMap用來傳值,也可以設置view的名稱
2.例子
1)使用Model傳值
@RequestMapping(value="/list-books") private String getAllBooks(Model model){ logger.error("/list-books"); List<Book> books= bookService.getAllBooks(); model.addAttribute("books", books); return "BookList"; }
在jsp頁面利${books}即可取出其中的值
2)使用ModelAndView傳遞值有兩種方法,不同方法在jsp頁面的取值方式不同,同時設置了view的名稱
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { LibraryException le=null; if(ex instanceof LibraryException){ le=(LibraryException)ex; }else{ le=new LibraryException("系統未知異常!"); } ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("exception",le.getMessage()); modelAndView.getModel().put("exception",le.getMessage()); modelAndView.setViewName("error"); return modelAndView; }
jsp中${requestScope.exception1}可以取出exception1的值;
jsp中${exception2}可以取出exception2的值。
