个人博客系统的设计与实现


前言

主要任务:
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

  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值