SpringMVC的常用注解
1、@RestController
作用是将返回的数据结构转换为JSON格式;@RestController=@Controller+@ResponseBody
在SpringMVC中,@Controller主要负责处理前端控制器(DispatcherServlet )发过来的请求,经过业务逻辑层处理之后封装层一个model,并将其返回给view进行展示。@ResponseBody 注解是将返回的数据结构转换为 JSON 格式。
@RestController
@RequestMapping("/user")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@GetMapping("/get")
public JsonResult doSelectUser(SysUser sysUser){
return new JsonResult(sysUserService.selectUsers(sysUser);
}
2、@RequestMapping
主要是用来处理请求地址映射的注解,它可以用于类上,也可以用于方法上。用于类上的注解会将一个特定请求或者请求模式映射到一个控制器之上,表示类中的所有响应请求的方法都是以该地址作为父路径。而方法的级别上注解表示进一步指定到处理方法的映射关系。如上面代码在浏览器上直接访问 localhost:8080/user/get 即可。
该注解有6个属性,一般在项目中比较常用的有三个属性:value、method 和 produces。
value 属性:指定请求的实际地址,value 可以省略不写;
method 属性:指定请求的类型,主要有 GET、PUT、POST、DELETE,默认为 GET。对应的注解分别为@GetMapping、@PutMapping、@PostMapping、@DeleteMapping。
produces 属性:指定返回内容类型,如 produces = “application/json; charset=UTF-8”。
@RequestMapping(value = "/get",produces = "application/json; charset=UTF-8")
public JsonResult doSelectUser(SysUser sysUser){
return new JsonResult(sysUserService.selectUsers(sysUser);
}
3、@PathVariable
主要用来获取 URL 参数。如果添加了@PathVariable注解,则方法的接收参数要求与URL的参数一致,否则无法接收。如果添加value属性,则value的值要与URL的参数一致;
@GetMapping("{ids}/{valid}")
public JsonResult doValidById(@PathVariable(value="ids") Integer id,
@PathVariable Integer valid){
return new JsonResult(sysUserService.validById(id,valid));
}
4、@RequestParam
作用是将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)。
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
...
}
5、@RequestBody
作用:主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据,Get方式提交时无请求体)。
与@RequestParam的区别:在同一个方法中@RequestBody只能有一个,而@RequestParam可以有多个;
同时使用@RequestParam()和@RequestBody:
@RequestParam( )指定的参数可以是普通元素、数组、集合、对象等等。 (即: @RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据(get是默认的请求体,post是提交表单需要的请求体);而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。
@PutMapping
public JsonResult doUpdateUser(@RequestBody SysUser sysUser){
return new JsonResult(sysUserService.updateUser(sysUser));
}