开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情
SpringMVC获取请求参数
下面介绍一些springMVC里面的一些获取请求参数的方法。
通过servletAPI获取
将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象
@RequestMapping("/test")
public String test(HttpServletRequest request){
String username = request.getParameter ("username");
String password = request.getParameter ("password");
System.out.println("username: "+username+",password: "+password) ;
return" success" ;
}
通过控制器方法的形参获取请求参数
在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在 DispatcherServlet中就会将请求参数赋值给相应的形参
<form th:action="@{/testPath}" method="post">
<input type="text" name= "id"><br>
<input type="text" name="pass"><br>
<input type="checkbox" name="hobby" value="a">a<br>
<input type=" checkbox" name="hobby" value="b">b<br>
<input type=" checkbox" name= "hobby" value="c">c<br>
<input type= "submit" value="test">
</form>
@RequestMapping(value = "/testPath" )
形参参数名与请求参数名一致
若请求参数出现多个重名,可以使用String类或String数组接受
String类会用","拼接
pubLic String toTarget(int id , String pass, String hobby){
System. out. println(id+" "+pass+" "+hobby);
return "target";
}
该案例会根据用户输入的id、密码以及多选框的选择,输出value值
@RequestParam
@RequestParam是将请求参数和控制器方法的形参创建映射关系
@RequestParam注解一共有三个属性:
-
value:指定为形参赋值的请求参数的参数名
-
required:设置是否必须传输此请求参数,默认值为true
若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置 defaultValue属性,则页面报错
400: Required String parameter 'xxx' is not present;若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null
-
defaultValue:不管required属性值为true或false, 当value所指定的请求参数没有传输时,则使用默认值为形参赋值
public String ToTarger ( @RequestParam(value = "id", required = true, defaultVaLue = "-1") String id String pass , String hobby){ System.out.println(id+" "+pass+" ” +hobby); return "target" ; }
上面@RequestParam案例中,required = true:必须传输 ,默认为true; defaultValue = "-1":默认值-1, 一般为请求为空时,会使用值为形参赋值