免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的

大家好,我是java1234_小锋老师,看到一个不错的Springboot+Vue前后端分离的个人博客系统,分享下哈。

项目视频演示

【免费】Springboot+Vue个人博客系统 毕业设计 Java毕业设计_哔哩哔哩_bilibili【免费】Springboot+Vue个人博客系统 毕业设计 Java毕业设计项目来自互联网,免费开源分享,严禁商业。更多毕业设源码:http://www.java1234.com/a/bysj/javaweb/, 视频播放量 287、弹幕量 0、点赞数 15、投硬币枚数 4、收藏人数 14、转发人数 1, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:【免费】SpringBoot + Vue + ElementUI 人力资源管理系统 Java毕业设计,【免费】java贪吃蛇毕业设计,【免费】javaweb人才招聘网站毕业设计,【免费】javaweb物业管理系统毕业设计,【免费】javaweb留言管理系统毕业设计,【免费】javaweb学生选课系统毕业设计,【免费】javaweb旅游网系统毕业设计,【免费】javaweb电影票订购系统毕业设计,【免费】Javaweb医院在线挂号系统毕业设计,【免费】javaweb高校学籍管理系统毕业设计icon-default.png?t=N7T8https://www.bilibili.com/video/BV1ci4y1Y779

项目介绍

进入二十一世纪,以Internet为核心的现代网络积水和通信技术已经得到了飞速的发展和广泛的应用,各种网络交流互动工具也应运而生。其中以论坛、博客、社区、空间最为受广大网民朋友的欢迎,也是目前为止发展的比较成熟的信息交流工具。在网络技术逐渐渗入社会生活各个层面的今天,传统的交流方式也面临着变革,而网络博客则是一个很重要的方向。基于Web技术的网络考试系统可以借助于遍布全球的Internet进行,因此交流既可以是本地进行,也可以是异地进行,大大拓展了沟通与交流的灵活性。博客在现如今这个飞速发展的网络时代已经成为人们不可或缺的一部分

博客,又译为网络日志、部落格或部落阁等,是一种通常由个人管理、不定期张贴新的文章的网站。博客它经常是由简短且经常更新的帖子构成,它可以发表有关个人构思,日记,或者诗歌,散文,小说等等。博客可以是你纯粹个人的想法和心得,包括你对时事新闻、国家大事的个人看法,或者你对一日三餐、服饰打扮的精心料理等,也可以是在基于某一主题的情况下或是在某一共同领域内由一群人集体创作的内容。写博客是为了把自己各种各样的想法在网上表达、释放出来,把一时的想法变成观点展示给大家。而浏览博客的用户,也可以对发表观点和看法的文章进行评论,博客就是这样一个平台。  博客最初的名称是Weblog,由web和log两个单词组成,按字面意思就为网络日记,后来喜欢新名词的人把这个词的发音故意改了一下,读成we blog,由此,blog这个词被创造出来。中文意思即网志或网络日志,不过,在中国大陆有人往往也将 Blog本身和 blogger(即博客作者)均音译为“博客”。“博客”有较深的涵义:“博”为“广博”;“客”不单是“blogger”更有“好客”之意。看Blog的人都是“客”。而在台湾,则分别音译成“部落格”(或“部落阁”)及“部落客”,认为Blog本身有社群群组的意含在内,借由Blog可以将网络上网友集结成一个大博客,成为另一个具有影响力的自由媒体

主要内容和要求:(包括设计(研究)内容、主要指标与技术参数,并根据课题性质对学生提出具体要求):

本系统为用户提供实现了以下功能:

  1. 登录功能:

系统为单用户系统,为用户分配了用户名和密码。用户必须先登录,进入操作界面。用户输入ID和密码,通过服务器验证方可运行,否则显示消息提示。

2.网站前台功能:

浏览:博主个人信息、文章; ‚

发表:留言,评论

  1. 网站后台功能:  

后台登录:注册 登录

用户管理模块:实现用户信息及密码的修改  ‚

博文的分类与管理模块:实现分类的增、删、改 ƒ

评论管理模块:实现删除评论功能 „

留言管理模块:实现删除、回复评论功能 …

系统管理模块:实现博客版面的定义与管理 ‡博客的数据统计

系统展示

免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第1张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第2张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第3张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第4张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第5张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第6张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第7张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第8张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第9张图片免费分享一套Springboot+Vue前后端分离的个人博客系统,挺漂亮的_第10张图片

部分代码

package com.shanzhu.blog.cms.controller;

import com.shanzhu.blog.cms.domain.CmsBlog;
import com.shanzhu.blog.cms.domain.CmsTag;
import com.shanzhu.blog.cms.domain.CmsType;
import com.shanzhu.blog.cms.service.ICmsBlogService;
import com.shanzhu.blog.cms.service.ICmsTagService;
import com.shanzhu.blog.cms.service.ICmsTypeService;
import com.shanzhu.blog.cms.service.ISysFileInfoService;
import com.shanzhu.blog.common.annotation.Log;
import com.shanzhu.blog.common.core.controller.BaseController;
import com.shanzhu.blog.common.core.domain.AjaxResult;
import com.shanzhu.blog.common.core.page.TableDataInfo;
import com.shanzhu.blog.common.enums.BusinessType;
import com.shanzhu.blog.common.utils.SecurityUtils;
import com.shanzhu.blog.common.utils.StringUtils;
import com.shanzhu.blog.common.utils.poi.ExcelUtil;
import com.shanzhu.blog.framework.web.service.SysPermissionService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Set;


/**
 * 文章管理Controller
 *
 * @author: ShanZhu
 * @date: 2023-12-09
 */
@RestController
@RequestMapping("/cms/blog")
public class CmsBlogController extends BaseController {

    @Resource
    private ICmsBlogService cmsBlogService;

    @Resource
    private ICmsTypeService cmsTypeService;

    @Resource
    private ICmsTagService cmsTagService;

    @Resource
    private SysPermissionService permissionService;

    @Resource
    private ISysFileInfoService sysFileInfoService;

    /**
     * 首页查询文章列表
     */
    @GetMapping("/cms/cmsList")
    public TableDataInfo cmsList(CmsBlog cmsBlog) {
        startPage();
        //状态为发布
        cmsBlog.setStatus("1");
        List list = cmsBlogService.selectCmsBlogList(cmsBlog);
        return getDataTable(list);
    }

    /**
     * 首页获取文章详细信息
     */
    @GetMapping(value = {"/cms/detail/", "/cms/detail/{id}"})
    public AjaxResult getInfoDetail(@PathVariable(value = "id", required = false) Long id) {
        AjaxResult ajax = AjaxResult.success();
        CmsType cmsType = new CmsType();
        CmsTag cmsTag = new CmsTag();
        ajax.put("types", cmsTypeService.selectCmsTypeList(cmsType));
        ajax.put("tags", cmsTagService.selectCmsTagList(cmsTag));
        if (StringUtils.isNotNull(id)) {
            ajax.put(AjaxResult.DATA_TAG, cmsBlogService.selectCmsBlogById(id));
        }
        return ajax;
    }

    /**
     * 首页按分类查询文章列表
     */
    @GetMapping("/cms/cmsListByType/{id}")
    public TableDataInfo cmsListByTypeId(@PathVariable(value = "id", required = false) Long id) {
        startPage();
        List list = cmsBlogService.selectCmsBlogListByTypeId(id);
        return getDataTable(list);
    }

    /**
     * 首页按标签查询文章列表
     */
    @GetMapping("/cms/cmsListByTag/{id}")
    public TableDataInfo cmsListByTagId(@PathVariable(value = "id", required = false) Long id) {
        startPage();
        List list = cmsBlogService.selectCmsBlogListByTagId(id);
        return getDataTable(list);
    }

    /**
     * 首页查询推荐文章列表
     */
    @GetMapping("/cms/cmsListRecommend")
    public TableDataInfo cmsListRecommend(CmsBlog cmsBlog) {
        startPage();
        //状态为发布
        cmsBlog.setStatus("1");
        List list = cmsBlogService.selectCmsBlogListRecommend(cmsBlog);
        return getDataTable(list);
    }

    /**
     * 首页增加阅读量
     */
    @GetMapping("/cms/addBlogViews/{id}")
    public AjaxResult addBlogViews(@PathVariable(value = "id", required = false) Long id) {
        CmsBlog cmsBlog = cmsBlogService.selectCmsBlogById(id);
        Long views = cmsBlog.getViews();
        views += Long.parseLong("1");
        cmsBlog.setViews(views);
        cmsBlogService.updateCmsBlog(cmsBlog);
        return AjaxResult.success(id);
    }

    /**
     * 随笔页查询文章列表
     */
    @GetMapping("/cms/cmsEssayList")
    public TableDataInfo cmsEssayList(CmsBlog cmsBlog) {
        startPage();
        //状态为发布
        cmsBlog.setStatus("1");
        List list = cmsBlogService.selectCmsBlogList(cmsBlog);
        return getDataTable(list);
    }

    /**
     * 查询文章管理列表
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:list')")
    @GetMapping("/list")
    public TableDataInfo list(CmsBlog cmsBlog) {
        startPage();
        // 角色集合
        Set roles = permissionService.getRolePermission(getLoginUser().getUser());
        if (!SecurityUtils.isAdmin(getUserId()) && !roles.contains("admin") && !roles.contains("cms")) {
            cmsBlog.setCreateBy(getUsername());
        }
        List list = cmsBlogService.selectCmsBlogList(cmsBlog);
        return getDataTable(list);
    }

    /**
     * 导出文章管理列表
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:export')")
    @Log(title = "文章管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, CmsBlog cmsBlog) {
        List list = cmsBlogService.selectCmsBlogList(cmsBlog);
        ExcelUtil util = new ExcelUtil(CmsBlog.class);
        util.exportExcel(response, list, "文章管理数据");
    }

    /**
     * 获取文章管理详细信息
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:query')")
    @GetMapping(value = {"/", "/{id}"})
    public AjaxResult getInfo(@PathVariable(value = "id", required = false) Long id) {
        AjaxResult ajax = AjaxResult.success();
        CmsType cmsType = new CmsType();
        CmsTag cmsTag = new CmsTag();
        ajax.put("types", cmsTypeService.selectCmsTypeList(cmsType));
        ajax.put("tags", cmsTagService.selectCmsTagList(cmsTag));
        if (StringUtils.isNotNull(id)) {
            ajax.put(AjaxResult.DATA_TAG, cmsBlogService.selectCmsBlogById(id));
        }
        return ajax;
    }

    /**
     * 新增文章管理
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:add')")
    @Log(title = "文章管理", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody CmsBlog cmsBlog) {
        cmsBlog.setCreateBy(getUsername());
        Long blogId = cmsBlogService.insertCmsBlog(cmsBlog);
        if (blogId == null) {
            return AjaxResult.error();
        }
        return AjaxResult.success(blogId);
    }

    /**
     * 修改文章管理
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:edit')")
    @Log(title = "文章管理", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody CmsBlog cmsBlog) {
        cmsBlog.setUpdateBy(getUsername());
        //删除原首图
        CmsBlog oldBlog = cmsBlogService.selectCmsBlogById(cmsBlog.getId());
        if (cmsBlog.getBlogPic().isEmpty() || !cmsBlog.getBlogPic().equals(oldBlog.getBlogPic())) {
            if (!oldBlog.getBlogPic().isEmpty()) {
                String blogPic = oldBlog.getBlogPic();
                if (blogPic != null && !"".equals(blogPic)) {
                    int newFileNameSeparatorIndex = blogPic.lastIndexOf("/");
                    String FileName = blogPic.substring(newFileNameSeparatorIndex + 1).toLowerCase();
                    sysFileInfoService.deleteSysFileInfoByFileObjectName(FileName);
                }
            }
        }
        return toAjax(cmsBlogService.updateCmsBlog(cmsBlog));
    }

    /**
     * 删除文章管理
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:remove')")
    @Log(title = "文章管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        //删除原首图
        for (Long id : ids) {
            CmsBlog oldBlog = cmsBlogService.selectCmsBlogById(id);
            if (!oldBlog.getBlogPic().isEmpty()) {
                String blogPic = oldBlog.getBlogPic();
                if (blogPic != null && !"".equals(blogPic)) {
                    int newFileNameSeparatorIndex = blogPic.lastIndexOf("/");
                    String FileName = blogPic.substring(newFileNameSeparatorIndex + 1).toLowerCase();
                    sysFileInfoService.deleteSysFileInfoByFileObjectName(FileName);
                }
            }
        }
        return toAjax(cmsBlogService.deleteCmsBlogByIds(ids));
    }

    /**
     * 取消按钮-删除首图
     */
    @PreAuthorize("@ss.hasPermi('cms:blog:edit')")
    @PostMapping("/cancel")
    public AjaxResult cancel(@RequestBody CmsBlog cmsBlog) {
        String blogPic = cmsBlog.getBlogPic();
        if (blogPic != null && !"".equals(blogPic)) {
            Long blogId = cmsBlog.getId();
            if (blogId == null) {
                int newFileNameSeparatorIndex = blogPic.lastIndexOf("/");
                String FileName = blogPic.substring(newFileNameSeparatorIndex + 1).toLowerCase();
                sysFileInfoService.deleteSysFileInfoByFileObjectName(FileName);
            } else {
                String Pic = cmsBlogService.selectCmsBlogById(blogId).getBlogPic();
                if (!blogPic.equals(Pic)) {
                    int newFileNameSeparatorIndex = blogPic.lastIndexOf("/");
                    String FileName = blogPic.substring(newFileNameSeparatorIndex + 1).toLowerCase();
                    sysFileInfoService.deleteSysFileInfoByFileObjectName(FileName);
                }
            }
        }
        return toAjax(1);
    }
}


源码下载

CSDN 1积分下载:https://download.csdn.net/download/caofeng891102/88648150

或者免费领取加小锋老师wx:java9266

热门推荐

免费分享一套Springboot+Vue前后端分离的在线图书商城(书城)系统,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的校园二手交易平台,挺漂亮的-CSDN博客

免费分享一套Springboot+Vue前后端分离的学生网上请假系统,挺漂亮的-CSDN博客

免费分享一套基于springboot的进销存(仓库)管理系统,挺漂亮的-CSDN博客

免费分享一套 SpringBoot + Vue + ElementUI 的人力资源管理系统,挺漂亮的-CSDN博客

免费分享一套基于Springboot+Vue的医院管理系统,挺漂亮的-CSDN博客

你可能感兴趣的:(java,java博客,springboot博客,vue博客,博客系统,java毕业设计,博客系统毕业设计,java)