SpringMVC:获取请求参数
1、使用原生ServletAPI获取请求参数
如果需要使用原生ServletAPI,需要引入ServletAIP对应的jar包,但这个jar包默认有tomcat提供,所以需要将scope属性设置为provided,使这个jar包在程序编译后不加入程序包中。
<!-- ServletAPI -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
@GetMapping("/test1")
public String test1(HttpServletRequest request){
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println(username+","+password);
return "success";
}
2、通过控制器方法形参获取请求参数
如果请求参数中出现多个同名的请求参数,可以在控制器方法的形参位置设置字符串类型或者字符串数组接收此数据
若使用字符串类型的形参,最终结果为请求参数的每一个值之间使用逗号进行拼接。
若使用字符串数组类型的形参,需要Arrays.toString(hobby)方法进行解析
@RequestMapping("/test3")
public String test3(String username,String password,String[] hobby){
System.out.println(username+','+password+","+ Arrays.toString(hobby));
return "success";
}
注意:
如果请求参数与方法中的形参不一致,使用@RequestParams进行转换
@RequestParam是将请求参数和控制器方法的形参创建映射关系。
@RequestParam注解一共有三个属性:
Value:指定为形参赋值的请求参数的参数名
Required:设置是否必须传输此请求参数,默认值为true
若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400,Required String parameter ’xxx’ is not present,若设置为false,
则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null。
DefaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或者传输的值为""时,则使用默认值为形参赋值。
@GetMapping("/test4")
public String test4(@RequestParam("name") String username, @RequestParam("pwd") String password){
System.out.println(username+','+password);
return "success";
}
3、通过使用@PathVariable接收请求参数
此方式常用于通过RestFul风格拼接在请求地址中的参数值
@GetMapping("/test2/{username}/{password}")
public String test2(@PathVariable String username,@PathVariable String password){
System.out.println(username+','+password);
return "success";
}
4、通过实体类形参POJO获取请求参数(最常用方式)
浏览器传输的请求参数的参数名需要和实体类中的属性名保持一致,请求参数就会自动为属性进行赋值。
@GetMapping("/userAdd")
public String test5(User user){
System.out.println(user);
return "success";
}
5、@RequestHeader与@CookieValue(了解)
@RequestHeader是将请求头信息和控制器方法的形参创建映射关系
@RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam
@CookieValue是将CookieValue数据和控制器方法的形参创建映射关系
@CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam