博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图片服务器——数据库设计和服务器API设计
阅读量:3958 次
发布时间:2019-05-24

本文共 2522 字,大约阅读时间需要 8 分钟。

1.数据库设计

1)首先创建名为java_image-server的数据库

create database java_image_server;

2)创建名为image_table的表存储图片的属性信息

create table image_table(imageId int not null primary key auto_increment,    imageName varchar(50),    size int,    uploadTime varchar(50),    contentType varchar(50),    path varchar(1024),    md5 varchar(1024));

3)查看表的属性信息

在这里插入图片描述

设置ImageId为自增主键,数据库中存储的是图片的属性(元信息)。图片的正文是以文件的形式直接存在磁盘上的,数据库中就记录一个path对应到磁盘上的文件。MD5校验:图片的校验和,通过对接收的传输数据执行散列运算来检查数据的正确性,就是通过一个更短的字符串,来验证整体数据是否正确。

2.服务器API设计

在真正开发项目的时候,编写代码之前,一般都要做两件非常重要的设计:数据库设计和前后端交互接口设计

1)认识JSON

JSON是一种数据组织的格式,格式是键值对的结构
这个项目里使用JSON完成数据的序列化,方便进行网络传输
此处需要使用Gson库,是JSON解析库
2)文件上传操作在HTML中是如何完成的以及在HTTP协议中是如何进行的
需要用到form表单等,客户端上传图片构造一个如这样的请求,服务端也要按照这个格式来解析

请求:POST/imageContentType:multipart/form-data;

3)正式的API设计

新增图片

请求:    POST/image    响应: 上传成功    HTTP/1.1 200OK    {        "ok":true,    }     上传失败     HTTP/1.1 200OK     {         "ok":false;         "reason":"具体的失败原因"       }

查看所有图片属性

请求:GET/image响应:HTTP1.1 200OK{   {       imageId:1,       ImageName:"1.png",       contentType:"image/png",       size=1000,       uploadTime="20200319",       path="./data/1.png”,       md5:”11223344“,       },       {         .......         }         }

查看指定图片属性

请求:GET/image?imageId=[具体的图片id]响应:HTTP/1.1  200OK    {        imageId:1,       ImageName:"1.png",       contentType:"image/png",       size=1000,       uploadTime="20200319",       path="./data/1.png”,       md5:”11223344“,       }       HTTP/1.1 200OK       {           ok:false           reason:"具体的出错原因"       }

删除指定图片

请求:DELETE/image?imageId=[具体的图片id]响应:HTTP/1.1 200OK{   ok:true, } HTTP/1.1 200OK {   ok:false,   reason:"具体的出错原因"   }

查看指定图片内容

请求:GET/imageShow?imageId=[具体的图片id]响应:HTTP/1.1  200OKContent-Type;image/pngHTTP/1.1 200OK{  ok:false,  reason:"具体的出错原因" }

3. 代码设计

这是后台开发的主要代码和目录

1)api层里是前后端交互的API.ImageServlet主要实现的是对图片的查看,删除等功能,而imageShowServlet是实现前端页面对图片的展示功能2)common里放的是我们自定义的一个异常3)dao层里放的主要是获取数据库连接的相关操作

在这里插入图片描述

1)这里我们需要注意的是在使用JDBC连接数据库的时候需要注意关闭顺序,对Connection,Statement,ResultSet的关闭顺序,先连接的需要后关闭

public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet){
try {
if(resultSet!=null){
resultSet.close(); } if(statement!=null){
statement.close(); } if(connection!=null){
connection.close(); } } catch (SQLException e) {
e.printStackTrace(); } }}

2)解决线程安全的步骤

线程安全问题:线程可能会出现CPU的抢占,从而导致线程不安全
加锁 ,双重判定,使用volatile保证内存可见
在这里插入图片描述

转载地址:http://wflzi.baihongyu.com/

你可能感兴趣的文章
Struts2+Spring3+Mybatis3开发环境搭建
查看>>
mongoDB入门必读(概念与实战并重)
查看>>
通俗易懂解剖jbpm4
查看>>
云盘 同步盘介绍 同步工具介绍
查看>>
rsync
查看>>
win7 英文版电脑 不睡眠,不休眠
查看>>
Bash中如何判断一个命令是否存在 查看当前目录下文件的个数
查看>>
makefile
查看>>
linux 文件权限
查看>>
部分简化字感觉不如繁体字有深意
查看>>
cgo 崩溃 64位地址截断引发的挂死问题
查看>>
drbd
查看>>
网络 IP
查看>>
网络路由
查看>>
网络 tcp 性能 可靠
查看>>
网络 https 握手
查看>>
去掉调试信息
查看>>
lsof 使用
查看>>
golang获取本机地址
查看>>
date 使用
查看>>