• springboot个人博客系统


    作者主页:夜未央5788

     简介: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 5.7版本;

    5.是否Maven项目:是;

    技术栈

    SpringBoot+SpringSecurity+Mybatis+Mysql+Redis+Thymeleaf+JQuery

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
    3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
    4. 运行项目,项目运行成功后,访问地址localhost:8080
    管理员账号密码:zhangpeng98@aliyun.com/mt2680324

    用户账号密码:zhangpeng@aliyun.com/mt2680324

    运行截图

    游客角色

     

     

     

     

     

    用户角色 

     

     

     

    管理员角色

     

     

     

     

     

     

    相关代码

    1. @Controller("adminUserController")
    2. @RequestMapping("/admin/user")
    3. public class AdminUserController {
    4. @Autowired
    5. private UserService userService;
    6. @Autowired
    7. private RoleService roleService;
    8. @RequestMapping("/showAll")
    9. public String showAll(@RequestParam(name = "pageNum", required = false, defaultValue = "1") Integer pageNum,
    10. @RequestParam(name = "pageSize", required = false, defaultValue = "2") Integer pageSize,
    11. @RequestParam(name = "email", required = false, defaultValue = "") String email, Model model) {
    12. show (pageNum, pageSize, email, model);
    13. return "admin/users";
    14. }
    15. public void show(Integer pageNum, Integer pageSize, String email, Model model){
    16. List<UserInfo> userInfos = userService.selectAll (pageNum, pageSize, email);
    17. PageInfo<UserInfo> pageInfo = new PageInfo<> (userInfos,8);
    18. model.addAttribute ("pageInfo",pageInfo);
    19. model.addAttribute ("email",email);
    20. }
    21. @RequestMapping("/showAll/search")
    22. public String search(@RequestParam(name = "pageNum", required = false, defaultValue = "1") Integer pageNum,
    23. @RequestParam(name = "pageSize", required = false, defaultValue = "2") Integer pageSize,
    24. @RequestParam(name = "email", required = false, defaultValue = "") String email, Model model) {
    25. show (pageNum, pageSize, email, model);
    26. return "admin/users :: userList";
    27. }
    28. @RequestMapping("/updateStatus")
    29. public String updateStatus(String email, RedirectAttributes attributes) {
    30. UserInfo userInfo = userService.findByEmail (email);
    31. Boolean status = userInfo.getStatus ();
    32. try {
    33. userService.updateStatus (email, !status);
    34. attributes.addFlashAttribute ("message","状态修改成功!");
    35. } catch (Exception e) {
    36. attributes.addFlashAttribute ("message","状态修改失败,服务器异常!");
    37. e.printStackTrace ();
    38. }
    39. return "redirect:showAll";
    40. }
    41. }

    分类控制器

    1. @Controller
    2. @RequestMapping("/admin/type")
    3. public class AdminTypeController {
    4. @Autowired
    5. private TypeService typeService;
    6. @RequestMapping("/showAll")
    7. public ModelAndView showAll(@RequestParam(name = "pageNum", required = false, defaultValue = "1") Integer pageNum,
    8. @RequestParam(name = "pageSize", required = false, defaultValue = "5") Integer pageSize,
    9. @RequestParam(name = "name", required = false, defaultValue = "") String name){
    10. ModelAndView mv = new ModelAndView ();
    11. //调用service层获取数据
    12. List<Type> types = typeService.selectAllByLikeName (pageNum, pageSize, name);
    13. //使用pageInfo包装查询后的结果,封装了详细的查询数据,其中参数5是页码导航连续显示的页数
    14. PageInfo<Type> pageInfo = new PageInfo<> (types,5);
    15. mv.addObject ("pageInfo",pageInfo);
    16. mv.addObject ("name",name);
    17. mv.setViewName ("admin/types");
    18. return mv;
    19. }
    20. @RequestMapping("/toAdd")
    21. public String toAdd(Model model){
    22. model.addAttribute ("type",new Type ());
    23. return "admin/types-input";
    24. }
    25. @RequestMapping("/add")
    26. public String add(@Valid Type type, BindingResult result, RedirectAttributes attributes){
    27. Type type1 = typeService.selectByName (type.getName ());
    28. if (type1 != null){
    29. result.rejectValue ("name","nameError","不能添加重复的类别名称");
    30. }
    31. if (result.hasErrors ()){
    32. return "admin/types-input";
    33. }
    34. //调用service层保存类别
    35. Boolean save = typeService.save (type);
    36. if (save){
    37. attributes.addFlashAttribute ("message","添加成功!");
    38. } else {
    39. attributes.addFlashAttribute ("message","添加失败!");
    40. }
    41. return "redirect:showAll";
    42. }
    43. @RequestMapping("/toUpdate")
    44. public ModelAndView toUpdate(Integer id){
    45. ModelAndView mv = new ModelAndView ();
    46. Type type = typeService.selectById (id);
    47. mv.addObject ("type",type);
    48. mv.setViewName ("admin/types-update");
    49. return mv;
    50. }
    51. @RequestMapping("/update")
    52. public String update(@Valid Type type, BindingResult result, RedirectAttributes attributes){
    53. Type type1 = typeService.selectByName (type.getName ());
    54. if (type1 != null){
    55. result.rejectValue ("name","nameError","该类别名称已存在,不能修改!");
    56. }
    57. if (result.hasErrors ()){
    58. return "admin/types-update";
    59. }
    60. Boolean update = typeService.update (type);
    61. if (update){
    62. attributes.addFlashAttribute ("message","修改成功!");
    63. } else {
    64. attributes.addFlashAttribute ("message","修改失败!");
    65. }
    66. return "redirect:showAll";
    67. }
    68. @RequestMapping("/deleteById")
    69. public String deleteById(Integer id, RedirectAttributes attributes){
    70. //调用service层删除类别
    71. Boolean aBoolean = typeService.deleteById (id);
    72. if (aBoolean){
    73. attributes.addFlashAttribute ("message","删除成功!");
    74. } else {
    75. attributes.addFlashAttribute ("message","删除失败,有博客是该类别!");
    76. }
    77. return "redirect:showAll";
    78. }
    79. }

    如果也想学习本系统,下面领取。回复:098springboot   

  • 相关阅读:
    相似基因序列问题 ——查找
    python笔记(15)函数
    指令寻址方式(重点记忆)
    ubuntu 18 虚拟机安装(3)安装mysql
    斐波那契数列
    不让写系列之软件篇-留档
    使用 Pygame 构建和可视化数独游戏
    C/C++数据结构——挖沟(Kruskal算法+并查集)
    Camtasia mac版怎么加字幕 Camtasia mac版怎么打马赛克
    洛谷P5613 黑蚊子多
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/125514695