1、接收参数
@RequestParam
映射请求参数,从request里面取值,属性如下:
name/value:映射字段名称
required表示是否必须,默认为true
defaultValue请求参数的默认值
@RequestMapping(method=RequestMethod.GET)
public List<Spittle> spittles(
@RequestParam(value="max",
defaultValue=MAX_LONG_AS_STRING) long max,
@RequestParam(value="count", defaultValue="20",required=false) int count) {
return spittleRepository.findSpittles(max, count);
}
@PathVariable
从URI模板里面来填充,属性如下:
name/value:映射字段名称
required表示是否必须,默认为true
@RequestMapping(value="/{spittleId}", method=RequestMethod.GET)
public String spittle(
@PathVariable("spittleId") long spittleId) {
return "spittle";
}
@RequestBody
一般是post请求的时候才会使用这个请求,把参数丢在requestbody里面,属性如下:
required表示是否必须,默认为true
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Req {
private String key;
private Integer size;
}
@RequestMapping(value = "/body", method = {RequestMethod.POST, RequestMethod.GET, RequestMethod.OPTIONS})
public BaseRsp body(@RequestBody Req req) {
log.info("req: {}", req);
return new BaseRsp<>(req);
}
2、校验表单
从
Spring 3.0
开始,在
Spring MVC
中提供了对
Java
校验
API的支持。这个
Java API
的实现即可,比如
Hibernate Validator
。
Java
校验
API
定义了多个注解,这些注解可以放到属性上,从而限制这些属性的值。所有的注解都位于javax.validation.constraints
包中。注解如下:
注解 | 描述 |
---|---|
@AssertFalse |
所注解的元素必须是
Boolean
类型,并且值为
false
|
@AssertTrue |
所注解的元素必须是
Boolean
类型,并且值为
true
|
@DecimalMax |
所注解的元素必须是数字,并且它的值要小于或等于给定的
BigDecimalString
值
|
@DecimalMin |
所注解的元素必须是数字,并且它的值要大于或等于给定的
BigDecimalString
值
|
@Digits | 所有注解的元素必须是数字,并且它的值必须有指定的位数 |
@Future |
所注解的元素的值必须是一个将来的日期
|
@Max |
所注解的元素必须是数字,并且它的值要小于或等于给定的值
|
@Min |
所注解的元素必须是数字,并且它的值要大于或等于给定的值
|
@NotNull |
所注解元素的值必须不能为
null
|
@Null |
所注解元素的值必须为
null
|
@Past |
所注解的元素的值必须是一个已过去的日期
|
@Pattern | 所有注解元素的值必须匹配给定的正则表达式 |
@Size |
所注解的元素的值必须是
String
、集合或数组,并且它的长度要符合给定的范围
|
demo如下:
package spittr;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
public class Spitter {
private Long id;
@NotNull
@Size(min=5, max=16)
private String username;
@NotNull
@Size(min=5, max=25)
private String password;
@NotNull
@Size(min=2, max=30)
private String firstName;
@NotNull
@Size(min=2, max=30)
private String lastName;
}
@Valid:作用的对象必须满足校验限制。
@RequestMapping(value="/register", method=POST)
public String processRegistration(
@Valid Spitter spitter) {
...
return "success";
}