SpringBootWeb项目案例

以下是该项目的存储路径: D:\develop\Java\web-ai -project\springboot-web-01

项目相关代码解释剩余解释写在idea项目中的注释里

lines.stream().map(line -> {
            String[] parts = line.split(",");
            Integer id = Integer.parseInt(parts[0]);
            String username = parts[1];
            String password = parts[2];
            String name = parts[3];
            Integer age = Integer.parseInt(parts[4]);
            LocalDateTime updateTime = LocalDateTime.parse(parts[5], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            return new User(id, username, password, name, age, updateTime);
        }).collect(Collectors.toList()); 

这行代码是 Java 8+ 的 Stream 流操作,作用非常明确:

核心作用(一句话)
把文件里的每一行字符串 → 转换成 User 对象 → 最终变成一个 List 列表
也就是:文本行 → 自动解析封装成 Java 对象

用最通俗的话讲

  • lines 是每行文本的列表
  • stream() 开启流水线加工
  • map() 就是加工工序
    • 把一行文本切一刀(逗号)
    • 取出每个字段
    • 转成对应类型
    • 塞进 new User()
    • collect(toList()):把加工好的 User 打包成列表

最终结果
你会得到:

List< User> userList
里面每个元素都是完整的 User 对象:

整体流程(你整套代码)

  1. 读取 user.txt 文件
  2. 按行读取成 List< String>
  3. 逐行切割 → 解析 → 封装
  4. 最终得到 List< User>
    这就是 Java 读取配置文件 / 数据文件的标准写法!

为什么中间方法用map?

Stream 里的 .map() ≠ 集合 java.util.Map
它们名字一样,但完全不是一个东西!
一个是加工方法,一个是存储数据的集合。

1. 先分清两个完全不同的 “map”

① Stream 中的 .map() —— 方法
作用:把一个东西 转换成 另一个东西
= 类型转换、数据加工

② java.util.Map —— 集合
作用:存储键值对
key - value

2. 为什么这里必须用 .map()?

因为你要做一件事:
把每行字符串 → 变成 User 对象
Stream 提供的方法里:

  • .map () = 一对一转换
  • .filter () = 过滤
  • .flatMap () = 一对多展开
  • .sorted () = 排序

你现在的需求是:
每一行字符串 → 变成一个 User
1 对 1 转换 → 必须用 .map()

4. Stream 里根本没有 .set() .list() 这些中间方法!

Stream 中间操作只有这些:

  • .map()
  • .filter()
  • .flatMap()
  • .distinct()
  • .sorted()
  • .limit()
  • .skip()
  • ...

没有 .set () 没有 .list ()!
你可能混淆了:
结尾的 .collect(Collectors.toList())
这是最终收集成 List 集合
不是中间操作!

5. 一句话总结

  • .map () = 转换、加工、映射
  • 你要把 String → User,必须用它
  • 和 Map 集合没有半毛钱关系

最终极简记忆
.map() = 转换器
进去一个类型 → 出来另一个类型

以下是项目的前后端交互流程图

image

🔍 流程拆解(对应图里的每一步)

  1. 前端发请求:你的 Vue 页面加载完成后,mounted 钩子调用 search() 方法,通过 axios.get('/list') 向后端发送异步请求。
  2. 后端接收请求:Spring Boot 接收到请求,根据 @RequestMapping("/list") 找到对应的 list() 方法。
  3. 后端读取数据:list() 方法读取 user.txt 文件,解析里面的用户信息。
  4. 后端封装数据:把解析出来的数据,封装成 List< User> 类型的对象(这一步就是 Lombok 注解帮你生成的无参 / 全参构造器发挥作用的地方)。
  5. 后端返回数据:Spring Boot 自动把 List 转换成 JSON 格式,通过 HTTP 响应发回给前端。
  6. 前端渲染数据Vue 拿到 JSON 数据,赋值给 userList,再通过 v-for 循环渲染到 HTML 表格里,最终你就能看到用户列表了。

💡 补充说明

  • http://localhost:8080/list 就是前后端之间的通信地址,是这整个流程的 “入口”。
  • 前端的 axios.get('/list') 和后端的 @RequestMapping("/list") 必须完全对应,请求才能正确匹配到对应的后端方法。

http://localhost:8080/list 到底是什么、属于哪里的知识?

http://localhost:8080/list = 后端接口地址
属于 Spring Boot + Spring MVC 知识
作用:前后端通行的 “地址”

1. localhost:8080

  • localhost:你自己的电脑
  • 8080:Spring Boot 启动的端口号
    → 这是 Spring Boot 项目运行的地址

2. /list
这是你在 Java 里写的:
@RequestMapping("/list")
→ 这是 Spring MVC 的接口路径

3. 合在一起
http://localhost:8080/list
就是:
访问你本机 8080 端口上的 /list 接口
这个接口由 Java 后端提供

它属于哪一块知识?(精准定位)
属于
Spring Boot Web 开发 → 接口(API)开发
更细一点:

  • Spring MVC(请求映射)
  • RESTful API(接口地址)
  • 前后端交互

前端为什么能访问它?
因为:
前端
axios.get("http://localhost:8080/list")

找到
@RequestMapping("/list")

执行后端 Java 方法

返回 JSON 数据

表格显示数据

posted @ 2026-05-15 16:14  ZealousMclaren  阅读(13)  评论(0)    收藏  举报