项目 —— 图片服务器

核心知识点

  • 简单的 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;
}

二. 源码开发

发布了78 篇原创文章 · 获赞 4 · 访问量 4170

猜你喜欢

转载自blog.csdn.net/weixin_43580746/article/details/104393307
今日推荐