文章目录
一、前言
大家好,我是卷心菜,大二学生一枚。
废话不多说,满满的干货,赶快来看看吧~
二、初步认识
那么什么是请求参数呢?
可以直接在请求地址中给于请求参数的值
还可以以表单提交的方式,例如:
<form>
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
爱好:<input type="checkbox" name="hobby" value="C++"/>C++
<input type="checkbox" name="hobby" value="Java"/>Java
<input type="checkbox" name="hobby" value="C"/>C<br/>
<button type="submit">提交</button>
</form>
表单就是这样:
三、servletAPI
具体代码如下:
@RequestMapping("/one")
public String testParam(HttpServletRequest request) {
String username = request.getParameter("username");
String password = request.getParameter("password");
String[] hobbies = request.getParameterValues("hobby");
return "success";
}
当我们在表单中设置正确的请求地址后,提交表单时,就会调用该方法,然后根据表单的name属性值获取相应的参数值。相信大家可以看到,getParameter
是获取单个属性的值,getParameterValues
是获取多个属性的值。
四、方法参数
接下来介绍第二种方法。
具体代码如下:
@RequestMapping("/two")
public String testTwo(String username,
String password,
String hobby) {
System.out.println("username:" + username
+ ",password:" + password
+ ",hobby:" + hobby);
return "success";
}
当然,也可以写成这样:
@RequestMapping("/two")
public String testTwo(String username,
String password,
String[] hobby) {
System.out.println("username:" + username
+ ",password:" + password
+ ",hobby:" + hobby);
return "success";
}
这两种都可以,第一种会把多个参数的值转换成一个数组;第二组会把参数值放进数组中,需要自己遍历得到结果。
五、@RequestParam
推荐使用这种方式,非常好用。
@RequestMapping("/three")
public String testThree(@RequestParam(value = "username",
required = false,
defaultValue = "hello") String username,
@RequestParam(value = "password") String password,
@RequestParam(value = "hobby") String hobby) {
System.out.println("username:" + username
+ ",password:" + password
+ ",hobby:" + hobby);
return "success";
}
@RequestParam注解一共有三个属性:
- value:
指定为形参赋值的请求参数的参数名
- required:
设置是否必须传输此请求参数,默认值为true
- defaultValue:
不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值
运行结果完全正确:
六、实体类
下面看代码:
public class User {
private String username;
private String password;
private String[] hobby;
}
这个user实体类的getter和setter以及toString就不列出来了
@RequestMapping("/four")
public String testFour(User user) {
System.out.println(user);
return "success";
}
测试一下:
提交后运行结果也是完全正确的: