项目总结
第一章 开发社区核心功能
开发社区首页?

社区首页分为最新最热,数据库利用动态sql,0和1代表最新最热排序规则,利用@Requestparam注解默认访问最新,手动封装分页信息类,设置分页的总条数,设置分页的访问路径,调用业务层实现首页功能,list封装map最后装到model页面显示。
第二章 开发社区登录模块
发送邮箱?

导入邮箱依赖,配置好邮箱参数,编写邮箱工具类,使用方法设置参数,发送人,发送主题,发送内容,使用TemplateEngine(模板引擎)发送HTML邮件,使用JavaMailSender发送邮箱。
注册实现?

输入用户和密码邮箱,判断用户是否为空,然后判断用户名用户密码邮箱是否为空,查询数据库账号是否存在,查询邮箱是否被注册。之后保存在数据库,激活邮箱。
激活邮箱步骤:
实列化Context
设置激活的邮箱,设置激活的url连接,后面点击连接修改状态激活
templateEngine(模板引擎)激活模板
最后调用JavaMailSender发送邮箱
生成验证码?

导入Kaptcha依赖, 编写 Kaptcha 配置类 。编写验证码controller层,注入Kaptcha 配置类,生成验证码,生成图片,存入cookie中,存入redis中,最后输出给浏览器。
登录退出功能?

登录:
检查验证码是否正确,调用业务层判断输入账号密码是否为空,判断用户是否存在,判断状态是否激活,验证密码是否正确。然后生成登录凭证存在redis中(key是uuid生成的字符串)。返回到controller层中获取凭证存在cookie中。
退出:
利用@CookieValue注解从cookie获取凭证,调用业务层把reids中的状态改为1,为退出功能,记得重新存入redis中。
显示登录信息?

定义拦截器实现HandlerInterceptor,在Controller之前执行之前获取凭证,通过凭证获查看用户是否有效,有效查询到用户放在Threadload中
,在Controller之后执行获取用户,在TemplateEngine之后清理用户信息。
配置类继承WebMvcConfigurer全部放行静态资源。
注意:第一次登录时候,获取的凭证不是有效的,登录成功生成凭证,拦截器在此获取持有用户,拦截器拦截了两次。
账号设置?

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZCboCIcz-1662386083044)(G:\typora笔记\每日学习\2022-8\images\image-20220831200927249.png)]](https://i-blog.csdnimg.cn/blog_migrate/7aef0640619eb8a5c84d165c04e7b9d6.png)
本地上传:
请求必须是post,表单enctype="multipart/form-data",通过MultipartFile处理上传。
上传头像:MultipartFile获取源文件,截取后缀,通过uuid拼接后缀,File确定文件存放路径,MultipartFile调用transferTo(file)方法存储,最后拼接头像路径,存储在数据库中。
**获取头像:**通过路径获取头像名称,拼接路径,响应图片格式,io读写操作。
客户端上传到青牛云:
uuid生成文件名称,七牛云自带的StringMap类设置响应信息。Auth生成上传凭证。
调用业务层更新头像,路径采用异步方式。
检查登录状态?

只有登录时候才能访问的功能,采用元注解的方式标注在类中,标注的controller方法中,标注的类只有登录才有访问权限。
拦截器编写逻辑:
在请求之前利用反射获取类中的注解,有注解直接拦截,没有注解重定向到登录页面。配置类继承WebMvcConfigurer全部放行静态资源。
第三章 开发社区核心功能
过滤敏感词?

编写过滤敏感词类
异步请求?
发布帖子?

发布贴子使用异步请求,controller调用业务层需要过滤转意html,过滤敏感词。
帖子详情?

这里就查询一个帖子和用户显示

本文详细总结了一个仿牛客网的开发社区项目,涵盖了从社区核心功能开发、登录模块实现、社区功能优化、Redis、Kafka、Elasticsearch的运用,到Spring Security的权限控制。项目涉及内容包括社区首页、登录注册、发送邮件、验证码、权限控制、敏感词过滤、异步请求、发布帖子、评论管理、私信功能、点赞与关注、系统通知、搜索功能、权限管理和网站性能优化等多个方面。
最低0.47元/天 解锁文章
2442

被折叠的 条评论
为什么被折叠?



