搭建一个论坛系统
前言
业务实现过程中主要的包和⽬录及主要功能:
• model 包:实体对象
• dao 包:数据库访问
• services 包:业务处理相关的接⼝与实现,所有业务都在Services中实现
• controller 包:提供URL映射,⽤来接收参数并做校验,调⽤Service中的业务代码,返回执⾏结
果
• src/main/resources/mapper ⽬录:Mybaits映射⽂件,配置数据库实体与类之间的映射关系
• src/main/resources/static ⽬录:前端资源
1.技术需求
• 后端使⽤ Spring 实现
• 数据库使⽤ MySQL
• 最终部署到 Linux 服务器上.
2.功能实现
• 注册,登录,退出
• 帖⼦列表, 发布帖⼦, 删除帖⼦, 回复帖⼦、点赞等功能.
• ⽀持个⼈主⻚的展示/编辑,修改密码.
• ⽀持帖⼦按版块分类.
• ⽀持站内私信
3.效果展示
3.1 注册页面
用户名为登录时的账户,昵称是页面展示出来的名字,用户名与昵称不能相同
实现逻辑:
1.用户输入注册信息
2.数据库根据服务器发送过来的用户名查询并返回查询结果
3.服务器判断用户是否已存在
4.用户不存在时新增用户
5.注册成功时,跳转到登录页面
用户密码存入数据库是通过加密过的密文:
- 1.原密码
- 2.生成盐值,由UUID.randomUUID()方法随机生成盐值
- 3.原密码进行MD5加密=密文1
- 4.密文1+盐值=密文2
- 5.对密文2进行MD5加密
3.2 登录页面
输入的密码通过加密后,与数据库中的密码密文比对
实现逻辑:
- 用户输入登录信息
- 数据库根据服务器发送过来的用户名查询并返回查询结果
- 数据校验:用户名存在,密码正确
- 登录成功时跳转到主页
3.3 退出登录
实现逻辑:
- ⽤户访问退出接⼝
- 服务器注销Session
- 返回成功或失败
- 如果返回成功浏览器跳转到相应⻚⾯
- 结束
3.4 主页
展示所有的帖子
实现逻辑:
对应版块中显⽰的帖⼦列表以发布时间降序排列
不传⼊版块Id返回所有帖⼦
- ⽤户点击某个版块或⾸⻚时,将版块Id做为参数向服务器发送请求
- 服务器接收请求,并获取版块Id,查询对应版块下的所有帖⼦
- 返回查询结果
3.5帖子详情页
访问他人的帖子可以实现点赞功能,点击作者名称可以查看作者的帖子列表,可以给作者发送私信
实现逻辑:
- ⽤户点击帖⼦,将帖⼦Id做为参数向服务器发送请求
- 服务器根据帖子id查询帖⼦信息
- 帖⼦访问次数加1
- 返回查询结果
3.6帖子编辑页
标题和内容不能为空值,
实现逻辑:
- ⽤户点击发新帖按钮,进⼊发帖⻚⾯
- 选择版块,填⼊标题、正⽂后提交服务器
- 服务器校验信息并写⼊数据库
- 更新⽤户发帖数与版块帖⼦数
- 返回结果
帖子修改编辑:
实现逻辑:
- 当发帖⼈为当前⽤户时,显⽰编辑接钮,⽤户点击编辑接钮,进⼊编辑⻚⾯
- 获取帖子信息,并在对应的位置显⽰在
- ⽤户修改帖⼦标题和内容
- 提交到服务器,服务器检验当前⽤户是否为发帖⼈,并更新数据库
- 返回更新结果
注意:帖子的状态和用户的状态(即有没有被禁言)
3.7个人中心页
进行个人信息修改以及修改密码
个人信息修改实现逻辑:
- ⽤户打开找修改个⼈信息⻚⾯
- 填⼊要修改的内容并提交服务器
- 服务器获取登录⽤户的Id,并根据提交的内容修改数据
- 返回成功或失败,如果成功返回更新后的个⼈信息
- 浏览器刷新个⼈信息
注意:及时刷新个人信息
用户密码修改实现逻辑:
7. ⽤户打开修改密码⻚⾯
8. 输⼊原密码、新密码、重复新密码并提交服务器
9. 服务器校验原密码是否正确
10. 原密码校验通过更新密码
11. 返回成功或失败
12. 修改成功后跳转到登录页面查询登录
3.8发送私信页
实现逻辑:
- 在⽬录⽤户详情界⾯,点击发送站内信接钮,进⼊编辑⻚⾯
- 编写站内信内容,点击发送按钮
- 提⽰发送结果
注意:不能给自己发送私信,接收用户必须存在,不能为禁言状态
3.9私信列表页
实现逻辑:
根据用户id查询所有私信
更新状态:
实现逻辑
- ⽤户点击站内信,显⽰详情⻚⾯
- 更新未读状态的站内信为已读
回复私信:
- ⽤户在站内信详情⻚⾯点击回复按钮,显⽰回复区
- 填写回复内容并提交到服务器
- ⽤户不能回复接收者不是⾃⼰的站内信
- 站内信状态置为已回复
用户在有未读私信时,有小红点提示用户有未读私信
3.10回复帖子页
实现逻辑:
- 帖⼦在正常状态下允许⽤户回复
- 填写回复内容,点击提交按钮后发送请求到服务器
- 服务器校验回复内容、帖⼦与⽤户状态(不能为禁言),通过后写⼊数据库
- 帖⼦回复数量加1
- 返回结果
帖⼦回复列表:
在帖⼦详情⻚显⽰当前帖⼦下的回复列表以发布时间降序排列
3.11用户帖子列表
在⽤户详情⻚显⽰当前⽤户发布的帖⼦列表以发布时间降序排列
实现逻辑:
- ⽤户访问⽤户详情⻚时发送请求到服务器
- 服务器按发帖时间降序排列返回帖⼦列表
3.12点赞帖子
点击点赞按钮,数据库点赞数量加一,页面点赞数加一
实现逻辑:
- 用户点击点赞按钮,给服务器发送请求
- 获取用户信息并校验信息
- 获取帖子信息,更新点赞数量
注意:用户状态不能为禁言,帖子必须存在且没有禁言
更新点赞数量
3.13删除帖子
用户只能删除自己的帖子,数据库中将帖子状态更新为删除状态,前端不再展示帖子,并更新相关帖子数
实现逻辑:
- ⽤户点击删除帖⼦按钮,并进⾏确定
- 服务器校验⽤户状态,帖⼦状态,当前⽤户是否为作者
- 更新⽤户发帖数与版块帖⼦数
- 返回结果