博客系统
一、需求分析
1.使用用户故事的方法来梳理需求
用户可以进行注册,成为系统合法用户并保持登录状态
用户可以进行登录,成为登录状态
用户可以发表文章,为了发表文章
用户可以查看系统中已有的文章列表进行阅读
用户可以选择一篇具体的文章查看文章详细内容
二、库表设计
1.由于我们的系统主要围绕数据为中心构建,抽离出数据的设计也就是数据结构–实体
1.实体:用户 文章
2.围绕实体进行功能的边界约束
用户–用户名、密码(用户名用于登录,不允许重复,修改)
文章–标题、正文、发表时间、作者
2.使用E-R图进行分析+数据库得到表结构-建表语句
用户 发表 文章(1:n)
3.使用的sql语句
发表文章
insert into articles (user_id, title, content, published_at) values (?, ?, ?, ?);
从文章、用户表中查找信息按照发表时间降序
select users.id author_id,users.username author_username,articles.id,title published_at from articles join users on articles.user_id = users.id order by published_at desc;
根据文章ID查找文章标题和正文
select title, content from articles where id = ?;
用户注册
insert into users (username, password) values (?, ?);
判断用户是否登录
select id from users where username = ? and password = ?;
二、URL设计
-
根据用户故事,设计资源(方法+URL)和资源之间的跳转关系
动态资源 /GET --需要根据用户是否登录进行不同的响应用户可以进行注册,成为系统合法用户并保持登录状态
静态资源GET /register.html 返回form表单供用户填写
动态资源 POST /register 接受用户的输入,进行注册动作用户可以进行登录,成为登录状态
静态资源 GET /login.html 返回form表单供用户填写
动态资源 POST /login 接受用户的输入,进行注册登录动作用户可以发表文章,为了发表文章
动态资源 GET /publish.html 返回form表单,供用户填写(登录状态)
动态资源 POST /publish 接受用户的输入,进行文章的录入(登录状态)用户可以查看系统中已有的文章列表进行阅读(ajax访问后台提供API的形式 )
动态资源 GET /list.html 发起AJAX请求,从服务端返回文章列表的数据(JSON) 格式, 通过js把数据动态更新到页面上动态资源 GET /api/article-list.json 给出文章列表的API格式(JSON格式)
用户可以选择一篇具体的文章查看文章详细内容
动态资源 GET /article?id=文章id 返回文章id对应的文章详细内容—详情页
三、编码实现
1.项目技术:Servlet Mysql JDBC
2.实现了一个主页面,如果用户未进行注册/登录用户,可点击跳转至注册/登录页面,注册完成后自动跳转至个人主页面,实现发表文章、查 看文章详情功能
3.围绕主页面
如果用户已登录 主页面显示已登录用户名以及发表文章按钮,上传文件功能,发表的文章标题列表–动态展示用户已经发表的内容(按发表时间排序)如果用户未登录 主页面显示注册、登录链接、所有文章列表 --点击链接即可实现注册/登录功能(这里已注册用户不需实现再次登录)、系统中显示已有的文章列表、点击文章标题选择一篇具体的文 章查看文章详细内容
4.有用户点击按钮发起ajax请求,通过get方法,找到/api/article-list.json资源,当浏览器加载完成后调用一次onload方法,方法中的AJA X请求完成后,只关心HTTP响应码为200的,将结果按照json格式解析,把解析后的结果放入我们的HTML页面中。
四、测试
1.测试点分析:2.自动化测试:
通过自动化测试工具selenium来进行unittest界面测试,测试在不同浏览器中使用情况
使用webdriver来驱动浏览器执行脚本,编写各个功能的脚本
3.bug记录
用户名、密码、输入框内容以及长度无限制
登录/注册无错误提示
没有删除博客内容功能
标题列表中标题字数无限制
文章详情无法分辨发表用户
无忘记密码后找回密码功能
无密码修改功能
没有发表文章次数限制
一个用户可以多次注册
注册用户登录时无验证