接收客户端提交的请求参数
- 1.使用HttpServletRequest接收请求参数
- 2.将请求参数设计为方法的参数
- 3. 使用封装的类型接收请求参数
- 4. 小结
1.使用HttpServletRequest接收请求参数
在处理请求的方法的参数列表中,添加HttpServletRequest
类型的参数,在处理请求的过程中,调用该参数对象的getParameter()
方法即可获取请求参数:String value = request.getParameter("value");
2.将请求参数设计为方法的参数
可以将客户端提交的请求参数直接声明为处理请求的方法的参数,并且,可以直接将参数声明为期望的数据类型,例如:
// 【处理注册请求】
@RequestMapping("handle_reg.do")
@ResponseBody
public String handleReg(String username, String password, Integer age, String phone, String email) {
System.out.println("UserController.handleReg()");
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println("age=" + age);
System.out.println("phone=" + phone);
System.out.println("email=" + email);
return "Over";
}
使用这种做法时,必须保证客户端提交的请求参数与服务器端处理请求的方法的参数的名称是一致的!如果名称不一致,默认情况下,则服务器端处理请求的方法中,对应的参数将是null
!
如果服务器端决定不使用方法的参数名作为客户端应该提交的请求参数名称,还可以在方法的参数之前添加@RequestParam
注解,以指定参数名,例如:
public String handleReg(@RequestParam("username") String aaaaa, String password)
按照以上代码中的注解,则客户端必须按照username
和password
这2个名称来提交请求参数!
3. 使用封装的类型接收请求参数
可以事先自定义类,将需要接收的请求参数都声明为这个类的属性,同时,为这些属性生成Set / Get方法:
package cn.tedu.spring;
public class User {
private String username;
private String password;
private Integer age;
private String phone;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", age=" + age + ", phone=" + phone
+ ", email=" + email + "]";
}
}
然后,将自定义的数据类型声明为处理请求的方法的参数即可:
// 【处理注册请求】
@RequestMapping("handle_reg.do")
@ResponseBody
public String handleReg(User user) {
System.out.println("UserController.handleReg()");
System.out.println(user);
return "Over";
}
使用这种做法,应该保证客户端提交的请求参数名称与以上User
类中的属性名称相同,且User
类中的各属性都有规范名称的Set / Get方法!
4. 小结
以上3种方式中,1
是在任何情况下都不推荐使用的!
通常,当参数数量较少且固定(数量或意义)时,优先使用2
的做法;
当参数数量较多或不固定时,优先使用3
的做法。