springmvc获取请求参数
# 获取请求参数
## 【不推荐】通过HttpServletRequest
在处理请求的方法中,添加`HttpServletRequest`类型的参数,调用它的`getParameter(String)`方法即可获取散民提交的参数:
@RequestMapping("/handleReg.do")
public String handleReg(
HttpServletRequest request) {
String username
= request.getParameter("username");
String password
= request.getParameter("password");
int age
= Integer.parseInt(request.getParameter("age"));
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println("age=" + age);
return null; // 暂不考虑后续的显示,所以返回null
}
## 【推荐】直接在方法中声明对应的参数
在处理请求的方法中,添加需要获取的参数即可:
@RequestMapping("/handleReg.do")
public String handleReg(
String username,
String password,
int age) {
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println("age=" + age);
return null; // 暂不考虑后续的显示,所以返回null
}

需要注意:自行添加的方法参数的名称应该与用户提交的名称是匹配的!如果无法协调,可以使用`@RequestParam`注解:
public String handleReg(
@RequestParam("uname")
String username) {
}
当使用了`@RequestParam`注解后,这个参数默认是必须的!即如果没有提交该参数,将导致程序出错,如果并不要求必须提交这个参数,还应该在`@RequestParam`中配置`required`属性:
public String handleReg(
@RequestParam(value="uname", required=true)
String username) {
}
这种做法的优点是:方便,并且可以使Spring MVC框架自动处理数据类型的问题。
这种做法的缺点是:不便于接收大量参数。
## 【推荐】使用自定义数据类型
如果提交的数据较多,或者直接符合项目中某种数据类型,则可以在处理请求的方法中,添加自定义数据类型的参数,以便于接收用户提交的多项数据:
@RequestMapping("/handleReg.do")
public String handleReg(User user) {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
System.out.println(user.getAge());
return null; // 暂不考虑后续的显示,所以返回null
}
## 小结
不推荐使用`HttpServletRequest`获取参数,因为使用比较麻烦!另2种做法,都是非常好用的做法,根据实际情况进行选取即可!
注意:以上所有方法并不冲突,可以混合使用!
## 【不推荐】通过HttpServletRequest
在处理请求的方法中,添加`HttpServletRequest`类型的参数,调用它的`getParameter(String)`方法即可获取散民提交的参数:
@RequestMapping("/handleReg.do")
public String handleReg(
HttpServletRequest request) {
String username
= request.getParameter("username");
String password
= request.getParameter("password");
int age
= Integer.parseInt(request.getParameter("age"));
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println("age=" + age);
return null; // 暂不考虑后续的显示,所以返回null
}
## 【推荐】直接在方法中声明对应的参数
在处理请求的方法中,添加需要获取的参数即可:
@RequestMapping("/handleReg.do")
public String handleReg(
String username,
String password,
int age) {
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println("age=" + age);
return null; // 暂不考虑后续的显示,所以返回null
}
需要注意:自行添加的方法参数的名称应该与用户提交的名称是匹配的!如果无法协调,可以使用`@RequestParam`注解:
public String handleReg(
@RequestParam("uname")
String username) {
}
当使用了`@RequestParam`注解后,这个参数默认是必须的!即如果没有提交该参数,将导致程序出错,如果并不要求必须提交这个参数,还应该在`@RequestParam`中配置`required`属性:
public String handleReg(
@RequestParam(value="uname", required=true)
String username) {
}
这种做法的优点是:方便,并且可以使Spring MVC框架自动处理数据类型的问题。
这种做法的缺点是:不便于接收大量参数。
## 【推荐】使用自定义数据类型
如果提交的数据较多,或者直接符合项目中某种数据类型,则可以在处理请求的方法中,添加自定义数据类型的参数,以便于接收用户提交的多项数据:
@RequestMapping("/handleReg.do")
public String handleReg(User user) {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
System.out.println(user.getAge());
return null; // 暂不考虑后续的显示,所以返回null
}
## 小结
不推荐使用`HttpServletRequest`获取参数,因为使用比较麻烦!另2种做法,都是非常好用的做法,根据实际情况进行选取即可!
注意:以上所有方法并不冲突,可以混合使用!