项目实战
文章平均质量分 81
xqxls1
有花有酒春常在,无烛无灯夜自眠
展开
-
博客项目学习笔记二十六:增量数据同步到ES
博客项目目录: 请戳这里准备需求:用户登录后,发表新文章或者编辑文章,ES会创建或更新对应的文章索引,如果用户删除文章,ES也会删除对应的文章索引。基本思路:可以考虑使用rabbitmq来实现,首先配置rabbitmq,将队列和交换机绑定起来。然后在程序中建立监听者,当用户发表或编辑文章时(删除文章时类似),就会收到新建或更新文章索引的消息,然后对应的消费者根据消息,进行对应的处理。1.添加依赖包,修改yml配置RabbitMq相关依赖用于整合RabbitMq,项目启动时,需要事先安装Ra原创 2021-07-31 12:58:29 · 384 阅读 · 0 评论 -
博客项目学习笔记二十五:搜索引擎开发
博客项目目录: 请戳这里准备需求:用户登录后,点开搜索框,输入搜索内容,回车之后,就会跳转到对应的搜索页面基本思路:首先将所有的文章信息查询出来,同步到elasticsearch中,然后通过es进行搜索,得到对应的文档,之后转化成MyBatis的page信息,显示在前端页面1.添加依赖包,修改yml配置es相关依赖用于整合elasticsearch,项目启动时,需要事先安装es,并开启es服务modelmapper用于将MyBatis查询到的记录转化为es的Docment原创 2021-07-21 00:15:15 · 932 阅读 · 6 评论 -
博客项目学习笔记二十四:评论文章,消息即时通知
博客项目目录: 请戳这里准备需求:用户登录后,进入文章详情页,输入评论,点击提交回复,即可评论帖子,同时即时通知文章的作者,如果有@其他用户,还会即时通知被@的人基本思路:首先完成评论功能,然后通过websocket建立一个通道,进行点对点传输,利用STOMP协议传输基于代理的消息,stomp客户端会订阅与当前账户绑定的通道,只要当前账户有新的未读消息,客户端就会将消息推送给当前用户1.添加Controller层评论帖子首先进行特殊情况判断,比如id对应的文章是否存在,评论内容是否原创 2021-07-01 01:19:54 · 524 阅读 · 2 评论 -
博客项目学习笔记二十三:删除帖子,设置超级管理员
博客项目目录: 请戳这里准备需求:用户登录后,进入自己发表的文章,点击删除,即可删除帖子,除此之外,设置一个超级管理员,管理员除了能删除帖子,还有置顶和加精的权限1.修改detail.ftl #--发布者删除--> <#if post.userId == profile.id> <span class="layui-btn layui-btn-xs jie-admin" type="del">删除</span> </原创 2021-06-24 22:18:21 · 488 阅读 · 0 评论 -
博客项目学习笔记二十二:发表博客,全局异常处理
博客项目目录: 请戳这里准备需求:用户登录后,点击发表新帖,会进入如下界面,选择专栏,输入标题和内容,即可发表博客,并且后台post表会新增一条记录当出现异常时,会跳转到统一的错误界面,并输出异常信息1.添加edit.ftl将\fly-3.0\html\jie下的add.html添加到post包下,并且重命名为edit.ftl,提取出container部分,套在模板里面,保留“jie”的js2.PostController添加edit方法 @GetMapping("/post/edit原创 2021-06-21 12:47:46 · 142 阅读 · 1 评论 -
博客项目学习笔记二十一:收藏帖子
博客项目目录: 请戳这里准备需求:用户登录后,点击帖子,进入详情页。点击收藏,按钮会变为取消收藏,表示帖子已被收藏,点击取消收藏,按钮又会变回收藏,表示帖子已从收藏表移除。1.在category.ftl和detail.ftl添加对应js <script> layui.cache.page = 'jie'; </script>这个js会触发res包下的jie.js对应js代码://异步渲染 var asyncRender = function(原创 2021-06-19 19:39:32 · 224 阅读 · 0 评论 -
博客项目学习笔记二十:我的消息(删除消息以及未读消息提示)
博客项目目录: 请戳这里准备需求:用户登录后,如果有未读消息,会在右上角提示,进入我的消息页面,点击删除,可删除对应消息。删除消息1.在controller层添加对应方法传入一个消息id和一个all标记变量(默认为false),当id为当前id,并且用户为当前账户时,如果all为false,删除当前消息;如果为true,删除全部消息。 //删除消息 @ResponseBody @PostMapping("/message/remove/") public Result原创 2021-06-15 11:04:45 · 347 阅读 · 0 评论 -
博客项目学习笔记十九:我的消息
博客项目目录: 请戳这里准备需求:用户登录后,进入我的消息页面,显示如下消息信息,分为系统消息,评论文章的消息,评论评论的消息。1.在controller层添加对应方法根据当前账户id,判断是否为to_user_id,如果相等,则返回查到的消息,并将消息页面分页。 //我的消息 @GetMapping("/user/mess") public String mess() { IPage<UserMessageVo> page = messageSe原创 2021-06-13 18:27:17 · 191 阅读 · 2 评论 -
博客项目学习笔记十八:用户中心(我收藏的帖子)
博客项目目录: 请戳这里准备需求:用户登录后,进入用户中心页面,显示如下信息,当点击“加载更多”,会把当前页的下一页加载出来。1.在controller层添加对应方法根据当前账户id,在收藏表进行查询,得到收藏文章的id,再根据这些文章id从文章表取出对应的文章。 //我收藏的帖子 @ResponseBody @GetMapping("/user/collection") public Result collection() { IPage page =原创 2021-06-03 11:20:26 · 239 阅读 · 0 评论 -
博客项目学习笔记十七:用户中心(我发布的帖子)
博客项目目录: 请戳这里准备需求:用户登录后,进入用户中心页面,显示如下信息,当点击“加载更多”,会把当前页的下一页加载出来。1.引入index.ftl与mess.ftl从fly-3.0\html\user目录下,将index.html和message.ftl拷贝到项目user目录下重命名为index.ftl和mess.ftl2.将layout模板填充到index.ftl和mess.ftl3.提取左边侧边栏到common.ftl设置一个level标签,当level为0时,“我的主原创 2021-06-01 15:15:53 · 221 阅读 · 0 评论 -
博客项目学习笔记十六:基本设置(密码修改)
博客项目目录: 请戳这里准备需求:用户登录后,鼠标悬停在用户部分,点击下拉菜单的基本设置,跳转到对应的页面,填写相应信息,可以修改密码。1.在controller层添加对应方法主要验证两个地方:1.输入的密码(nowpass)和用户的密码是否一致2.两次输入的新密码(pass和repass)是否一致验证完之后,用输入的新密码替换掉原来的密码,并跟新用户信息 //基本设置(密码修改) @ResponseBody @PostMapping("/user/repass")原创 2021-05-16 22:23:30 · 283 阅读 · 0 评论 -
博客项目学习笔记十五:基本设置(头像上传)
博客项目目录: 请戳这里准备需求:用户登录后,鼠标悬停在用户部分,点击下拉菜单的基本设置,跳转到对应的页面,点击上传头像,可以上传本地硬盘的图片,并替换掉原来的头像。1.修改layout.ftl首先注释掉layout.ftl部分代码,否则点击上传头像会没有反应,因为res/mods/user.js没有加载进来2.修改set.ftl将头像部分显示为后台的用户头像<div class="layui-form layui-form-pane layui-tab-item">原创 2021-05-16 22:06:27 · 354 阅读 · 0 评论 -
博客项目学习笔记十四:基本设置(我的资料)
博客项目目录: 请戳这里准备需求:用户登录后,鼠标悬停在用户部分,点击下拉菜单的基本设置,跳转到对应的页面,展示邮箱、昵称、签名等,并可以修改相关设置。1.引入set.ftl将fly-3.0/html/user/set.html引入到user包,重命名为set.ftl2.在controller层添加对应方法代码@Controllerpublic class UserController extends BaseController{ @GetMapping("/user/原创 2021-05-13 16:22:38 · 203 阅读 · 1 评论 -
博客项目学习笔记十三:用户主页
博客项目目录: 请戳这里准备需求:用户登录后,鼠标悬停在用户部分,点击下拉菜单的我的主页,跳转到对应的页面,展示用户基本信息,以及最近的提问,最近的回答(等评论功能完成后再考虑)。1.引入home.ftl将fly-3.0/html/user/home.html引入到user包(新建一个),重命名为home.ftl2.新建UserController代码@Controllerpublic class UserController extends BaseController{原创 2021-05-11 18:02:34 · 235 阅读 · 1 评论 -
博客项目学习笔记十二:登录注册功能(登录)
博客项目目录: 请戳这里准备需求:实现用户登录功能,登录之后,跳转到首页,并且页面信息由游客状态变为用户状态1.引入shiro依赖包<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version></dependen原创 2021-05-06 21:40:04 · 548 阅读 · 2 评论 -
博客项目学习笔记十一:登录注册功能(注册)
博客项目目录: 请戳这里准备需求:实现用户注册功能,将用户注册的信息存入数据库,并且显示成功页面,注册之后跳转到登录页1.新建auth目录,引入login.ftl与reg.ftl将/fly-3.0/html/user目录下的login.html与reg.html引入到auth,修改后缀名为ftl保留页面的container部分与带user信息的script,引入layout模板,自定义页面标题修改header.ftl登录、注册按钮的链接,以及登录页、注册页对应的按钮链接登录页:注册页原创 2021-05-02 18:54:15 · 618 阅读 · 3 评论 -
博客项目学习笔记十:缓存实现文章阅读量
博客项目目录: 请戳这里准备需求:进入文章详情页之后,阅读量加1,并且通过缓存实现,定时将缓存中的阅读量同步到数据库分析:首先查看缓存里有没有文章阅读信息,如果有,直接缓存加1;如果没有,则数据库里对应数据加1,然后同步到缓存。最后设置一个定时任务,每分钟从缓存将阅读量同步到数据库。1.PostController设置文章阅读量2.PostService定义相应的接口public interface PostService extends IService<Post> {原创 2021-04-26 19:03:08 · 523 阅读 · 0 评论 -
博客项目学习笔记九:侧边栏本周热议
博客项目目录: 请戳这里准备原来的侧边栏:需求:将实际的本周热议文章填充到模板里分析:可以通过redis的有序集合来做,redis的SortedSet有三个方法ZADD、ZUNIONSTORE和ZREVRANGE,我们将每一天看作一个key,每篇文章看作集合成员,文章的评论数看作分数,那么可以先将近7天的文章以及评论数添加(ZADD)到每一天的key,然后再将这7天的key通过ZUNIONSTORE方法进行合并,合并后的key命名为周排行,最后对周排行的所有文章进行降序排列(ZREVRANGE)原创 2021-04-23 13:08:54 · 236 阅读 · 0 评论 -
博客项目学习笔记八:文章详情页评论列表展示
博客项目目录: 请戳这里准备原来的文章评论:需要覆盖原来的评论模板内容,如果评论达到一定数量,进行分页展示思路:由于评论内容包括用户信息和评论信息,所以可以联合评论表和用户表进行查询1.在control层定义查询方法根据分页,文章id,用户id,展示顺序(按发表时间降序)等条件进行查询,并将查询结果存放到results,注入到前端,命名为commentPageDatapublic String detail(@PathVariable(name = "id") Long id) {原创 2021-04-21 22:35:33 · 410 阅读 · 0 评论 -
博客项目学习笔记七:首页与文章详情页置顶和加精
博客项目目录: 请戳这里准备将置顶和加精展示在首页和文章详情页,红框标记处应有置顶和加精,并与数据库里的数据是一致的1.修改detail.ftl,在对应位置添加如下逻辑level为1表示置顶,为0表示不置顶;recommend为1表示加精,为0表示不加精<#if post.level gt 0><span class="layui-badge layui-bg-black">置顶</span></#if><#if post.recomm原创 2021-04-21 21:47:07 · 172 阅读 · 0 评论 -
博客项目学习笔记
目录:博客项目学习笔记一:springboot脚手架搭建,首页初始化博客项目学习笔记二:springboot集成MyBatisPlus博客项目学习笔记三:基于MyBatisPlus实现分页功能博客项目学习笔记四:填充分页数据,并展示在前端博客项目学习笔记五:自定义时间模板,置顶内容展示博客项目学习笔记六:文章详情页展示项目说明:这是我在学习过程中做的一个博客项目,博客功能主要包括登录、注册,侧边栏本周热议,用户中心、我的消息,发表博客、评论以及消息即时通知,搜索引擎开发,网络群聊。技术原创 2021-04-21 21:05:55 · 408 阅读 · 0 评论 -
博客项目学习笔记六:文章详情页展示
文章详情页展示原来的详情页:修改之后,将数据库里真实的信息展示在页面1.根据文章id查询文章的详细信息还是通过wrapper设置查询条件,当地址栏id为文章id时,即查询到具体的文章信息,如果文章被删除了,则断言“文章已被删除”。然后将查询到的某一篇文章注入到前端。@GetMapping("/post/{id:\\d*}") public String detail(@PathVariable(name = "id") Long id) { //查询文章详情原创 2021-04-20 23:01:58 · 589 阅读 · 0 评论 -
博客项目学习笔记五:自定义时间模板,置顶内容展示
自定义时间模板问题:我们需要把红框标记的时间,转换成“多少秒前”、“多少小时前”、“几个月前”等分析:可以继承DirectiveHandler的BaseMethod,自定义时间模板,然后通过FreeMarker将方法注入到前端页面。1.引入maven依赖<!-- commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId>原创 2021-04-20 17:46:49 · 160 阅读 · 0 评论 -
博客项目学习笔记四:填充分页数据,并展示在前端
填充分页数据问题:我们需要把后端查询到的分页数据,填充到类似红框标记的每一个记录里分析:可以利用Freemarker将后端查询到的数据传到模板,然后依次填充,前端js的逻辑参考www.layui.com/doc/的分页部分1.修改index.ftl找到红框标记部分对应的前端样式,然后把实际查询到的值传进去,注意表示时间的内容,要转换格式<ul class="fly-list"> <#list pageData.records as post>原创 2021-04-18 15:32:54 · 279 阅读 · 0 评论 -
博客项目学习笔记三:基于MyBatisPlus实现分页功能
实现分页功能需求:我们需要把类似红框标记的文章,展示在首页,并且当文章数量大于一定数目时,进行分页展示简单分析:每一篇文章包含了用户头像、用户id,用户名称,分类信息,文章标题,发表时间等等,这些信息分布在用户表、博客表和分类表里面,所以我们只需要联合三张表按一定条件进行查询,然后整合分页,就可以实现目标需求。1.引入分页插件在配置类添加获取PaginationInterceptor类方法,并且加上事务相关注解@Configuration@EnableTransactionManagement原创 2021-04-16 00:12:30 · 569 阅读 · 0 评论 -
博客项目学习笔记二:springboot集成MyBatisPlus
集成MyBatisPlus依赖包:mybatis-plus-boot-startermybatis-plus-generatormp6spy其中mybatis-plus-boot-starter是mybatis-plus的依赖集合,mybatis-plus-generator是代码生成器,mp6spy是sql分析器,pom文件添加如下:1.设置yml配置信息#Configspring: datasource: driver-class-name: com.mysql.cj.原创 2021-04-15 01:41:59 · 225 阅读 · 0 评论 -
博客项目学习笔记一:springboot脚手架搭建,首页初始化
项目基本架构搭建开发环境:idea2018jdk1.8maven3.6.1mysql5.71.新建springboot项目项目所需依赖如下图:其中Spring Boot DevTools是开发工具,Lombok用于简化get和set,以及eqauls方法书写,Spring Web是web相关依赖,Apache Freemarker是前端模板引擎,Mysql是数据库,Redis用于缓存前端模板导入:模板资源下载地址:https://github.com/xqxls/layui首先原创 2021-04-14 01:42:26 · 222 阅读 · 0 评论