实现个人资讯-添加文章功能和编辑修改文章功能

本文介绍了如何实现个人资讯平台的添加文章和编辑功能。通过下载Markdown编辑器,结合Vue的前端界面和Spring Boot、Spring MVC、MybatisPlus的后端服务,详细阐述了index.html、BlogController、BlogServiceImpl(涉及ThreadLocal技术)以及add.html和add.js的实现过程。虽然页面样式有待改进,但基本功能已经完成。
摘要由CSDN通过智能技术生成

在这里插入图片描述

在这里插入图片描述

- 下载md编辑器 -

准备工作

官网:https://pandao.github.io/editor.md/

查看官网完整案例!

在这里插入图片描述

index.html核心代码

 <div style="position: absolute;right:-50px;z-index: 110">
      <a href="/blog/add">添加文章</a>
     </div>

BlogController核心代码

@Controller
@Slf4j
public class BlogController {
   
    @GetMapping("/blog/add")
    public ModelAndView toAdd(){
   
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/blog/add");
        return modelAndView;
    }
    
     /**
     * 根据id查询文章信息
     * @param blogId
     * @return
     */
    @GetMapping("/api/blog/get/{blogId}")
    @ResponseBody
    public Blog getBlog(@PathVariable("blogId")Integer blogId) {
   
        Optional.ofNullable(blogId).orElseThrow(() -> new RuntimeException("文章找不到!!!"));
        //这个是查看对应id的blog实例!
        Blog blog = blogService.getById(blogId);
        Optional.ofNullable(blog).orElseThrow(() -> new RuntimeException("文章找不到!!!"));
        return blog;
    }
        /**
     * 新增和添加文章接口
     * @param blog
     * @return
     */
    @PostMapping("/api/blog/saveupdate")
    @ResponseBody
    public Blog saveBlog(@RequestBody Blog blog){
   
        return blogService.saveBlog(blog);
    }
    //把下面这个段业务代码写到blogService中
//    @PostMapping("/api/blog/saveupdate")
//    @ResponseBody
//    public Blog saveBlog(@RequestBody Blog blog){
   
//        // 这里判断的原因是:只有保存的时候,才有初始值,
//        // 如果你不判断修改如果别人已经删除的。你会恢复会去的
//        if (blog.getId() == null) {
   
//            blog.setStatus(StatusEnum.STATUS);
//            blog.setIsDelete(0);
//            blog.setUserId(1);
//        }
//        boolean flag = blogService.saveOrUpdate(blog);
//        return flag ? blog : null;
//    }
     @GetMapping("/blog/edit/{blogId}")
    public ModelAndView toedit(@PathVariable("blogId")Integer blogId) {
   
        // 1: 定义模型视图
        ModelAndView modelAndView = new ModelAndView();
        // 2: 把编辑的博客id放入到模型中
        //为了编辑时,数据库内容回显给浏览器作为id使用!
        modelAndView.addObject("blogId",blogId);
        // 2: 指定跳转的页面
        modelAndView.setViewName("/blog/add");
        return modelAndView;
    }

}

BlogServiceImpl使用了xxxThreadLocal 这个技术可以单独讲

package com.kuangstudy.service.blog;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kuangstudy.config.userlocal.UserThreadLocal;
import com.kuangstudy.entity.Blog;
import com.kuangstudy.entity.User;
import com.kuangstudy.enums.StatusEnum;
import com.kuangstudy.mapper.BlogMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * Description:
 * Author: taimi 37310
 * Version: 1.0
 * Create Date Time: 2022/1/4 19:09.
 * Update Date Time:
 *
 * @see
 */
@Service
@Slf4j
public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements  IBlogService {
   
    @Override
    public Blog saveBlog(Blog blog) {
   
        // 这里判断的原因是:只有保存的时候,才有初始值,
        // 如果你不判断修改如果别人已经删除的。你会恢复会去的
        if (blog.getId() == null) {
   
            blog.setStatus(StatusEnum.STATUS);
            blog.setIsDelete(0);
            User user = UserThreadLocal.get();
            System.out.println(user);
            blog.setUserId(user.getId());
        }
        boolean flag = this.saveOrUpdate(blog);
        return flag ? blog 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值