前言
主要任务:
1.完成前端页面
2.模板方式(掌握)
3.前后端分离方式
主要场景:
1.博客列表页
2.博客详情页
3.登录/注册页面(用户管理场景)(优先解决)
表单资源(静态 GET) 验证资源(动态 POST)
4.文章发表页
分析
1.哪些场景需要认证后才能使用
2.每个场景下各有哪些资源
3.分析各个资源是动态还是静态
4.初步定下各个资源的路径
5.各个资源支持哪个方法
建表
1.区分角色
2.根据不同角色,讲好不同的用户故事
3.抽象出实体
4.根据实体+用户故事+需求,抽象出关系(E-R图表示)
5.针对关系,设计表
6.针对需求,描述各个表的字段以及各个字段的约束
7.完成建表
8.用SQL讲述用户故事
注册逻辑
一、具体流程
1.注册
- 首先要读取用户提交的信息
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String nickname = req.getParameter("nickname");
String password = req.getParameter("password");
String avatar = req.getParameter("avatar");
String git = req.getParameter("git");
- 将信息保存到数据库
- 至少区分出 3 种情况
1) 注册成功 user != null
2) 由于用户名重复导致的注册失败 user == null
3) 由于系统操作导致的注册失败 以异常方式体现
DBUtil
package com.murongxue.blog.util;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DBUtil {
private static final DataSource dataSource;
static {
MysqlDataSource mysqlDataSource = new MysqlDataSource();
mysqlDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/blog_01_08?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai");
// 这个是连接 MySQL 的用户名、密码
mysqlDataSource.setUser("root");
mysqlDataSource.setPassword("123456");
dataSource = mysqlDataSource;
}
public static Connection connection() throws SQLException {
return dataSource.getConnection();
}
}
一些细节问题均体现在代码注释中
2.登录
用户提交凭证(用户名+密码)->认证凭证(通过DB中的数据)->生成凭证标识给用户(保存sesson、cookie)
检查用户是否已经认证->判断凭证标识是否存在(检查session中是否有认证用户)
注:
登录注册时密码不能明文显示
用加盐(salt)法hash
具体加密过程,不做过多解释
3.文章页面
- 获取当前登录用户
- 文章列表(按发表时间倒叙)DESC
- 发表过多少文章
- 发表过多少种类型文章
总结
大家可以通过访问此链接http://124.223.38.94:8787/register.html来访问我的博客系统,整体代码贴在下方,大家可以下载参考。
https://gitee.com/snow-snow-mu/projects?sort=&scope=&state=public