目录
1. 项目实现功能
- 用户注册、登录
- 资讯发布、资讯排序、咨询分类
- 图片上传及管理
- 资讯首页分页展示
- 用户评论、用户点赞、用户点踩
- 邮件通知
- 站内信通知
2. 项目整体架构
2.1 架构及内容
- 项目是B/S(Browser/Server,浏览器/服务器架构),使用SpringBoot
- 数据库:Mysql
- 持久化框架:Mybatis
- 缓存:Redis
- 模版: velocity
- 项目构建:maven
- Controller:解析web请求,调用相应的Service方法处理,并返回ModelAndView或者Json格式结果;
- Service:业务层,包含相应的业务逻辑,调用DAO层相应的方法来操纵数据库;
- DAO(data access object):数据处理层,通过Mybatis框架,处理Mysql中相应的数据操作;
- model:项目中的实体类:News、User、Message、Comment、LoginTicket(起token的作用,注册登录的用户会发一个ticket,ticket过期/失效后,重新登录后,会重新发送一个ticket)、HostHolder(登录用户且ticket有效时,绑定一个hostHolder,将该请求与对应的user绑定,当该请求响应返回ModelAndView时,将user的信息添加到ModelAndView中)
- util:工具类。JedisAdapter:封装了redis一些操作(list、set相关的操作);RedisKeyUtil:返回redis中对应的key(如:like的key、dislike的key);MailSender:封装邮件相关的操作;ToutiaoUtil:封装了一些基本的操作(如:json的操作、文件加密等操作)
- interceptor:拦截器,拦截所有请求,判断用户登录状态,如果已登录且ticket未失效,则绑定hostholder;拦截用户消息列表页、详情页的请求(/msg/*),如果未登录,则重定向到提示登录的页面;
- configuration:配置类,实现了WebMvcConfigurer接口,添加拦截器;
- async:异步操作的包;
2.2 功能:
- 登录、注册、登出;
- 资讯首页:
- 每页展示20条资讯,分页展示;
- 每条资讯显示数据:like数量(用户赞的状态)、图片、标题、链接、评论数、发布者信息(头像、姓名)
-
- 资讯详情页:
- 资讯的详情数据:like数量(用户赞的状态)、图片、标题、链接、评论数、发布者信息(头像、姓名)、评论详情;
- 可以评论该资讯;
-
- 站内信列表页
- 用户发布的资讯收到的相关信息(赞、踩、评论)
- 显示未读信息的数量
-
- 站内信详情页
- 显示具体的站内信
-
数据库中表:
- user
- news
- comment
- message
- login_ticket
2.3 业务逻辑
2.3.1 注册、登录、登出
统一的数据格式:{cod