当前位置: 首页 > news >正文

黑马JavaWeb+AI笔记 Day07 Web后端实战(部门管理模块)

一、前期准备

✅前后端分离开发

页面原型+需求文档 -> 接口文档

1.什么是前后端分离开发?

前端项目、后端项目开发和部署都是分开的。

2.具体的开发流程?

需求分析 -> 接口设计 -> 前后端并行开发 -> 接口测试 -> 联调部署

对比前后端混合开发前后端分离开发(推荐)
部署模式前后端一体前后端独立部署
维护性差,不易扩展高,职责清晰,接口对接规范
开发流程串行并行(前后端各自独立、通过接口联调)

✅Restful 风格

REST(REpresentationalStateTransfer),表述性状态转换,它是一种软件架构风格

📌REST是风格,是约定方式,约定不是规定,可以打破。

📌描述功能模块通常使用复数形式(加s),表示此类资源,而非单个资源。如:users、books.. 


✅接口测试工具:Apifox
  • 官网:https://apifox.com/

  • 作用:

    • 编写和管理 API 文档
    • 调试 API 请求(支持 GET/POST/PUT/DELETE)
    • 生成 Mock 数据

 ✅ 手动映射方式:
  • 使用 @Results + @Result
  • 或在 SQL 中起别名
  • 或在配置中开启驼峰映射开关(推荐)

✅前后端联调:Nginx 反向代理

概念

反向代理是一种网络架构,通过代理服务器为后端的服务器做代理,客户端的请求直接请求代理服务器,然后转发给后端的服务器。(安全、灵活、负载均衡)

场景

前端访问地址:http://localhost:90/api/depts
后端接口地址:http://localhost:8080/depts

server {listen 90;location ^~ /api/ {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://localhost:8080;}
}

原理

客户端请求 Nginx → Nginx 转发到后端 → 后端返回响应 → Nginx 返回前端


二、开始项目

✅基本步骤
  • 创建空项目,Structure中设置 jdk,设置中检查maven、设置字符集UTF-8
  • 添加SpringBoot模块,引入lombok、SpringWeb、Mybatis、MySQL依赖 自动放入pom文件中
  • 添加application.yml文件,创建数据库,在前者中配置数据库基本信息
spring:application:name: tlias-web-management#配置数据库的连接信息datasource:url: jdbc:mysql://localhost:3306/tliasdriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456#Mybatis的相关配置
mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#驼峰命名映射开关map-underscore-to-camel-case: true

✅项目结构
职责说明
Controller接收请求,参数绑定,响应数据
Service处理业务逻辑
Mapper访问数据库,执行 SQL
tlias-web-management/               ← 项目根目录
├─ .idea/                          ← IntelliJ IDEA 的项目配置(.iml、workspace 等)
├─ .mvn/                           ← Maven Wrapper,用于锁定 Maven 版本并保证每个人用同一版本构建
├─ pom.xml                         ← Maven 项目描述文件
├─ src/
│  ├─ main/
│  │  ├─ java/
│  │  │  └─ com.example/           ← 基础包
│  │  │     ├─ TliasWebManagementApplication.java  
│  │  │     │    // Spring Boot 启动类,带 @SpringBootApplication  
│  │  │     ├─ controller/         ← Web 层:接收 HTTP 请求、组装参数、返回结果  
│  │  │     │   └─ DeptController.java  
│  │  │     ├─ service/            ← 业务层接口,定义系统要做的事情  
│  │  │     │   └─ DeptService.java  
│  │  │     ├─ service/impl/       ← 业务层接口的实现,写具体的业务逻辑  
│  │  │     │   └─ DeptServiceImpl.java  
│  │  │     ├─ mapper/             ← MyBatis 层:定义数据库操作接口(@Mapper)  
│  │  │     │   └─ DeptMapper.java  
│  │  │     └─ pojo/               ← 用于封装数据的简单 Java 对象(实体/DTO)  
│  │  │         ├─ Dept.java  
│  │  │         └─ Result.java  
│  │  └─ resources/  
│  │     └─ application.yml        ←  YAML 格式,Spring Boot + 数据库 + MyBatis 等的配置  
│  └─ test/                        ← 单元测试代码目录  
└─ target/                         ← 构建产物(class、jar 等,由 mvn 自动生成)

✅查询所有部门

请求路径:/depts

请求方式:get

请求参数:无


✅删除部门

请求路径:/depts

请求方式:delete

请求参数:id

 参数获取方式(推荐使用最后一种)

方式示例代码
HttpServletRequestrequest.getParameter("id")
@RequestParam@RequestParam("id") Integer id
同名绑定public Result delete(Integer id) ✅ 推荐


✅添加部门

请求路径:/depts

请求方式:post

请求参数:application/json

参数绑定

  • 使用实体类接收 JSON 格式请求体
  • 配合 @RequestBody 注解


✅修改部门
1.根据 ID 查询回显

请求路径:/depts/{id}

请求方式:get

请求参数:路径参数

@PathVariable 注解来声明获取的是路径参数

2.修改后提交

    请求路径:/depts

    请求方式:put

    请求参数:application/json

    📌@RequestMapping 抽取Controll类的路径


    三、日志技术

    ✅ 日志的作用:
    • 排查 bug、记录运行状态、记录用户行为等

    ✅ 常见日志框架对比
    框架特点
    JULJava 自带,性能较弱
    Log4j配置灵活,主流使用
    LogbackLog4j 的升级版,SpringBoot 默认
    SLF4J日志门面(统一日志接口标准)

    ✅ SpringBoot 默认使用 Logback

    配置文件位置:logback.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%logger显示日志记录器的名称, %msg表示日志消息,%n表示换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern></encoder></appender><!-- 系统文件输出 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 日志文件输出的文件名, %i表示序号 --><FileNamePattern>D:/tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern><!-- 最多保留的历史日志文件数量 --><MaxHistory>30</MaxHistory><!-- 最大文件大小,超过这个大小会触发滚动到新文件,默认为 10MB --><maxFileSize>10MB</maxFileSize></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern></encoder></appender><!-- 日志输出级别 --><root level="ALL"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /></root>
    </configuration>
    

    ✅ 日志级别(从低到高)
    日志级别说明记录方式
    trace追踪,记录程序运行轨迹log.trace("...")
    debug调试,记录程序调试过程中的信息,实际应用中一般将其视为最低级别log.debug("...")
    info记录一般信息,描述程序运行的关键事件,如:网络连接、io操作log.info("...")
    warn警告信息,记录潜在有害的情况log.warn("...")
    error错误信息log.error("...")

    ✅ 使用方式
    @Slf4j
    public class DeptController {log.info("正在查询所有部门...");log.error("发生异常:{}", e.getMessage());
    }


    ✅ 总结表

    模块学习目标与关键点
    项目架构理解前后端分离与三层结构分工
    接口设计掌握 RESTful 风格设计规范(路径 + 方法)
    参数绑定理解 RequestParam、PathVariable、RequestBody 的使用
    数据封装掌握 MyBatis 自动/手动映射字段的方式
    反向代理能配置 Nginx 实现前后端联调
    日志技术掌握 Logback 配置、使用与日志级别管理

    文章转载自:

    http://2ny2hD02.bzrwz.cn
    http://kKYI4DqD.bzrwz.cn
    http://GCsscx5n.bzrwz.cn
    http://QXxDbrMz.bzrwz.cn
    http://sn5A8vox.bzrwz.cn
    http://fWqDPNUZ.bzrwz.cn
    http://DR8uEaTe.bzrwz.cn
    http://FuFCMYdf.bzrwz.cn
    http://goXuB5eE.bzrwz.cn
    http://FzltPMko.bzrwz.cn
    http://q5KlZC5K.bzrwz.cn
    http://WH9KWknT.bzrwz.cn
    http://qjjbeinD.bzrwz.cn
    http://VyMJNUXG.bzrwz.cn
    http://MLUdopJx.bzrwz.cn
    http://HXMotokV.bzrwz.cn
    http://sICBPH4p.bzrwz.cn
    http://tEkrLDlh.bzrwz.cn
    http://8vO9WFN9.bzrwz.cn
    http://dQ47WRTp.bzrwz.cn
    http://nITRN9go.bzrwz.cn
    http://qhsPlyKq.bzrwz.cn
    http://W1q099he.bzrwz.cn
    http://5KkR94gy.bzrwz.cn
    http://ZdTLksRq.bzrwz.cn
    http://7M6eV2ub.bzrwz.cn
    http://PLWjUZpN.bzrwz.cn
    http://8AqVrgih.bzrwz.cn
    http://RXGgCEeh.bzrwz.cn
    http://vUYJMlZt.bzrwz.cn
    http://www.dtcms.com/a/385553.html

    相关文章:

  • 【AI开发】【前后端全栈】[特殊字符] AI 时代的快速开发思维
  • kimi-k2论文阅读笔记
  • [SC]一个使用前向声明的SystemC项目例子
  • Gunicorn 部署与调优全指南(2025 版)
  • 第二十一篇|新宿平和日本语学校的结构化解读:费用函数、文化网络与AI教育建模
  • 数据结构(C语言篇):(十五)二叉树OJ题
  • RIFE.py代码学习 自学
  • Gateway-路由-规则配置
  • 低端影视官网入口 - 免费看影视资源网站|网页版|电脑版地址
  • 【Python3教程】Python3高级篇之日期与时间
  • 计算机网络——传输层(25王道最新版)
  • 5-14 forEach-数组简易循环(实例:数组的汇总)
  • 【智能体】rStar2-Agent
  • ego(5)---Astar绕障
  • UE5C++编译遇到MSB3073
  • 记一次JS逆向学习
  • 【PyTorch】单目标检测
  • RabbitMQ—基础篇
  • 介绍一下 Test-Time Training 技术
  • 【LangChain指南】Document loaders
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
  • 2021/07 JLPT听力原文 问题四
  • MySQL 视图的更新与删除:从操作规范到风险防控
  • 【SQLMap】获取 Shell
  • Java之异常处理
  • C# 通过 TCP/IP 控制 Keysight 34465A 万用表(保姆级教程)
  • TVS二极管详解:原理、选型与应用实战
  • C++实现文件中单词统计等
  • 数据库(四)MySQL读写分离原理和实现
  • 关于数据库的导入和导出