SpringMVC 内部本质就是基于 ServletAPI,所以 SpringMVC 允许你在控制器中直接注入它们:
public String save6(HttpServletRequest request, HttpServletResponse response)
1. 打印 request
System.out.println(request);
request 代表一次用户请求的所有信息,例如:URL,协议头,请求方式(GET、POST),参数,Cookie,Session,客户端 IP
打印出来只是为了让你知道:SpringMVC 真给你的是原生 request 对象。
2. 获取 HttpSession(重点)
HttpSession session = request.getSession(); System.out.println(session);
session 作用:保存"用户级别"的数据;登录信息、购物车信息、权限信息
session特征:一次浏览器关闭之前,数据一直都在。
request.getSession() 用于:用户登入后保存用户信息,购物车功能,权限控制
3. 获取单个请求参数
String username = request.getParameter("username"); String age = request.getParameter("age");
从表单中取 input 的值,例如:
<input name="username" />
request.getParameter() 永远返回 String
不管你传 number、boolean、日期,全都会变成 String。
4. 打印参数(调试用)
System.out.println(username); System.out.println(age);
5. 获取所有参数 Map(重点)
Map<String, String[]> parameterMap = request.getParameterMap();
(1)所有参数都被存成 Map
(2)key → 参数名
(3)value → 参数值数组(即使有 1 个值也用数组存)
例如你的表单:
username = "张三" age = "20"
Map 结构是:
{ "username": ["张三"], "age": ["20"] }
6. 遍历参数 Map
for (Map.Entry<String, String[]> entry : entrySet) { String key = entry.getKey(); // 参数名 String[] values = entry.getValue(); // 参数值数组(一个参数也用数组存) System.out.println("参数名:" + key); for (String v : values) { System.out.println("参数值:" + v); } }
key = input 名字
value = input 的值数组
map.entrySet() 是所有的 key-value 对
每次循环取出一个 entry
entry 相当于:
"username" = ["张三"] "age" = ["20"]
entry.getKey() 得到 key
→ username / age
entry.getValue() 得到 value(数组)
→ ["张三"] / ["20"]