springmvc作为前后端交互的入口提供了多种注解用于接受前端传递过来的参数,并可以自动的封装成实体类。
1.@ModelAttribute: 该注解可以将前端传入的参数,封装在对应的实体类中,注意前端需是get请求将参数封装到url中或者表单提交类型Content-Type:“application/x-www-form-urlencoded”,Content-Type:“application/json”类型的无法接收到。该注解写与不写,对于接收参数来说效果一样,只是底层封装的逻辑不同而已,都可以自动封装成实体类
2.@RequestParam: 该注解可以接受前端的参数,一般用于基本类型的接收(如String),当该参数写于参数前时,该参数常用的两个属性:value=“前端参数名”用来对应封装前端参数的变量名称,required=false,该参数是否必传,缺省为true,必传。同样适合get和Content-Type:“application/x-www-form-urlencoded”,Content-Type:“application/json”类型的无法接收到。不写该注解时,参数可传可不传,对应名称为定义形参名称。
3.@ReqestBody: 该注解用来修饰实体类,表名前端需要以json格式的数据进行传输,需要有请求体,url上的参数无法封装,类型需要Content-Type:“application/json”,Content-Type:"application/x-www-form-urlencoded"不行,会报错
4.@PathVariable: 该注解用来接收restful请求的参数,要在requestMapping(“路径/{参数}”),形参名称相同,即可接收
除以上的几种springmvc提供的注解外,当原有参数解析器无法满足时,我们同样可以进行自定义参数解析器。
1.定义一个类实现HandlerMethodArgumentResolver接口,重写方法
@Component
public class ParamHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
/**
* @Description: 该方法声明注解的名称
*/
@Override