控制器中使用原生的ServletAPI对象

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"]

相关推荐
ISkp3V8b42 分钟前
基于项目工程构建SBOM(软件物料清单)的研究
java·visual studio
郝学胜-神的一滴3 分钟前
「栈与缩点的艺术」二叉树前序序列化合法性判定:从脑筋急转弯到工程实现
java·开发语言·数据结构·c++·python·算法
掘金者阿豪5 分钟前
行标识符的抉择:深入理解数据库领域的OID与ROWID机制
后端
她说..7 分钟前
Java Object类与String相关高频面试题
java·开发语言·jvm·spring boot·java-ee
计算机学姐13 分钟前
基于SpringBoot的宠物店管理系统
java·vue.js·spring boot·后端·spring·java-ee·intellij-idea
无心水13 分钟前
22、Java开发避坑指南:日期时间、Spring核心与接口设计的最佳实践
java·开发语言·后端·python·spring·java.time·java时间处理
Rsun0455124 分钟前
SpringBoot + Cursor 最佳提示词工程手册
java·spring boot·后端
cch891827 分钟前
汇编VS C++:底层控制与高效开发之争
java·开发语言
openallzzz27 分钟前
版本赶工期可临时扩容:模块开发、联调、交接一体化
java·摸鱼·外包
殷紫川27 分钟前
吃透 MinIO:从底层架构到全场景文件上传下载实战,一篇搞定企业级对象存储
分布式·后端