当前位置:   article > 正文

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

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

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.7.6</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-jdbc</artifactId>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.mybatis.spring.boot</groupId>
  17. <artifactId>mybatis-spring-boot-starter</artifactId>
  18. <version>2.2.2</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>mysql</groupId>
  22. <artifactId>mysql-connector-java</artifactId>
  23. <scope>runtime</scope>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-test</artifactId>
  28. <scope>test</scope>
  29. </dependency>
  30. </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

  1. spring:
  2. datasource:
  3. driver-class-name: com.mysql.cj.jdbc.Driver
  4. url: jdbc:mysql://ip+端口+库名?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
  5. username:
  6. 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的类

  1. @Data
  2. public class Article {
  3. private Integer id;//主键ID
  4. @NotEmpty
  5. @Pattern(regexp = "^\\S{1,10}$")
  6. private String title;//文章标题
  7. @NotEmpty
  8. private String content;//文章内容
  9. @NotEmpty
  10. @URL
  11. private String coverImg;//封面图像
  12. @State
  13. private String state;//发布状态 已发布|草稿
  14. @NotNull
  15. private Integer categoryId;//文章分类id
  16. private Integer createUser;//创建人ID
  17. private LocalDateTime createTime;//创建时间
  18. private LocalDateTime updateTime;//更新时间
  19. }

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

26、GlobalExceptionHandler的资料

  1. package worldtolingyidianke.demo.exception;
  2. import org.springframework.util.StringUtils;
  3. import org.springframework.web.bind.annotation.ExceptionHandler;
  4. import org.springframework.web.bind.annotation.RestControllerAdvice;
  5. import worldtolingyidianke.demo.bean.Result;
  6. @RestControllerAdvice
  7. public class GlobalExceptionHandler {
  8. @ExceptionHandler(Exception.class)
  9. public Result handleException(Exception e){
  10. e.printStackTrace();
  11. return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage() : "操作失败");
  12. }
  13. }

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的工具类:

  1. package com.itheima.utils;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. /**
  5. * ThreadLocal 工具类
  6. */
  7. @SuppressWarnings("all")
  8. public class ThreadLocalUtil {
  9. //提供ThreadLocal对象,
  10. private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
  11. //根据键获取值
  12. public static <T> T get(){
  13. return (T) THREAD_LOCAL.get();
  14. }
  15. //存储键值对
  16. public static void set(Object value){
  17. THREAD_LOCAL.set(value);
  18. }
  19. //清除ThreadLocal 防止内存泄漏
  20. public static void remove(){
  21. THREAD_LOCAL.remove();
  22. }
  23. }

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

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

36、

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/377026
推荐阅读
相关标签
  

闽ICP备14008679号