如果希望将方法入参对象添加到模型中,则仅需在入参前使用@ModelAttribute注解 在方法定义上使用@ModelAttribute注解,SpringMVC在调用目标处理方法前,会逐个调用在方法上标注了@ModelAttribute注解的方法,并将这些方法的返回值添加到模型中,此时方法入参再用@ModelAttribute修饰则HTTP请求消息进一步覆盖模型中对象 SpringMVC在调用方法前会创建一个隐含的模型对象,作为模型数据的存储容器—隐含模型。如果处理方法的入参为map或Model类型,则SpringMVC会将隐含模型的引用传递给这些入参。在方法中,可以通过这个入参对象访问到模型中的数据,也可以向模型中添加新的属性数据 如果希望在多个请求中共享某个模型属性数据,则可以在控制器类中标注一个@SessionAttribute,SpringMVC会将模型中对应的属性暂存到HttpSession中 sessionStatus.setComplete让SpringMVC清除本处理器对应的会话属性 SpringMVC对@ModelAttribute及@SessionAttribute处理流程 1、SpringMVC在调用方法前,在请求线程中创建一个隐含的模型对象 2、调用所有标注了@ModelAttribute的方法,并将方法返回值添加到隐含模型中 3、查看Session中是否存在类上标注的@SessionAttribute的属性,有则添加覆盖 4、标注了入参@ModelAttribute方法若与@SessionAttribute相同若隐含模型中没有则报错,若不相同则创建实例