绪论 1
1.1系统的概述1
1.2系统的研究背景
2需求分析
2.1系统需求分析
2.2可行性分析
2.2.1技术可行性
2.2.2经济可行性
2.2.3操作可行性
2.3开发及运行环境
3总体设计
3.1系统功能结构图
4.1. 1数据库表概要
3. 2数据库表设计 4
3.3配置文件详情
4系统详细设计
4.1登录界面
4.2游客操作
4.2.1博客查看
4.2.2分类查看
4.2.3标签查看
4.2.4归档查看
4.2.5查看作者
4.2.6搜索博客
4.3管理员操作
4.3.1博客管理
4.3.2分类管理15
4.3.3标签管理
5系统测试
5.1 测试的必要性
5.1. 1 目的
5.2 测试过程
5. 2. 1 白盒测试
5.3 测试结果
5.4 项目部署
5.5 负载均衡测试
总 结
鸣 谢
参考文献

摘要
作为计算机的学生,我们学习的方法是通过老师,书籍, 论文等。 对很多从事计算机方面的人来说, 他们学习知识是通过官方文档,以及相关博客。现在知名博客网站有很多, 比如 CSDN, 博客园, 还有全球最知名的 Github。 其中我也在这几个博客中写过一些文章, 分享自己学习的成果。 因此我在想为什么不自己打造一个属于自己的博客呢。我的博客系统是采SpringBoot、 SpringMvc、 Spring等技术栈编写的, 数据库采用 MySQL。 架构方式是采用 MVC 三层架构方式。 管理员可以对博客进行添加, 删除, 修改, 查询操作。 游客可以查看管理员编辑的博客,并可以评论, 打赏。 最后通过测试跟负载均衡完善最终需求。
关键词: SpringBoot; Github; MVC

1 绪论
1.1 系统的概述
进入二十一世纪, 以互联网为核心的现代网络和通信技术已经得到了快速的发展和广泛的应用, 各种网络通信工具也随时代而生。 其中就有论坛、 博客、 社区等较受广大人民欢迎, 也是现在发展的比较成熟的信息交流工具。 随着网络技术的日渐成熟, 互联网已成为日常生活必不可少的工具, 网络博客在近几年更是成为各类网友不可缺少的交流工具。
以前我们记录个人生活的时候, 我们可以写日志。 现在我们可以写博客。 博客又称为网络日志。 目的是通过博客记录生活的点滴, 分享身边美好的东西, 发表自己的感言, 与更多志同道合的人交流。 博客发展到今天已经取得了相当规模的成就, 以新浪、 搜狐、 网易为代表的三大门户网站都已经推出了自己的博客服务, 在规模扩大的同时, 博客技术也在不断的进步和完善。
1.2 系统的研究背景
博客改变着人们的交流方式和情感体验和表达形态, 改变着人们聚散的方式,它影响着中国互联网的发展走向, 甚至会波及或影响着现实社会的决策。 在这个信息时代, 只要你在网上发布了信息, 就算是一张图片, 一段文字, 一个音频。它都可以传遍世界各个角落, 可想网络时代的传播速度。 毫无疑问, 博客将可以作为我们美好事物及美好思想传播的载体。 通过博客, 你的科研成果可以让更多人知道, 可以传播到世界各地, 让更多人知道, 可以推进社会的进步。 无疑, 博客这样一种影响力颇大的媒介将有利于我们好的思想好的事物的传播, 有利于社会进步。 所以我们要把这种好的影响力发挥到最大。

部分页面截屏
前端页面

部分代码:

package com.blog.controller;import com.blog.pojo.Blog;
import com.blog.pojo.Message;
import com.blog.service.BlogService;
import com.blog.service.MessageService;
import com.blog.service.TagService;
import com.blog.service.TypeService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** @author Ryan*/
@Controller
public class IndexController {@Autowiredprivate BlogService blogService;@Autowiredprivate TypeService typeService;@Autowiredprivate MessageService messageService;@Autowiredprivate TagService tagService;/*** 首页数据* @param model* @param pageNum* @return*/@RequestMapping("/")public String toIndex(@RequestParam(required = false,defaultValue = "1") int pageNum,Model model){PageHelper.startPage(pageNum, 5);List<Blog> allBlog = blogService.getIndexBlog();//获取推荐博客List<Blog> recommendBlog =blogService.getAllRecommendBlog();//得到分页结果对象PageInfo pageInfo = new PageInfo(allBlog);List<Message> messages = messageService.findByIndexParentId();model.addAttribute("messages", messages);model.addAttribute("pageInfo", pageInfo);model.addAttribute("recommendBlogs", recommendBlog);List<Blog> HotBlog=blogService.getHotBlog();model.addAttribute("HotBlog", HotBlog);return "index";}@PostMapping("/search")public String search(@RequestParam(required = false,defaultValue = "1",value = "pagenum")int pagenum,@RequestParam String query, Model model){PageHelper.startPage(pagenum, 5);List<Blog> searchBlog = blogService.getSearchBlog(query);PageInfo pageInfo = new PageInfo(searchBlog);model.addAttribute("pageInfo", pageInfo);model.addAttribute("query", query);return "search";}@GetMapping("/blog/{id}")public String toLogin(@PathVariable Long id, Model model){Blog blog = blogService.getDetailedBlog(id);model.addAttribute("blog", blog);return "blog";}
}

后端页面截图

部分代码如下:

package com.blog.controller.admin;import com.blog.pojo.User;
import com.blog.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;import javax.servlet.http.HttpSession;/*** 后台登录处理* @author Ryan*/
@Controller
@RequestMapping("/admin")
public class LoginController {@Autowiredprivate UserService userService;/*** 修复后台路径访问* @param session* @return*/@GetMapping()public String loginPage(HttpSession session){if (session.getAttribute("user")!=null) {return "admin/index";}return "admin/login";}@GetMapping("/login")public String login(HttpSession session){if (session.getAttribute("user")!=null) {return "admin/index";} else {return "redirect:/admin";}}@PostMapping("/login")public String login(@RequestParam String username,@RequestParam String password,HttpSession session,RedirectAttributes attributes){User user = userService.checkUser(username, password);if(user != null){session.setAttribute("user", user);return "admin/index";}else {attributes.addFlashAttribute("msg", "用户名或密码错误");return "redirect:/admin";}}@GetMapping("/logout")public String logout(HttpSession session){session.removeAttribute("user");return "redirect:/admin";}
}
package com.blog.controller.admin;import com.blog.pojo.Blog;
import com.blog.pojo.User;
import com.blog.service.BlogService;
import com.blog.service.TagService;
import com.blog.service.TypeService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;import javax.servlet.http.HttpSession;
import java.util.List;/*** @author Ryan*/
@Controller
@RequestMapping("/admin")
public class BlogController {@Autowiredprivate BlogService blogService;@Autowiredprivate TypeService typeService;@Autowiredprivate TagService tagService;public void setTypeAndTag(Model model) {model.addAttribute("types", typeService.getAllType());model.addAttribute("tags", tagService.getAllTag());}/*** 后台显示博客列表* @param pagenum* @param model* @return*/@GetMapping("/blogs")public String blogs(@RequestParam(required = false,defaultValue = "1",value = "pagenum")int pagenum, Model model){PageHelper.startPage(pagenum, 5);List<Blog> allBlog = blogService.getAllBlog();//得到分页结果对象PageInfo pageInfo = new PageInfo(allBlog);model.addAttribute("pageInfo", pageInfo);setTypeAndTag(model);return "admin/blogs";}/***  按条件查询博客* @param blog* @param pagenum* @param model* @return*/@PostMapping("/blogs/search")public String searchBlogs(Blog blog, @RequestParam(required = false,defaultValue = "1",value = "pagenum")int pagenum, Model model){PageHelper.startPage(pagenum, 5);List<Blog> allBlog = blogService.searchAllBlog(blog);//得到分页结果对象PageInfo pageInfo = new PageInfo(allBlog);model.addAttribute("pageInfo", pageInfo);model.addAttribute("message", "查询成功");setTypeAndTag(model);return "admin/blogs";}/*** 去新增博客页面* @param model* @return*/@GetMapping("/blogs/input")public String toAddBlog(Model model){//返回一个blog对象给前端th:objectmodel.addAttribute("blog", new Blog());setTypeAndTag(model);return "admin/blogs-input";}/*** 去编辑博客页面* @param id* @param model* @return*/@GetMapping("/blogs/{id}/input")public String toEditBlog(@PathVariable Long id, Model model){Blog blog = blogService.getBlog(id);//将tags集合转换为tagIds字符串blog.init();//返回一个blog对象给前端th:objectmodel.addAttribute("blog", blog);setTypeAndTag(model);return "admin/blogs-input";}/*** 新增、编辑博客* @param blog* @param session* @param attributes* @return*/@PostMapping("/blogs")public String addBlog(Blog blog, HttpSession session, RedirectAttributes attributes){//设置user属性blog.setUser((User) session.getAttribute("user"));//设置用户idblog.setUserId(blog.getUser().getId());//设置blog的typeblog.setType(typeService.getType(blog.getType().getId()));//设置blog中typeId属性blog.setTypeId(blog.getType().getId());//给blog中的List<Tag>赋值blog.setTags(tagService.getTagByString(blog.getTagIds()));//id为空,则为新增if (blog.getId() == null) {blogService.saveBlog(blog);} else {blogService.updateBlog(blog);}attributes.addFlashAttribute("msg", "新增成功");return "redirect:/admin/blogs";}@GetMapping("/blogs/{id}/delete")public String deleteBlogs(@PathVariable Long id, RedirectAttributes attributes){blogService.deleteBlog(id);attributes.addFlashAttribute("msg", "删除成功");return "redirect:/admin/blogs";}
}

论文和源码下载地址:请点击》》》

基于 SpringBoot 的个人博客系统设计与实现(含论文与程序代码).rar相关推荐

  1. 基于SpringBoot的个人博客系统设计与实现

    摘 要 作为计算机的学生,我们学习的方法是通过老师,书籍,论文等.对很多从事计算机方面的人来说,他们学习知识是通过官方文档,以及相关博客.现在知名博客网站有很多,比如CSDN,博客园,还有全球最知名的 ...

  2. 基于python的个人博客系统的设计开题报告_基于SSM的个人博客系统设计开题报告...

    本 科 毕 业 设 计(论文)开 题 报 告 题  目:基于SSM的个人博客系统设计与实现 专题题目(若无专题则不填): 本课题来源及研究现状: 关于博客的未来:在创办了博客中国(blogchina) ...

  3. 基于springboot+vue个人博客搭建

    目录 博客介绍 源码地址:springboot+vue个人博客系统: 基于springboot+vue个人博客系统 在线地址 目录结构 ​编辑 项目特点 技术介绍 开发环境 项目截图 注意事项: 项目 ...

  4. 【毕业设计_课程设计】基于Spring MVC的博客系统设计与实现

    文章目录 0 项目说明 1 关于项目 2 效果预览 2.1 前台效果图 2.2 后台效果图 3 使用注意 4 使用步骤 5 项目源码 0 项目说明 基于Spring MVC的博客系统设计与实现 提示: ...

  5. asp毕业设计——基于asp+access的博客网站设计与实现(毕业论文+程序源码)——博客网站

    基于asp+access的博客网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的博客网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  6. 基于 SpringBoot + MyBatis 的博客系统

    文章目录 1. 项目设计 2. 效果展示 3. 创建项目并配置文件 1.1 创建 Spring 项目 1.2 配置文件 4. 数据库实现用户和博客管理 4.1 设计数据库 4.2 使用 MyBatis ...

  7. 基于SpringBoot的个人博客系统

    项目编号:BS-PT-042 该博客是基于SpringBoot + Mybatis + Thymeleaf 等技术实现的 Java 博客系统,页面美观.功能齐全.部署简单及完善的代码,做为毕设项目的话 ...

  8. 基于Springboot搭建个人博客 (学习笔记)

    个人博客搭建 技术选型 主要框架 安装 RabbitMq,Elasticsearch 安装RabbitMq 安装环境 下载安装包 安装配置 erlang 安装配置 rabbitMQ 验证 安装Elas ...

  9. 基于springboot框架的博客系统

    1   概览 1.1  文档目的 利用该文档可以搭建一套博客的在线系统,其中包括博客首页以及博客管理等后台系统,可以实现博客预览,博客发布,博客管理以及其他管理功能,来满足工作或者学习上的需要. 1. ...

最新文章

  1. 快速定制SolidWorks Electrical清单模板
  2. 在一个大项目中,我选择了另一种JDK实现AdoptOpenJDK
  3. gitlab 构建tag_GitLab常用命令 分支 Tag 配置 操作
  4. hibernate在分层架构中修改数据(update)时遇到的问题!!
  5. react学习(19)----可以通过设置默认值去回调
  6. android 沙箱 逆向,【原创】沙箱Sandboxie v3.40 逆向完整源码
  7. [转载] python无法从nltk中调取文本 from nltk.book import *
  8. pytorch中的nn.LSTM模块参数详解
  9. 统计难题 HDU - 1251(字典树)
  10. 周立功USB-CANII(linux版)与Qt线程结合
  11. 5类6类7类网线对比_5类6类7类网线到底有什么区别?
  12. matlab绘制不同线性的直方图,Matlab绘制柱状图采用不同图案填充
  13. 树莓派有线网络设置_树莓派通过网线实现与电脑共享网络
  14. Accumulator Proof解析
  15. 地下停车场的车内与车外,揭露了中年男人内心最沉重的痛
  16. 画坦克__坦克可移动
  17. 服务器和网页接口,WebApi架构详解,WebApi接口搭建与部署WebApi服务器
  18. 学生免费申请JetBrains许可
  19. seo从入门到精通_SEO可以干什么,一定要看(SEO职业攻略)
  20. DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade

热门文章

  1. Python爬虫进阶必备 | 极X助手加密算法分析
  2. 抖音和tiktok是什么关系?TikTok和抖音差别大吗?
  3. Maven手动添加dependency(以Oracle JDBC为例)
  4. css好看常用的中文字体
  5. 老菜鸟趣谈:对编程初学者的一些建议
  6. 计算机基础--作业5,计算机基础第5次作业-第五章-Powerpoint知识题 (精选可编辑)...
  7. FFmpeg从入门到入魔(2):保存流到本地MP4
  8. 计算机科学与技术专业教学计划表
  9. simulink实现他励直流电动机串电阻调速仿真
  10. 用最虔诚的心攻克英语!