专业的南京网站建设,番禺门户网站建设,国外服务器品牌前十大排名,制作网站编程基于ssm的论坛系统的设计与实现
摘 要 早期的网络论坛系统已经诞生一段时间#xff0c;随着互联网技术的发展#xff0c;它已经从最初的简单电子公告板系统变成了一种丰富的论坛系统社区模型。人们通过论坛系统进行信息的获取、发布和交流已经成为一种普遍的社交方式#x…基于ssm的论坛系统的设计与实现
摘 要 早期的网络论坛系统已经诞生一段时间随着互联网技术的发展它已经从最初的简单电子公告板系统变成了一种丰富的论坛系统社区模型。人们通过论坛系统进行信息的获取、发布和交流已经成为一种普遍的社交方式因为人们可以从论坛中获取一些新知识和启发还可以发表自己的见解和他人分享快乐。在信息化时代背景下论坛可以提高人们工作学习的效率为人们提供了一个学习和交流的平台增加了社交渠道改变了人与人之间的联系方式。本论坛系统针对的目标群体是在校大学生或者初入职场的技术人员而进行设计意在为这些特定用户群体提供一个能畅享交流的平台。 本系统是基于B/S模式和MVC模式进行设计开发将论坛系统业务逻辑、数据模型、数据展示进行了分离。系统采用Spring、SpringMvc、Mybatis框架进行开发前端的页面展示使用了Bootstrap和JQuery框架还有JSP技术。数据存储使用MySQL数据库然后采用Tomcat作为wed服务器。系统开发按照软件工程的思想进行分析设计主要完成的功能包括帖子模块、用户模块、关注模块、收藏模块、评论模块、管理员管理模块。 本文对论坛系统需求分析、系统设计、系统实现、系统测试做了详细介绍系统具有简单易用、界面友好以及可维护性高的特点系统经过测试后运行良好。
关键字 论坛系统B/S模式MVC模式SSMMySQL The Design and Implementation of Forum System Based on ssm Student: Teacher:
AbstractThe early Internet forum system has been born in some time. With the development of Internet technology, it has changed from the original simple electronic bulletin board system to a rich forum system community model. People use the forum system to obtain, publish and Communication has become a common way of socializing, because people can get some new knowledge and inspiration from the forum, and they can also express their opinions and share happiness with others. In the context of the information age, the forum can improve the efficiency of people’s work and study Provides a platform for people to learn and communicate, increases social channels, and changes the way people connect with each other. The target group of this forum system is designed for college students or technicians who are new to the workplace, and is intended to provide a platform for these specific user groups to enjoy communication. This system is designed and developed based on B / S mode and MVC mode. The business logic, data model, and data display of the forum system are separated. The system is developed using Spring, SpringMvc, and Mybatis frameworks. The front-end pages to display uses Bootstrap and JQuery frameworks. There is also JSP technology, the data storage uses MySQL database, and then uses Tomcat as the wed server. The system development is analyzed and designed according to the software engineering idea. The main completed functions include post module, user module, attention module, collection module, comment module, management Management module. This article introduces the forum system requirements analysis, system design, system implementation, and system testing in detail. The system has the characteristics of easy to use, friendly interface, and high maintainability. The system runs well after testing.
Key wordsForum SystemB/S modeMVC modeSSMMySQL 目 次 摘 要 I Abstract II 1 绪论 1 1.1 研究背景和意义 1 1.2 国内外研究现状 1 1.3 本文主要研究内容 2 1.4 论文结构安排 2 1.5 本章小结 2 2 相关技术与开发工具介绍 3 2.1 相关技术简介 3 2.1.1 JSP和Bootstrap技术简介 3 2.1.2 B/S结构简介 3 2.1.3 MVC模式 3 2.1.4 SSM框架 4 2.2 MySQL数据库简述 4 2.3 开发工具概述 4 2.4 本章小结 5 3 系统需求分析 6 3.1 需求分析概述 6 3.2 功能性需求分析 6 3.2.1 用户模块 6 3.2.2 评论模块 7 3.2.3 收藏模块 7 3.2.4 帖子模块 7 3.2.5 关注模块 8 3.2.6 管理员管理模块 8 3.3 非功能性需求分析 9 3.3.1 系统兼容性需求 9 3.3.2 技术可行性 9 3.3.3 经济可行性 9 3.4 本章小结 10 4 系统设计 11 4.1 系统技术架构设计 11 4.2 系统整体功能结构设计 11 4.3 系统功能详细设计 12 4.3.1 用户模块功能设计 12 4.3.2 帖子模块功能设计 13 4.3.3 关注模块功能设计 14 4.3.4 收藏模块功能设计 15 4.3.5 评论模块功能设计 16 4.3.6 管理员管理系统功能设计 16 4.4 数据库设计 18 4.4.1 概念设计 18 4.4.2 逻辑设计 19 4.5 本章小结 22 5 系统实现 23 5.1 系统功能实现 23 5.1.1 用户模块功能实现 23 5.1.2 帖子模块功能实现 30 5.1.3 评论模块功能实现 36 5.1.4 关注模块功能实现 37 5.1.5 收藏模块功能实现 40 5.1.6 管理员管理系统功能实现 43 5.2 本章小结 47 6 系统测试 48 6.1 测试方法 48 6.2 系统功能性测试 48 6.2.1 帖子模块功能测试 48 6.2.2 用户模块功能测试 48 6.2.3 评论模块功能测试 49 6.2.4 关注模块功能测试 49 6.2.5 收藏模块功能测试 49 6.2.6 管理员管理系统功能测试 50 6.3 本章小结 50 7 总结与展望 51 7.1 总结 51 7.2 展望 51 致 谢 52 参考文献 53
1 绪论
1.1 研究背景和意义
网络论坛系统已经产生一段时间它最开始只是一个简单的电子公告板系统论坛简述BBS“Bulletin Board System”为它的英文名称中文称之为“电子公告板”是一款基于网络的应用软件同时它也是一种在互联网上使用较广的信息服务系统[1]。随着时代的变迁人们生活水平和现代互联网技术的快速发展互联网已经普及到人们的日常学习、工作和生活当中而过去很多网站系统内容都要用户注册登录后才能查阅随着现在网络技术的进步只需要打开相关网站系统就可以浏览相关信息给人们带来了很多的方便人们通过网络可以分享自己的感想、知识、结交朋友而网络社交平台多种多样已经成为人们日常生活中必不可少的一部分而论坛系统就是其中一种论坛系统已经变得越来越普及人们通过论坛系统进行信息的获取、发布和交流已经成为一种普遍的社交方式因为人们可以从论坛中获取一些新知识和启发还可以发表自己的见解和他人分享快乐[2]。在信息化快速普及的时代背景下论坛能够为人们提高工作学习的效率我国目前知名的论坛系统有开源中国、知乎、CSDN、新浪等大型论坛国外也有Facebook、twitter等广受群众喜爱的论坛论坛为人们搭建了一个学习与交流的平台增加了社交渠道改变了人与人之间的联系方式。 本课题设计实现的论坛系统主要面向用户群体是在校大学生或者初入职场的技术人员论坛群体有针对性不像其他大型论坛一样涉及用户领域广泛通过论坛浏览他人发表的文章可以从中获取一些感悟使用户能共享信息互相学习相关知识分享学习心得和见解其次系统采用软件工程的开发理念和流程来进行系统开发让系统拥有可扩展性强、系统可复用性高、后期维护简单的特性。因此设计和实现这样一个论坛系统是必要的。
1.2 国内外研究现状
国外的论坛系统诞生时间比较早它可以追溯至20世纪80年代初当时是由一位美国人开发的公告板程序利用其自身的消息互传功能让消息传递成为一种可能当时需要彼此约定时间来通过邮件进行消息的传递那是最早的论坛系统原型当时的论坛系统只是用来发布信息进行简单的单一话题交流以及用来提出问题、解决问题[3]。随着互联网技术的发展目前产生了诸如Facebook、twitter等论坛交流系统国外的BBS论坛注重的是发表帖子的作者和回复帖子的读者关于某些事情的见解想法对于国内的BBS比较看重的是彼此在论坛上进行交流的方式[4]。目前国外对论坛系统的研究暂时是对人际关系等方面进行研究国内大陆最早的论坛网站是北京长城站它建于1991年在当时互联网尚未普及人们的情况下每天的访问量很低只有十几个人[5]。现在国内的论坛系统已经从最初的单一发帖交流功能随着互联网Web2.0技术的出现和推广快速发展演变成具有多元化的功能论坛系统社区论坛互动不断推出新的方式当下除了论坛系统外还有多元化的信息传输平台比如QQ、微信、微博等平台目前国内论坛系统除了一些综合类的论坛外还出现了各大高校的论坛例如水木清华、北大未名、北邮人论坛等信息化时代背景下论坛系统已经逐渐成为目前互联网重要的应用之一[6]。国内目前对论坛系统的研究体现在研究论坛系统的发展历史、操作应用、研究论坛系统主要面对的用户群体、以及研究论坛系统对人们生活和日常交流所产生的改变[7]。
1.3 本文主要研究内容
本文研究的内容是开发出一个方便在校大学生或者初入职场的技术人员进行学习和交流的论坛系统平台系统采用B/S模式实现其优点是通用性强比较简单能让用户在浏览器和服务器之间可以进行动态的交互。本文主要介绍了该论坛系统分析、设计、实现的整个过程需要完成的论坛系统包含前台用户系统和后台管理系统其中前台用户系统功能包括用户模块、帖子模块、关注模块、评论模块、收藏模块后台管理系统功能包括板块管理、帖子管理、用户管理。研究内容主要按照软件工程开发思想进行系统需求分析介绍了系统的功能需求、系统数据库设计、系统结构设计、系统编码实现、系统测试。
1.4 论文结构安排
本课题论文总体分为七章主要介绍了系统的开发背景、采用的技术、需求分析、系统设计和实现、系统测试、最后进行了总结。结构以及内容具体安排如下 第一章绪论描述了课题的研究背景和意义、国内外研究现状、本课题的研究内容、介绍了论文的结构。 第二章相关技术和开发工具介绍主要简述了开发论坛系统中使用到的关键技术以及开发过程用到的开发工具。 第三章系统需求分析主要简述了系统的整体需求和功能性需求分析。 第四章系统设计主要进行系统的功能模块设计和系统数据库设计。 第五章系统实现主要简述系统主要功能模块实现过程。 第六章系统测试对系统进行功能性测试。 第七章总结与展望对本次系统开发进行总结并做出对系统的未来展望。
1.5 本章小结
本章主要介绍了论坛系统的研究背景和研究现状并介绍了论坛系统的主要目标和拟解决的问题然后对论文主要研究的内容和组织结构进行了整体概述。
2 相关技术与开发工具介绍
2.1 相关技术简介
本节主要对开发论坛系统使用到的技术进行介绍主要介绍B/S体系结构、MVC模式、以及SSM框架还介绍了用于存储数据的MySQL数据库并对开发工具进行简单描述。 2.1.1 JSP和Bootstrap技术简介 JSP是Java Server Page的缩写它是基于Java Servlet和整个Java体系的动态网页开发技术由HTML代码和嵌入的JAVA代码构成利用该技术可以构建安全、跨平台的动态网站它以Java技术为基础然后做了许多改变拥有动态页面和静态页面分离、无需依赖硬件平台以及编译后运行的优点。它能让动态网站的网页代码编写变得更加容易、在功能方面更强、可扩展性更好然后能支持可重用的组件比如JavaBean组件可以利用这些组件去执行应用程序中复杂的处理由于是基于Java技术的所以能进行移植和重用并且一次编写能多处运行。同时拥有丰富的标签库利用这些标签可以对JavaBean组件进行访问和实例化[8]。 Bootstrap技术它是由Twitter设计并开发的一种网页开发框架它其中包括了HTML、CSS等技术。这个框架的设计目的是用来解决不同设备下的兼容问题利用其开发的网页能适应不同的设备从而让网页开发变得简单基于这个框架下开发的网页具有可维护性它还提供了多样性的开发模块能更好的帮助开发人员做好网页开发工作因此选择该框架作为论坛系统的网页开发框架能提高开发效率和减少工作量[9]。
2.1.2 B/S结构简介
B/S体系结构它是一种浏览器服务器结构由C/S结构演变而来它无需客户端程序这能降低软件开发成本通过浏览器向wed服务器进行数据请求主要的业务逻辑都在wed服务器端进行实现wed服务器处理用户的访问请求然后操作数据库取出相关数据再把结果返回给用户端浏览器进行回显[10]。这种结构的优点就是能让用户随时进行软件操作用户端只需要安装有浏览器就可以访问系统网站数据并获取相关结果给用户的交互体验良好通过这种结构的使用能减轻软件开发人员的压力它具有易扩展、维护简单、分布性的优点对用户端的硬件配置要求不高。B/S结构示意图如图2-1所示
图2-1 B/S结构示意图
2.1.3 MVC模式
MVC是Model、View、Controller三个单词的缩写它是一种设计模式由模型、视图、控制器组成其中模型用来存储数据以及处理用户的业务逻辑请求模型能为多个视图提供数据它的代码只需要编写一次就能被多个视图重用这样可以减少代码的重复性。控制器则用来进行请求和数据的转发它接收请求后再把请求转发给相关模型进行处理并把处理后的相关结果返回给相关视图进行显示视图是用来向控制器提交请求数据以及进行结果显示的这三个部分用低耦合的方式进行共同工作以便提高应用程序的扩展性和维护性。MVC模式具有快速部署、较低的生命周期成本低耦合以及高可用等特点因此采用MVC模式进行论坛系统的开发能够提升开发效率以及方便后期的测试[11]。
2.1.4 SSM框架
SSM框架是一种轻量级的开发框架由Spring、SpringMVC、MyBatis三个框架组成它是一种典型的MVC框架[12]其中Spring框架通过注解和映射来管理SpringMVC和MyBatis框架它提供面向切面编程和控制反转机制以及能整合多种持久化框架整合了视图层、业务层、持久层的资源能够为企业级应用开发提供更多的可能而SpringMVC框架是基于MVC思想的应用框架它是Spring的一个子框架用来控制业务之间的跳转很好的将模型、视图、控制器进行分离其包含有多种视图技术主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成然后Mybatis框架是持久层框架通过配置文件与数据库进行映射对数据写入或取出它包含DAO组件和SQL Map组件两大类其中DAO组件把应用程序的数据访问层和持久层的表示方式和位置进行抽象化让其分离应用程序的业务逻辑而SQL Map组件通过XML配置文件或者注解的方式把JavaBean、XML、Map映射成SQL语句然后通过执行SQL语句把结果映射成Java对象并返回SQL Map组件能很大程度上减少了访问数据库的代码[13]。
2.2 MySQL数据库简述
MySQL数据库是一种开源免费且属于轻量级的关系型数据库它具有体积小、速度快、成本低的特点能够很好的应用于中小型网站开发中并且还为多种编程语言提供了API很多中小型网站在满足其性能的前提下为了减少开发成本都会选择MySQL数据库进行数据存储在安全方面它允许用户进行系统的权限设置并且采用了线程技术能让系统运行速度更快因此综合这些特点在进行论坛系统开发时采用MySQL数据库进行数据存储是一个好的选择[14]。
2.3 开发工具概述
在开发工具选择方面后台功能开发依然是选择目前较为广泛使用的Eclipse,它相比MyEclipse的好处是它属于免费的而且占用内存相对小一些MyEclipse大多数现在都会收费其破解版也是十分难找并且MyEclipse是封装好了的比较笨重不利于学习者学习掌握Eclipse与MyEclipse两者的功能并没有太大区别综合考虑后选择Eclipse作为后台开发工具而在前台开发方面选择的工具是HBuilder这款工具因为其良好的界面以及操作在编码方面能进行提示并且支持随时预览网页效果因其能给网页开发人员带来良好的体验并能提高工作效率所以它也是目前较为受欢迎的网页开发工具因此在前台网页开发方面选择它作为开发工具。
2.4 本章小结
本章主要介绍了开发论坛系统所采用的相关技术包括前台和后台开发技术并对用来储存数据的关系型数据库MySQL进行了介绍还对开发工具进行了简要描述基于这些技术的了解和描述对接下来的需求分析阶段以及后续系统设计和实现方面起到很大的帮助。
3 系统需求分析
3.1 需求分析概述
需求分析包括功能性需求和非功能性需求分析它在软件开发过程中是最重要的一个环节只有需求分析清楚了后续的开发过程才会顺利进行在需求分析阶段主要是通过前期调研和用户咨询沟通得到将要开发的软件需求功能然后分析出软件需要解决的问题因此这个阶段是系统设计的重要基础和条件。本章通过前期网上的相关论坛系统资料调查收集和向相关论坛用户群体进行询问得出将要开发的论坛系统的基本功能要求然后通过用例图分析介绍对系统功能性需求进行了说明同时还分析介绍了系统的非功能性需求。
3.2 功能性需求分析
通过前期的调查分析了解到使用本系统的主要角色有游客、注册用户、管理员其中游客只具备有贴子浏览和查看他人动态的权限可通过注册成为论坛用户然后得出本论坛系统应该要包含用户系统和管理员管理系统这两大子系统其中用户系统需要完成的功能包括用户模块、评论模块、帖子模块、收藏模块、关注模块而管理员管理系统则应该完成的功能包括板块管理、帖子管理、用户管理三大模块。
3.2.1 用户模块
用户模块主要包括的功能有用户注册、登录、退出、个人主页信息查看、他人主页信息查看、个人资料编辑、基本信息设置其中登录、退出等功能必须要在用户注册的前提下才能进行操作注册需要输入用户名、密码、邮箱信息个人主页查看包括动态、回复、评论、收藏、关注信息查看他人主页查看只能查看他人动态个人资料编辑包括用户头像和姓名等信息的修改基本信息设置主要是用户名和密码以及邮箱的修改。用户模块用例图如图3-1所示
图3-1 用户模块用例图
3.2.2 评论模块
评论模块主要功能有发表评论、查看评论、删除评论其中发表和删除评论的前提是用户已经登录查看评论包含自己所发帖子评论和他人帖子下的评论。评论模块用例图如图3-2所示
图3-2 评论模块用例图
3.2.3 收藏模块
收藏模块主要包括功能有帖子收藏、取消收藏、查看收藏信息这些操作的前提都是要先登录系统才能进行收藏模块用例图如图3-3所示
图3-3 收藏模块用例图
3.2.4 帖子模块
帖子模块需要完成的功能包括帖子浏览、搜索、发表、删除、修改其中首页所有帖子浏览和搜索无需登录就可以进行操作搜索帖子实现通过帖子标题进行模糊查询而帖子发表、删除、修改需要先登录系统后才能进行帖子发表可以为帖子增加配图一条完整的帖子包括帖子标题、所属板块、发表时间、帖子内容、配图等信息可以修改个人帖子以及删除所发表的帖子删除所发表的帖子会把帖子的评论和收藏信息进行删除帖子模块用例图如图3-4所示
图3-4 帖子模块用例图
3.2.5 关注模块
关注模块功能包括关注他人、取消关注、查看关注信息这些功能的前提是用户注册并登录到系统其中当用户是自己时不能关注自己只能关注他人关注模块用例图如图3-5所示
图3-5 关注模块用例图
3.2.6 管理员管理模块
管理员管理主要包括用户管理、帖子管理、板块管理功能其中用户管理主要包括查看和删除功能、帖子管理主要是进行审核和查看、板块管理包括新增板块、删除板块、修改板块、查看板块功能这些功能的操作前提是需要使用管理员账号进入到后台管理界面才能进行操作。管理员管理模块用例图如图3-6所示
图3-6 管理员管理模块用例图
3.3 非功能性需求分析
3.3.1 系统兼容性需求
系统兼容性需求是指系统能够在目前主流的浏览器上都能稳定运行视觉上的差异没有太大变化通过前期调研为了能让系统兼容目前主流的浏览器给用户更好的体验系统在设计实现过程中通过前端的页面设计和优化来让系统兼容IE、谷歌、火狐等浏览器保证在视觉上差异不大。
3.3.2 技术可行性
随着互联网技术的发展目前有很多成熟的开发技术可以进行论坛系统的开发从硬件上来说大容量高速的硬盘以及网络速度的提高目前的硬件水平是能够满足开发和用户需求的这为软件开发提供了基础保障。从软件方面来说开发该系统所需的编程语言环境和数据库技术都已经很成熟能够为大量的存储数据提供支撑该系统采用Spring、SpringMvc、MyBatis框架进行后台开发减少了很多重复性工作其中SpringMvc框架很好的将模型、视图、控制器进行分离减少代码耦合、提高代码复用性而Spring框架通过注解和映射对SpringMvc、MyBatis框架进行了很好的管理然后使用MyBatis框架进行数据持久化操作减少开发人员的工作量。所以在这些软硬件技术的支持下这些条件是能够满足本论坛系统开发的。
3.3.3 经济可行性
通过前期的调查分析开发本系统所需的参考资料以及软硬件资源都是可以能够获取的参考资料可以通过书籍或者是网络工具获取软硬件资源同样不需要花费很多经济成本而对于用户来说用户只需要在自己本地安装有wed浏览器就可以进行对论坛系统的访问然后可以进行登录、发帖等操作。因此开发该系统的经济成本很低所以综合来看开发该系统是可行的。
3.4 本章小结
本章通过对系统进行功能性需求分析和非功能性需求分析来完成整个论坛系统的需求分析。功能性需求分析通过对系统的各个功能模块进行分析讨论然后通过系统功能模块用例图进行描述。非功能性需求分析从经济可行性、技术可行性以及系统兼容性这三方面来对系统进行一个详细介绍描述最后完成了论坛系统的整体需求分析为后续的系统设计提供了良好的基础。
4 系统设计
4.1 系统技术架构设计
本系统基于B/S体系结构和MVC编程思想进行设计开发前端采用JSP、JQuery、BootStrap技术进行开发后台使用Java编程语言基于SSM框架进行开发系统分为三层体系结构上层是表现层中间层是业务逻辑层底层是持久层以TomCat8.5作为wed服务器采用MySQL作为数据存储的数据库Eclipse作为主要开发工具通过浏览器和服务器进行数据交换从而实现动态页面显示。系统架构图如图4-1所示
图4-1 系统架构图
4.2 系统整体功能结构设计
本论坛系统完成的功能包含用户系统和管理员管理系统这两大子系统其中用户系统需要完成的功能包括用户模块、评论模块、帖子模块、收藏模块、关注模块而管理员管理系统则应该完成的功能包括板块管理、帖子管理、用户管理三大模块。用户系统功能结构图如图4-2所示
图4-1 用户系统功能结构图 管理员管理系统功能结构图如图4-2所示
图4-2 管理员管理系统功能结构图
4.3 系统功能详细设计
本节主要对系统功能模块详细设计过程进行描述主要有前台用户系统中的用户模块、帖子模块、关注模块、收藏模块、评论模块以及后台管理系统中的管理员管理模块设计下面通过流程图对每个功能模块进行分析设计。
4.3.1 用户模块功能设计
用户模块需要完成的功能有用户注册、登录、退出、个人主页信息查看、他人主页信息查看、个人资料编辑、基本信息设置其中登录、退出等功能必须要在用户注册的前提下才能进行操作注册需要输入用户名、密码、邮箱信息注册用户会进行验证不允许注册已有的用户名个人主页信息查看包含有动态、关注信息、收藏信息等内容个人资料编辑可以修改用户头像、简介等信息基本信息设置可以修改密码等信息用户模块主要参与者是游客和已注册用户用户模块功能流程图如图4-3所示
图4-3 用户模块功能流程图
4.3.2 帖子模块功能设计
帖子模块需要完成的功能包括帖子浏览、搜索、发表、删除、修改其中首页所有的帖子浏览和搜索无需登录在主界面就可以进行操作主界面的搜索帖子功能实现通过帖子标题进行模糊查询而帖子发表、删除、修改需要先登录系统后才能进行帖子发表可以添加配图、选择所属板块等信息操作帖子删除会删除该帖子下的所有评论和收藏信息帖子修改可以更新帖子标题和所属板块等信息帖子模块主要用于用户对帖子进行一系列操作帖子功能流程图如图4-4所示
图4-4 帖子功能流程图
4.3.3 关注模块功能设计
关注模块功能包括关注他人、取消关注、查看关注信息这些功能的前提是用户注册并登录到系统其中当登录用户是发帖人时不能关注自己只能关注他人关注他人和取消关注他人都会更新个人主页的关注列表在个人主页的关注列表中可以看到被关注者有多少人关注还可以查看有多少人关注自己还可以点击被关注者头像查看他人主页信息关注模块功能流程图如图4-5所示
图4-5 关注功能流程图
4.3.4 收藏模块功能设计
收藏模块主要包括完成帖子收藏、取消收藏、查看收藏信息三个子功能这些操作的前提都是要先登录系统才能进行收藏模块功能流程图如图4-6所示
图4-6 收藏模块功能流程图
4.3.5 评论模块功能设计
评论模块主要完成发表评论、查看评论、删除评论三个子功能其中发表评论的前提是用户已经登录删除评论也是在登录后才能进行操作。评论模块功能流程图如图4-7所示
图4-7 评论模块功能流程图
4.3.6 管理员管理系统功能设计
管理员管理系统主要完成用户管理、帖子管理、板块管理功能这些功能的操作前提是需要使用管理员账号进入到后台管理界面才能进行操作。管理系统管理员登录流程图如图4-8所示
图4-8 管理系统管理员登录流程图 用户管理主要完成用户信息查看和删除用户功能其中删除用户会给予相关提示询问是否删除删除后更新用列表。用户管理流程图如图4-9所示
图4-9 用户管理流程图 帖子管理包含帖子查看和审核审核通过更新状态来实现。帖子管理流程图如图4-10所示
图4-10 帖子管理流程图 板块管理包含新增、修改、删除、查看四个子功能模块其中删除板块操作会给予提示询问是否确定删除如果确定就删除该板块取消就返回板块列表。板块管理流程图如图4-11所示
图4-11 板块管理流程图
4.4 数据库设计
数据库是整个论坛系统的基础负责存储系统的所有数据合理的数据库设计能够保证系统稳定正常运行数据库设计包含概念设计和逻辑设计其中概念设计是根据系统结构需求分析出相关的实体并通过E-R图来构建好实体间的联系而逻辑设计是把概念设计转换为相应的数据模型表结构[15]。
4.4.1 概念设计
依据系统的需求分析和功能设计分析出系统组成的实体有用户、帖子、管理员、收藏、关注、板块、评论、头像。这些实体之间的联系为一个用户对应一个头像一个头像对应一个用户一个用户可以发表多条帖子一条帖子对应一个用户一个用户可以发表多条评论一条评论对应一个用户一个用户可以关注多个用户一个用户可以被多个用户关注一个用户可以收藏多条帖子一条帖子可以被多个用户收藏一条帖子可以有多条评论一条评论对应一条帖子一个板块可以有多条帖子一条帖子对应一个板块管理员管理多条帖子、多个用户、多个板块。 系统E-R图如图4-12所示
图4-12 系统E-R图
4.4.2 逻辑设计
按照前面分析出的系统实体之间的E-R图关系可以把实体E-R图转换成对应的数据库表本系统共涉及到8张表分别是用户信息表user、帖子信息表article、评论信息表comment、板块信息表plate、用户头像信息表via、关注信息表attention、收藏信息表collect、管理员信息表admin。数据库表结构设计如下 1用户信息表user主要由用户id、姓名、年龄、性别、密码、邮箱、住址、简介、注册时间这些字段组成一条记录表示一个用户的信息。具体表结构如表4-1所示 表4-1 用户信息表user 字段名 数据类型 是否允许为空 说明 备注 userid int(11) 否 用户id 主键 username Varchar(45) 否 用户姓名 age int(11) 是 用户年龄 password varchar(45) 是 密码 sex varchar(255) 是 性别 email varchar(45) 是 邮箱 family varchar(45) 是 住址 intro varchar(255) 是 简介 time timestamp 否 注册时间 2帖子信息表article主要由帖子编号、标题、内容、配图、板块名、发表时间、发帖人id、发帖人姓名、审核状态0为待审核1为通过审核2为未通过审核默认为0这些字段组成一条记录表示一条帖子信息。具体表结构如表4-2所示 表4-2 帖子信息表article 字段名 数据类型 是否允许为空 说明 备注 fid int(11) 否 帖子id 主键 titles varchar(100) 否 帖子标题 fcontent varchar(2000) 否 帖子内容 photo varchar(255) 是 帖子配图 bname varchar(255) 否 所属板块名 time timestamp 否 发帖时间 userid int(11) 否 发帖人id 外键 username varchar(45) 否 发帖人姓名 status int(11) 否 帖子审核状态0为待审核1为通过审核2为未通过审核默认为0 3评论信息表comment主要由评论编号、内容、评论者id、被评论帖子编号、评论时间这些字段组成一条记录表示一条评论信息。具体表结构如表4-3所示 表4-3 评论信息表comment 字段名 数据类型 是否允许为空 说明 备注 pid int(11) 否 评论id 主键 pcontent varchar(400) 否 评论内容 userid int(11) 否 评论者id 外键 fid int(11) 否 被评论帖子id 外键 time timestamp 否 评论时间 4板块信息表plate主要由板块编号、名称、创建时间这些字段组成一条记录表示一个板块信息。具体表结构如表4-4所示 表4-4 板块信息表plate 字段名 数据类型 是否允许为空 说明 备注 bid int(11) 否 板块id 主键 bname varchar(255) 否 板块名字 btime timestamp 否 板块创建时间 5收藏信息表collect主要由收藏编号、收藏者id、被收藏帖子id这些字段组成一条记录表示一个用户对一条帖子的收藏信息具体表结构如表4-5所示 表4-5 收藏信息表collect 字段名 数据类型 是否允许为空 说明 备注 sid int(11) 否 收藏id 主键 userid int(11) 否 收藏者id 外键 fid int(11) 否 被收藏帖子id 外键 6关注信息表attention主要由关注编号、关注者id、被关注者id这些字段组成一条记录表示一个用户对另一个用户的关注信息具体表结构如表4-6所示 表4-6 关注信息表attention 字段名 数据类型 是否允许为空 说明 备注 gid int(11) 否 关注id 主键 userid int(11) 否 主动关注者的id 外键 beuserid int(11) 否 被动关注者的id 外键 7用户头像信息表via主要由用户id、用户头像这些字段组成一条记录表示一个用户的头像信息。具体表结构如表4-7所示 表4-7 用户头像信息表via 字段名 数据类型 是否允许为空 说明 备注 userid int(11) 否 用户id 主键 外键 photo varchar(255) 否 用户头像 8管理员信息表admin主要由管理员编号、管理员姓名、管理员密码、管理员注册时间这些字段组成一条记录表示一个管理员的信息。具体表结构如表4-8所示 表4-8 管理员信息表admin 字段名 数据类型 是否允许为空 说明 备注 aid int(11) 否 管理员id 主键 aname varchar(255) 否 管理员名称 apassword varchar(255) 否 管理员密码 atime timestamp 否 注册时间 4.5 本章小结 本章通过对论坛系统技术架构、整体功能结构设计、系统功能详细设计以及数据库设计来完成整个系统设计其中功能详细设计通过系统功能流程图进行描述而数据库设计通过系统E-R图和数据库表来进行分析描述系统设计能够为接下来的系统功能实现提供良好的基础。
5 系统实现
5.1 系统功能实现
系统实现主要是按照前期的系统详细设计来进行编码实现主要介绍每个功能模块的具体实现过程设计包含有贴子模块、用户模块、评论模块、关注模块、收藏模块、管理员管理这些功能模块。
5.1.1 用户模块功能实现
用户登录功能通过使用已经注册过的账号进行登录登录界面如图5-1所示
图5-1 登录界面 首先输入账号信息后点击登录向UserController的getLoginAjax()方法提交post请求并向该方法传递name用户名、password登录密码作为参数封装在user中getLoginAjax ()方法在收到请求后调用UserService的getUser()方法该方法再调用UserMapper的selectByUser()方法查询用户表user在UserController中判断数据库查询结果然后把查询结果返回给前台作出对应页面变化。主要代码如下 user.setName(request.getParameter(“name”)); user.setPassword(request.getParameter(“password”)); //按用户名密码查询 List listUser userService.getUser(user); if (!listUser.toString().equals(“[]”)) { int userid listUser.get(0).getUserid();//获取第一个用户的id String name listUser.get(0).getName(); String password listUser.get(0).getPassword(); String email listUser.get(0).getEmail(); map.put(“userid”, userid); map.put(“username”, name); map.put(“password”, password); map.put(“email”, email); return “OK”;//返回json数据 用户注册功能通过登录界面的注册链接进行点击触发注册模态框来到注册界面然后输入相关信息进行注册后获得登录进入系统的普通用户权限注册界面如图5-2所示
图5-2 用户注册界面 首先注册界面输入完信息后点击注册按钮向UserController的setSignUp()方法提交post请求并向该方法传递name用户名、password登录密码、email邮箱作为参数封装在user中。setSignUp()方法在接收请求后首先调用UserService的getUserName方法查询判断该用户名是否已经注册存在若存在则把查询结果返回给前台并提示用户若不存在则再调用UserService的setUser()方法该方法再调用UserMapper的insert()方法向用户表user中新增一条记录将操作结果返回给前台若注册成功前台页面自动登录账号否则提示用户注册失败的相关提示信息。主要代码如下 user.setName(request.getParameter(“name”)); user.setPassword(request.getParameter(“pass”)); user.setEmail(request.getParameter(“email”)); //判断该用户是否已经存在 if (userService.getUserName(user).toString().equals(“[]”)request.getParameter(“name”)!“”) { //注册到系统 userService.setUser(user); //按用户名查询 List listUser userService.getUserName(user); int userid listUser.get(0).getUserid(); String name user.getName(); String password user.getPassword(); String email user.getEmail(); map.put(“userid”, userid); map.put(“username”, name); map.put(“password”, password); map.put(“email”, email); return “OK”; } 查看个人主页信息通过点击首页登录显示的用户名然后点击选择我的主页向UserController的getMyself()方法提交post请求getMyself()方法在session域里获取读取用户的userid会将userid作为参数调用UserService的getUserId()方法进行处理然后返回一个User对象将结果返回给前台页面展示出个人信息。个人主页界面如图5-3所示
图5-3 个人主页界面 主要代码如下 //获取当前会话的用户id int userid(int) session.getAttribute(“userid”); /按userid查询用户信息/ List myListUser userService.getUserId(userid); if (myListUser.get(0).getSex() null) { myListUser.get(0).setSex(“保密”); } if (myListUser.get(0).getIntro() null) { myListUser.get(0).setIntro(“无”); } map.put(“myListUser”, myListUser.get(0)); 编辑个人资料包含两方面一方面是对头像进行修改另一方面是对年龄、性别、家庭住址、个人简介方面信息修改在登录状态下进入到我的主页界面中就可以进行相关操作首先点击编辑资料按钮在编辑界面进行个人信息更新后点击保存按钮后向UserController的updateUser()方法提交post请求并向该方法传递age用户年龄、sex用户性别、family家庭住址、intro个人简介作为参数封装在user中updateUser()方法在收到请求后从session域中获取当前登录用户的userid将参数设置到User对象中并调用UserService的updateUser()方法进行处理然后将操作结果返回给前台页面作出相应信息变化。编辑个人资料界面如图5-4所示
图5-4 编辑个人资料界面 主要代码如下 RequestMapping(“/updateUser”) public ModelAndView UpdateUser(User user) { userService.updateUser(user); //重定向到getMyself这个方法 return new ModelAndView(“redirect:/userController/getMyself”); } 编辑头像操作在个人主页中点击头像即可来到更新头像界面然后重新选择头像点击保存后向ViaController的setUserPhoto方法提交post请求并把头像作为文件的形式上传setUserPhoto收到请求后先是封装上传的文件路径并定义新文件名来避免重复同时获取上传文件的原始文件名从session域中获取当前登录用户的userid将参数设置到Via对象中然后判断用户是否上传过头像通过userid作为参数去调用ViaService的getVia方法进行查询并返回相关查询结果如果未上传过头像则进行新增操作Via对象作为参数调用ViaService的setUserPhoto方法去处理如果已经上传过头像则进行更新操作首先获取要删除用户对应的头像的文件名然后删除原有用户头像接着就是把Via对象作为参数调用ViaService的updateVia方法进行相关操作。编辑头像界面如图5-5所示
图5-5 编辑头像界面 主要代码如下 String filePath PathUtil.getCommonPath()PathUtil.getUserPath(); //用于存放新生成的文件名字(不重复) String newFileName null; //只有登录的时候才能进入该页面故不用判断是否登录获取用户id更新Via对象信息 int userid(int) session.getAttribute(“userid”); Via vianew Via(); via.setUserid(userid); // 获取上传图片的文件名及其后缀(获取原始图片的拓展名) String fileName file.getOriginalFilename(); //如果该用户还没有上传过头像则进行新增操作 if (viaService.getVia(userid)null) { //选择了头像的情况下 if(!fileName.equals(“”)) { /*生成新的文件名字(不重复)表示通用唯一标识符(UUID)的类UUID表示一个128位的值 获取伪随机生成的UUID的静态工厂。 */ newFileName UUID.randomUUID() fileName; // 封装上传文件位置的全路径 File targetFile new File(filePath, newFileName); // 把本地文件上传到封装上传文件位置 file.transferTo(targetFile); via.setPhoto(newFileName); // 将via保存到数据库 viaService.setUserPhoto(via); } //如果该用户上传过头像则进行修改操作 } else { //选择了头像的情况下 if(!fileName.equals(“”)) { // 获取要删除用户对应的头像的文件名通过userid获取头像信息 String fileNameNew viaService.getVia(userid).getPhoto(); // 头像上传文件位置的全路径 File targetFile new File(filePath, fileNameNew); //删除用户对应的头像图片实际删除 targetFile.delete(); //生成新的文件名字(不重复) newFileName UUID.randomUUID() fileName; // 封装上传文件位置的全路径 targetFile new File(filePath, newFileName); // 把本地文件上传到封装上传文件位置 file.transferTo(targetFile); via.setPhoto(newFileName); // 将via保存到数据库(修改) viaService.updateVia(via); } 基本信息设置点击登录后的用户名选择设置然后会来到基本信息设置界面可以进行用户名、密码、邮箱信息的修改基本信息设置界面如图5-6所示
图5-6 基本信息设置界面 首先在信息设置界面更新完信息后点击保存按钮后向UserController的updateUserSetup方法提交post请求并把用户名username、密码password、邮箱email作为参数传递封装在User对象中然后在该方法中获取User对象中的用户名、密码、邮箱并与session域里的用户名、密码、邮箱进行比较然后通过Article对象修改当前用户所发帖子的用户名和用户id接着判断是否更改过相关信息然后把User对象作为参数通过调用UserService中的updateUserSetup方法来更新user表信息然后通过调用ArticleService中的updateArticleSetup方法进行article表中的username修改主要代码如下 boolean nameuser.getName().equals(session.getAttribute(“username”)); boolean passworduser.getPassword().equals(session.getAttribute(“password”)); boolean emailuser.getEmail().equals(session.getAttribute(“email”)); //修改当前用户所发帖子的用户名和用户id 同步信息 Article article new Article(); article.setUserid(user.getUserid()); article.setUsername(user.getName()); if(name password email) { System.out.println(“用户没改动任何信息不做数据库修改工作。”); }else{ //1 修改user表 userService.updateUserSetup(user); //2 修改article表中的username 保证信息同步 articleService.updateArticleSetup(article); map.put(“username”, user.getName()); map.put(“password”, user.getPassword()); map.put(“email”, user.getEmail()); } 查看他人主页在首页进行帖子浏览时通过点击用户头像或者名字就可以进行他人主页信息查看首先在首页点击用户名或者头像时通过获取userid作为参数传递给UserController中的getOthers方法然后判断是不是当前登录用户如果是的话就跳转到个人主页不是则通过userid查询用户信息。他人主页界面如图5-7所示
图5.7 他人主页界面 主要代码如下所示 //如果该用户是登录用户则回到“个人主页” if(session.getAttribute(“userid”)!null session.getAttribute(“userid”).equals(userid)) { return “redirect:/userController/getMyself”; }else { //按userid查询用户信息 List othersListUser userService.getUserId(userid); //判断个人信息 性别、简介 if (othersListUser.get(0).getSex() null) { othersListUser.get(0).setSex(“保密”); } if (othersListUser.get(0).getIntro() null) { othersListUser.get(0).setIntro(“无”); } map.put(“othersListUser”, othersListUser.get(0)); 5.1.2 帖子模块功能实现 帖子搜索主要是在首页顶部进行搜索通过帖子标题关键字来实现在搜索框输入相关字段后点击搜索按钮向Common中的getArticleTitle方法发起post请求在该方法中通过获取articleTitle关键字来作为参数传递给ArticleController中的方法进行查询主要代码如下 articleController.getArticleTitle(request.getParameter(“articleTitle”), map); 帖子查看只需要访问系统首页无需登录就可以对论坛发表的所有帖子进行浏览首先访问系统首页然后向Common中的getAll方法发起请求该方法会通过调用ArticleController的getArticle方法把相关帖子信息查询下来主要代码如下 List
listArticle articleService.getArticle(); map.put(“listArticle”, listArticle); 帖子查看界面如图5-8所示