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

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

时间2025-07-29 10:36:16分类IT科技浏览6335
导读:视频地址: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
车道检测是什么意思(计算机视觉——车道线(路沿)检测) linux java配置环境变量步骤(Linux系统中怎么设置java环境变量?)