(以模板Listener方式实现)
前端页面展示:
注册页面:
用户登录:
主页:
博客正文:
书写博客:
一、简单分析使用场景
简单分析一下:
- 哪些场景需要认证后才能使用
- 每个场景下各自有哪些资源
- 分析各个资源时 动态 / 静态
- 初步订下各资源路径
- 各个资源要支持哪个方法
1.首页/博客列表页 (需要认证,只展示当前登录用户列表)
1)入口页 …… 判断认证;从数据库中读取数据;=》只能动态POST
资源路径:/
2)样式页 =》 静态GET
3)图片资源 =》 静态GET
2.博客详情页 (需要认证)
3.登录/注册页面(用户管理场景)
1)表单资源 =》 静态GET
资源路径:/login.html /register.html
2)验证资源 =》 动态POST
资源路径:/do-login /do-register
4.文章发表页 (需要认证)
二、数据库建表
思考方式:
- 区分角色
- 根据不同角色,讲好不同的用户故事(不同的场景)
- 抽象出实体
- 根据实体 + 用户故事 + 需求,抽象出关系
- 针对关系,设计表
- 针对需求,找出各个表的字段,以及各个字段的约束
- 完成建表
- 尝试用SQL语句讲述用户故事
用户表 users:
- 主键 id(自增、int )
- 用户名 username(不能重复、varchar)
- 密码 password (varchar)
- 昵称 nickname (可以重复、varchar)
- 头像地址 avatar (varchar)
- Gitee / GitHub地址 git (varchar)
![](https://img-blog.csdnimg.cn/e530703ab40240eda4b95a20d43f2201.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAREVHdjU4Nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
文章表:
- 主键 aid (自增、int)
- 用户id uid(int)
- 文章标题 title(varchar)
- 文章分类 type(varchar)
- 文章正文内容 content(内容较长,使用text)
- 发表时间 publshed_at(date)
![](https://img-blog.csdnimg.cn/1f3507ff28cd46ffbecefb55227e9180.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAREVHdjU4Nw==,size_20,color_FFFFFF,t_70,g_se,x_16)
三、逻辑梳理
注册:
- 表单资源:需要用户填写 5 个内容,分别是 用户名、密码、昵称、头像地址和git地址;
- 注册过程(以下为流程图)
登录:
用户提交凭证 (用户名 + 密码)==》 认证凭证(通过数据库中数据) ==》 生成凭证标识给用户(保存session、cookie)
检查用户是否已经认证 ==》 判断凭证标识是否已经存在(检查 session 中是否有认证用户)
首页/博客列表页:
- 当前登录用户(要求用户必须登录)从 session 中获取
- 文章列表,按发表时间倒叙
- 发表过多少文章(文章总数)
- 发表过多少类文章(文章分类)
四、相关代码
整个代码已开源,上传至本人gitee上,下方为链接地址: