常用注解

1、@RequestParam

1.1、请求

<a href="test?userName=刘阳">测试</a>

1.2、处理方法

    //当请求参数名和处理方法的参数名不一致时可使用@RequestParam注解解决
    @RequestMapping("/test")
    public String test(@RequestParam("userName") String name) {
        System.out.println(name);
        return "success";
    }

2、@PathVariable

2.1、请求

<a href="test/liuyang/101">测试</a>

2.2、处理方法

    //@PathVariable可以解决REST风格的请求URL中的占位符和处理方法的参数的对应问题
    @RequestMapping("/test/{userName}/{mid}")
    public String test(@PathVariable("userName") String name, @PathVariable("mid") Integer id) {
        System.out.println(name);
        System.out.println(id);
        return "success";
    }

3、@ModelAttribute

3.1、需求

User对象有userName、age、password三个属性,修改时password不能被修改,默认情况下,处理方法在绑定User对象时表单中没有的字段会为null,而我们需要的是数据库中字段的值

3.2、请求

<form action="test" method="post">
    userName:<input type="text" name="userName"><br>
    age:<input type="text" name="age"><br>
    <input type="submit" value="提交">
</form>

3.3、解决方法

3.3.1、解决方法1-@ModelAttribute标记的方法有返回值

3.3.1.1、处理方法

    @RequestMapping("/test")
    public String test(User u) {
        System.out.println(u);
        return "success";
    }

3.3.1.2、@ModelAttribute标记的方法

    //@ModelAttribute修饰的方法会在处理方法执行前执行
    @ModelAttribute
    public User testModelAttribute(String userName) {
        System.out.println(userName);
        User user = new User();//模拟根据userName从数据库中查询User对象
        user.setPassword("123456");
        System.out.println(user);
        return user;
    }

3.3.2、解决方法2-@ModelAttribute标记的方法没有返回值

3.3.2.1、处理方法

    @RequestMapping("/test")
    public String test(@ModelAttribute("abc") User u) {
        System.out.println(u);
        return "success";
    }

3.3.2.2、@ModelAttribute标记的方法

    //@ModelAttribute修饰的方法会在处理方法执行前执行
    @ModelAttribute
    public void testModelAttribute(String userName,Map<String,Object> map) {
        System.out.println(userName);
        User user = new User();//模拟根据userName从数据库中查询User对象
        user.setPassword("123456");
        System.out.println(user);
        map.put("abc",user);
    }
原文地址:https://www.cnblogs.com/liuyang-520/p/12371265.html