如何通过SpringMVC获取前端请求数据并应用三个作用域?
摘要:获取请求数据 使用原生的Servlet API获取请求数据处理注册请求 @PostMapping("registeruser") public String register(
获取请求数据
使用原生的Servlet API获取请求数据
// 处理注册请求
@PostMapping("/register/user")
public String register(HttpServletRequest request, HttpSession session, HttpServletResponse resp) {
// 获取请求参数
// HttpServletRequest\HttpSession\HttpServletResponse 都属于Servlet API,Spring MVC会自动将它们注入到方法参数中
String username = request.getParameter("username");
String password = request.getParameter("password");
return "success";
}
@RequestParam注解
@RequestParam的作用:将请求参数与方法上的形参映射
@PostMapping("/register/user/2")
public String register2(
// @RequestParam注解用于将请求参数绑定到方法参数上,value属性指定请求参数的名称,参数名可以和请求参数名不同
// 可以自动将请求参数转换为方法参数的类型,例如将字符串转换为整数、日期等
@RequestParam("username") String username,
@RequestParam("password") String password) {
return "success";
}
@RequestParam的required和defaultValue属性
required属性:设置该参数是否是必须的。默认true,默认参数是必须的,如果前端没有提交这个参数,则报错。如果设置为false。则不会报错。
defaultValue属性:给参数设置默认值,如果前端没传这个参数,则会使用默认值。
@PostMapping("/register/user/2")
public String register2(
// @RequestParam注解用于将请求参数绑定到方法参数上,value属性指定请求参数的名称,参数名可以和请求参数名不同
// 可以自动将请求参数转换为方法参数的类型,例如将字符串转换为整数、日期等
@RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam(value = "age",required = false,defaultValue = "20") Integer age) {
return "success";
}
依靠控制器方法上的形参名接收
如果请求的参数名和控制器方法上的形参名保持一致。那么 @RequestParam注解可以省略。
如果没对应上,则值为null。
@PostMapping("/register/user/3")
public String register3(String username, String password) {
// 这种方式要求请求参数的名称必须与方法参数的名称一致,Spring MVC会自动将请求参数绑定到方法参数上
return "success";
}
使用POJO类/JavaBean接收参数
要求:POJO类/JavaBean的属性名必须和请求参数的参数名保持一致。
底层原理使用反射机制。并且调用JavaBean的set方法,set方法的方法名是关键,springMVC是通过set方法的方法名将对应的参数注入到JavaBean中的。
@PostMapping("/register/user/4")
public String register4(User user) {
// 这种方式要求请求参数的名称必须与User类的属性名称一致,Spring MVC会自动将请求参数绑定到User对象的属性上
return "success";
}
RequestHeader注解
作用:将请求头信息映射到方法的形参上。
和@RequestParam注解功能相似。
