【网站项目】基于springboot的生活信息分享平台
善于利用网络平台进行团队协作,分享文件和信息。 #生活技巧# #沟通技巧# #网络沟通#
作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的网站项目。
代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板,帮助书写开题报告。作者完整代码目录供你选择:
《Springboot网站项目》400套《ssm网站项目》800套《小程序项目》300套《App项目》500套《Python网站项目》600套⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目展示
Springboot生活信息分享平台
一、 绪论
1.1 研究背景意义
当今社会作为一个飞速的发展社会,网络已经完全渗入人们的生活, 网络信息已成为传播的第一大媒介, 可以毫不夸张说网络资源获取已逐步改变了人们以前的生活方式,网络已成为人们日常,休闲主要工具。 人们记录、分享生活的方式正在逐渐发生改变,因此借助怎样的互动方式能让那些喜欢分享生活的人通过享受和分享生活来宣扬自己的价值观, 获得大家肯定以及关注是一个深入探讨的话题。目前,基于springboot的分享生活平台的设计与实现,正是互联网和社会生活之间的紧密联系体现。这个系统中我综合应用了 mysql5、springboot、mybaits等知识。网页界面结构设计以实用性出发,具有易于操作、方便特点。在设计中,首先,运用HTML5语言对网站的静态页面进行精细加工并且在网站的美工方面取得了良好效果。然后,对于 Java 编程、 HTML5的动态编程以及 mysql5 数据库进行努力学习和实践,并运用到了网站的建设中。 本论文就此分享生活网进行了详细全面论述。
1.2 系统设计概述
现代化的计算机高速发展和技术日渐成熟 , 大家已经深刻认识到它的功能如此强大, 对人类社会的方方面面发挥着很重要的作用。 计算机应用得到广泛的推行 , 选用计算机技术建立一个分享生活网、平台管理与普通的人工管理相比具备许多优点。
二、相关技术介绍
2.1 spring
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
2.2 Spring MVC
Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据、业务与展现进行分离。从这样一个角度来说,Spring MVC和Struts、Struts2非常类似。Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的视图。Spring MVC请求处理的整体流程如图:
2.3 mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据
2.4 JSP技术
JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
2.5 jQuery
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等
2.6 Mysql
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多公司都采用 MySQL 数据库以降低成本。
MySQL 数据库可以称得上是目前运行速度最快的 SQL 语言数据库之一。除了具有许多其他数据库所不具备的功能外,MySQL 数据库还是一种完全免费的产品,用户可以直接通过网络下载 MySQL 数据库,而不必支付任何费用。
MySQL 特点
下面总结了一下 MySQL 具备的特点。
1) 功能强大
MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、存储过程、触发器等。
2) 支持跨平台
MySQL 支持至少 20 种以上的开发平台,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。
3) 运行速度快
高速是 MySQL 的显著特性。在 MySQL 中,使用了极快的 B 树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL 函数使用高度优化的类库实现,运行速度极快。
4) 支持面向对象
PHP 支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3 种方式。
5) 安全性高
灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。
6) 成本低
MySQL 数据库是一种完全免费的产品,用户可以直接通过网络下载。
7) 支持各种开发语言
MySQL 为各种流行的程序设计语言提供支持,为它们提供了很多的 API 函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 语言等。
8) 数据库存储容量大
MySQL 数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限制决定的。InnoDB 存储引擎将 InnoDB 表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。
9) 支持强大的内置函数
PHP 中提供了大量内置函数,几乎涵盖了 Web 应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL 支持大量的扩展库,如 MySQLi 等,可以为快速开发 Web 应用提供便利。
数据库的应用
数据库是计算机应用系统中的一种专门管理数据资源的系统。数据有多种形式,如文字、数码、符号、图形、图像及声音等,数据是所有计算机系统所要处理的对象。我们所熟知的一种处理办法是制作文件,即将处理过程编成程序文件,将所涉及的数据按程序要求组成数据文件,再用程序来调用,数据文件与程序文件保持着一定的关系。
在计算机应用迅速发展的情况下,这种文件式管理方法便显出它的不足。比如,它使得数据通用性差、不便于移植、在不同文件中存储大量重复信息、浪费存储空间、更新不便等。
而数据库系统便能解决上述问题。数据库系统不从具体的应用程序出发,而是立足于数据本身的管理,它将所有数据保存在数据库中,进行科学的组织,并借助于数据库管理系统,以它为中介,与各种应用程序或应用系统接口,使之能方便地使用数据库中的数据。
其实简单地说,数据库就是一组经过计算机整理后的数据,存储在一个或多个文件中,而管理这个数据库的软件就称为数据库管理系统。一般一个数据库系统(Database System)
可以分为数据库(Database)与数据管理系统(Database Management System,DBMS)两个部分。主流的数据库软件有 Oracle、Informix、Sybase、SQL Server、PostgreSQL、MySQL、Access、FoxPro 和 Teradata 等等。
数据库在 Web 开发中的重要地位
归根结底,动态网站都是对数据进行操作,我们平时浏览网页时,会发现网页的内容会经常变化,而页面的主体结构框架没变,新闻就是一个典型。这是因为我们将新闻存储在了数据库中,用户在浏览时,程序就会根据用户所请求的新闻编号,将对应的新闻从数据库中读取出来,然后再以特定的格式响应给用户。
Web 系统的开发基本上是离不开数据库的,因为任何东西都要存放在数据库中。所谓的动态网站就是基于数据库开发的系统,最重要的就是数据管理,或者说我们在开发时都是在围绕数据库在写程序。所以作为一个 Web 程序员,只有先掌握一门数据库,才可能去进行软件开发。
三、需求分析和可行性
3.1 系统功能概述
主要模块设计如下:
1.用户模块管理:用户登录、用户注册、用户的查询、添加、删除操作、
2.生活分享笔记管理:分享笔记列表的展示、添加、修改、删除操作、
3.生活笔记详情管理:生活笔记详情列表的查看、添加、删除等操作、
4.管理员信息管理:管理员信息的查看、修改、
5.公告信息管理:公告信息的查看、添加、修改、删除操作、
6.用户模块管理:用户列表查询、添加、删除、
7.收藏模块管理:用户收藏列表、取消收藏、收藏
8.关注用户模块管理:关注用户查询、添加关注、取消关注、
9.用户评论模块管理:用户评论查询、添加、删除、
10.注销退出登录管理
3.2 系统运行环境
开发系统:Windows7。
JDK版本:Java JDK1.8
开发工具:eclipse
数据库版本: mysql5
数据库可视化工具: navicat for mysql
服务器:apache tomcat 7
其他工具:谷歌浏览器控制台调整网页布局
Postman接口工具进行接口测试
3.3 技术设计
此系统需要java面向对象编程基础,数据库知识和功能分析。根据目前阶段所掌握的相关专业知识,以及这学期和之前学习掌握的java编程知识和数据库应用知识以及前端知识做出一个这样的基于、springmvc轻量级框架网页版的生活信息分享平台平台。
3.4 社会可行性
在互联网技术高速发展的今天,通过互联网的传播会让企业更容易的创造更多的经 济效益,通过网页版生活信息分享平台平台的实现 ,有了更大的市场和学生以及校园用户,在这样一个大环境下把资源统筹规化起来,就会获得高效的信息和效益。
3.5 安全性可行性
人们在使用网络的时候越来越重视信息的安全性,这也促进了加密技术的发展,同时应用加密技术能够有效提升网络信息的安全性。本生活信息分享平台平台系统采用了加密保护、页面发送请求获取数据采用关键部分采用post请求对数据传输的保护机制、避免请求数据暴露在浏览器上面、以及不同用户具有不同权限操作通过这些安全性操作,保证系统的稳定性以及可靠性。
3.6 经济可行性
服务器端的安装简洁明了,客户机无需再装任何软件,通过浏览器就可以直接访问,可以直接接入 Internet ,无论您身在何处只要您可以访问 Internet 都可以使用本系统。本系统对计算机配置的要求不高,企业机房更换下来的低配置电脑都可以完全满足需要、所以在经济上具有完全的可行性。
3.7 法律可行性
本系统是自行开发的生活信息分享平台平台系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码, 开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。
四、系统设计
4.1 系统模式架构
本系统次采用B/S架构、即浏览器和服务器架构模式进行设计,随着Internet技术的崛起起,对C/S架构的一种变化或改进的架构模式。在目前这种架构下,用户工作是通过WWW.xxx.com浏览器来实现数据访问,极少部分事务逻辑在前端页面(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。B/S架构是WEB兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护。客户机上只要安装一个浏览器(Browser),服务器安装Oracle、Sybase、Informix等数据库。浏览器通过Web Server同数据库进行数据交互。 这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。
4.2系统层次架构
系统根据以上的逻辑结构,分为3层结构。
系统按照处理层次从上至下依次划分为
(1)展现层:
它处理与用户的交互界面、数据传输,信息收集等。
(2)应用层:
它是系统功能逻辑处理层,主要处理展现层发出的请求,并将处理结果返回展现层。
(3)核心层:
它是系统运行核心及应用层的基础,提供应用层权限控制、数据读取等。
4.3系统功能详情设计
系统主要设计采用Java语言开发、采用springmvc为后台框架、数据库框架采用mybatis、前端采用jsp、jquery、js等技术
主要模块设计如下:
1.用户模块管理:用户登录、用户注册、用户的查询、添加、删除操作、
2.生活分享笔记管理:分享笔记列表的展示、添加、修改、删除操作、
3.生活笔记详情管理:生活笔记详情列表的查看、添加、删除等操作、
4.管理员信息管理:管理员信息的查看、修改、
5.公告信息管理:公告信息的查看、添加、修改、删除操作、
6.用户模块管理:用户列表查询、添加、删除、
7.收藏模块管理:用户收藏列表、取消收藏、收藏
8.关注用户模块管理:关注用户查询、添加关注、取消关注、
9.用户评论模块管理:用户评论查询、添加、删除、
10.注销退出登录管理
4.4数据流图
4.5源码架构
五、系统实现
5.1 程序主要类
5.1.1用户管理员类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer adminId; // 管理员Id
@Column(length=200)
private String userName; // 用户名
@Column(length=200)
private String password; // 密码
@Column(length=200)
private String trueName; // 真实姓名
@Column(length=200)
private String headPortrait; // 头像
@Column(length=50)
private String sex; // 性别
@Column(length=500)
private String signature; // 备注
@Column(length=200)
private String phone; // 电话
5.1.2生活信息分享类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer articleId; // 文章Id
@Column(length = 200)
private String title; // 文章标题
@Lob
@Column(columnDefinition = "TEXT")
private String content; // 文章内容
@Transient
private String contentNoTag; // 博客内容 无网页标签 Lucene分词用到
private Date publishDate; // 发布日期
@Column(length = 200)
private String author; // 作者
@ManyToOne
@JoinColumn(name = "classifyId")
private Classify classify; // 文章类别
private Integer click; // 点击数
private Integer commentNum; // 评论数
5.1.3生活信息分享博主类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer bloggerId; // 博主Id
@Column(length=200)
private String nickName; // 昵称
@Column(length=200)
private String headPortrait; // 头像
@Column(length=500)
private String motto; // 座右铭
@Column(length=500)
private String signature; // 个性签名
@Column(length=200)
private String site; // 地址
5.1.4生活信息评论类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer commentId; // 评论Id
@ManyToOne
@JoinColumn(name="articleId")
private Article article; // 文章Id
@ManyToOne
@JoinColumn(name="userId")
private User user; // 用户Id
@Column(length=500)
private String content; // 评论内容
private Date commentDate; // 评论时间
5.1.5公告信息类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer noticeId; // 公告Id
@Column(length=500)
private String content; // 公告内容
private Date publishDate; // 发布日期
@Column(length=200)
private Integer grade; // 等级 0 重要 1 一般
5.1.6生活信息评论回复类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer replyId; // 回复Id
@ManyToOne
@JoinColumn(name="commentId")
private Comment comment; // 评论Id
@ManyToOne
@JoinColumn(name="userId")
private User user; // 用户Id
@Column(length=500)
private String content; // 回复内容
private Date replyDate; // 回复时间
5.1.7用户信息类
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId; // 用户Id
@Column
private String username;// 用户名
@Column
private String password;// 密码
@Column(length = 200)
private String openId; // openID
@Column(length = 200)
private String nickname; // 昵称
@Column(length = 200)
private String headPortrait; // 头像
@Column(length = 50)
private String sex; // 性别
@Column(nullable = false, columnDefinition = "timestamp", updatable = false)
private Date registrationDate; // 注册日期
private Date latelyLoginTime; // 最近登录时间
private String phone;// 手机号
private java.sql.Date birthday;// 生日
private String articleIds;// 收藏文章id
private String userIds;// 关注的用户id
private String momo;// 备注
5.2系统功能主要实现模块截图
5.2.1关键代码实现
5.2.1.1登录模块:
/**
* 验证登录
*
* @param user
* @param request
* @return
*/
@RequestMapping("/checkLogin")
public ModelAndView checkLogin(User user, HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
HttpSession session = request.getSession();
User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword());
if (u == null) {
mav.addObject("user", user);
mav.addObject("errorInfo", "用户名或者密码错误!");
mav.setViewName("webLogin");
} else {
u.setLatelyLoginTime(new Date());
userService.save(u);
session.setAttribute("user", u);
mav.addObject("success", true);
mav.setViewName("/index");
}
return mav;
}
5.2.1.2 springboot全局配置文件:
server:
port: 80
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/lifeShare?characterEncoding=utf8
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
thymeleaf:
cache: false
MD5Salt: longwang
imageFilePath: C:\\Users\\Administrator\\Desktop\\bishe\lifeShare\\src\\main\\webapp\\static\\images\\
downloadImagePath: C:\\Users\\Administrator\\Desktop\\bishe\lifeShare\\src\\main\\webapp
lucenePath: C:\\Users\\Administrator\\Desktop\\bishe\lifeShare\\lucene
4.3.4.3 数据库连接配置文件:
#数据源的地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3307/db_fruit_vegetable_shop?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=crit@2019
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.continue-on-error=false
spring.datasource.test-while-idle=true
#获取连接时候验证,会影响性能
spring.datasource.test-on-borrow=false
#在连接归还到连接池时是否测试该连接
spring.datasource.test-on-return=false
spring.datasource.validation-query=SELECT 1 FROM DUAL
#空闲连接回收的时间间隔,与test-while-idle一起使用,设置5分钟
spring.datasource.time-between-eviction-runs-millis=300000
#连接池空闲连接的有效时间 ,设置30分钟
spring.datasource.min-evictable-idle-time-millis=1800000
spring.datasource.initial-size=5
#指定连接池中最大的活跃连接数.
spring.datasource.max-active=50
#指定连接池等待连接返回的最大等待时间,毫秒单位.
spring.datasource.max-wait=60000
#指定必须保持连接的最小值
spring.datasource.min-idle=5
#热部署生效
spring.devtools.restart.enabled=true
#mybatis驼峰匹配开启
mybatis.configuration.map-underscore-to-camel-case=true
# 控制台日志配置
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#mapper文件扫描路径
mybatis.mapper-locations=classpath*:mappers/admin/*.xml,classpath*:mappers/home/*.xml,classpath*:mappers/common/*.xml
#mail配置
spring.mail.host=smtp.163.com
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
spring.mail.username=15959100218@163.com
spring.mail.password=LBWCLXTCZNGUMVMZ
spring.mail.test-connection=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
#redis配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.database=0
#图片上传设置
yjq.upload.photo.sufix=.jpg,.png,.gif,.jpeg
#1024KB
yjq.upload.photo.maxsize=1024
#200MB = 204800KB
yjq.upload.attachment.maxsize=204800
yjq.upload.photo.path=D:/IDEA_project/FruitAndVegetableShop/src/main/resources/upload/photo/
yjq.upload.attachment.path=D:/IDEA_project/FruitAndVegetableShop/src/main/resources/upload/attachment/
5.2.1.3代码主启动类:
package com.longwang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args)
{
SpringApplication.run(BlogApplication.class, args);
}
}
5.2.2部分功能截图
5.2.2.1登录和注册:用户输入网址localhost:8081、然后输入数据账号密码进行验证登录、
输入账号密码、昵称和性别等信息进行注册
输入地址localhost:8081进入系统首页
5.2.2.2 生活分享笔记专栏管理在首页上方导航栏点击笔记专栏查看专栏生活分享信息
5.2.2.3 生活分享首页点击网站首页查看当前生活分享平台上面的最新生活分享、点击可以查看生活分享具体信息。
5.2.2.4 添加生活分享笔记添加生活分享文章标题信息、作者、分享笔记类型和封面图片以及主要内容完成添加
5.2.2.5 个人中心管理在生活分享页面个人中心--里面可以查看修改我的个人信息、查看我的笔记、我喜欢的生活分享收藏信息等操作。
5.2.2.6 后台生活分享分类管理在地址输入http://localhost/admin/login 之后输入账号密码进行管理员登录管理、点击生活分享笔记类型管理可以添加生活分享分类信息、比如美食、汽车、娱乐、校园等类型、可以对生活分享类型进行修改、删除操作
5.2.2.7 生活分享笔记管理在生活分享笔记管理页面可以查看生活分享列表信息、可以添加生活分享信息、修改和删除生活分享信息。
生活分享信息列表
生活分享笔记分享添加:
5.2.2.8 生活分享公告管理在生活分享公告管理页面可以查看生活分享公告列表信息、可以添加生活分享公告信息、修改和删除生活分享公告信息。
5.2.2.9 生活分享评论管理在生活分享评论管理页面可以查看生活分享评论列表信息
六、数据库设计
6.1表基本设计
数据库采用mysql5版本、满足数据库设计三范式。
编码采用utf8 -- UTF-8 Unicode
排序规则采用utf8_general_ci
6.2数据库三范式要求:
一、第一范式
1NF是对属性的原子性,要求属性具有原子性,不可再分解;
二、第二范式
2NF是对记录的唯一性,要求记录有唯一标识,即实体的唯一性,即不存在部分依赖;
三、第三范式
3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
6.3数据库表ER图
4.4.2用户表设计
主要字段有:用户名、密码、邮箱、头像、个人信息、昵称、关注ids、手机号等信息
4.4.3生活分享文章表设计
主要字段有:id、生活标题、内容、用户评论数量、是否为原创、转载、用户id、图片名称等
4.4.4个人信息表设计
主要字段有:博客id、头像图片、标题、姓名、地址等字段
4.4.5生活分类表设计
主要字段有:id、生活分类名称
4.4.6生活分享评论表设计
主要字段有:id、评论时间、评论内容、评论人等
4.4.7生活分享公告表设计
主要字段有:id、公告内容、内容级别、时间等字段
七、开发心得体会
经过近期对 java 面向对象程序设计、前端知识以及JAVA 框架的掌握和学习,以及这段时间本教育教学系统的开发,让我更加了解到 java 学习的重要性。在开发这个系统是哪个,我完成多个实验以及测试,在这个阶段的学习开发中,我从认识到熟悉,而后到能够自主运用。通过对 java 相关的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好 java 语言是很重要的,所以在开发这个项目的过程中我都尽力理解 java 编程思想、掌握基本技巧,尽量学到最多的知识。 我学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能, java 面向对象程序设计是一门实践性比较强的语言、springMVC框架的MVC三层架构、将数据访问和逻辑操作都集中到组件中 , 增强了系统的复用性。使系统的扩展性大大增强。以及前端jQuery、js、jsp、css样式的掌握让我对网页的布局、样式调整、字体等让网页效果实现的更加精准。
八、测试实例
测试一:
方案
登陆时,用户名或密码有一项为空或填写错误,系统是否出现预先设定的操作提示
预期效果 输入错误无法登陆
具体操作 用户名、密码、任意一项为空或者填写有误
结果 出现登录失败
结论 要求必须填写正确的用户名和密码,才能进入管理页面,测试成功
当用户名或密码输入错误或为空时提交界面
如图 所示。
测试二:
方案
修改生活分享内容信息﹑返回生活分享内容界面,看其是否更新成功
预期效果 修改过后能及时更新内容
具体操作 通过后台管理修改生活分享内容,看其是否修改成功
结果 生活分享内容更新为修改后的信息
结论 修改生活分享内容功能正常,测试成功
调试时在生活分享内容修改界面能修改生活分享内容信息,
在生活分享内容查询界面能及时更新显示修改后的信息。
测试三:
方案
管理员删除一注册用户后,并让其登陆,看是否登陆成功
预期效果 该用户不能再进行登陆
具体操作 管理员删除一会员表中的用户后,该用户在前台登陆
结果 该用户无法登陆
结论 用户数据删除功正常,测试成功
九、参考献文
[1] 王博轩.教育教学系统设计与规划[J].2015-06-21
[2] kymymooc.信息化时代的好处?[Z]. 2013.10.21.
[3]李东.基于 javaweb的学生信息系统研究与设计[硕士学位论文 ][D].北京邮电大学,2013.5.
[4]徐远棋,曾海.网上毕业论文管理系统的设计与实现[J].微型电脑应用,2013(10):42-44.
[5] 王海.基于SSM框架的网络教育教学设计与实现 [J].信息通信,2013(10):98-99.
[6] 王靖华.mysql数据库设计 [J]. 桂林航天工业学院学 报,2014(02):104-108.
[7] 于绍同.二三线学校教育教学信息系统的设计 [J]. 魅力中国, 2014(17):183-185.
[8]李明明. 猿来如此转转管理系统的设计与实现[D].西安电子科技大学,2016.
[9]袁玖根,沈晓军,邢若南.基于Java平台的信息管理系统的设计与实现[J].考试周刊,2016(19):144-145.
[10]蒋俊.基于UML的面向对象建模技术的研究[J].信息与电脑(理论版),2010,(4).
核心代码展示
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
userService.updateById(user);
return R.ok();
}
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
项目推荐
【计算机毕业设计】各项技术选题汇总
【计算机毕业设计】基于Springboot的网上购物商城销售系统
【计算机毕业设计】开题报告模板2
【计算机毕业设计】任务书案例2
【网站项目】基于springboot的在线考试系统
【网站项目】基于springboot的4S店车辆管理系统
【软件设计】基于python的高校资产管理系统
【网站项目】python009基于推荐算法的电影推荐系统
【网站项目】基于Springcloud的分布式架构网上商城
⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
网址:【网站项目】基于springboot的生活信息分享平台 https://www.yuejiaxmz.com/news/view/105981
相关内容
【网站项目】java智慧生活分享平台初步设计和实现基于SpringBoot大学校园生活信息平台的设计与实现
基于Spring Boot的大学校园生活信息平台的设计与实现
【开题报告】基于SpringBoot的美食制作学习网站的设计设计与实现
基于springboot的疫情社区生活服务系统
Springboot基于SpringBoot的宠物门诊系统6f8jy
springboot毕设 美食教学网站 程序+论文
科技资讯网站高新技术信息发布平台
260java ssm springboot基于uniapp微信小程序的家政服务平台系统服务评价(源码+文档+运行视频+讲解视频)
基于springboot果蔬种植销售一体化服务平台设计与实现