作者主页:Java毕设网
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
一、相关文档
博客目前在网络中主要通过三种方式进行流传:第一种是人与人之间的交流方式,人们通过网络博客进行日常的互动交际,发展属于自己的另一种人脉;第二种是以每个单独的个体为中心进行知识信息的汇合管理以及信息的收录,以点汇面,达到知识以及信息共享的形势;第三种方式是以个体为主导的传播出版。
在当前的网络时代,博客正逐渐的走入到大众的视野中,开始成为年轻人的新的相处方式、新的互动方式、新的工作方式。随着使用的人越来越多,普及的面越来越广,受众群体逐渐的开始影响到身边人,改变了传统的网络思想和社会结构,他让交流变得更加便捷和具有方向,使人们单一的思想和集体的智慧有了碰撞的可能。博客,正在逐渐的改变着当下的社会。
目标是打造一个不同于传统网络平台的新兴博客管理系统,更好的适应当下的网络环境,给予大众更好的博客体验,受众可以更好的通过此平台去学习交流、工作沟通,让人们的生活变得更加的轻松自由。系统的需求要从用户以及管理员的角度去考虑他们的实际情况出发。
二、项目介绍
本系统是一个个人博客的管理系统,用户可以注册账号并登陆系统查看发布的文章并进行阅读评论等
本系统主要有三种用户:
1、游客角色主要功能:
没有登陆的用户,可以查询文章,但是无法进行评论,系统中的所有文章可以通过内容搜索,可以通过分类搜索也可以通过标签就行搜索
2、注册用户主要功能
可以对所有的文章进行阅读以及评论等功能,可以对文章进行赞赏(支付宝或者微信付钱)
3、管理员主要功能:
拥有注册用户的所有权限,管理分类以及发布文章和管理标签等,友链管理,时间轴管理等
三、环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 8.0/5.7版本;
5.是否Maven项目:是;
四、技术栈
springboot+mysql+layui+CSS+JavaScript
五、使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,项目运行成功后,访问地址localhost:8080
六、运行截图
![](https://img-blog.csdnimg.cn/direct/de115c66fd17448f910856106f92eb3e.png)
管理者界面
![](https://img-blog.csdnimg.cn/direct/ac1427ad4816414eb7b2f3e5131453d3.jpeg)
用户角色
七、相关代码
用户管理控制器
package com.zp.blog.web.front;
import com.github.pagehelper.PageInfo;
import com.zp.blog.domain.Comment;
import com.zp.blog.domain.UserInfo;
import com.zp.blog.service.CommentService;
import com.zp.blog.service.impl.CommentServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
import java.util.List;
@Controller
@RequestMapping("/front/comment")
public class FrontCommentController {
@Autowired
private CommentService commentService;
@RequestMapping("/addComment")
public String addComment(Comment comment){
//获取登录的用户
UserInfo userInfo = (UserInfo) SecurityContextHolder.getContext ().getAuthentication ().getPrincipal ();
comment.setUserInfo (userInfo);
comment.setCreateTime (new Date ());
if (comment.getParentComment ().getId () == -1){
comment.getParentComment ().setId (null);
}
commentService.saveComment (comment);
return "redirect:showAllCommentByBlogId?id="+comment.getBlog ().getId ();
}
@RequestMapping("/showAllCommentByBlogId")
public String showAllCommentByBlogId(@RequestParam(name = "pageNum", required = false, defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", required = false, defaultValue = "6") Integer pageSize,
@RequestParam(name = "id") Long id, Model model){
List<Comment> comments = commentService.selectByBlogIdAndParentCommentIsNull (pageNum, pageSize, id);
PageInfo<Comment> pageInfo = new PageInfo<> (comments,8);
CommentServiceImpl commentServiceImpl = (CommentServiceImpl) commentService;
List<Comment> commentList = commentServiceImpl.getAll (pageInfo.getList ()); //获取后代评论
pageInfo.setList (commentList); //封装好的顶级评论和后代评论设置给pageInfo的list
model.addAttribute ("pageInfo",pageInfo);
return "blog :: commentList";
}
}
博客管理控制器
package com.zp.blog.web.front;
import com.zp.blog.domain.Blog;
import com.zp.blog.service.BlogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("/front/archive")
public class FrontArchiveController {
@Autowired
private BlogService blogService;
@RequestMapping("/showAll")
public String showAll(Model model){
//获取博客总数
Integer count = blogService.count ();
model.addAttribute ("count",count);
//获取key为年份,value为对应年份发布的博客
Map<String, List<Blog>> map = blogService.selectAllArchives();
model.addAttribute ("map",map);
return "archives";
}
}