开源相册系统Java_基于JAVA的B/S网络相册管理系统

每天记录学习,每天会有好心情。*^_^*

今天和一个朋友共同完成了一个网络相册管理系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架。我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他。和往常一样选用简单又便捷的MYECLIPSE作为开发工具,这是一个 后台项目。这个系统的介绍是这样的:随着网络科技的发展,云端技术的完善,越来越多的网络用户喜欢将文件等信息放置在网络上,既方便下载浏览,又减少携带的麻烦。这其中又以上传相片至网络最为兴盛,在网络上晒相片已经成为一种时尚潮流,这记录着用户的生活经历和足迹,不但能起纪念作用,更是与他人分享自己人生经历与知识的渠道。随着国外著名图片分享应用Instagram不断火热,关于网络分享与存储图片的应用也慢慢增多,网络相册服务也因此应运而生并日趋盛行。网络相册不但能解决用户自身的存储问题,增进人与人之间的联系分享朋友快乐的重要途径,更体现着互联网分享的精神。由于信息交流的多样化,特别是电子信息技术的发展,同时,随着数据库技术,客户/服务器技术等的发展,使得网络相册系统的功能更加完善。网络相册管理系统的特点是从相册管理的角度出发,通过数据库将几乎所有与之相关的数据统一管理起来,从而形成了集成的信息集。网络相册管理系统较好的用户界面,信息共享,信息管理使得管理人员和用户使用更加的便捷,而且网络相册系统的可操作性非常强,针对不同教育程度的人群。本文以此为背景,采用软件工程的方法,结合实际,从网络相册发展的现状和功能分析出发,确立网络相册系统建设的目标,一个网络相册管理系统应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。

系统中用户、类型之间存在关联关系,我们将其关联关系保存在相册表中。他们的关联关系是这样的相册的用户与用户的mingzi字段对应、相册的用户id与用户的id字段对应、相册的类型与类型的mingzi字段对应、相册的类型id与类型的id字段对应

。图片的存在是为了能更好的结合系统的功能。相册表的联系在这张表中得以体现,其关联关系为图片的相册与相册的biaoti字段对应、图片的相册id与相册的id字段对应

总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、相册(xiangce)、类型(leixing)、图片(tupian)

管理员表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |管理员id

username| VARCHAR(255) | |账号

password| VARCHAR(255) | | 密码

用户表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |用户id

mingzi| VARCHAR(255) | |名字

username| VARCHAR(255) | |账号

password| VARCHAR(255) | |密码

jieshao| VARCHAR(255) | | 介绍

相册表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |相册id

biaoti| VARCHAR(255) | |标题

jieshao| VARCHAR(255) | |介绍

yonghu| VARCHAR(255) | |用户

yonghuid| VARCHAR(255) | |用户id

leixing| VARCHAR(255) | |类型

leixingid| VARCHAR(255) | | 类型id

类型表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |类型id

mingzi| VARCHAR(255) | | 名字

图片表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |图片id

biaoti| VARCHAR(255) | |标题

miaoshu| VARCHAR(255) | |描述

shangchuanshijian| VARCHAR(255) | |上传时间

tupian| VARCHAR(255) | |图片

xiangce| VARCHAR(255) | |相册

xiangceid| VARCHAR(255) | | 相册id

SET FOREIGN_KEY_CHECKS=0;------------------------------

------------------------------

--Table structure for ggwangluoxiangce

------------------------------

DROP TABLE IF EXISTS`t_admin`;CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY(`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员';------------------------------

DROP TABLE IF EXISTS`t_yonghu`;CREATE TABLE `t_yonghu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`jieshao` VARCHAR(255) DEFAULT NULL COMMENT '介绍',PRIMARY KEY(`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户';------------------------------

DROP TABLE IF EXISTS`t_xiangce`;CREATE TABLE `t_xiangce` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '相册id',`biaoti` VARCHAR(255) DEFAULT NULL COMMENT '标题',`jieshao` VARCHAR(5000) DEFAULT NULL COMMENT '介绍',`yonghu` VARCHAR(255) DEFAULT NULL COMMENT '用户',`yonghuid` INT(11) DEFAULT NULL COMMENT '用户id',`leixing` VARCHAR(255) DEFAULT NULL COMMENT '类型',`leixingid` INT(11) DEFAULT NULL COMMENT '类型id',PRIMARY KEY(`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='相册';------------------------------

DROP TABLE IF EXISTS`t_leixing`;CREATE TABLE `t_leixing` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '类型id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',PRIMARY KEY(`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='类型';------------------------------

DROP TABLE IF EXISTS`t_tupian`;CREATE TABLE `t_tupian` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '图片id',`biaoti` VARCHAR(255) DEFAULT NULL COMMENT '标题',`miaoshu` VARCHAR(5000) DEFAULT NULL COMMENT '描述',`shangchuanshijian` VARCHAR(255) DEFAULT NULL COMMENT '上传时间',`tupian` VARCHAR(255) DEFAULT NULL COMMENT '图片',`xiangce` VARCHAR(255) DEFAULT NULL COMMENT '相册',`xiangceid` INT(11) DEFAULT NULL COMMENT '相册id',PRIMARY KEY(`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='图片';

添加图片模块:

系统中存在添加图片功能,通过点击添加图片可以跳转到该功能模块,在该功能模块中,填写对应的图片信息。图片包含信息标题,描述,上传时间,图片,相册,相册id,填写完所有信息后,通过post方法将数据提交到tianjiatupian.action中,该地址将在服务器中tupianController类中的tianjiatupianact方法中进行响应。响应结果为,获取所有的图片信息,封装一个tupian类,使用tupianController类中定义的tupiandao的insert方法,将图片数据插入到数据库的tupian表中。并给出用户提示信息,添加图片成功,将该信息保存到request的message中,该信息将在页面中进行展示。该部分核心代码如下:

通过tupiandao的insert方法将页面传输的图片添加到数据库中 tupiandao.insert(tupian);

将添加图片成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加图片成功");

返回图片管理界面

return "forward:/tianjiatupian.action";

查询图片模块:

在后台中定义图片查询模块,在侧边栏中点击图片管理,可以跳转到图片管理界面。在该页面中通过tupianController中定义tupianguanli响应图片查询模块。在tupianguanli中查询出所有信息,返回页面进行循环展示。查询方法为tupiandao中的selectByexample方法。该部分核心代码如下:

生成图片样例类,通过example定义查询条件 TupianExample example = new TupianExample();

通过tupiandao的selectByExample方法查询出所有的图片信息 List tupianall = tupiandao.selectByExample(example);

将图片信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("tupianall", tupianall);

返回图片管理界面

return "forward:/tupianguanli.action";

修改图片模块:

对已经上传的图片信息可以进行修改操作,该部分操作在图片管理界面中点击修改按钮可以跳转到图片修改页面。在修改页面中,将初始化所有的图片字段信息,字段信息包括标题,描述,上传时间,图片,相册,相册id。字段信息内容通过图片id获取。修改后的信息传入到tupianController中接收为tupian。在tupianController中包含有提前定义好的tupiandao,该参数为tupianMapper是实现。tupianMapper中定义了修改方法,此处使用修改方法为updateByPrimaryKeySelective,该方法可以将修改后信息同步到数据库中,最终将修改成功信息返回页面中。该部分代码如下:

通过tupiandao的修改方法根据id修改对应的图片 tupiandao.updateByPrimaryKeySelective(tupian);

将修改图片成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改图片信息成功");

返回图片管理界面

return "forward:/tupianguanli.action";

删除图片模块:

在管理页面中,点击删除。页面将通过a标签的href属性,使用get方法将该图片

的id上传到服务器中,在服务器中通过tupianController类中的shanchutupian进行接收,之后调用tupianMapper中的deleteByPrimaryKey方法根据ID进行删除。将删除信息保存到request的message中,在页面给出用户删除成功的提示信息,该部分核心代码如下:

通过tupiandao的删除方法根据id删除对应的图片 tupiandao.deleteByPrimaryKey(id);

将删除图片成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除图片成功");

返回图片管理界面

return "forward:/tupianguanli.action";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java断言——Assertion

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java断言——Assertion 的相关知识; 【1】使用断言 1.1)断言机制: 允许在测试期间向代码中插入一些检查语句。 当代码发布时, 这些…

常见的并发模型_两个常见的并发错误

常见的并发模型作为Baeldung的编辑,我很高兴与一位作者一起撰写有关Java通用并发陷阱的文章。 这是一本不错的书,但是假设开发人员具有一定的能力。 我已经看到了几件即时并发失败的事情。 它们很容易添加到代码中,并保证为您提供奇怪的结果…

java 哈希一致算法_一致哈希算法Java实现

一致哈希算法(Consistent Hashing Algorithms)是一个分布式系统中常用的算法。传统的Hash算法当槽位(Slot)增减时,面临所有数据重新部署的问题,而一致哈希算法确可以保证,只需要移动K/n份数据(K为数据总量, n为槽位数量),且只影响…

java日志——基本日志+高级日志

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java日志——基本日志高级日志 的相关知识; 【1】记录日志 1.1)出现的问题和解决方法: 1.1.1)出现的问题:在我们调试…

java模式匹配_用Java匹配模式

java模式匹配如果您使用的是Java,那么您很有可能以前已经看过它的模式匹配。 String#matches(String)方法在内部使用Pattern类型,该类型包含更复杂的功能: 通过编译正则表达式来创建Pattern 。 该模式与任何输入字符串匹配,并且可…

java在frame怎么计时_java – 退出jframe时的Swing stop计时器

我有一个特定的任务,我按计划的时间间隔运行.基本上我在JFrame中的Label上显示相机.但是,当我退出JFrame时,应用程序似乎运行.我怎么能阻止它?我已经删除了代码的细节,只是将相关部分留在了public class TaskCLass extends JFrame {JPanel p;JLabel l;Timer timer;p…

java日志——修改日志管理器配置+日志本地化

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java日志——修改日志管理器配置日志本地化 的相关知识; 【1】修改日志管理器配置 1.1)可以通过编辑配置文件来修改日志系统的各种属性。 在默认情况下&a…

jpa embedded_JPA @Embeddable和@Embedded

jpa embedded介绍: 作为一个面向对象的开发人员,我们希望避免使用带有大量不相关字段的大型类。 因此,我们可能经常感到有必要使用多个对象来表示JPA实体。 在本快速教程中,我们将学习如何使用JPA或Hibernate中的Embedded和Embed…

jdk内置线程实例_EA问题的JDK14实例

jdk内置线程实例Tagir Valeev最近发布了一条有关即将发布的Java JDK14版本的预览功能的推文: #Java14模式匹配将名称隐藏带入了更高的疯狂程度。 在这里,我为FLAG字段添加或删除了final修饰符,该修饰符仅在不可达的if分支中访问。…

intro to Apache Log4j 2

【0】README 0.1)本文作为 原文(http://logging.apache.org/log4j/2.x/)的译文,仅作参考, 旨在了解 Log4j 2 的相关知识 ; 0.2) Apache Log4j 2 是Log4j的升级版,并对其前任Log4j …

php注册页面模板,选项卡式WordPress登陆注册模板

上次说到不用插件也可以修改WordPress登陆注册界面,不过只是简单的修改了CSS,缺少很多元素,例如header、导航、footer等,为了增加这些元素,我们可以采取另一种方式,将WordPress登陆注册界面做成page模板&am…

内核堆栈 用户堆栈_弹性堆栈介绍

内核堆栈 用户堆栈当您运行对公司至关重要的软件时,您将无法拥有仅用于分析一段时间前发生的事情的日志,让客户端告诉您您的应用程序已损坏,而您甚至不知道发生了什么是真实的问题。 解决该问题的方法之一是使用监视和日志记录。 大多数应用…

php 字符串 中文,php 中文字符串截取乱码

PHP截取字符串如果是英文直接用substr就可以了,但对于中文字符,用substring可能会导致乱码,那么将如何解决呢?1、通过函数mb_substr实现说明:mb_substr($str, $start, $length, $encoding);通过该函数即可,但需要加载p…

java 调试技巧

【0】README 0.1) 本文描述源代码均 转自 core java volume 1, 旨在理解 java 调试技巧 的相关知识; 【1】调试技巧相关 1.1)可以用下面的方法打印或记录任意变量的值: System.out.println("x " x); 或 …

jdk 版本和内部版本对应_JDK 14 Rampdown:内部版本27

jdk 版本和内部版本对应马克 雷因霍尔德( Mark Reinhold)最近的帖子“ JDK 14现在处于Rampdown第一阶段 ”宣布“我们现在处于Rampdown第一阶段”,并且“整体功能已冻结”。 JDK 14 Early Access Build #27(2019/12/12…

对一个java源文件进行正确编译,给定如下一个Java源文件Child.java,编译并运行Child.java,以下结果正确的是()...

总成化无本优部问决企题业内法解,给定流配特别题是物送问。而他再告真的不是己这却一诉自,个源文译并运行下某人重病的家得了假如人忽然间,的应对策略有他使用到。结果感是个人自我指一效能对:。哲学的规揭示律一般,管…

异常java.lang.Thread.dumpStack(Unknown Source)

转自: http://www.blogjava.net/landon/archive/2011/02/27/345265.html 昨天在公司写了一段代码,很简单,就是测试Thread的dumpStack方法的使用。 因为Thread的dumpStack方法不是很常用,但它对于如果想看看谁在运行时调用方法还是…

java集合框架——接口图+类图+遗留类图

【0】README 0.1)绝对的干货,理清 java集合框架中类和接口的层次关系;

构建maven项目插件_如何构建一个Maven插件

构建maven项目插件使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 由于其插件生态系统的普及,Apache Maven仍然是Java领域最受欢迎的构建工具。 很容易找到…

shu函数php,【函数分享】每日PHP函数分享(2021-3-3)

array_intersect_assoc — 带索引检查计算数组的交集说明array_intersect_assoc ( array $array1 , array $array2 , array $... ? ) : arrayarray_intersect_assoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 arra…