注解 | 作用 | 备注 | 使用 | 其他 |
---|---|---|---|---|
@Controller | 处理http请求 | 继承了Spring的@Component注解,会把对应的类声明为Spring对应的Bean,并且可以被Web组件管理 | Controller 类上 | 返回json数据或Xml需要结合@ResponseBody注解 |
@RestController | 用于返回Json,与@ResponseBody配合@Controller效果相同 | @RestController==@Controller+@Responsebody | Controller 类上 | 涉及jsp、html需要配合ModelAndView |
注解 | 作用 | 备注 | 使用 | 其他 |
---|---|---|---|---|
@ResponseBody | 将后端以return返回的javabean类型数据转为json类型数据 | 示函数的返回不需要渲染为View,应该直接作为Response的内容写回客户端 | 使用在类上 | JSON传输与@Controller结合 |
@RequestBody | 获取请求体的参数值 作用于将前端传来的json格式的数据转为自己定义好的javabean对象 | 处理contentType不为application/x-www-form-urlencoded的数据,比如application/json | 使用在单独的方法上 | 对象接收 |
@PathVariable | 获取url中的路径参数 格式:url/{参数} | @PathVariable 是从一个URI模板里面来填充 | 在参数前使用 | 参数使用 |
@RequestParam | 注解接受来源于url的参数 格式:url?参数 | @RequestParam 是从request里面取值 | 在参数前使用 | 参数使用 |
注解 | 作用 | 其他 |
---|---|---|
@RequestMapping | 配置url映射,需要多个时可以将value写成一个集合 | RequestMapping参数 |
@GetMapping | 组合注解,相当于@RequestMapping(method = RequestMethod.GET) | value、params |
@PostMapping | 组合注解,相当于@RequestMapping(method = RequestMethod.POST) | JSON、From参数接收 |
涉及jsp、html页面
如果要返回的是jsp、html等页面时有两种方式:
- 仅使用Controller类注解,不添加方法注解
- 使用RestController类注解,方法体配合ModelAndView使用
@RestController
class xxxController{
@GetMapping(value = "/XXX")
public ModelAnd View test(){
ModelAndView modelAndView = new ModelAndView("index");
return modelAndView ;
}
RequestBody方法体接收
@PostMapping("/Post")
public Poster paramTest(@RequestBody Poster poster){
System.out.println(poster);
return poster;
}
RequestMapping参数使用
https://blog.csdn.net/dieaixia5129/article/details/122967672
GetMapping 参数使用
value
//可通过{}指定动态参数定义地址
@GetMapping("/base/listforspu/{spuId}")
params
//指定包含参数名值为tom的请求通过
@GetMapping(value ="/service",params ="name=tom")
//指定拦截参数名值为tom的请求
@GetMapping(value ="/service",params ="name!=tom")
//路径中不包含参数即可通过
@GetMapping(value ="/service",params ={"!name"})
//路径中包含参数即可通过
@GetMapping(value ="/service",params ={"name"})
JSON、from
JSON参数接收
//通过Map接收
@PostMapping(value = "/map")
public R test(
@RequestBody Map<String,Object> user){
String name = user.get("name").toString();
return R.success(name);
}
//通过自定义对象接收
@PostMapping(value = "/user")
public R test1(
@RequestBody User user){
String access = user.toString();
return R.success(access);
}
}
表单请求
//通过对象接收,可不使用@RequestBody
@PostMapping(value = "/user/form")
public R test3(
User user){
String access = user.toString();
return R.success(access);
}
}
RequestParam参数使用
(@RequestParam(value="参数1(与url传输参数名一致)", required=true) String param1,
@RequestParam(value="参数2(与url传输参数名一致)", required=false) String param2)
RequestParam 支持以下参数:
- 默认值
- required
- 判定参数是否必须存在
- value
- value的值,值需要绑定请求参数的名称,参数名要与url串的命名一致
PathVariable参数使用
https://blog.csdn.net/weixin_38972910/article/details/84880669
总结
- 如果要在Controller层返回一个页面,用注解@Controller;如果让其作为一个接口,用@RestController
- 在GET请求中(@GetMapping),不能使用@RequestBody。
- 在POST请求(@PostMapping),可以使用@RequestBody和@RequestParam
- @RequestParam注解接受的参数来源于url中,格式为xxx?参数1&参数2,而@RequestBody注解接收的参数则是来自于requestBody中,即请求体中。