视频合集
本章节旨在帮助 0 基础的客户掌握必备的基础知识,以便在后期的代码讲解服务中获得更好的体验。
作者:isHuPei
一、前置知识
1.1 http 请求与响应
HTTP 百度百科
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以 ASCII 形式给出;
可以得出:客户端发起的请求叫 HTTP 请求,服务器返回的响应叫 HTTP 响应。
举个浅浅的例子
当你在浏览器地址栏输入www.baidu.com这个地址按下回车,这就属于一次请求的过程。
随后百度的某台服务器返回了百度的搜索页面展现在你的浏览器上,这便是返回的响应。
用简单易懂的方式讲解 HTTP 请求与响应,可以类比 “点外卖” 的过程。以下是分步骤的讲解:
1. 比喻:HTTP 就像点外卖
- 你(客户端):想吃饭的人(比如用浏览器或手机 App)。
- 餐厅的服务器(服务端):提供饭菜的厨房。
- 外卖小哥(网络):负责传递信息。
2. HTTP 请求(你下单)
当你在浏览器输入网址(比如 www.example.com),就像在外卖 App 点餐,浏览器会发送一个 HTTP 请求,包含:
- 请求方法:告诉服务器你想干什么。
GET:查看菜单(获取网页内容)。POST:提交订单(比如登录时发送账号密码)。
- 请求地址(URL):餐厅的地址 + 菜品名(比如
example.com/home)。 - 请求头(Headers):备注信息(比如“不要香菜”,或告诉服务器你是手机还是电脑)。
- 请求体(Body):可选,比如提交表单时的数据(比如账号密码)。
📌 例子:
你告诉外卖 App:“我要一份汉堡(GET 请求),地址是example.com/burger。”
3. HTTP 响应(餐厅送餐)
服务器收到请求后,会返回一个 HTTP 响应,就像餐厅处理订单后送餐:
- 状态码:告诉你订单是否成功。
200 OK:餐送到了(请求成功)。404 Not Found:菜品不存在(网页找不到)。500 Server Error:厨房着火了(服务器出错)。
- 响应头(Headers):送餐单上的备注(比如饭菜类型、有效期)。
- 响应体(Body):实际内容(比如网页的 HTML 或图片)。
📌 例子:
餐厅回复:“汉堡做好了(状态码 200),这是你的汉堡(HTML 内容)。”
4. 完整流程
- 你在浏览器输入网址 → 发送 HTTP 请求。
- 服务器处理请求 → 返回 HTTP 响应。
- 浏览器收到响应 → 显示网页(或提示错误)。
5. 实际观察(用浏览器演示)
- 按 F12 打开开发者工具 → 选择 Network(网络)。
- 刷新页面,你会看到每个文件的请求和响应(像外卖订单记录)。
- 点击任意请求,查看它的 Headers(请求头/响应头) 和 Status Code(状态码)。
6. 常见问题
- Q:为什么有些网站是
https?
A:https是加密的外卖,防止别人偷看你的订单(比如密码)。 - Q:GET 和 POST 有什么区别?
A:GET 是“查看”,POST 是“提交”(比如 GET 看新闻,POST 发评论)。
总结
- 请求:你发送订单(要什么 + 怎么要)。
- 响应:服务器回复结果(成功/失败 + 内容)。
用这种生活化的比喻,小白能快速理解 HTTP 的核心逻辑。后续再深入细节(如 Cookies、状态码等)会更轻松!
具体的请看视频:
1.2 URL 与资源
1.3 MVC 架构
1.4 RBAC 权限模型
二、技术栈介绍
2.1 介绍 vue
Vue 是目前最主流的前端三大框架(Vue、React 和 Angular)之一。采用 MVVM 设计模式,帮助开发者更加快速的构建起前端应用。
特点是:上手快、数据视图双向绑定、便于组件化开发(可不答特点)
提一嘴:我这边的前端用的是 vue2 写的。
老师追问:vue2 与 vue3 有什么区别?Vue2 使⽤的是选项类型 API,Vue3 使⽤的是合成型 API,数据绑定跟数据监视实现上有所区别。
2.2 介绍 ElementUI
官方网站:https://element.eleme.cn/#/zh-CN/component/installation
ElementUI 是饿了么前端出品的一套基于 Vue 封装的 UI 组件库。开发者引入 element 的依赖后,需要什么组件复制粘贴到自己的项目里面,改改就可以用了。
个人建议:保存到书签、老师问道的话边解释边打开网址。
2.3 介绍 Axios
Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 nodejs。用于前端向后端发送异步网络请求。
2.4 介绍 Spring
如果把 java(企业级)解决方案分为两个阶段的话,前半段是 JavaEE,后半程最为瞩目的就是 spring,已流行了 15 年之久,他目前可以说整合了所有企业级开发需要的技术组件(SpringSecurity、SpringCloud、SpringBoot),可以说是生命力最旺盛的一个产品。
2.5 介绍 Spring Boot
Spring Boot 是 Spring 全家桶中的一套快速配置脚手架,基于 spring Boot 我们可以快速开发单个微服务应用。采用约定大于配置的设计理念,无需进行繁琐的 xml 整合配置,并且内嵌了 web 服务器(Tomcat、Jetty 等),做到了开箱即用。大大降低了 spring 的学习门槛,提高了开发效率。
2.6 介绍 Spring Security
Spring Security 是 Spring 家族中的安全框架,可以用来做用户验证和权限管理等。Spring Security 是一款重型框架,不过功能十分强大。 SpringSecurity 采用的是责任链的设计模式,是一堆过滤器链的组合,它有一条很长的过滤器链。 一般来说,如果项目中需要进行权限管理,具有多个角色和多种权限,我们可以使用 Spring Security。
2.7 介绍 Mybatis
mybatis 是 apache 基金会的一个开源项目,是一个基于 java 的持久层框架。它封装了传统的 JDBC 的连接数据库代码,在数据映射、结果集的检索方面做了充足的优化,让开发者能够更轻松地操作关系型数据库。并且 spring 框架能够无缝整合 mybatis,这也使得 springboot+mybatis 的解决方案成为快速搭建 java 单体项目的主流。
2.8 介绍 Redis
Redis 是一种 NoSQL(not-only sql,非关系型数据库)的缓存数据库,相比 MYSQL 等关系型数据库,它拥有十分优秀的性能,数据是存储在内存中,读写速度非常快。在本系统中,验证码、数据字典等数据的存储使用到了 redis 数据库。
2.9 介绍 MYSQL
略
2.10 介绍 maven
Maven 不仅是一个快速构建工具,还是一个优秀的依赖管理工具和项目管理工具。
使用 maven 管理项目其优点如下:
1、其内置了许多模板可以帮助我们快速构建项目。
2、提供中央仓库,在 pom.xml 文件中引入代码即可自动下载导入相应的依赖 jar 包。
3、项目的子模块之间可以相互通讯,便于项目的解耦合。
4、可以直接通过 Maven 打包 war 或者 jar 项目。
2.11 介绍 JWT
JWT(全称:Json Web Token)是一个传输信息的标准。用于协议 JSON 对象在前后端之间是否能够安全可靠地传输信息。因为 JWT 本身是一串数字签名的缘故,所以该签名信息可以被认证和信任。简单点说就是一种认证机制,让后台知道该请求是来自于受信的客户端。比如:在登陆页面点击登录按钮时,会向后端发送一个 axios 请求。后端页面在校验用户名密码等登陆信息通过后,除了返回响应数据,还通过 JWT 会给前端返回一个生成的 token 令牌,客户端可以把该 token 存储起来,在随后每次向后端发送请求过程中,同时携带 token 令牌,后端会对带过来的这个 token 进行验证,验证通过才能进行后续操作。
2.12 介绍 Token
token 的意思是“令牌”,是服务端生成的一串加密字符串(服务器端并不进行保存),作为客户端进行请求的一个标识。当用户第一次登录后,服务器生成一个 token 并将此 token 返回给客户端浏览器,以后客户端只需带上这个 token 前来请求数据即可,无需再次带上用户名和密码。
2.13 介绍 shiro
Shiro 是 Apache 旗下一款安全权限框架。它功能强大易于上手,实现了对于权限的控制,是由 java 语言实现的。通过将与安全认证有关的功能封装管理,对外暴露一个简单易用的 API 提供身份验证、授权、加密会话管理等功能。其认证授权过程如图 2-2-1 所示。
Shiro 核心组件
- UsernamePasswordToken,Shiro 用来封装用户登录信息,使用用户的登录信息来创建令牌 Token。
- SecurityManager,Shiro 的核心部分,管理所有 Subject,负责安全认证和授权。
- Suject,Shiro 的一个抽象概念,包含了当前用户信息。
- Realm,开发者自定义的模块,根据需求,在 Realm 中完成验证授权的逻辑。
- AuthenticationInfo,用户的角色信息集合,认证时使用。
- AuthorzationInfo,角色的权限信息集合,授权时使用。
- DefaultWebSecurityManager,安全管理器,开发者自定义的 Realm 需要注入到 DefaultWebSecurityManager 进行管理才能生效。
- ShiroFilterFactoryBean,过滤器工厂,Shiro 的基本运行机制是开发者定制规则,Shiro 去执行,具体的执行操作就是由 ShiroFilterFactoryBean 创建的一个个 Filter 对象来完成。
