開始寫代碼之前,我們先來看一下spring MVC概念。一張圖能夠清晰得說明。
除了controller,我們需要編寫大量代碼外,其余的都可以通過配置文件直接配置。
MVC的本質即是將業務數據的抽取和業務數據的呈現分開來。controller是連接model和View的橋梁,在這一層,主要是業務邏輯的設置。
ModelAndView有兩種形式:Model 和 Map這使得在編寫controller中的方法時也有兩種參數形式。
首先來看基礎代碼,這也常用的形式:
//url: /user/show2?userId=123 @RequestMapping(value = "/show2?userId",method = {RequestMethod.GET}) public String showUser2(@RequestParam("userId")Integer userId,Model model){ User user = userService.getUserById(userId); model.addAttribute(user); return "showUser"; }
比較傳統的方式是使用HttpServletRequest,代碼如下:
//url:/user/show1?userId=123 @RequestMapping("show1") public String showUser(HttpServletRequest request){ int userId = Integer.parseInt(request.getParameter("userId")); User user = userService.getUserById(userId); request.setAttribute("user", user); return "showUser"; }
更為現代一點的方式是使用Map,同時url地址更為簡潔,可以直接輸入路徑變量的值,而不需要再把路徑變量也寫出來。代碼如下:
//url: /user/show3/{userId} @RequestMapping(value = "/show3/{userId}",method = RequestMethod.GET) public String showUser3(@PathVariable("userId") Integer userId,Map<String,Object> model){ User user = userService.getUserById(userId); model.put("user", user); return "showUser"; }