zoukankan      html  css  js  c++  java
  • SpringMVC----ModelAttribute注解使用

    1.需求:

    index.jsp
    
    <!-- 模拟修改操作
            1.原始数据:1,Tom,123456,tom@qq.com,25,BJ
            2.要求密码不能被修改
            3.表单回显,模拟操作直接在表单填写对应的属性值
         -->
         <form action="springmvc/testModelAttribute" method="POST">
             <input type="hidden" name="id" value="1"/>
             username:<input type="text"  name="username" value="Tom" />
             <br>
             email:<input type="text" name="email" value="tom@qq.com"/>
             <br>
             age:<input type="text"  name="age" value="25"/>
             <br>
             <input type="submit" value="submit" />
         </form>
    
    
    
    测试代码:
    
    @RequestMapping("/springmvc")
    @Controller
    public class SpringMVCTest {
        
        private static final String SUCCESS = "success";
        
        @RequestMapping("/testModelAttribute")
        public String testModelAttribute(User user){
            System.out.println("修改:"+user);
            return SUCCESS;
        }
    }
    
    
    结果:
    修改:User [id=1, username=Tom, password=null, email=tom@qq.com, age=11111]

    2.解决需求:

    测试代码:
    
    @RequestMapping("/springmvc")
    @Controller
    public class SpringMVCTest {
        
        private static final String SUCCESS = "success";
        
        @ModelAttribute
        public void getUser(@RequestParam(value="id",required=false) Integer id,
                Map<String,Object> map){
            if(id!=null){
                //模拟从数据库中获取对象,把对象放进map里面
                User user = new User(1, "Tom", "123456", "tom@qq.com", 25);
                System.out.println("从数据库中获取一个对象"+user);    
                map.put("user", user);
            }
        }
        
        @RequestMapping("/testModelAttribute")
        public String testModelAttribute(User user){
            System.out.println("修改:"+user);
            return SUCCESS;
        }
    }
    
    
    结果:
    从数据库中获取一个对象User [id=1, username=Tom, password=123456, email=tom@qq.com, age=25]
    修改:User [id=1, username=Tom, password=123456, email=tom@qq.com, age=22222]

     3.总结运行流程:

      1.  @ModelAttribute注释修饰的方法:从数据库中取出对象,把对象放入到了map中,键为user;

      2.  SpringMVC从map中取出user对象,并把表单的请求参数赋给该User对象的对应属性;

      3.  SpringMVC把上述对象传入目标方法的参数;

    4.注意:

      1.  在@ModelAttribute修饰的方法中,放入到map时的键需要和目标方法入参类型的第一个字母小写的字符串一致;

      2.  

  • 相关阅读:
    linux内存-swap
    linux内存-buffer和cache
    Linux内存-内存管理机制oom_killer
    HTTPS(二)证书合法性校验
    HTTPS(一)基础及连接建立
    docker镜像(一)overlayfs
    DNS(三)全局流量调度
    建造者模式(Builder Pattern)
    抽象工厂模式(Abstract Factory)
    工厂方法模式(Factory Method Pattern)
  • 原文地址:https://www.cnblogs.com/yikuan-919/p/9737970.html
Copyright © 2011-2022 走看看