1、请求控制
1.1 普通类型参数传递
GET/POST方式提交
-
参数名与Controller对应方法名的形参保持一致
访问的URL:http://localhost:8080/dome5/save2?username=zhang&age=10
@RequestMapping("/save2") public String save2(String username,int age){ System.out.println("dome mvc controller running ...."); System.out.println("username="+username); System.out.println("age="+age); return "success.jsp"; }
-
当参数名与Controller对应方法名的形参不一致
使用**@RequestParam**
- @RequestParam 定义在处理器方法的参数名前
- 绑定请求参数与请求方法的形参的映射
@RequestMapping("/save3") public String save3( @RequestParam( name = "name", defaultValue = "yue", required = false ) String username, @RequestParam( name = "a", defaultValue = "5" ) int age){ System.out.println("dome mvc controller running ...."); System.out.println("username="+username); System.out.println("age="+age); return "success.jsp"; }
1.2 数组与集合类型的参数传递
1.2.1 数组类型参数
-
提交多个参数,多个参数的参数名相同,值不同
-
提交的参数名须要与数组形参名相同
访问URL格式:(http://localhost:8080/dome5/save5?username=zhang&username=wang)
@RequestMapping("/save4") // @RequestParam(name = "username") 是非必须的,当参数名相同,可以省略 public String save4(@RequestParam(name = "username") String[] username){ System.out.println("dome4 mvc controller running ...."); System.out.println("username="+username[0]+" "+username[1]); return "success.jsp"; }
1.2.2 集合类型参数
-
提交多个参数,多个参数的参数名相同,值不同
-
对于集合参数的使用,必须使用 @RequestParam 进行映射配置,否则不能将数据正确的装配
-
SpringMVC在装配集合对象时,是先创建对象,再进行赋值,因此形参必须是有构造参数的类,不能是接口
URL格式: http://localhost/requestParam10?nick=Jockme&nick=zahc
@RequestMapping("/save5") // @RequestParam(name = "username")是必须的 public String save5( @RequestParam(name = "username") ArrayList<String> username){ System.out.println("dome5 mvc controller running ...."); System.out.println("username="+username); return "success.jsp"; }
1.3 POJO类型参数传递
- 对于结构较复杂的数据,可以使用POJO类进行参数传递
1.3.1 POJO简单数据类型
-
POJO的属性名要与提交的参数名称保持一致
URL:(http://localhost:8080/dome5/save6?username=zhang&age=12)
@RequestMapping("/save6")
public String save6(User user){
System.out.println("dome6 mvc controller running ....");
System.out.println("username="+user.getUsername());
System.out.println("age="+user.getAge());
return "success.jsp";
}
public class User {
private String username;
private Integer age;
private HashMap<String,String> hashMap;
private ArrayList<String> arrayList;
private Account account;
}
-
参数名冲突:
- 当POJO的属性名与其它形参参数名冲突时,将同时被赋值
- 建议使用@RequestParam注解进行区分
@RequestMapping("/save6") public String save6(User user,String age){ System.out.println("dome6 mvc controller running ...."); return "success.jsp"; }
1.3.2 POJO包含对象属性
- 参数的层次结构要与POJO属性的层次结构保持一致
URL格式:(http://localhost:8080/dome5/save8?account.userId=12345&account.password=zhang)
@RequestMapping("/save8")
public String save8(User user){
System.out.println("dome8 mvc controller running ....");
System.out.println("user="+user);
return "success.jsp";
}
public class Account {
private String userId;
private String password;
}
1.3.3 POJO包含集合属性
-
当POJO中出现List,保存对象数据,参数名称与对象层次结构名称保持一致
-
使用数组格式描述集合中对象的位置
-
URL格式:(http://localhost:8080/dome5/save8?accounts[0].userId=12345&accounts[0].password=zhang)
public class User { private String username; private Integer age; private ArrayList<Account> accounts; }
-
当POJO中出现Map,与List类似的处理