SpringMVC常用注解的详细解析

请求参数

@RequestMapping

位置:方法或类上方。用于类上,表示类中的所有控制器方法都是以该地址作为父路径。
作用:给控制器方法设置请求路径
属性:
value/path:请求路径
method:指定请求方式
params:规定必须发送的请求参数
headers:规定请求必须包含的请求头

1. 映射到指定的URL路径:

@RestController
@RequestMapping("/api")
public class ApiController {

    @RequestMapping("/users")
    public List getUsers() {
        // 处理获取用户列表的逻辑
    }
}
```


上述示例中,通过在类上标注@RequestMapping注解,并指定路径为"/api",所有方法的请求路径都会以"/api"开头。

2. 映射到不同的HTTP请求方法:

@RestController
@RequestMapping("/api")
public class ApiController {

    @RequestMapping(value = "/users", method = RequestMethod.GET)
    public List getUsers() {
        // 处理获取用户列表的逻辑
    }

    @RequestMapping(value = "/users", method = RequestMethod.POST)
    public void createUser(@RequestBody User user) {
        // 处理创建用户的逻辑
    }
}


上述示例中,使用@RequestMapping注解对不同的方法指定了不同的请求方法(GET和POST)。

3. 根据请求参数进行映射:
```

@RestController
@RequestMapping("/api")
public class ApiController {

    @RequestMapping(value = "/users", params = "id")
    public User getUserById(@RequestParam("id") int id) {
        // 根据id获取用户的逻辑
    }

    @RequestMapping(value = "/users", params = "name")
    public List getUsersByName(@RequestParam("name") String name) {
        // 根据name获取用户列表的逻辑
    }
}


```
上述示例中,使用@RequestParam注解指定了请求参数,根据不同的参数进行不同的映射。

4. 映射到不同的请求头:
```

@RestController
@RequestMapping("/api")
public class ApiController {

    @RequestMapping(value = "/users", headers = "Content-Type=application/json")
    public List getUsers() {
        // 处理获取用户列表的逻辑
    }
}


```
上述示例中,使用@RequestMapping注解对请求头进行了限定,只有Content-Type为application/json的请求会被映射到这个方法。

@RequestParam


​​​
位置:方法参数前
作用:在控制器方法中获取请求参数
属性:
name:指定请求参数名称
defaultValue: 为参数设置默认值
required:设置是否是必须要传入的参数

示例

@RequestParam(name = "username",defaultValue = "jkw",required = false) String name

@RequestBody

作用:将请求中JSON格式的参数转为JAVA对象
位置:方法参数前

响应处理

@Controller

作用:标明控制器,将此类交给Spring容器管理
位置:类上方

       

@ResponseBody

作用:方法返回的对象转换为JSON格式,并将JSON数据直接写入到输出流中【使用此注解后不会再经过视图解析器】
位置:方法上方或方法返回值前

@RestController

作用:相当于@Controller+@ResponseBody,作用于每一个类
位置:类上方

其余注解

@RequestHeader


位置:方法参数前
作用:在控制器方法中获取请求头数据

 

 @RequestHeader("User-Agent") String userAgent



@CookieValue


位置:方法参数前
作用:在控制器方法中获取Cookie数据
 


@SessionAttributes


位置:类上方
作用:将Model模型中的数据存到session域中

@SessionAttributes("name")



@ModelAttribute


位置:方法上方
作用:设置指定方法在控制器其他方法前执行【本类的前置方法】

你可能感兴趣的:(java,java)