总体流程图如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190427161239131.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE0NjM3OTQ=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190427162259819.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE0NjM3OTQ=,size_16,color_FFFFFF,t_70)
@GetMapping时组合注解,@RequestMapping(method =RequestMethod.GET)的缩写
类似的还有@PostMapping等。默认是使用Get方法传入的参数体现在控制器类中的具体方法的入参;如
public String getNameById(@RequestParam("id") int id ){ //todo }
这就从页面传递了id到控制器
@RequestParam( ) 中有name、value、required等,默认不填
Model和ModelMap
SpringMVC内部使用org.springframework.ui.Model接口存储数据模型,他的功能类似util.Map。org.springframework.ui.ModelMap实现Map接口,SpringMVC在调用方法前会创建一个隐含的数据模型,作为模型数据的存储容器,如果处理方法的入参为Map或Model类,SpringMVC会将隐含的引用传递给Map或Model,这样就可以在Map或Model模型中访问所有的数据,可以向模型中添加数据。@RequestMapping("/addBuniness") public String addBuniness(Map> map){ List em = employeeService.getEmployees(); map.put("employee", em); return "/business/handleBusiness"; }
上面就会添加从getEmployees方法获取的employee数组,存入模型,在渲染视图的时候会显示出来
如果使用Model
@ModelAttributepublic void addEm(Model model){ model.addAttribute("employee", em);}@RequestMapping("/addBuniness") public String addBuniness(Model model,ModelMap modelMap ,Map map){ return "/business/handleBusiness"; }上面也可以不用addEm方法,直接@RequestMapping("/addBuniness") public String addBuniness(Model model,ModelMap modelMap ,Map map){ model.addAttribute("employee", em); return "/business/handleBusiness"; }
@ModelAttribute注解先执行addEm
addBusiness方法中Model和ModelMap 以及Map三个对象都已获取到addEm添加的值。另外还可以使用ModelAndView处理
@RequestMapping("/addBuniness") public String addBuniness(Map> map){ ModelAndView mv = new ModelAndView(); List em = employeeService.getEmployees(); mv.addObject("employee", em); mv.setViewName("/business/handleBusiness") return mv; }
是与上面代码一样的作用。
除了Map Model和RequestParam还有很多别的入参,这个用什么查什么把。