SpringMVC:获取请求参数-1
1.通过ServletAPI获取
将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象
@RequestMapping("/testServletAPI")
public String testServlet(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username+"--"+password);
return "success";
}
<a th:href="@{/testServletAPI(username=111,password=123)}">原生servletapi</a>
补充:获取一组同名的数据可以用 request.getParameterValues
2.通过控制器方法的形参获取请求参数
//2.通过控制器方法的形参获取请求参数
@RequestMapping("/testcon")
public String testCon(String username,String password,String hobby){
System.out.println(username+"-"+password+"-"+hobby);
return "success";
}
<form th:action="@{/testcon}" method="post">
usernamd:<input type="text" name="username"><br>
password:<input type="text" name="password"><br>
hobby:<input type="checkbox" name="hobby" value="a">a
<input type="checkbox" name="hobby" value="b">b
<input type="checkbox" name="hobby" value="b">b
<input type="submit" value="通过控制器方法的形参获取请求参数">
</form>
输出:aabb-123123-a,b,b
也可以将同名参数转化为数组
@RequestMapping("/testcon")
public String testCon(String username,String password,String[] hobby){
System.out.println(username+"-"+password+"-"+ Arrays.toString(hobby));
return "success";
}
输出:aabb-123123-[a, b, b]
注:
若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数
若使用字符串数组类型的形参,此参数的数组中包含了每一个数据
若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果
3.@RequestParam注解处理请求参数和控制器方法的形参的映射关系
如果在前端html中参数name为"user_name",那java类中,String username就无法获取到传来的值
value:指定为形参赋值的请求参数的参数名
required:设置是否必须传输此请求参数,默认值为true
若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置
defaultValue属性,则页面报错400:Required String parameter 'xxx' is not present;若设置为
false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为
null
defaultValue(默认值,不传或空时,使用此进行赋值):不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值
为""时,则使用默认值为形参赋值
@RequestMapping("/testcon")
public String testCon(
@RequestParam(value = "user_name",required = false,defaultValue = "wangcaicai") String username,
String password,
String[] hobby
){
System.out.println(username+"-"+password+"-"+ Arrays.toString(hobby));
return "success";
}
4.@ResquestHeader注解处理请求头信息和控制器方法的形参的映射关系
@RequestHeader是将请求头信息和控制器方法的形参创建映射关系
@RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam
@RequestMapping("/testcon")
public String testCon(
@RequestHeader(value = "host",required = false,defaultValue = "wangcaicai") String host
){
System.out.println(host);
return "success";
}