牛客论坛
- JDK-1.8
- apache-maven-3.9.5
- SpringBoot 2.7.17
- MySQL 8.0.29
使用spring-boot-starter-mail完成发送邮件功能,邮箱需要开启SMTP服务,并配置邮箱账号和登录密码。使用JavaMailSender实现邮件发送功能。
在使用邮箱发送激活文件时,由于数据库和激活邮箱的配置参数在application.properties配置文件里,不安全。因此,我把配置参数写在另外的文件中,此文件不受git管理。最终实现了重要信息屏蔽。
采用了Kaptcha包,来随机生成验证码
开发登录功能时,使用ticket确定登录的用户,数据库维护一张登录用户表,记录用户的登录状态。并且ticket以cookie的形式传给浏览器,最后退出登录也是根据ticket判断退出的用户。
在登录成功后,服务器会将ticket装入cookie一并发给浏览器,并使浏览器重新请求/index网页,此时请求的cookie会带上ticket,因此拦截器会判断cookie中是否包含ticket,展示不同的页面头部。
通过SpringMVC提供的MultipartFile接口,可以实现文件上传功能。
修改密码功能需要输入三个值,原密码,新密码,确认新密码 原密码在service层判空和正确性校验 新密码也在service层判空以及是否和原密码一样 确认新密码在前端检验与新密码是否一致,通过js判断 最终在数据库中完成修改
由于有些页面需要登录才能访问,因此自定义注解LoginRequired,在controller层对于有些访问路径使用@LoginRequired注解,在拦截器中判断cookie中是否包含ticket,如果包含则放行,否则跳转到登录页面。
主要将敏感词构建成前缀数,来查找句子中的敏感词,并以其他字符代替。
采用ajax异步请求发布帖子,在点击提交按钮后,将title和content用$.post()方法异步请求到服务器,服务器先判断是否有用户登录,再把帖子存到数据库中,返回json数据给前端。 前端用js处理返回的数据,如果成功,则弹出发布成功框,两秒后刷新页面,否则弹出错误信息。
简单用两次查询分别查询帖子内容和帖子作者,可以采用联合查询,前端将查询的数据作出展示
根据评论的类型确定是属于对帖子的评论还是对回复的评论,查询出来并在前端显示
在登录后用户添加评论时,前端将评论内容,评论类型,评论的帖子id,回复的评论id,以及用户id传给服务器,服务器把评论存到数据库中,并刷新前端。
在登录后,用户可以查看自己的私信列表,并点击私信可以查看私信内容。 通过简单在数据库中维护一张私信表,可以实现私信功能。通过一系列查询将结果返回给前端
用户登陆后,可以在消息界面发送私信也可以在私信详情界面发送私信,通过$.post()方法异步请求到服务器,服务器把私信存到数据库中,返回json数据给前端。 前端用js处理返回的数据,如果成功,则弹出发送成功框,否则弹出错误信息。两秒后刷新页面。当用户收到消息后,点开私信详情后,消息自动设置为已读。
我们使用Spring MVC提供的@ControllerAdvice注解,在controller层使用@ExceptionHandler注解,在拦截器中捕获异常,并返回json数据给前端。
使用AOP记录日志,在controller层使用@Log注解,在拦截器中记录日志。 采用Spring AOP实现记录用户调用服务的日志。通过@Aspect注解,以及@Pointcut注解。
本项目仅作为学习使用