每天学点SpringMVC-@ModelAttribute注解
1. @ModelAttribute属性的使用
1.1 构建表单页面
<form action="test/testPojo.do"> <input type="hidden" value="1" name="id"> Account: <input name="account" value="Tom"> <br> Password : <input name="password" value="123123"> <input type="submit"> </form>
1.2 构建Controller
@RequestMapping("/test")
@Controller
public class TestController {
@ModelAttribute
public void getUser(@RequestParam("id") String id, Map map){
System.out.println("getUser id : " + id);
if(id != null){
User user = new User() ;
user.setId("1");
user.setName("Tom");
map.put("user",user) ;
}
}
@RequestMapping("/testPojo.do")
public void testPojo(User user){
System.out.println("user : " + user);
}
}
1.3 运行输出结果

1.4 个人理解
@ModelAttribute标识的方法会在所有@RequestMapping匹配到的请求之前优先被执行,并且同@RequestMapping标识的方法一样,也能获取到请求发过来的参数,如实例所示,在@ModelAttribute注解标识的方法中,向RequestScope中添加了user数据。在方法testPojo中,有一个入参user,这里会优先判断requestScope中是否有对应的User数据,如果有直接拿过来用,如果没有则new出来一个,并将请求过来的参数根据属性名自动对Pojo对象进行赋值
1.5 @ModelAttribute注解的作用

2. 源代码分析流程

3. SpringMVC 确定目标方法POJO类型入参的过程


浙公网安备 33010602011771号