一、项目功能
该项目主要的功能有用户注册,登录,发表文章,查看文章,注销功能。用户登录后可进入首页,首页展示了用户相关信息,以及文章列表。此时可以进入文章详情页查看文章。登录后,还可以进入文章编辑页发表文章。
二、开发环境
开发工具: IDEA社区版2021.2.2,jdk1.8
数据库:MySQL Workbench 8.0 CE
三、所用技术
Servlet,JDBC,Thymeleaf模板技术,Maven+git进行项目管理,密码采用加盐法Hash保存
四、设计思路
1.登录/注册功能:
前端:用form表达进行提交相关信息,采用GET方法(静态资源)
·注册:用户名,昵称,头像地址,git地址,密码
·登录:用户名,密码
后端:验证资源,采用POST方法(动态资源)
从form表单中读取信息,建立User对象,调用对应的方法去访问数据库,如果能数据库中有,能取到,就返回User对象(登录要验证密码是否正确),否则返回null。
注册成功视为登录成功,User对象的话就保存在HttpSession中
null的话就重新登录/注册,响应体类型为text/html格式,直接通过a标签跳转。
2.首页/文章列表页:
需要经过用户认证后才可以使用。通过从数据库中读取数据,使用模板技术展现用户信息以及文章列表。
3.文章详情页:
需要经过用户认证后才可以使用。通过首页进行跳转,从数据库中读取数据生成文章对象,用模板技术展现用户信息以及正文内容。
4.文章发表页:
表单页(需要认证->动态,GET):只是认证用户是否登录,用模板,将左上角图片替换
保存博客(需要认证->动态,POST):验证用户是否登录,然后将文章保存在数据库中,并重定向到文章详情页。
5.注销:
将HttpSession中的当前用户删除,注销后重定向到登录页面。
五、数据库设计
建立表语句:
CREATE TABLE `users` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(60) NOT NULL,
`nickname` varchar(60) NOT NULL,
`password` varchar(60) NOT NULL,
`avatar` varchar(200) NOT NULL COMMENT '头像链接',
`git` varchar(200) DEFAULT NULL COMMENT 'gitee 或者 gitbub 地址',
PRIMARY KEY (`uid`),
UNIQUE KEY `username_UNIQUE` (`username`)
);
CREATE TABLE `articles` (
`aid` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`type` varchar(20) NOT NULL,
`content` text NOT NULL,
`published_at` date NOT NULL,
PRIMARY KEY (`aid`)
);
用户表中主要是用户的基本信息,当用户注册时,若用户名重复会让用户重新注册。
文章表中有对应的文章id,文章用户(uid),标题,类型,正文,发布时间。
六、项目展示
1.代码逻辑:
2.注册页面:
3.登录页面:
4.首页:
5.文章详情页:
6.文章发表页:
七、项目测试
关于该项目的测试:https://blog.csdn.net/weixin_43991724/article/details/122969317