注解方式,写成了两级路径,类上的是一级路径,方法上是二级路径
调用时,必须把两级路径写全,不然不能调用
@Controller
1.具有component的基础含义,被spring管理,当成bean注入到spring容器中
2.可以让该类中的方法返回String,该String默认就是view-name
3.标志该层为表现层或者控制层
@RequestMapping
映射地址和controller或者方法的关系,
写在controller上就是一级路径,写在方法上就是二级路径
同样效果的 GetMapping,PostMapping,PutMapping,DeleteMapping
@ResponseBody
封印 被视图解析器解析的效果( 避过视图解析器的解析 )
返回想要返回的数据类型,String就是String,而不是view-name
@RequestBody
加载参数前
要求前端必须传json格式,就算没有传参,你也得传给我一个空的json {}
如果用form-data传参,其实就是(application/x-www-form-urlencoded)
会报错 415 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported 支持
如果没有传参
也会报错,400 Required request body is missing 请求体缺失
@RestController
1.具有component的基础含义,被spring管理,当成bean注入到spring容器中
2.可以让该类中的方法避过视图解析器的解析,返回的String不再是view-name
3.标志该层为表现层或者控制层
@RestController和@Controller做了一个对比
是否被视图解析器解析
@RequestParam("name") String username
加载参数前
1.当前端传值时,key值和后端不一致,可以用该注解解决,
2.当前端没有传该注解起的名字name时,前端调用接口就会报400的错误
Required String parameter 'name' is not present 不存在不在场
@PathVariable
加载参数前
获取地址栏动态参数,/{as}
如果参数类型转化发生异常,会报错
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer';
nested exception is java.lang.NumberFormatException: For input string: "abc"