Post

前后端

前后端

前端开发基础

intro:AJAX模式 — 浏览器可以在 不刷新页面 的情况下请求服务器

浏览器本质上是一个运行前端程序的操作系统!

前端三件套:HTML、CSS、JS

HTML — 内容与结构

HyperText Markup Language:用标签描述语言

HTML 只负责内容和结构,不负责外观和行为

DOM TREE

标记 -> DOM Tree

CSS — 样式与表现

Cascading Style Sheets:控制外观

React

核心:UI = f(data)

两个核心技术:

Virtual DOM

组件化

Vue.js

特点:MVVM 架构

数据变化 → 自动更新页面 — 响应式系统 (reactivity)

Java Web后端开发

构建 RESTful API — Spring Boot

安全操作数据库 — MyBatis + MySQL

用户认证与权限控制 — Spring Security + JWT

为什么需要后端

1
2
3
4
5
浏览器 (Frontend)
        ↓ HTTP
服务器 (Backend)
        ↓ SQL
数据库 (Database)

截屏2026-03-12 16.28.17

后端要做三件事情:

HTTP API — 接收请求 Business Logic — 处理业务逻辑 Data Persistence — 操作数据

HTTP

HTTP(HyperText Transfer Protocol) 是应用层协议,采用 C/S 模型

1
2
3
4
5
6
客户端 (Browser) 服务端 (Server)
│                         │
│──── HTTP Request ──────►│
│                         │ 处理请求
│◄─── HTTP Response ──────│
│                         │

HTTP无状态特性:

  • 非 Keep-Alive 模式:每次请求建立新连接,响应后关闭,服务器不保留连接信息
  • Keep-Alive 模式Connection: Keep-Alive 头使连接持续有效,节省建连开销

一次请求的结构:

1
2
3
4
5
6
HTTP Request
│
├─ Method
├─ URL
├─ Headers
└─ Body

常见方法:

方法含义
GET查询数据(无body)
POST创建数据
PUT更新数据
DELETE删除数据(无body)

URL

URL(Uniform Resource Locator) 是互联网上资源的标准地址

1
2
http:// blog.example.com :8080 /users ?gender=male&page=1
↑协议名   ↑主机名(域名)   ↑端口   ↑路径    ↑查询参数(键值对)

RESTful API

REST(Representational State Transfer)取代了复杂笨重的 SOAP,成为 Web API 的事实标准

核心思想:用URL 表示资源,用 HTTP 方法表示操作 — 一切都是资源!

WHY REST?

最早的网站:GET /index.html — 服务器直接返回页面

但是随着web的发展,网页不仅是“一个页面”,而是包括更加复杂的数据、服务、接口等

那么就产生了这样一个问题:如何设计API?

早期:

1
2
3
4
/getUser
/createUser
/deleteUser
/updateUser

这种设计不统一、不可扩展、不符合HTTP语义

REST:Everything is a resource!

用户、文章、评论、订单、商品都被视作resource,都有唯一地址!而操作资源不依赖URL,而是靠HTTP方法!

六大约束

客户端 / 服务器分离

客户端服务器
UI数据
用户交互业务逻辑

这样,前后端就可以独立开发

Stateless(无状态)

服务器不能保存客户端状态

1
2
3
4
请求1:登录 → 返回 token
请求2:GET /users
Header:
Authorization: token

这样,服务器可以水平扩展

Cacheable(可缓存)

从而减少服务器压力

Uniform Interface(统一接口)

Layered System(分层系统)

Code On Demand(可选)

后端结构

1
2
3
4
Controller
Service
Repository
Entity

截屏2026-03-12 16.52.50

Controller层

负责接受HTTP请求,返回HTTP响应

1
2
3
4
5
6
7
8
9
@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUser(id);
    }
}

Service层

Controller 不应该写业务逻辑,所以需要 Service。

1
Controller → Service → Repository
1
2
3
4
5
6
7
@Service
public class UserService {

    public User getUser(Long id) {
        return userRepository.findById(id);
    }
}

例如:

  • 检查权限
  • 数据校验
  • 业务规则

数据持久化(Database)

后端必须把数据存到数据库。

ORM(对象关系映射)

对于java,

1
2
表 → 类
行 → 对象

Repository(数据访问层)

负责访问数据库

1
2
3
public interface UserRepository extends JpaRepository<User, Long> {

}

这样,就自动继承了findById、save、delete、findAll等方法

Spring Boot

目标:让Spring应用可以“开箱即用”

做了三件事:

1
2
3
1 自动配置 (Auto Configuration)
2 Starter 依赖管理
3 内嵌服务器

Spring Security + JWT

TODO

This post is licensed under CC BY 4.0 by the author.

Trending Tags