核心知识点
- 简单的 Web 服务器设计开发能力(Servlet,Servlet 是Tomcat这个服务器所提供的一组编程接口)
- 使用数据库存储(MySQL)JDBC 操作 MySQL
- 数据库设计(根据实际场景设计数据库表结构)
- 前后端交互的 API 的设计(基于 HTTP 协议)
- 认识 JSON 数据格式,学习使用Java 中的 Gson 这个库操作JSON 数据
- 学习测试 HTTP 服务器,Postman
- 使用 HTML,CSS,JavaScript 设计一个简单的网页
一. 服务器设计
1. 数据库设计
- 数据库中存储的 图片 的属性(元信息),图片正文,以文件的形式直接存在磁盘上的,数据库中就记录一个 path 就对于到磁盘上的文件。
- md5 :图片的 md5 校验和。
- 字符串哈希算法 —— 哈希表
- 校验和,通过一个更短的字符串,来验证整体数据是否正确,短的字符串是根据原串内容通过一定的规则来计算的
2. 服务器 API 设计(前后端交互接口设计)
- JSON 是一种数据组织的格式。格式键值对的结构(键不能重复,根据键就能查到值)
例如:
{
“name”:“曹操”,
“skill1”:“剑气”,
“skill2”:“三段跳”,
“skill3”:“加攻击和吸血”,
“skill4”:“加攻速”,
}
用大括号包含,里边有若干个键值对,键值对之间用冒号分隔,不同键值对之间用逗号分号分隔
JSON 只是一个数据格式,和编程语言无关(出身于JavaScript),此处使用 JSON 完成数据的序列化,方便进行网络传递
Gson:Google搞得一个JSON 开源解析库 - 文件上传操作在 HTML 中是如何完成的 form表单
文件上传在 HTTP 协议中是如何进行的。
正式开始设计前后端交互API
HTTP 协议具体要构造成什么样子
- 新增图片
请求:
POST /image
Content-Type: mulipart/form-data;
\r\n
[正文内容 包含图片的一些信息]
[图片正文的二进制内容]
响应:上传成功
HTTP/1.1 200 OK
\r\n
{
"ok":true;
}
响应:上传失败
HTTP/1.1 200 OK
\r\n
{
"ok":false;
"reason":"具体的失败原因"
}
- 查看所有图片信息(数据库信息):
请求
GET /image
请求头(无正文)
\r\n
响应:成功
HTTP/1.1 200 OK
响应头
\r\n
[
{
imageId:1,
imageName:"1.png",
size:1000,
uploadTime:"20200219",
path:"./data/1.png",
md5:"11223344",
},
{
……
},
……
]
响应失败:
HTTP/1.1 200 OK
响应头
\r\n
[]
- 查看指定图片信息(数据库信息):
请求:
GET /image?image=[具体的数值]
请求头
\r\n
响应成功:
HTTP/1.1 200 OK
响应头
\r\n
{
imageId:1,
imageName:"1.png",
size:1000,
uploadTime:"20200219",
path:"./data/1.png",
md5:"11223344",
}
响应失败:
HTTP/1.1 200 OK
响应头
{
ok:false,
reason:"具体的失败原因"
}
- 删除指定图片:
请求
DELETE /image?imageId=[具体的图片id]
请求头
\r\n
响应:删除成功
HTTP/1.1 200 OK
\r\n
{
"ok":true;
}
响应:删除失败
HTTP/1.1 200 OK
\r\n
{
"ok":false;
"reason":"具体的失败原因"
}
- 查看指定图片内容:
请求:
请求
DELETE /imageShow?imageId=[具体的图片id]
请求头
\r\n
响应成功:
HTTP/1.1 200 OK
Content-Type: image/png
\r\n
[图片的二进制内容]
响应失败:
HTTP/1.1 200 OK
\r\n
{
"ok":true;
}