摘 要

本文探讨了基于SpringBoot框架的摄影交流网站的开发与实现细节。该网站专为摄影爱好者设计,旨在提供一个功能全面、互动性强且用户体验佳的交流平台。

利用SpringBoot框架的简洁性和高效性,网站后端服务得以构建,确保了系统的稳定性和可扩展性。Spring MVC和MyBatis等成熟技术的运用,实现了前后端分离和数据库交互,为网站的高效运行奠定了坚实基础。

在功能层面,网站为摄影师用户提供了登录注册、作品上传与管理、个人信息展示、交流论坛等丰富功能。这些功能不仅满足了摄影师用户的基本需求,还促进了用户间的互动与交流。同时,便捷的搜索和筛选功能使用户能够快速找到感兴趣的作品和摄影师。

在用户体验方面,网站界面设计美观,操作流程便捷,有效提升了用户满意度和忠诚度。此外,经过性能优化和兼容性测试,网站能够在不同设备和浏览器上稳定运行,确保了广泛的用户覆盖。

总体而言,基于SpringBoot的摄影交流网站的开发与实现取得了显著成果,已成为摄影爱好者的首选交流平台。未来,该网站将继续致力于提升用户体验和功能实用性,为摄影爱好者提供更加优质的服务。

关键字:SpringBoot、摄影交流、功能实现、用户体验、互动性

Abstract

This paper explores the development and implementation details of a photography communication website based on the SpringBoot framework. Designed for photography enthusiasts, the website aims to provide a comprehensive, interactive and good user experience communication platform.

With the simplicity and efficiency of the SpringBoot framework, the back-end service of the website is built to ensure the stability and scalability of the system. The application of mature technologies such as Spring MVC and MyBatis has realized the separation of front and rear ends and database interaction, and laid a solid foundation for the efficient operation of the website.

At the functional level, the website provides photographers with the rich functions of login and registration, work upload and management, personal information display, communication forum and other rich functions. These functions not only meet the basic needs of the photographer users, but also promote the interaction and communication between the users. At the same time, the convenient search and screening functions enable users to quickly find the works and photographers they are interested in.

In terms of user experience, the website interface design is beautiful and the operation process is convenient, which effectively improves user satisfaction and loyalty. Moreover, after performance optimization and compatibility testing, the site runs stably across different devices and browsers, ensuring extensive user coverage.

In general, the development and implementation of the SpringBoot-based photography communication website has achieved remarkable results, and has become the preferred communication platform for photography enthusiasts. In the future, the website will continue to focus on improving the user experience and functional practicality, to provide better services for photography enthusiasts.

Keywords: SpringBoot, photography communication, function implementation, user experience, interactivity;


目 录

第1章 绪 论

1.1 项目背景与意义

1.1.1 研究背景

1.1.2 研究意义

1.2 国内外研究现状

1.2.1 国内研究现状

1.2.2 国外研究现状

1.3 主要研究内容

第2章 开发环境及技术架构

2.1 开发环境与工具

2.2 技术架构

2.2.1 B/S模式

2.2.2 SpringBoot框架

第3章 需求分析

3.1 可行性分析

3.1.1 经济可行性分析

3.1.2 操作可行性分析

3.1.3 技术可行性分析

3.2 功能需求分析

3.3 性能需求分析

3.4 网站流程分析

3.4.1 用户注册流程图

3.4.2 用户注册流程图

第4章 网站设计

4.1 网站功能设计

4.2 数据库设计

4.2.1 概念模型

4.2.2 物理模型

第5章 网站实现

5.1 网站实现概述

5.2网站前台模块

5.2.1普通用户登录界面

5.2.2用户注册界面

5.2.3普通用户首页界面

5.2.4普通用户个人中心界面

5.3摄影师用户模块

5.3.1摄影师作品界面

5.3.2用户作品界面

5.3.3摄影师信息界面

5.4后台管理模块

5.4.1用户管理界面

5.4.2通知公告管理界面

5.4.3资源管理界面

5.4.4系统管理界面

第6章 网站测试

6.1 测试目的

6.2 功能测试

6.3 性能测试

6.4 测试结果

第7章 总结与展望

参考文献

致 谢

第1章绪 论

1.1 项目背景与意义

1.1.1 研究背景

随着数字技术的迅猛发展和互联网的广泛普及,摄影艺术已成为人们记录生活、表达情感的重要方式。摄影作品不仅具有审美价值,更是文化传承和艺术交流的重要载体。然而,传统的摄影交流方式往往局限于线下展览、摄影俱乐部等实体空间,存在信息更新慢、受众范围有限、互动性差等问题。随着社交媒体的兴起,虽然为摄影作品的分享和传播提供了新的渠道,但往往难以满足摄影爱好者对专业交流、作品展示及技巧学习的深度需求。

因此,构建一个基于SpringBoot的摄影交流网站,旨在打破时空限制,为摄影爱好者提供一个便捷、高效、互动性强的在线交流平台。该网站将整合摄影资讯、作品展示、技术交流、比赛活动等功能,形成一个综合性的摄影生态系统。通过这一平台,摄影爱好者可以随时随地浏览最新的摄影作品、获取行业资讯、参与技术交流,从而拓宽视野、提升技能、激发创作灵感。

同时,随着移动互联网技术的不断发展,智能手机和相机的普及率不断提高,摄影作品的创作和分享门槛进一步降低。越来越多的摄影爱好者开始关注并参与到摄影交流中来,形成了一个庞大的用户群体。这为基于SpringBoot的摄影交流网站的开发提供了广阔的市场空间和用户基础。

1.1.2 研究意义

该网站的开发与实现,承载着重要的现实意义和社会价值。一方面,该网站为摄影爱好者提供了一个便捷、高效的在线交流平台,打破了传统交流方式的时空局限。用户可随时随地浏览最新的摄影作品、获取行业资讯、参与技术交流,极大地丰富了他们的精神生活和文化体验。这种便捷的交流方式不仅促进了摄影文化的传播,还激发了摄影爱好者的创作热情和创新能力,推动了摄影艺术的不断发展和繁荣。

另一方面,该网站的开发还具有重要的经济价值。通过提供优质的摄影交流服务,该网站吸引了大量用户关注和参与,形成了庞大的用户群体和流量资源。这为摄影行业和相关产业的发展提供了有力支持。同时,该网站还为摄影师提供了作品展示和销售的平台,有助于提升他们的知名度和收入,进一步促进了摄影产业的繁荣。

综上所述,基于SpringBoot的摄影交流网站的开发与实现,不仅满足了摄影爱好者的深度交流需求,还推动了摄影文化的传播和发展,丰富了人们的精神生活和文化体验,并具有重要的经济价值。

1.2 国内外研究现状

1.2.1 国内研究现状

在国内,基于SpringBoot的摄影交流网站的开发与实现正逐渐受到重视。随着摄影文化的普及和互联网技术的飞速发展,越来越多的摄影爱好者开始寻求在线交流的平台。为满足这一需求,众多开发者和研究团队开始探索利用SpringBoot等现代技术框架来构建摄影交流网站。

国内的研究主要集中在摄影艺术与网络技术相结合的领域。一方面,研究者们致力于开发功能丰富、用户友好的摄影交流网站,以满足摄影爱好者的多样化需求。这些网站通常包括作品展示、技术交流、比赛活动等多个板块,为摄影爱好者提供了一个全面的在线交流平台。另一方面,研究者们还关注网站的性能和安全性,通过优化服务器配置、加强数据加密等措施,确保用户数据的安全和隐私。

此外,国内的一些摄影社区和网站也开始尝试使用SpringBoot等技术框架来构建摄影交流平台,以提升网站的性能和稳定性。这些平台不仅提供了基本的作品展示和交流功能,还融入了社交元素,如用户关注、评论互动等,进一步增强了用户的参与度和互动性。

总的来说,国内在基于SpringBoot的摄影交流网站的开发与实现方面已经取得了一定的成果,但仍存在一些挑战和问题,如用户体验优化、数据安全与隐私保护等。未来的研究将更加注重这些方面的探索和创新,以推动摄影交流网站的进一步发展。

1.2.2 国外研究现状

在国外,基于SpringBoot的摄影交流网站的开发已经相对成熟。许多知名的摄影社区和平台都采用了SpringBoot等现代技术框架来构建自己的网站系统。

国外的研究更加注重技术的创新和应用。研究者们不断探索如何利用现代技术提升摄影交流网站的性能、安全性和用户体验。例如,通过优化图像处理算法,提升网站的响应速度和图像加载速度;通过加强数据加密技术,确保用户数据的安全传输和存储;通过引入智能推荐系统,根据用户的兴趣和偏好提供个性化的服务。

此外,国外的摄影交流网站还注重数据分析能力的开发。通过收集和分析用户行为数据、作品数据等,分析出有价值的信息和模式,为摄影领域的研究提供数据支持。这些数据分析结果不仅有助于提升网站的运营效率和用户满意度,还为摄影爱好者提供了更加精准的推荐和服务。

同时,国外的摄影交流网站还注重社交功能的开发和应用。通过引入用户关注、评论互动、私信聊天等社交元素,增强了用户之间的交流和合作。这些社交功能不仅提升了用户的参与度和互动性,还为摄影爱好者提供了一个更加丰富的在线交流体验。

综上所述,国外在基于SpringBoot的摄影交流网站的开发方面已经取得了显著的成果,并在技术创新、数据分析、社交功能等方面积累了丰富的经验。这些经验和成果为国内的摄影交流网站开发提供了有益的借鉴和启示。

1.3 主要研究内容

在开发摄影交流网站时,后端采用了Java作为编程语言,并利用了SpringBoot框架,这使得复杂的业务逻辑和数据操作得以高效完成。与此同时,网站的数据存储和管理通过MySQL数据库实现。结合Vue.js作为前端框架,具有数据绑定和组件化的特点,能够有效地提升用户体验和开发效率。在开发工具的选取上,使用了eclipse,它的强大功能和易用性使得编程工作更为高效;而Navicat作为数据库管理工具,使得数据库操作更为方便和快捷。这样的技术选择,确保了管理系统的开发流程既高效又稳定。本网站主要实现包括系统用户、摄影师信息管理、摄影师作品管理、用户作品管理、作品分类管理、系统管理、通知公告管理、资源管理、交流管理等功能进行管理。

第2章开发环境及技术架构

2.1 开发环境与工具 

摄影交流网站使用Java语言作为主要语言,前端使用Vue.js框架,后端基于SpringBoot开发而成,存储数据使用的是使用较为广泛的MySQL数据库。网站所使用的网站开发环境如下表2-1所示。

表2-1网站开发环境

操作网站版本:

Win10

数据库环境:

MySQL5.7

JDK版本:

JDK1.8.0_191

主要技术:

Springboot2、Apache Tomcat8.5、Webpack 4.0、Vue.js、Element UI、Navicat、bootstrap……

浏览器:

Chrome

(1)MySQL

MySQL是一款广受欢迎的关系数据库管理系统,它能够高效地存储和处理大量的数据。MySQL在Web应用程序中有着卓越的表现,是众多开发者的首选[1]。MySQL遵循SQL语言的标准,这是一种通用的数据库操作语言,简单易学,功能强大。结合Apache交流器,MySQL可以构建出一个优秀的开发环境[2]。

(2)SpringBoot

SpringBoot是一个新颖的框架,由Pivotal团队推出,旨在简化Spring应用的创建和开发过程。SpringBoot通过提供一些默认的配置和约定,避免了开发者重复编写模板化的代码。SpringBoot力求成为快速应用开发领域的领导者,让开发者能够更专注于业务逻辑[3]。

(3)Mybatis

Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程和高级映射。Mybatis可以消除大部分的JDBC代码和参数的手工设置,让开发者更方便地操作数据库。Mybatis可以和Spring框架完美地集成,提高开发效率和性能[4]。

(4)Tomcat

Tomcat是一种免费的交流器,它能够有效地处理大量的网络访问,特别是在访问量较少的情况下。当将Tomcat安装在电脑上时,它能够自动分析前端HTML页面的请求,从而提高网络的性能。事实上,Tomcat是对Apache的一种延伸,但它与Apache之间的关系更加紧密,因为它们在不同的进程中运行,而且它们之间也有着自己的独立性[5]。

(5)Vue.js

Vue.js是一个轻量级的、用于构建用户界面的渐进式框架。它与其他大型框架不同,Vue.js采用了自底向上的设计思想,可以逐层地应用到项目中[6]。Vue.js的核心库只关注视图层,易于上手,也便于与第三方库或现有项目集成。另一方面,Vue.js也可以与现代化的工具链和各种支持库结合使用,从而实现复杂的单页应用程序。

2.2 技术架构

本网站是基于SpringBoot、Mysql、Vue的前后端完全分离的后台管理系统。

2.2.1 B/S模式

B/S模式,即浏览器/交流器模式,是一种常见的网络应用架构模式。在B/S模式中,用户通过浏览器作为客户端与交流器进行交互。在浏览器/交流器(browser / Server Architecture)网站中,用户只需通过浏览器,就能够轻松地向分布在网络各处的众多交流器发送海量的请求。B/S网站大大地简化了客户端的工作,让用户体验更加便捷[7]。

2.2.2 SpringBoot框架

Spring是一个知名的开源框架,它于2003年诞生于Rod Johnson的《Expert One-on-One Java EE Development and Design》一书中。Spring的初衷是为了解决企业级应用开发的复杂性,它让简单的JavaBean也能够实现原本只有EJB才能做到的功能。Spring不仅适用于交流器端的开发,它还能够为任何Java应用程序带来简洁、可测试和低耦合的优势。尽管Spring的组件代码很轻量级,但是它的配置却很繁琐。最初,Spring是使用XML配置的,但是随着项目的增长,XML配置也变得越来越多[8]。

为了改进和优化Spring的缺点,SpringBoot框架应运而生,它基于约定优于配置的理念,让开发者无需编写大量的配置文件,只需遵循一些简单的规则即可。SpringBoot使开发者能够专注于业务逻辑的编码,而不用在配置和业务之间切换思维,这在很大程度上提高了开发效率,缩短了项目开发周期。

第3章需求分析

3.1 可行性分析

通过综合考虑经济、操作、技术等因素,可以对基于SpringBoot的摄影交流网站的开发与实现的可行性进行全面评估。这将有助于确定项目的成功概率,并为项目规划提供坚实的基础。

3.1.1 经济可行性分析

经济可行性在此仅代表网站的运维成本,开发成本不在此考虑。

目前该模式下的相关网站的数量日益增多,信息管理系统的平民化、普及化使用户人数呈上升趋势,当用户人数庞大了,运维成本可以由广告费进行填补,包括开发成本。

所以经济可行性没有问题。

3.1.2 操作可行性分析

此次项目设计参考了几个该模式下网站的开发案例,对他们的操作界面分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。

因此操作可行性也没有问题。

3.1.3 技术可行性分析

技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时网站的技术更新换代的纳新性如何,开发时间成本费用比如何。

现有的JAVA语言能够迎合所有网站的搭建。开发这个摄影交流网站的时候我采用了JAVA+SpringBoot+Vue 用以运行整体程序。

综上所述技术可行性也没有问题。

3.2 功能需求分析

通过对应的功能做了需求分析以后该摄影交流网站各角色主要包括的功能说明如下:

一、普通用户功能描述:

  1. 登录注册:普通用户可以通过手机号或邮箱进行注册,并通过密码或短信验证码进行登录。
  2. 首页:首页展示了网站的最新作品、热门摄影师、活动预告等信息,方便用户快速了解网站内容。
  3. 交流论坛:用户可以在交流论坛中发布帖子、回复评论,与其他用户进行互动和交流。
  4. 通知公告:用户可以查看网站发布的通知公告,包括活动预告、系统更新等。
  5. 摄影资讯:网站提供了丰富的摄影资讯,包括摄影技巧、行业动态等,帮助用户提升摄影水平。
  6. 摄影师信息:用户可以查看摄影师的详细信息,包括简介、作品风格等,方便用户了解摄影师的背景。
  7. 摄影师作品:用户可以欣赏摄影师上传的作品,包括风光、人像、静物等不同类型的作品。
  8. 用户作品:用户可以上传自己的作品,并与其他用户分享和交流。
  9. 我的账户:用户可以在我的账户页面查看个人信息、修改密码、绑定第三方账号等。
  10. 个人中心:个人中心集成了用户的个人首页、用户作品、收藏等功能,方便用户管理自己的信息和作品。

摄影交流网站普通用户角色用例图如下所示。

图3-1 普通用户角色用例图

二、摄影师用户功能描述:

  1. 登录注册:摄影师用户通过手机号、邮箱或社交媒体账号快速注册并登录。
  2. 首页:展示最新动态、热门作品和活动预告,让摄影师用户快速了解网站内容。
  3. 交流论坛:摄影师用户分享心得、技巧,参与讨论,提升摄影技能。
  4. 通知公告:接收关于活动、比赛和系统更新的重要通知。
  5. 摄影资讯:获取最新的摄影行业动态、器材评测和拍摄技巧。
  6. 摄影师信息:编辑和完善个人信息,展示个人简介和作品风格。
  7. 摄影师作品:上传、管理个人作品,设置分类和描述,展示给其他用户。
  8. 用户作品:浏览和欣赏其他摄影师用户的作品,获取灵感和创意。
  9. 我的账户:查看和修改个人信息,绑定或解绑社交媒体账号,确保账户安全。
  10. 个人中心:集成个人首页、作品、信息和收藏,打造全面个人管理平台。

摄影交流网站摄影师用户角色用例图如下所示。

图3-2 摄影师用户角色用例图

三、管理员功能描述:

  1. 登录:管理员通过专用账号和密码登录后台管理系统,确保只有授权的管理员才能访问和操作后台。
  2. 后台首页:后台首页提供了系统的概览信息,包括用户数量、作品数量、系统状态等,方便管理员快速了解系统整体情况。
  3. 系统用户:管理员可以管理所有注册用户,包括查看用户信息、修改用户权限、冻结或解冻用户账号等。
  4. 摄影师信息管理:管理员可以发布和更新摄影师信息,包括摄影师的简介、作品风格、联系方式等,方便用户了解摄影师的背景和作品。
  5. 摄影师作品管理:管理员可以审核和管理摄影师上传的作品,确保作品的质量和合规性。同时,可以对作品进行分类和排序,方便用户查找和欣赏。
  6. 用户作品管理:管理员可以查看和管理普通用户上传的作品,确保作品内容符合网站规定。同时,可以对优秀作品进行推荐和展示。
  7. 作品分类管理:管理员可以设置和管理作品分类,方便用户根据分类查找和筛选作品。
  8. 系统管理:管理员可以进行系统设置,包括修改系统名称、设置LOGO、管理后台菜单等。同时,可以对系统日志进行查看和分析,确保系统安全稳定运行。
  9. 通知公告管理:管理员可以发布和编辑通知公告,包括活动预告、系统维护通知等,确保用户能及时获取重要信息。
  10. 资源管理:管理员可以管理系统的资源文件,包括图片、视频等多媒体资源,确保资源的合法性和有效性。
  11. 交流管理:管理员可以监控和管理交流论坛中的用户互动,包括处理违规内容、回复用户问题等,确保论坛氛围的健康和积极。

摄影交流网站管理员角色用例图如下所示。

图3-3 管理员角色用例图

综上所述,基于SpringBoot的摄影交流网站的开发与实现设计与实现的功能需求分析应充分考虑普通用户、摄影师用户和管理员的不同需求,确保网站功能的丰富性、实用性和安全性。

3.3 性能需求分析

用户操作响应时间:网站应保证用户在操作网站时的响应速度,例如交流等操作应该迅速响应。

网站稳定性:网站应具备一定的容错能力和稳定性,防止因为意外情况导致网站崩溃。

数据安全:用户信息、摄影交流记录等敏感数据需要加密存储,确保数据安全性。

网站并发能力:网站应考虑到可能大量用户同时访问的情况,保证网站的并发处理能力。

日志记录:网站需要记录用户操作日志、异常日志等,便于排查问题和分析用户行为。

基于以上性能需求将确保摄影交流网站能够稳定、高效地运行,能够很好地满足用户和管理员的需求。

3.4 网站流程分析

3.4.1 用户注册流程图

注册的过程,第一部分是账号的注册,第二部分是信息完善。在业务开展过程中,管理员可对用户信息进行修改等管理操作,注册流程如图3-4所示。

图3-4 用户注册流程图

3.4.2 用户注册流程图

登录时,用户填写用户名、密码、选择身份进行登录,在登录过程中后端会对发送过来的信息进行验证和判断,具体的登录流程如图3-5用户登录流程图所示。

图3-5 用户登录流程图

第4章网站设计

4.1 网站功能设计

功能模块设计是网站开发过程中的重要阶段,它旨在将网站划分为不同的模块,每个模块负责完成特定的功能或任务。摄影交流网站由多个功能模块组成,每个模块下又包含具体的功能操作。功能模块图如下图所示。

图4-1系功能模块图

4.2 数据库设计

数据库的设计是网站的设计中比较重要的一部分内容,数据库设计是一切网站设计的基础,首先需要进行概念模型E-R图的设计,然后进行关系模型物理模型的建立。

4.2.1 概念模型

本文在网站分析阶段就抽取了一些实体,根据实体之间的关系,经过分析进行网站E-R图的设计。摄影交流网站总体E-R图如下图所示。

图4-7网站总体E-R图

4.2.2 物理模型

本网站采MySQL数据库管理系统对数据进行管理。下面是对各个表中的表中各个字段数据类型、大小等做简短描述。摄影交流网站所需要的部分数据结构表如下表所示。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

parent

varchar

64

0

Y

N

父级菜单

8

parent_sort

int

10

0

N

N

0

父级菜单排序

9

position

varchar

32

0

Y

N

位置:

10

mode

varchar

32

0

N

N

_blank

跳转方式:

11

add

tinyint

3

0

N

N

1

是否可增加:

12

del

tinyint

3

0

N

N

1

是否可删除:

13

set

tinyint

3

0

N

N

1

是否可修改:

14

get

tinyint

3

0

N

N

1

是否可查看:

15

field_add

text

65535

0

Y

N

添加字段:

16

field_set

text

65535

0

Y

N

修改字段:

17

field_get

text

65535

0

Y

N

查询字段:

18

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

19

table_nav

varchar

500

0

Y

N

跨表导航:

20

option

text

65535

0

Y

N

配置:

21

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

22

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表classification_of_works (作品分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

classification_of_works_id

int

10

0

N

Y

作品分类ID

2

classification_of_works

varchar

64

0

Y

N

作品分类

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表code_token

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

code_token_id

int

10

0

N

Y

2

token

varchar

255

0

Y

N

3

code

varchar

255

0

Y

N

验证码

4

expire_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

失效时间

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表forum (论坛)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

forum_id

mediumint

8

0

N

Y

论坛id

2

display

smallint

5

0

N

N

100

排序

3

user_id

mediumint

8

0

N

N

0

用户ID

4

nickname

varchar

16

0

Y

N

昵称:[0,16]

5

praise_len

int

10

0

Y

N

0

点赞数

6

hits

int

10

0

N

N

0

访问数

7

title

varchar

125

0

N

N

标题

8

keywords

varchar

125

0

Y

N

关键词

9

description

varchar

255

0

Y

N

描述

10

url

varchar

255

0

Y

N

来源地址

11

tag

varchar

255

0

Y

N

标签

12

img

text

65535

0

Y

N

封面图

13

content

longtext

2147483647

0

Y

N

正文

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

16

avatar

varchar

255

0

Y

N

发帖人头像:

17

type

varchar

64

0

N

N

0

论坛分类:[0,1000]用来搜索指定类型的论坛帖

18

istop

int

10

0

N

N

0

是否置顶

表forum_type (论坛分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

name

varchar

16

0

N

N

分类名称:[2,16]

3

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

4

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

5

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

6

icon

varchar

255

0

Y

N

分类图标:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表ordinary_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ordinary_users_id

int

10

0

N

Y

普通用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

contact_number

varchar

16

0

Y

N

联系电话

5

examine_state

varchar

16

0

N

N

未审核

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表photographers_works (摄影师作品)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

photographers_works_id

int

10

0

N

Y

摄影师作品ID

2

title_of_work

varchar

64

0

Y

N

作品名称

3

classification_of_works

varchar

64

0

Y

N

作品分类

4

work_tags

varchar

64

0

Y

N

作品标签

5

photographer_user

int

10

0

Y

N

0

摄影师用户

6

photographers_name

varchar

64

0

Y

N

摄影师姓名

7

cover_photo

varchar

255

0

Y

N

封面图片

8

content_details

longtext

2147483647

0

Y

N

内容详情

9

praise_len

int

10

0

N

N

0

点赞数

10

examine_state

varchar

16

0

N

N

未审核

审核状态

11

examine_reply

varchar

16

0

Y

N

审核回复

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表photographer_information (摄影师信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

photographer_information_id

int

10

0

N

Y

摄影师信息ID

2

photographer_user

int

10

0

Y

N

0

摄影师用户

3

photographers_name

varchar

64

0

Y

N

摄影师姓名

4

photographer_gender

varchar

64

0

Y

N

摄影师性别

5

photographers_style

varchar

64

0

Y

N

摄影师风格

6

photographers_phone_number

varchar

64

0

Y

N

摄影师电话

7

regional_name

varchar

64

0

Y

N

地区名称

8

cover_photo

varchar

255

0

Y

N

封面图片

9

personal_profile

longtext

2147483647

0

Y

N

个人简介

10

hits

int

10

0

N

N

0

点击数

11

praise_len

int

10

0

N

N

0

点赞数

12

examine_state

varchar

16

0

N

N

未审核

审核状态

13

examine_reply

varchar

16

0

Y

N

审核回复

14

recommend

int

10

0

N

N

0

智能推荐

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表photographer_user (摄影师用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

photographer_user_id

int

10

0

N

Y

摄影师用户ID

2

photographers_name

varchar

64

0

Y

N

摄影师姓名

3

photographer_gender

varchar

64

0

Y

N

摄影师性别

4

photographers_style

varchar

64

0

Y

N

摄影师风格

5

photographers_phone_number

varchar

16

0

Y

N

摄影师电话

6

examine_state

varchar

16

0

N

N

未审核

审核状态

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表schedule (日程管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

schedule_id

smallint

5

0

N

Y

日程ID:[0,32767]

2

content

varchar

255

0

Y

N

日程内容

3

scheduled_time

datetime

19

0

Y

N

计划时间

4

user_id

int

10

0

N

N

用户id

5

create_time

datetime

19

0

Y

N

创建时间

6

update_time

datetime

19

0

Y

N

更新时间

表score (评分)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

score_id

int

10

0

N

Y

评分ID:

2

user_id

int

10

0

N

N

0

评分人:

3

nickname

varchar

64

0

Y

N

昵称:

4

score_num

double

5

2

N

N

0.00

评分:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

source_table

varchar

255

0

Y

N

来源表:

8

source_field

varchar

255

0

Y

N

来源字段:

9

source_id

int

10

0

N

N

0

来源ID:

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

int

10

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表user_works (用户作品)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_works_id

int

10

0

N

Y

用户作品ID

2

title_of_work

varchar

64

0

Y

N

作品名称

3

classification_of_works

varchar

64

0

Y

N

作品分类

4

work_tags

varchar

64

0

Y

N

作品标签

5

publish_user

int

10

0

Y

N

0

发布用户

6

cover_photo

varchar

255

0

Y

N

封面图片

7

content_details

longtext

2147483647

0

Y

N

内容详情

8

praise_len

int

10

0

N

N

0

点赞数

9

examine_state

varchar

16

0

N

N

未审核

审核状态

10

examine_reply

varchar

16

0

Y

N

审核回复

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

第5章网站实现

5.1 网站实现概述

本文研究的摄影交流网站基于SpringBoot开发,旨在提供用户便捷的摄影交流体验。网站支持用户注册和登录,浏览通知公告、摄影资讯等信息。网站还包括管理员功能,用于管理用户、资源管理、通知公告管理、系统管理等。整体设计追求简洁高效,以提升用户体验和网站运行效率为目标。

本设计的前端网站每个页面都具备必要的交互设计,较好地呈现了摄影交流网站的基础功能。组件的构建上思路清晰,易于理解,扁平风格突出简洁,配色清新。游客注册成为普通用户即可登录网站前台实现各项操作。

5.2网站前台模块

5.2.1普通用户登录界面

用户输入用户名和密码后,网站首先对这些输入进行基本的格式验证,确保用户名和密码符合网站设定的格式要求(如长度、特殊字符要求等)。网站接收到用户输入后,会根据用户名查找网站中存储的用户信息数据库或者其他持久化存储方式。网站需要验证密码的正确性,验证成功即可成功登录。

            • 5.1用户登录界面设计

登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,其代码如下:

 /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            Duration duration = Duration.ofSeconds(7200L);

            redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

    }

5.2.2用户注册界面

用户注册时,网站要求用户提供必要的信息,例如用户名、密码、电子邮件地址等。这些信息通常由用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,网站会为新用户创建一个账户。这包括分配一个唯一的用户ID和设置初始的权限或者角色。

            • 5.2用户注册界面设计

注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下:

    /**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}     

5.2.3普通用户首页界面

普通用户登录网站后首先进入首页界面,展示综合展示交流论坛、通知公告、摄影资讯、摄影师信息、摄影师作品、用户作品,提供全面的信息概览。

例如,普通用户前台首页主界面图如下所示。

            • 5.3普通用户首页主界面设计

例如,普通用户前台首页摄影资讯界面图如下所示。

            • 5.4普通用户摄影资讯详情界面设计

例如,普通用户前台首页通知公告界面图如下所示。

            • 5.5普通用户通知公告详情界面设计

5.2.4普通用户个人中心界面

个人中心集成了用户的个人首页、用户作品、收藏等功能,方便用户管理自己的信息和作品。

例如,普通用户个人中心主界面设计如下所示。

            • 5.6普通用户个人中心主界面设计

例如,用户作品界面图如下所示。

            • 5.7普通用户用户作品界面设计

5.3摄影师用户模块

5.3.1摄影师作品界面

摄影师作品功能是摄影师用户展示自己作品的核心功能。摄影师用户可以在这里上传和管理自己的作品,包括设置作品分类、添加作品描述、调整作品展示顺序等。这些作品将展示在摄影师的个人主页和作品页面上,供其他用户欣赏和评论。

            • 5.8摄影师用户摄影师作品界面设计

5.3.2用户作品界面

用户作品功能允许摄影师用户浏览和欣赏其他用户上传的作品。这一功能不仅为摄影师用户提供了灵感来源,也促进了摄影师之间的交流和互动。

            • 5.9摄影师用户的用户作品界面设计

5.3.3摄影师信息界面

摄影师信息功能是摄影师用户展示自己的重要平台。在这里,摄影师用户可以编辑和完善自己的个人信息,包括个人简介、作品风格、联系方式等。这些信息将展示在摄影师的个人主页上,方便其他用户了解摄影师的背景和作品。

            • 5.10摄影师用户摄影师信息管理界面设计

5.4后台管理模块

5.4.1用户管理界面

管理员可对普通用户、摄影师用户和管理员等用户信息进行管控,可以查看和编辑所有网站用户的信息。

            • 5.11用户管理界面设计

新增一条数据,通过post传入一个json对象,然后经过request.getReader(),最后经过readBody()转成一个Map,含有String和Object,key用的是字段名,Object存放数据,最终得到Map,insert用拼装sql,读取body,组装成一个insert对象,runCountSql()语句,代码如下:

    @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下:

    @PostMapping("/set")

@Transactional

    public Map<String, Object> set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

    }

删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下:

    @RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

    }

    public void delete(Map<String,String> query,Map<String,String> config){

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

        log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());

    }

5.4.2通知公告管理界面

管理员可查看所有通知公告信息,进行发布、编辑、删除网站的通知公告,确保用户及时获取重要信息。

            • 5.12通知公告管理界面设计

5.4.3资源管理界面

管理员可查看所有摄影资讯管理信息,进行查询和删除操作,确保摄影资讯的准确性和完整性。

            • 5.13摄影资讯管理详情界面设计

5.4.4系统管理界面

管理员可对首页的轮播图进行管理,进行增删改查操作,可点击详情进行查阅。

            • 5.14系统管理设计界面

图片/文件/视频等的上传方法通过MultipartFile,代码如下:

   @PostMapping("/upload")

    public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

        log.info("进入方法");

        if (file.isEmpty()) {

            return error(30000, "没有选择文件");

        }

        try {

            //判断有没路径,没有则创建

            String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

            File targetDir = new File(filePath);

            if (!targetDir.exists() && !targetDir.isDirectory()) {

                if (targetDir.mkdirs()) {

                    log.info("创建目录成功");

                } else {

                    log.error("创建目录失败");

                }

            }

            String fileName = file.getOriginalFilename();

            File dest = new File(filePath + fileName);

            log.info("文件路径:{}", dest.getPath());

            log.info("文件名:{}", dest.getName());

            file.transferTo(dest);

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("url", "/api/upload/" + fileName);

            return success(jsonObject);

        } catch (IOException e) {

            log.info("上传失败:{}", e.getMessage());

        }

        return error(30000, "上传失败");

    }

第6章网站测试

6.1 测试目的

在对该网站进行完详细设计和编码之后,就要对摄影交流网站的程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。网站测试的目的在于确保软件正常运作,并实现其应有的功能,促进行中出现的错误和逻辑问题。网站测试不但可以找见程序运行中的网站错误,还可以找见程序运行的需要改进的地方,并去协助改良程序运行使其获得最高幅度的完备。世界一流的安装测试员可以增加软件品质,将软件网站错误概率降至最少。

6.2 功能测试

本网站的主要功能就是摄影师用户登录后,可搜索和浏览通知公告,普通用户可查阅通知公告,管理员登录网站后台后可对通知公告进行管理,包括增改删查操作。测试设计如下所示:

  1. 登录模块功能测试

用户登录前首先需注册成为网站用户,使用账号和密码可进行登录。用户登录功能测试用例设计如下表所示:

表6-1 用户登录功功能测试用例

测试编号

测试目的

测试步骤

预期结果

实际结果

是否通过

TC001

验证有效登录

1. 输入正确的用户名和密码 <br> 2. 点击登录按钮

显示登录成功,跳转至用户首页

登录成功,跳转至用户首页

通过

TC002

验证空用户名登录

1. 不输入用户名,输入正确密码 <br> 2. 点击登录按钮

显示用户名不能为空提示信息

显示用户名不能为空提示信息

通过

TC003

验证空密码登录

1. 输入正确用户名,不输入密码 <br> 2. 点击登录按钮

显示密码不能为空提示信息

显示密码不能为空提示信息

通过

TC004

验证错误用户名登录

1. 输入错误的用户名和正确密码 <br> 2. 点击登录按钮

显示用户名或密码错误提示信息

显示用户名或密码错误提示信息

通过

TC005

验证错误密码登录

1. 输入正确用户名和错误密码 <br> 2. 点击登录按钮

显示用户名或密码错误提示信息

显示用户名或密码错误提示信息

通过

  1. 通知公告模块功能测试

通知公告模块测试包括通知公告展示功能测试、通知公告添加功能测试、通知公告搜索等功能测试。通知公告模块测试用例如表6.2-6.4所示。

通知公告展示功能测试用例设计如下表所示:

表6-2 通知公告展示功能测试用例

测试编号

测试目的

测试步骤

预期结果

实际结果

是否通过

TC001

验证正常展示通知公告

1. 进入通知公告展示页面 <br> 2. 浏览展示的通知公告内容

能够正常显示通知公告内容

通知公告内容正常显示

通过

TC002

验证通知公告链接跳转

1. 进入通知公告展示页面 <br> 2. 点击通知公告链接

能够跳转至相应通知公告详情页面

成功跳转至通知公告详情页面

通过

TC003

验证搜索功能

1. 进入通知公告展示页面 <br> 2. 使用搜索功能搜索通知公告

显示符合搜索条件的通知公告列表

显示符合搜索条件的通知公告列表

通过

TC004

验证科目分类展示

1. 进入通知公告展示页面 <br> 2. 选择科目分类

显示该分类下的通知公告列表

成功显示该分类下的通知公告列表

通过

TC005

验证通知公告的评论功能

1. 进入通知公告详情展示页面 <br> 2. 查看通知公告并发表评论

评论成功显示在通知公告页面

评论成功显示在通知公告页面

通过

通知公告添加功能测试用例设计如下表所示:

表6-3 通知公告添加功能测试用例

测试编号

测试目的

测试步骤

预期结果

实际结果

是否通过

TC001

验证添加通知公告

1. 进入通知公告添加界面 <br> 2. 输入通知公告信息 <br> 3. 点击添加按钮

通知公告成功添加到网站页面中

通知公告成功添加到网站页面中

通过

TC002

验证通知公告科目分类选择

1. 进入通知公告添加界面 <br> 2. 选择科目分类 <br> 3. 输入通知公告信息 <br> 4. 提交通知公告信息

根据选择的通知公告科目分类成功添加通知公告

根据选择的通知公告类型成功添加通知公告

通过

TC003

验证通知公告内容输入

1. 进入通知公告添加界面 <br> 2. 输入正确通知公告内容和答案 <br> 3. 点击添加按钮

通知公告内容成功录入网站

通知公告内容成功录入网站

通过

TC004

验证通知公告图片上传

1. 进入通知公告添加界面 <br> 2. 上传通知公告相关图片 <br> 3. 点击添加按钮

图片成功上传并与通知公告关联

图片成功上传并与通知公告关联

通过

通知公告搜索功能测试用例设计如下表所示:

表6-4 通知公告搜索功能测试用例

测试编号

测试目的

测试步骤

预期结果

实际结果

是否通过

TC001

验证通知公告输入物品名称搜索

1. 进入通知公告搜索界面 <br> 2. 输入物品名称 <br> 3. 确认并搜索

根据选择的物品名称关键词显示相关通知公告信息

根据选择的物品名称关键词成功显示相关通知公告信息

通过

TC002

验证通知公告输入科目分类搜索

1. 进入通知公告搜索界面 <br> 2. 输入科目分类 <br> 3. 确认并搜索

根据选择的科目分类关键词显示相关通知公告信息

根据选择的科目分类关键词成功显示相关通知公告信息

通过

TC003

验证通知公告选择审核状态搜索

1. 进入通知公告搜索界面 <br> 2. 输入审核状态 <br> 3. 确认并搜索

根据选择的审核状态关键词显示相关通知公告信息

根据选择的审核状态关键词成功显示相关通知公告信息

6.3 性能测试

  1. 兼容性测试

表6-7 兼容性测试用例

用例编号

测试类型

测试目标

操作过程

预期结果

兼容性_01

设备兼容性

测试网站在不同设备上的表现

在多种设备上访问网站并记录表现

网站在各种设备上都能正常加载和显示页面

兼容性_02

浏览器兼容性

测试网站在不同浏览器上的表现

在多种浏览器中访问网站并记录表现

网站在各种主流浏览器上都能正常加载和显示页面

兼容性_03

分辨率兼容性

测试网站在不同分辨率下的显示效果

在不同分辨率的设备上访问网站并记录表现

网站在各种分辨率下都能适应并正常显示内容

兼容性_04

操作网站兼容性

测试网站在不同操作网站上的运行情况

在不同操作网站上访问网站并记录表现

网站能够在常用操作网站上正常运行和显示

  1. 性能测试

表6-8 性能测试用例

用例编号

测试类型

测试目标

操作过程

预期结果

性能_01

负载测试

测试网站在正常负载下的性能

逐步增加用户数来模拟不同的负载情况

网站能够稳定处理并响应不同数量的用户请求

性能_02

压力测试

测试网站在极端负载下的性能

以超过网站承受极限的用户数来测试网站

网站能够在高负载情况下仍然保持正常运行

性能_03

并发测试

测试网站能同时处理多少并发用户请求

同时发送多个并发用户请求来测试网站性能

网站能够有效地处理多个并发请求

性能_04

数据量测试

测试网站在数据量下的性能

向网站添加量数据并测试网站响应时间

网站能够在数据量情况下保持较快的响应时间

6.4 测试结果

全部测试用例都已通过,且不存在漏洞,实现了本论文开始时所作要求和期望。本网站运行稳定,使用流畅,可以满足客户需求。试运行后进行网站评估,可以认为该网站达到预定的目标要求,可以满足用户的需求,也满足了网站开发前所作目标。网站在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。在规定的时间内实现网站的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。

简而言之,经过严格的测试,可以发现该网站的功能和性能非常出色,它的精度、可靠性、稳健性都达到了极高的水平,而且它还支持快速、精细的点击操作,使用者的使用感受更加良好。此外,它还支持各种主流浏览器,满足不同的使用要求。

第7章总结与展望

在基于SpringBoot下的摄影交流网站设计与实现中,通过普通用户、摄影师用户以及管理员等角色的划分,实现了多层次的用户管理和权限控制。通过摄影资讯管理、作品分类管理等功能模块,提供了便捷高效的摄影交流体验。同时,网站用户、摄影资讯管理、作品分类管理、系统管理、通知公告管理、资源管理等功能的引入,进一步增强了网站的交互性和用户满意度,有效保障了摄影交流的公平性和网站的稳定运行。资源管理和留言管理的实施,不仅丰富了网站的内容,也促进了用户之间的信息交流与互动。

在未来的发展中,可以进一步优化网站的响应速度和用户体验,加强对用户行为的分析,以实现个性化推荐和精准营销。同时,结合先进技术,提升网站的智能化水平,为用户提供更加智能化、便捷化的交流。此外,加强对安全性的防护和隐私保护,是网站未来发展的重要方向之一,保障用户信息的安全与私密性,维护良好的用户口碑和品牌形象。

通过不断优化和创新,基于SpringBoot的摄影交流网站的开发与实现将更好地满足用户的多样化需求,成为用户信赖和选择的首要网站之一。通过本次项目,我不仅深入理解了SpringBoot框架的应用和摄影交流网站的设计思路,也积累了丰富的实际开发经验。未来,我将进一步优化网站的稳定性和安全性,引入更多智能化和个性化的功能,以更好地满足用户需求和市场变化。

参考文献

  1. 陈芳.基于MySQL数据库的数据录入系统设计研究[J].科技资讯,2024,22(20):35-37.DOI:10.16661/j.cnki.1672-3791.2405-5042-7194.
  2. 庞敏.MySQL数据库的数据安全应用设计技术研究[J].数字通信世界,2024,(09):25-27.
  3. 巢晟盛.基于SpringBoot微服务架构下前后端分离的MVVM模型浅析[J].电脑知识与技术,2021,17(23):128-129+141.DOI:10.14004/j.cnki.ckt.2021.2412.
  4. 欧阳宏基,葛萌,程海波.MyBatis框架在数据持久层中的应用研究[J].微型电脑应用,2023,39(01):73-75.
  5. 杨帅.TOMCAT负载优化的研究与应用[J].信息系统工程,2021,(01):122-123.
  6. 阿迪力·肉孜,阿里木江·阿布迪日依木,卡里哈希·阿得力.基于Vue.js的科技服务中心门户管理平台开发研究[J].电脑知识与技术,2024,20(31):40-42.DOI:10.14004/j.cnki.ckt.2024.1637.
  7. 王志涛.基于B/S模式的项目管理信息系统开发与设计[J].办公自动化,2024,29(24):84-86.
  8. 刘慧玲,谭定英,陈平平.基于SpringBoot和Vue.js的大学生团队管理系统的设计[J].电脑编程技巧与维护,2024,(03):120-122.DOI:10.16184/j.cnki.comprg.2024.03.039.
  9. 梅红.当代艺术与新媒体环境中摄影作品的多元化展示[J].人像摄影,2024,(12):212-213.
  10. Zhou W ,Liu D ,Yi Z , et al.Web-Based Platform for Systematic Reviews and Meta-Analyses of Traditional Chinese Medicine: Platform Development Study.[J].JMIR formative research,2024,8e49328.
  11. 姜研.现代信息技术对摄影艺术的影响与实践[J].大观(论坛),2024,(10):30-32.
  12. 吴灵婷.摄影作品呈现方式的转向[J].艺术品鉴,2023,(33):35-38.
  13. 李淳.摄影艺术在数字媒体动态展示中的应用探究[J].旅游与摄影,2023,(20):140-142.
  14. 李雨谏.AIGC时代中的游戏战地摄影研究——重返摄影与图像的关系[J].文化艺术研究,2023,(04):54-61+114.
  15. 徐润禾,李水红.数字摄影技术对摄影艺术创作的影响探索[J].旅游与摄影,2023,(15):137-139.
  16. Wenbin Y .Recognition and Analysis of Scene-Emotion in Photographic Works Based on AI Technology[J].International Journal of Information Technologies and Systems Approach (IJITSA),2023,16(2):1-15.
  17. 诸瑶琼.数字时代摄影的多元发展与视觉创新探索[J].旅游与摄影,2023,(13):149-151.
  18. 王俞霖.新兴影像技术对摄影艺术的影响[J].旅游与摄影,2023,(12):134-136.
  19. 唐诗童.人像摄影在跨媒体设计中的应用与实践[D].西华师范大学,2023.DOI:10.27859/d.cnki.gxhsf.2023.000746.
  20. 赖奕然,黄靖宇,何海洋.绘画与摄影的交流和交易平台——AT[J].现代计算机,2022,28(13):104-107+112.

在完成本论文的研究与写作过程中,我深切感受到了来自各方的帮助和支持。在此,我衷心地向所有给予我帮助的人表示最诚挚的感谢。

首先,我要特别感谢我的导师,不仅在学术上给予我无私的指导,而且在生活上给予我关怀和支持。是您严谨的学术态度和勤奋的工作精神将永远激励我不断前进。

其次,我要感谢所有教导过我的老师们,是你们精彩课堂和深入的指导为我的研究工作提供了宝贵的知识和灵感。

我还要感谢我的家人,他们的理解和支持是我完成学业的坚强后盾。在我遇到困难和挑战时,他们总是给予我鼓励和力量。

此外,我也要感谢我的朋友和同学们,你们的陪伴和帮助使我的研究生活更加丰富多彩。共同度过的时光将成为我一生中宝贵的回忆。

最后,我要感谢所有支持本项目,为本项目提供建设性意见的人员,没有他们的协助,本论文无法顺利完成。

再次感谢所有帮助和支持我的人,是你们的帮助使我的研究之路不再孤单。

点赞+收藏+关注 → 私信领取本源代码、数据库 

更多推荐