SpringMVC获取各种类型的请求数据
直接control方法的参数列表写出来就可以了,SpringMVC自动根据参数名,参数类型从请求参数中获取,然后填充到参数中。
获取字符串,包装类型
@RequestMapping("/query")
@ResponseBody
public String query(String name,Integer age){
System.out.println(name+" "+age);
return "ok";
}
http//localhost:8080/cjw?name=zs&age=18
请求参数名与形参名对应,就可以获取到。
ps : 推荐使用包装类型替代基本数据类型,原因是如果基本类型不予许设置为空,如果使用基本类型而获取不到,会引起服务端错误。
ps : @RequestParam
是一个形参注解, 通过 @RequestParam
可以指定一个请求参数与形参对应/要求该形参是必须传入的/设置形参的默认值。
@RequestParam
可选属性 | 作用 | 赋值举例 |
---|---|---|
value | 指定一个请求参数与形参对应 | @RequestParam(value=“userName”) |
required | 要求该形参是必须传入的 | @RequestParam(required=true) |
defaultValue | 设置形参的默认值 | @RequestParam(defaultValue=“18”) |
使用举例
形参name值与请求参数userName绑定,而且name必须被获得,换而言之请求参数userName填写。
形参age的默认值为18
@RequestMapping("/query")
@ResponseBody
public String query(@RequestParam(value="userName",required=true)String name,@RequestParam(defaultValue="18")Integer age){
System.out.println(name+" "+age);
return "ok";
}
获取自定义对象
需要获得自定义对象,在形参中直接写就好了。要求:请求参数名与自定义对象中的属性名对应
@RequestMapping("/add")
@ResponseBody
public String add(User user){
System.out.println(user);
return "ok";
}
ps:属性对象中属性命名规则为, “形参对象属性名.属性名” (请求参数名必须写成这样)
举例 user对象属性cat是一个对象,cat中有一个属性名为color,获取user对象。
public class User {
private Integer id;
private String name;
private String address;
private Cat cat;
public class Cat {
private String color;
color:<input type="text" name="cat.color"><br>
@RequestMapping("/add")
@ResponseBody
public String add(User user){
System.out.println(user);
System.out.println(user.getCat().getColor());
return "ok";
}
获取数组
数组是可以直接获取的
@RequestMapping("/update1")
@ResponseBody
public String update1(String[] games){
for (String g : games) {
System.out.println(g);
}
return "ok";
}
获取集合
SpringMVC不支持形参中直接获取集合,如果把集合作为对象的属性,通过获取对象,间接的获取集合。
举例
public class User {
private List<String> games;
获取Data
SpringMVC不支持形参中直接获取Data类型,需要注册了配置转换器。 见SpringMVC获取Data。
项目打包 提取码:tq9h
环境:eclipse