目录
通过原生ServletAPI获取参数
我们可以将 HttpServletRequest 参数设置为控制器方法的形参,然后 DispatcherServlet 就会自动将当前请求的请求报文对象传入
测试:获取 test_param.html 页面提交的表单数据并打印到控制台上
test_param.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" xmlns:th="http://thymeleaf.org">
<title>测试请求参数</title>
</head>
<body>
<h1>测试请求参数</h1>
<form th:action="@{/test1}">
<p>username: <input type="text" name="username"></p>
<p>password: <input type="text" name="password"></p>
<input type="submit" value="提交">
</form>
</body>
</html>
控制器方法
@RequestMapping("/test1")
public String testServletAPI(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username: " + username + ", password: " + password);
return "success";
}
结果
通过控制器方法的形参获取请求参数
我们可以在控制器方法中设置和请求参数同名的形参,当匹配到请求映射时,DispatcherServlet 就会将请求参数赋给对应的形参
测试(不存在同名参数):与上面测试相同,但是修改了控制器方法
修改后的控制器方法:由于参数名为 username 和 password ,因此形参名要与其相同
@RequestMapping("/test1")
public String testParam(String username, String password){
System.out.println("testParam: " + "username: " + username + ", password: " + password);
return "success";
}
因此如果不存在同名参数,我们将形参名设置为与参数名相同即可获取请求参数
测试(存在同名参数):在页面中设置一个复选框用于测试
控制器方法1: