文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 文本----简单编写文章的方法(中),后端接口的编写,自己编写好页面就上传到自己的服务器上,使用富文本编辑器进行编辑,想写好一个项目,先分析一下需求,再理一下实现思路,再搞几层,配好参数校验,lomb

1.1 今天在编写代码的时候,突然想实现一个目标:怎样能够在自己的网站上发一些文章

(lingyidianke.com)

1.2 参考自己之前写的一些资料,做一做试试,那么怎么做呢?首先,我们参考一下我们之前的资料,之前写过的大事件资料:

1.2.1 从项目结构上看,我们要创两个项目

1.3 这里前端项目的名字叫lingyidianke,后端项目的目录叫WorldToLingyidianke,先建一个Vue文档

1.4 创建Vue项目可以参考资料,cmd中放入

视频弹幕网站设计01-我爱发弹幕-CSDN博客

2、在这里创建一个新的项目

3、配置项目

4、简单的配置

5、填写Eslint

6、这样就保存了项目

7、这样前端项目创建好了

开始创建后端:

这里参考资料:idea创建SpringBoot项目

大事件后端项目01-----SpringBoot快速入门_大事件springboot项目-CSDN博客

视频弹幕网站设计01-我爱发弹幕-CSDN博客

将pom.xml文件中idea2019.3.3的相关依赖,进行注入

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.6</version>
    </parent>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
 
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

后端项目创建application依赖,链接:

如何使用Maven构建SpringBoot项目-CSDN博客

创建好项目之后:爆了一个bug,不支持发行版本17

这里参考资料:

idea提示不支持发行版本13_idea不支持发行版本13-CSDN博客

这里又报了一个bug

Consider the following:

   If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.

   If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

这里可以参考资料:

Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了-CSDN博客

配置文件添加sql的配置:application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://ip+端口+库名?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
    username:
    password:

启动properties就行?

8、弄完上述步骤,上传gitee仓库

8.1  git remote add origin 《仓库路径》

git push --set-upstream origin master

9、先简单分析一下功能流程:最简单的功能流程,写------》发布成功

9.1 先建好自己的数据库,视频链接资料:数据库的格式在这里,state有两种状态:链接资料

大事件后端项目26------新增文章-CSDN博客

9.2 弄一个实体类和数据表,接下来造一个数据库,文本的数据库和实体类

9.3

9.4 首先我们建好四个层,实体类:

9.5 编写实体类:这里参考资料是B站32节:

实战篇-20_新增文章_哔哩哔哩_bilibili

10、编写新增文章分类,我们先写好类和接口:

11、先写个类:Article.class的类

@Data
public class Article {
    private Integer id;//主键ID
    @NotEmpty
    @Pattern(regexp = "^\\S{1,10}$")
    private String title;//文章标题
    @NotEmpty
    private String content;//文章内容
    @NotEmpty
    @URL
    private String coverImg;//封面图像
 
    @State
    private String state;//发布状态 已发布|草稿
    @NotNull
    private Integer categoryId;//文章分类id
    private Integer createUser;//创建人ID
    private LocalDateTime createTime;//创建时间
    private LocalDateTime updateTime;//更新时间
}

12、在我们serivce层中创建类和接口,接口的名字叫做:ArticleService

13、在impl中添加ArticleSerivice的实现类

14、在impl中编写测试类ArticleSeriviceImpl

15、类上添加接口,添加Service的注解

16、创建ArticleMapper的接口

17、添加@Mapper注解

18、先将Mapper层的接口,controller层的实现类,serivice的接口和实现类写上

19、添加注解和配置映射路径,方法的传递类中接入注解

19.1 添加@RequestBody注解

19.2 配置好Mysql的相关内容,打开Navicate:把Aticle的资料放进去:这里我们重新建一个数据库:重新写一个Aticle的数据库

20、创建好了,配置Mybatis的资料

21、Spring这里我们写一个springBoot参数需要的依赖:

21.1 pom.xml中添加:

1. <dependency>
2. <groupId>org.springframework.boot</groupId>
3. <artifactId>spring-boot-starter-validation</artifactId>
4. </dependency>

22、为检验验证信息,添加Exception的类:

23、接下来创建一个GlobalExceptionHandler的接口:

24、添加@RestControllerAdvice注解,Exception需要result的实现类和lombok的依赖:需要引入对应依赖

1. <!--lombok依赖-->
2. <dependency>
3. <groupId>org.projectlombok</groupId>
4. <artifactId>lombok</artifactId>
5. </dependency>

25、引入对应依赖之后,编写result的实现类

1. package worldtolingyidianke.demo.bean;
2. 
3. 
4. import lombok.AllArgsConstructor;
5. import lombok.Data;
6. import lombok.NoArgsConstructor;
7. 
8. //统一响应结果
9. @NoArgsConstructor
10. @AllArgsConstructor
11. @Data
12. public class Result<T> {
13. private Integer code;//业务状态码  0-成功  1-失败
14. private String message;//提示信息
15. private T data;//响应数据
16. 
17. //快速返回操作成功响应结果(带响应数据)
18. public static <E> Result<E> success(E data) {
19. return new Result<>(0, "操作成功", data);
20.     }
21. 
22. //快速返回操作成功响应结果
23. public static Result success() {
24. return new Result(0, "操作成功", null);
25.     }
26. 
27. public static Result error(String message) {
28. return new Result(1, message, null);
29.     }
30. }

26、GlobalExceptionHandler的资料

package worldtolingyidianke.demo.exception;
 
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import worldtolingyidianke.demo.bean.Result;
 
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e){
        e.printStackTrace();
        return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage() : "操作失败");
    }
}

27、因为我们需要校验参数,因此我们用相应的依赖:

1. <dependency>
2. <groupId>org.springframework.boot</groupId>
3. <artifactId>spring-boot-starter-validation</artifactId>
4. </dependency>

28、分析一下实现思路:

29、alt + enter就可以实现了

30、ArticleController的类:点击新增实现类:

31、alt + enter重写方法

32、添加@Override

33、articleImpl补全里面的内容

33.1 添加一个ThreadLocalUtil的工具类:

package com.itheima.utils;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * ThreadLocal 工具类
 */
@SuppressWarnings("all")
public class ThreadLocalUtil {
    //提供ThreadLocal对象,
    private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
 
    //根据键获取值
    public static <T> T get(){
        return (T) THREAD_LOCAL.get();
    }
  
    //存储键值对
    public static void set(Object value){
        THREAD_LOCAL.set(value);
    }
 
 
    //清除ThreadLocal 防止内存泄漏
    public static void remove(){
        THREAD_LOCAL.remove();
    }
}

34、再添加一个ArticleMapper的工具类

35、add添加alt +  enter方法,添加alt + Mapper的接口

36、

package com.itheima.mapper;
 
import com.itheima.pojo.Article;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.List;
 
@Mapper
public interface ArticleMapper {
    //新增
    @Insert("insert into article(title,content,cover_img,state,category_id,create_user,create_time,update_time) " +
            "values(#{title},#{content},#{coverImg},#{state},#{categoryId},#{createUser},#{createTime},#{updateTime})")
    void add(Article article);
 
 
    List<Article> list(Integer userId, Integer categoryId, String state);
}

37、最后我要的内容就是点击send能够正常添加:

38、application中的配置文件到java项目的层,

38.1 classpath:这里直接放到mappers下吧!!

39、

40、因为代码是抄的,所以出现了许多的bug

41、impl中的出现了变红的情况:Article是因为多写了一个,这里是因为使用idea的时候,需要相关插件:参考资料:

@Date不管用怎么办,想少写get和setter方法,reate方法创建不了怎么办,Cannot resolve method ‘setxxx‘ in ‘xxx‘不管用怎么办,到Maven创建插件-CSDN博客

添加插件之后,三个错误就全部解决了

42、这里爆了三个错误,

43、这里能够启动说明了里面没有bug了

44、后来经过验证,这里还要添加拦截器和JWT令牌才行:

<!--java-jwt坐标-->

<dependency>

 <groupId>com.auth0</groupId>

 <artifactId>java-jwt</artifactId>

 <version>4.4.0</version>

</dependency>


最后能够用postman进行测试:

1、打开postman工具,导入相应的依赖

1.1 资料链接26分:33秒

实战篇-03_注册接口_哔哩哔哩_bilibili

2、点击wordpress

2.1 创建名字

2.2 第二步创建一个工作集collections

2.3 找到提前准备好的测试用例

2.4 点击import,再点击files

2.5 这里提前准备好了测试用例进行保存就行了

2.6 准入用户测试接口:文档资源路径,导入接口路径

git@gitee.com:lkc20000416/test-case.git

2.7 打开Body,测试一下试试:

2.8 最后点击send,操作一下:

后端这里要的最后的结果是点击send,就能够出现内容

前端使用富文本编辑器:

这里将源码给贴上:

最终结果要能够在对应页面呈现一篇布局不错的文章

48、新增文章的接口,将这几个层给编写完成

49、第一步在pojo层,创建Article类:

50、第二步在ArticleController中添加ArticleController类

51、第三步在service层中创建一个ArticleService接口

52、第四步实体类

53、第五步先继承一下ArticleSerivce的接口,同时配置注解

54、第六步

55、第七步,在ArticleService接口

56、ArticleSerivceImpl的写法

57、ArticleMapper的接口的写法:

最后我想要的情况:点击send之后,就能够存储到数据库当中

做完新增文章的接口:具体参考资料是:

大事件后端项目21-------新增文章分类-CSDN博客

再做完文章分类列表:配置完token之后,显示成功即可

大事件后端项目22----文章分类列表-CSDN博客

再做完获取文章分类详情,参考文章

CSDN

这样我们就可以添加文章了,因为有外键的影响,必须执行完前面的操作才行:


相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
9月前
|
监控 Java 应用服务中间件
低并发编程|如何用720个请求让后端服务器瘫痪
本次故障因应用启动时未有效校验核心依赖模块初始化异常,导致后续请求处理中抛出无法捕获的错误,引发线程阻塞,最终耗尽HSF线程池,服务不可用。排查发现类初始化失败且异常未被正确处理,结合线程无限等待问题,确认为依赖初始化异常与流处理中断所致。修复措施包括加强启动校验、捕获Throwable及设置合理超时。总结指出,系统稳定性需从细节入手,防微杜渐,避免连锁故障。
低并发编程|如何用720个请求让后端服务器瘫痪
|
10月前
|
存储 弹性计算 缓存
阿里云服务器ECS经济型、通用算力、计算型、通用和内存型选购指南及使用场景分析
本文详细解析阿里云ECS服务器的经济型、通用算力型、计算型、通用型和内存型实例的区别及适用场景,涵盖性能特点、配置比例与实际应用,助你根据业务需求精准选型,提升资源利用率并降低成本。
582 3
|
8月前
|
存储 弹性计算 运维
阿里云服务器全解析:ECS是什么、应用场景、租用流程及优缺点分析
阿里云ECS(Elastic Compute Service)是阿里云提供的高性能、高可用的云计算服务,支持弹性扩展、多样化实例类型和多种计费模式。适用于网站搭建、数据处理、运维测试等多种场景,具备分钟级交付、安全可靠、成本低、易运维等优势,是企业及开发者上云的理想选择。
1021 5
|
12月前
|
存储 人工智能 项目管理
2025年GitHub平台上的十大开源MCP服务器汇总分析
本文深入解析了GitHub上十个代表性MCP(Model Context Protocol)服务器项目,探讨其在连接AI与现实世界中的关键作用。这些服务器实现了AI模型与应用程序、数据库、云存储、项目管理等工具的无缝交互,扩展了AI的应用边界。文中涵盖Airbnb、Supabase、AWS-S3、Kubernetes等领域的MCP实现方案,展示了AI在旅行规划、数据处理、云存储、容器编排等场景中的深度应用。未来,MCP技术将向标准化、安全性及行业定制化方向发展,为AI系统集成提供更强大的支持。
2575 2
2025年GitHub平台上的十大开源MCP服务器汇总分析
|
Linux UED C++
MarkEdit:相信做技术的同学都会喜欢这个编辑器的,MarkEdit编辑器,让Markdown编辑变得简单而强大,超赞~~~
嗨,大家好,我是小华同学。MarkEdit是一款跨平台的Markdown编辑器,支持Windows、macOS和Linux,提供实时预览、快捷键、自定义主题和插件系统等核心功能。它适用于日常笔记、技术文档、博客写作、学术论文和电子书制作等多种场景。
1037 31
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
674 61
|
负载均衡 监控 架构师
「从零开始的云上建筑师速成班:用ROS编辑器搭个会呼吸的服务器小屋」
云上建筑师速成秘籍:用阿里云ROS架构编辑器像搭乐高一样玩转服务器!零代码拖拽资源+配置指南,从部署到拆家一条龙服务~
「从零开始的云上建筑师速成班:用ROS编辑器搭个会呼吸的服务器小屋」
|
移动开发 数据可视化 前端开发
tmagic - editor:大厂开源项目,零代码/低代码页面可视化编辑的利器,多端统一方案揭秘!如何用一套代码支持H5/PC,牛牛牛~~~
腾讯推出的开源项目 **tmagic-editor** 是一款所见即所得的页面可视化编辑器,支持H5、PC、TV等多种页面类型。它已应用于腾讯视频会员、腾讯会议等业务,每月生产和发布数百个页面,极大提高了开发效率。通过简单的拖拽和配置,非技术人员也能轻松创建复杂页面。tmagic-editor 支持 Vue2/Vue3 和 React 等多种前端框架,并提供了丰富的扩展功能,满足不同业务需求。
1489 3
|
运维 监控 负载均衡
slb后端服务器故障
slb后端服务器故障
318 13
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
1005 1