1.在无注解下获取参数
在没有注解的情况下, SpringMVC 也可以获取参数,且参数允许为空,唯一的要求是参数名称
和HTTP 请求的参数名称保持一致
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/get")
@ResponseBody
public User get(Long id){
return userService.getUser(id);
}
}
启动Spring Boot 应用后,在浏览器中请求URL :
http://localhost:8080/user/get?id=1
2.使用@ RequestParam 获取参数
在前后台分离的趋势下,前端的命名规则可能与后端的规则不同,这时需要把前端的参数与后
端对应起来。Spring MVC 提供了注解@RequestParam 来确定前后端参数名称的映射关系
@GetMapping("/annotation")
@ResponseBody
public Map requestParam(@RequestParam("user_name")String userName,
@RequestParam("password")String pwd,
@RequestParam(value = "note",required = false)String note){
Map map = new HashMap();
map.put("success","ok");
return map;
}
在浏览器地址栏输入http://localhost:8080/my/annotation?user_name=james&password=2,就能够看到请求的结果了
在默认的情况下@RequestParam 标注的参数是不能为空的,为了让它能够
为空,可以配置其属性required 为false
3.传递数组
@GetMapping("/requestArray")
@ResponseBody
public Map requestArray(int[] a){
Map map = new HashMap();
map.put("intarray",a);
return map;
}
浏览器输入http://localhost:8082/user/requestArray?a=1,2,3,4,5
4.传递JSON
@RequestMapping("/save")
@ResponseBody
public User save(@RequestBody User user){
userService.saveUser(user);
return user;
}
5.通过URL 传递参数
在一些网站中,提出了REST 风格,这时参数往往通过URL 进行传递。
可以通过处理器映射和注解@PathVariable 的组合获取URL 参数。首先通过处理器映射可以定位参数
的位置和名称,而@PathVariable 则可以通过名称来获取参数
@GetMapping("/show/{id}")
@ResponseBody
public Map requestArray(@PathVariable("id") String id){
Map map = new HashMap();
map.put("id",id);
return map;
}
浏览器输入 http://localhost:8082/user/show/1
6.获取格式化参数
对日期和数字类型的转换注解进行处理,分别是@ D ateTimeF ormat 和@NumberFormat o 其中
@DateTimeFormat 是针对日期进行格式化的,@Numbe rF ormat 则是针对数字进行格式化的。
@GetMapping("/format")
@ResponseBody
public Map format(@DateTimeFormat(iso= DateTimeFormat.ISO.DATE)Date date,
@NumberFormat(pattern = "#,###.##")Double number){
Map map = new HashMap();
map.put("date",date);
map.put("number",number);
return map;
}
浏览器输入 http://localhost:8082/user/format?date=2019-04-15&number=1,235,564.123
7.自定义参数转换规则
Converter 是一对一的转化器, 也就是从一种类型转换为另外一种类型
/**
* 自定义字符串狗狗转换器
*/
@Component
public class String2DogConverter implements Converter<String,Dog>{
@Nullable
@Override
public Dog convert(String s) {
String[] strs = s.split("-");
String name = strs[0];
String owner = strs[1];
Dog dog = new Dog();
dog.setName(name);
dog.setOwner(owner);
return dog;
}
}
@Data
public class Dog implements Serializable {
private static final long serialVersionUID = 2019043013327777777L;
private String name;
private String owner;
}
@GetMapping("/getDog")
@ResponseBody
public Dog getDog(Dog dog){
return dog;
}