首页IT科技三更app是啥软件(三更Blog项目总结(p1~p40))

三更app是啥软件(三更Blog项目总结(p1~p40))

时间2025-09-19 13:20:42分类IT科技浏览7135
导读:视频地址:SpringBoot项目实战-前后端分离博客项目-Java项目_哔哩哔哩_bilibili...

视频地址:SpringBoot项目实战-前后端分离博客项目-Java项目_哔哩哔哩_bilibili

项目创建——多模块开发

整个系统分为前台模块(blog)和后台模块(admin)                  ,前端已给好                          ,我们只需好些两套后端系统即可                  。

多模块开发:

我们并不是直接在Blog模块(父模块)下直接开发        ,还是根据需求分为了前台模块和后台模块

但是两个模块很多代码和功能都是有重复的                  ,就比如一些pom依赖                           ,逻辑代码接口        ,统一的工具类         ,响应类等等                           ,要是两个模块都这样写                 ,那就造成了代码的大量重复冗余!

为此我们给父模块再创建一个模块         ,这个模块作为工作模块(framework公共子模块)                           ,让blog和admin模块享有它的资源                 ,公共的代码                 、类                          、pom依赖等放在framework模块下,blog和admin模块到时自己特定的功能代码或者依赖等等                           ,在自己放在自己的模块下即可                          ,这样很多公共的代码就可以复用了!,那么我们主项目Blog下的src目录就可以删除去了                          。

一个父模块三个子模块                  ,通过maven的多模块管理建立关系                          ,子模块共享(继承)父模块的pom(公共pom)依赖        ,子模块开发特定功能在特定添加pom依赖即可

主模块pom依赖:

<groupId>com.lwt</groupId> <artifactId>lwtBlog</artifactId> <packaging>pom</packaging> <version>0.0.1-SNAPSHOT</version> <!-- 管理子模块--> <modules> <module>lwt-framework</module> <module>lwt-admin</module> <module>lwt-blog</module> </modules>

其他三个子模块继承父模块:

<parent> <artifactId>lwtBlog</artifactId> <groupId>com.lwt</groupId> <version>0.0.1-SNAPSHOT</version> </parent>

功能业务逻辑总结

热门文章列表

进入首页后                  ,热门文章一栏展示热门文章:

要求:

文章必须是正常状态的                           ,不能为草稿 不能是已经删除的文章 展示浏览量前10的文章 用户点击后可以跳转到相应的文章进行浏览

功能逻辑总结(service层):

调用mapper层查询数据库        ,条件如下:

文章正常状态 文章未删除 我们要浏览量前10——根据浏览量进行降序排序

自此我们就得到了满足条件的所有文章         ,但我们只要前十条——分页查询拿到前十条数据

封装成VO对象响应给前端(Bean拷贝         、用于操作集合的stream流等)

分类列表

需求:

用户查看分类信息时                           ,展示存在的分类

注意分类的名称有文章信息确定                 ,必须先通过文章表拿到对应的分类id才能通过这些id去分表表查询获取对应的分类名称!

功能逻辑总结(service层):

先去查询文章表         ,获取到所有文章的分类id

分类id必须是正常状态文章对应的分类id 拿到分类id集合后对其进行去重(stream流操作)

然后拿着这些分类ids去查询分类表                           ,拿到对应的分类集合

要求必须是正常状态的分类信息(stream流filter操作)

封装为VO对象响应给前端

分页文章查询

需求:在首页或者点击相关的分类后                 ,展示文章(相当于后台管理系统的数据显示)

由于都是文章查询然后显示,因此我们可以统一写在一个功能接口下!

文章会有很多不可能完全展示                           ,因此分页查询是必须的                          ,又因为我们统一写的一个接口,当你点击分类名称后要展示该分类下的文章                  ,为此函数参数可以带有个分类id                          ,在分页查询时有则加入条件        ,无则不加即可        。

要求:

只能展示正式发布的文章 置顶的文章优先展示

功能逻辑总结(service层):

调用mapper查询数据库 根据前端请求的参数                  ,有分类id则加入条件 文章为正常状态的文章 对应isTop字段进行降序排序(优先展示置顶文章) 分页查询                           ,拿到文章信息集合 由于展示要有该文章对应的分类名称        ,而这个文章集合中只有分类id 在文章实体类加上分类名称字段         ,由于数据库表中没有该字段因此注解做标记 对文字集合进行操作                           ,通过分类id查询到对应的分类名称                 ,将其注入文章对象的成员属性 封装成VO对象响应给前端

文章详情

需求:

要求在文章列表点击阅读全文时能够跳转到文章详情页面         ,可以让用户阅读文章正文                  。

前端的请求会带有文章id过来                           ,通过文章id查询数据库                 ,拿到信息即可

功能逻辑总结(service层):

调用mapper通过id查询文章表,拿到该文章 文章详情也要展示分类名称                           ,因此还要通过分类id去拿到分类名称 封装成VO对象响应给前端

注意:

由于是get请求                          ,且请求的URL中带有参数,因此在controller中                  ,通过@PathVariable 是从一个url中拿到文章id给后台

@GetMapping("/{id}") public ResponseResult getArticleDetail(@PathVariable("id") Long id){ }

友链查询

需求:友链展示                          ,在友链页面要查询出所有的审核通过的友链                           。

功能逻辑总结(service层):

调用mapper去友链表查询友链 必须为审核通过的 封装成VO对象返回给前端

登录功能

SpringSecurity登录认证流程的实现!

登录流程:

功能逻辑总结(service层):

一         、登录

1                          、自定义登录接口(LoginImpl)

调用ProviderManager的方法进行认证 将我们传入的(初始带有用户名和密码)的Authentication对象与security自行去UserDetailsService 的实现类由load..ByName方法通过用户名从数据库查询数据封装得到一个UserDetails对象(包含用户的信息和相关权限等)        ,UserDetails对象通过PasswordEncoder(加密后比对)对比UserDetails和Authentication中的密码是否正确                  ,最终返回一个完整的Authentication对象 自定义UserDetailsService 在这个实现类中去查询数据库 认证通过后                           ,从完整的Authentication对象中拿到userId生成token 将用户信息存入redis 封装成VO对象响应给前端

二                  、校验

所有请求都先经过jwt认证过滤器!

定义Jwt认证过滤器链

​ 获取(请求头)token

​ 解析token获取userId

​ 从redis中获取用户信息

​ 存入上下文SecurityContextHolder(loginUser         、权限集合等)

​ 修改SecurityConfig        ,将这个过滤器加到security过滤器链的最前面!

核心:

自定义登录接口 实现UserDetail接口         ,用于从数据库查询用户信息                           ,返回UserDetail接口的实现类——LoginUser 生成token 存入redis

退出登录

既然你要退出登录                 ,说明你现在是一个登录的状态         ,我们通过token获取相关信息即可                           ,然后从redis中删除即可

由于函数并没有携带HttpRequest...除了从request对象获取token外                 ,我们可以从上下文中获取(因为我们之前是先经过Jwt认证过滤器的了)

从上下文获取token解析拿到userId 从redis中删除对应信息 响应前端
声明:本站所有文章,如无特殊说明或标注                           ,均为本站原创发布        。任何个人或组织                          ,在未征得本站同意时,禁止复制                          、盗用                  、采集、发布本站内容到任何网站                          、书籍等各类媒体平台         。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理                           。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
安全中心开机启动(安全中心启动后自动关闭)