@RequestMapping
@RequestMapping(value = "/myWeb/v1", produces = {"application/json;charset=UTF-8"})
RequestMapping是一个用来处理请求地址映射的注解,可以用在类或者方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。源码中@Target注解:
@Target({ElementType.METHOD, ElementType.TYPE})
RequestMapping注解有7个属性(value等同于path只算一个):
public @interface RequestMapping {
//指定映射的名称
String name() default "";
//指定请求路径的地址
@AliasFor("path")
String[] value() default {};
//同value
@AliasFor("value")
String[] path() default {};
//指定请求的方式,是一个RequsetMethod数组,可以配置多个方法
RequestMethod[] method() default {};
//指定参数的类型
String[] params() default {};
//指定包含的header值
String[] headers() default {};
//指定数据请求的格式
String[] consumes() default {};
//指定返回的内容类型
String[] produces() default {};
}
- name
可以看到注解中的属性除了 name() 返回的字符串,其它的方法均返回数组,也就是可以定义多个属性值,例如 value() 和 path() 都可以同时定义多个字符串值来接收多个URL请求。
2. value
默认RequestMapping("str")即为value的值。value的uri可以指定为普通的具体值,可以指定为含有某变量的一类值,也可以指定为含正则表达式的一类值。
e.g. value="/products" ,value="/products/{productId}" ,value="/products/{productId}_{levelUd:\\d*}"
3. method
method属性定义了请求的方式,GET、POST、PUT、DELETE等。如果它定义了多个值,那么就可以适应多种请求方式。
e.g. method={RequestMethod.POST, RequestMethod.GET}
4. comsumes
comsumes指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;即方法仅处理request Content-Type为“application/json”类型的请求。
5 produces
produces属性指定了返回值类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回,它不但可以设置返回值类型还可以设定返回值的字符编码。
e.g. produces="application/json" ,produces = {"application/json;charset=UTF-8"}
6. params
该属性表示请求参数,也就是追加在URL上的键值对,多个请求参数以&隔开。@RequestMapping 中可以使用 params 来限制请求参数,来实现进一步的过滤请求。
7. headers
header属性表示请求头,可以限制客户端发来的请求。
用于HTTP协义交互的信息被称为HTTP报文,客户端发送的HTTP报文被称为请求报文,服务器发回给客户端的HTTP报文称为响应报文,报文由报文头部和报文体组成。
请求头部(Request Headers):请求头包含许多有关客户端环境和请求正文的信息,例如浏览器支持的语言、请求的服务器地址、客户端的操作系统等。
响应头部(Rsponse Headers):响应头也包含许多有用的信息,包括服务器类型、日期、响应内容的类型及编码,响应内容的长度等等。
参数绑定@RequestParam
public String getMySonList(@RequestParam String page, @RequestParam String page_size, @RequestParam String MyName, HttpServletRequest request, @RequestParam(required = false) String MyAge)
@RequestParam 注解配合 @RequestMapping 一起使用的场合,可以将请求的参数同处理方法的参数绑定在一起。
@RequestParam 注解使用的时候可以有一个值,也可以没有值。这个值指定了需要被映射到处理方法参数的请求参数。
@RequestParam 注解的 required 这个参数定义了参数值是否是必须要传的。
@RequestParam 的 defaultValue 取值就是用来给取值为空的请求参数提供一个默认值的。
@RequestParam(value = "abc", defaultValue = "def") String aaa
在这行代码中,如果 abc 这个请求参数为空,那么外部处理方法就会接收 def 这个默认值作为其参数。
断言工具类Assert
org.springframework.util.Assert;
Assert,通常用于数据合法性检查。简化了数据的判断。
if(page == null || page.equals("")){
throw new IllegalArgumentException("page must be provided!");
}
Assert.hasText(page, "page must be provided!");
常用的Assert类中的断言方法:
Assert.notNull(Object object, "object is required") - 对象非空
Assert.isTrue(Object object, "object must be true") - 对象必须为true
Assert.notEmpty(Collection collection, "collection must not be empty") - 集合非空
Assert.hasLength(String text, "text must be specified") - 字符不为null且字符长度不为0
Assert.hasText(String text, "text must not be empty") - text 不为null且必须至少包含一个非空格的字符
Assert.isInstanceOf(Class clazz, Object obj, "clazz must be of type [clazz]") - obj必须能被正确造型成为clazz 指定的类