我的项目_图片服务器

图片服务器

一、项目需求

大家在写博客的时候,是怎么插入图片的呢?
事实上,大家写博客的时候,插入的图片,本质上是往文章中放入了一个链接(URL),而资源对应在另外的一个服务器上。
而我也写了那么多天的博客了,我的博客上也有不少图。我想利用自己所学的知识,自己写一个简单的图片服务器来实现github / 博客中插入图片的问题。

核心功能:
本项目的结构分为两部分,数据存储部分服务器模块,使用MySQL存储图片的属性,将图片内容保存到本地磁盘,服务器向外提供上传图片、获取图片的属性、根据图片的URL获取图片内容和删除图片等API接口。

整体构架:
实现一个 HTTP 服务器,完成对图片的上传、查看(查看属性/内容)、删除操作。
实现一个简单的页面来上传、展示当前的图片。

重要知识点:

  1. 简单的Web服务器设计开发能力(Servlet 的使用)
  2. 使用数据库(MySQL)JDBC 操作 MySQL
  3. 数据库设计(根据实际场景设计数据库表结构)
  4. 前后端交互的 API 的设计(基于HTTP协议)
  5. 认识 JSON 数据格式,学习使用 Java 中的 Gson 这个库操作 JSON 数据
  6. 强化 HTTP 协议的理解,学习测试 HTTP 服务器,Postman 工具的使用
  7. 基于 md5 进行校验
  8. 使用 HTML CSS JavaScript 技术构建一个简单的网页

CSDN:Tomcat 服务器之简介

二、数据库设计

MySQL:

MySQL 本质上也是有一个 服务器 程序;
之前安装数据库,既安装了服务器(本体)(存数据的地方),也安装了客户端(命令行程序);
虽然客户端 与 服务器 安装在同一台机子上,但依旧是通过网络的方式传输。
(MySQL客户端 通过网络的方式 来访问 服务器)(可以有另外的客户端 访问这个服务器);
它既然是个服务器,就可以有很多个客户端同时访问。

在这里插入图片描述
创建文件 db.sql

//进入数据库
mysql -uroot -p

// 创建数据库 java_image_server
create database java_image_server;

//切换数据库
use java_image_server;

//建表
CREATE TABLE `image_table` (
  `imageId` int(11) NOT NULL AUTO_INCREMENT,
  `imageName` varchar(50) DEFAULT NULL,
  `size` int(11) DEFAULT NULL,
  `uploadTime` varchar(50) DEFAULT NULL,
  `contentType` varchar(50) DEFAULT NULL COMMENT '图片类型',
  `path` varchar(1024) DEFAULT NULL,
  `md5` varchar(1024) DEFAULT NULL,
  PRIMARY KEY (`imageId`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8

contentType:正文类型("text/html""image/jpg""image/png" 等)

path:数据库中存储的 图片 的属性
图片正文是以文件的形式直接存在磁盘上的
数据库中就记录一个 path,这个 path 就对应到磁盘上的文件

md5:图片的 md5 校验和 
校验和:通过一个更短的字符串,来验证整体数据是否正确。
	   短的字符串是根据原串内容通过一定的规则来计算出来的。

什么是 md5? MD5_百度百科

这是一种常见字符串 hash 算法, 具有三个特性:
1. 不管源字符串多长, 得到的最终 md5 值都是固定长度
2. 源字符串稍微变化一点点内容, md5 值会变化很大(降低冲突概率)
3. 通过原字符串很容易计算得到 md5 值, 但是根据 md5 推导出原字符串很难(几乎不可能)

查看表结构:
在这里插入图片描述

三、服务器 API 设计(前后端交互接口设计)

图片存储分为了两个部分,首先就是我们上传的图片信息(包括大小,名字等)这些可以用数据库来进行存储,图片内容部分以二进制方式进行存储。但是由于图片信息存储如果用类进行存储改动比较麻烦,所以就引入了 JSON 格式进行存储。

Json 是一种常见是数据格式组织方式,一种键值对风格的数据格式,方便修改。
(键值对的结构:键不能重复,根据键能够查到值)

Java 中可以使用 Gson 库来完成 Json 的解析和构造。
Gson:goole 搞的一个开源的 JSON 解析库。

在 Maven 中新增 Gson 的依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.2</version>
</dependency>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值