@RequestParam:我们可以使用@RequestParam从请求中提取查询参数,表单参数甚至文件,指示方法参数应绑定到Web请求参数的注释,我们可以从中看到,它提供了4个参数给我们选择,其中value(),和name()互为别名.
public @interface RequestParam {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}
defaultValue:
当没有提供request参数或值为空时,用作回退的默认值
value(别名name):
要绑定到的请求参数的名称
required
是否需要该参数
用法一般都是如下:
@RequestParam(value = "请求参数",required = true,defaultValue = "默认值")
通过处理前端发送的Content-Type 为 application/x-www-form-urlencoded 编码的内容
@RequestBody:指示方法参数的注释应绑定到Web请求的正文。请求的正文通过传递,HttpMessageConverter以根据请求的内容类型解析method参数,它拥有一个参数
public @interface RequestBody {
boolean required() default true;
}
用法实例为
@RequestBody JSONObject jsonparam
该注解接收的参数是来自requestBody中,通过处理前端发送过来的非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如我这里用作于接收一大堆json数据的情况
传过来的请求头中参数Content-Type : application/json的数据
@PathVariable:指示方法参数应绑定到URI模板变量的注释。支持带RequestMapping注释的处理程序方法。参数有三个,跟@RequestParam类似,但是它不提供**defaultValue()**默认值
public @interface PathVariable {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
}
正因为@PathVariable不提供默认值,所以一般来说不允许为空,但是如果你实在想要为空也是有方法的,只需要设置多个url,有参传有参的url,无参传另一个url,当你把required = false时,它可以自动传入另一个url,以此保证不报错.
示例用法:
@RequestMapping(value = "/url/{参数名}" ,"/url/url")
@PathVariable(required = false) String 参数名
学习记录,欢迎指出错误以及补充,谢谢