前端开发必备:数据接收与响应控制全攻略
·
1. 前端数据 / 请求参数如何接收
1.1 是否需要拿前端数据?
✔ 需要业务数据(用户输入内容)
使用:
@RequestBody(JSON对象)@RequestParam(URL参数 / 表单参数)- DTO(数据传输对象)
👉 本质:
用户“要做什么”
1.2 是否需要请求上下文信息?
✔ 需要用户身份 / 请求来源信息
使用:
HttpServletRequest
可获取:
- IP地址
- Header
- Cookie
- Session
- 请求路径
👉 本质:
用户“是谁 + 从哪来 + 怎么来的”
1.3 是否需要控制响应行为?
✔ 需要控制返回结果 / 跳转 / Cookie
使用:
HttpServletResponse
可做:
- 设置 Cookie
- 重定向(redirect)
- 写响应流
👉 本质:
“返回给用户什么 + 怎么返回”
1.4 三者对比总结
| 类型 | 常用对象 | 本质 | 作用 |
|---|---|---|---|
| 业务数据 | DTO / @RequestBody / @RequestParam | 用户要做什么 | 接收输入 |
| 请求信息 | HttpServletRequest | 用户是谁 + 怎么来 | 获取上下文 |
| 响应控制 | HttpServletResponse | 返回结果控制 | 控制输出 |
2. @RequiredArgsConstructor(Lombok)
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
2.1 本质
👉 自动生成构造方法,并注入 final 字段
等价于:
@Autowired
public LoginController(LoginService loginService, RedisUtil redisUtil) {
this.loginService = loginService;
this.redisUtil = redisUtil;
}
2.2 作用
- 自动依赖注入
- 减少 @Autowired 代码
- 推荐 Spring 官方方式(构造器注入)
2.3 依赖注入方式对比
| 方式 | 推荐度 | 特点 |
|---|---|---|
| 构造器注入(@RequiredArgsConstructor) | ⭐⭐⭐⭐⭐ | 最安全、不可变 |
| @Autowired | ⭐⭐⭐ | 直接注入 |
| @Resource | ⭐⭐⭐ | 按名称注入(JSR-250) |
3. 日志系统(log vs 业务日志)
3.1 log.info()
👉 给开发 / 运维看的
系统发生了什么
用途:
- 调试
- 排查问题
- 监控系统运行状态
3.2 业务操作日志(ImportantOperateLog)
importantOperateLogService.addImportantOperateLog(
uid,
"/login/auth",
"用户通过oauth登录成功",
request
);
👉 本质:
记录用户做了什么(审计日志)
用途:
- 合规审计
- 用户行为追踪
- 风控分析
3.3 对比总结
| 类型 | 面向对象 | 作用 |
|---|---|---|
| log.info | 开发/运维 | 系统运行过程 |
| 业务日志 | 审计/业务 | 用户行为记录 |
4. StringUtils.isBlank
4.1 本质
StringUtils.isBlank(str)
判断:
- null
- ""
- " "(全空格)
👉 返回 true
4.2 对比
| 方法 | 判断内容 |
|---|---|
| isEmpty | null + "" |
| isBlank | null + "" + 空格 |
5. JDBC / MyBatis 字段类型
jdbcType = VARCHAR
👉 本质:
告诉 MyBatis:
这个字段在数据库中是什么类型
常见用途
#{name, jdbcType=VARCHAR}
作用:
- 防止类型映射错误
- 处理 null 值兼容问题
6. insert vs insertSelective(MyBatis Generator)
6.1 insert
👉 全字段插入
INSERT INTO table VALUES (a, b, null, d)
特点:
- null 也会写入数据库
6.2 insertSelective
👉 只插入非 null 字段
INSERT INTO table (a, b, d) VALUES (...)
特点:
- null 字段自动忽略
- 使用默认值(如果数据库有)
6.3 对比总结
| 方法 | 行为 |
|---|---|
| insert | 全字段插入 |
| insertSelective | 只插非 null |
7. SOAP 调用 LDAP(远程认证)
7.1 本质
Java → SOAP → LDAP认证系统
7.2 做什么
用远程接口验证用户名 + 密码是否正确
7.3 流程
- Java 构造 SOAP 请求
- 发送到 LDAP WebService
- LDAP 校验用户名密码
- 返回认证结果
7.4 本质理解
👉 LDAP不是数据库查询
👉 是远程认证服务(类似登录中心)
8. 总体理解模型(核心总结)
8.1 MVC请求三件套
RequestBody → 用户输入
Request → 用户信息
Response → 返回控制
8.2 日志体系
log.info → 系统运行日志
业务日志 → 用户行为记录
8.3 MyBatis 插入策略
insert → 全量写
insertSelective → 非空写
9. Cookie+Redirs+Token 登录体系流程图

10企业级应用系统架构图(前后端分离+微服务+云原生)

更多推荐

所有评论(0)