注意:本项目为博主初学Web开发时所写,所使用的方法都比较笨,不符合主流开发方法。例如,包管理应该使用Maven进行管理而不是手动导入,对前端后端代码的架构也并不是很清晰。大家学习思想即可,可以不用浪费时间在将这个项目跑起来。目前主流的技术应当是Spring+SpringMVC+Mybatis的SSM框架,配合Shiro做权限控制,Redis做缓存,也可以学习SpringBoot开发微服务。由于本博主已经保研,较少接触开发,故此项目也不再进行维护。
项目分析
搭建完框架,我们就可以开始整个项目了。但在这之前,我们需要为整个项目设计好数据表以及完成需求分析。(当然这一步我是一边开发一边想的…小项目可以这样,大项目的话,最好是先确定好各种需求以及数据表的设计,防止在开发过程中去大规模的更改数据表)。
由于这个项目是一个博客系统,那么基本的登录,注册,文章发布这些都是要的。注册的话,就需要有一个表来储存用户信息,用户的账号密码,生日,省市区,头像(通过储存相对地址来存储,而不是整张头像都放入数据库中)等等。除此之外,我们还要让用户可以自定义标签,根据标签对文章进行分类和显示。那标签就要有对应的创建者。并且标签跟博客之间要有一张表进行关联。同时,每篇博客需要记录它的阅读量,创建日期,文章内容,标题,所属用户等数据。既然是博客,也少不了评论功能。评论的话用一张表就可以存储,需要记录它的时间,创建者,id和父id(用来判断该评论是一条回复还是一条根评论),内容等。那用户怎么到达其他用户的博客呢?这便是粉丝功能的作用。每个人可以关注其他用户以及看到自己被谁所关注,通过这里可以进入他们的博客主页进行浏览。
整个项目的功能基本上就这么多,虽然是个小项目,但也基本上功能完善了..之后我们可以把数据库表设计好之后通过Navicat 来导入。在创建数据库的时候,记得将默认的编码改为UTF-8,否则到时插入中文数据的时候会出现乱码或者显示问号。
数据库表设计
User表
记录用户id,账号和密码。
UserInfo表
记录用户信息。包括用户id,用户昵称,性别,生日,职业,邮箱,省市区id,自我介绍,用户头像,最近登录时间,主页访问量。
Place表
记录省市区。
Comment表
记录评论。包括id,父id,博客id,所属用户id,内容,日期,是否有回复。
Fans表
记录关注情况。包括id主键,userId,noticerid,date。(关系是userId关注noticerId,通过这个关系我们就可以得到粉丝列表和关注列表)
Label表
记录标签。包括标签id,标签名称,所属用户id
Blog表
记录博客信息。包括博客id,博客标题,内容,所属用户id,创建日期,访问量。
Blog_join_label表是blog和label的连接表,包括id主键,博客id和标签id。(记录博客对应哪个标签,一个博客可能有多个标签,表名是我随便起的…不知道叫什么好)
附创建代码
-- ----------------------------
-- Table structure for `blog`
-- ----------------------------
DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
`blog_id` int(11) NOT NULL AUTO_INCREMENT,
`blog_title` varchar(100) NOT NULL,
`blog_text` text NOT NULL,
`blog_visit` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`blog_date` date DEFAULT NULL,
`blog_pv` int(11) DEFAULT NULL,
PRIMARY KEY (`blog_id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `blog_join_label`
-- ----------------------------
DROP TABLE IF EXISTS `blog_join_label`;
CREATE TABLE `blog_join_label` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`blog_id` int(11) DEFAULT NULL,
`label_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
-- ----------------------------
-- ----------------------------
-- Table structure for `comment`
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`father_id` int(11) NOT NULL,
`blog_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`content` text,
`date` datetime DEFAULT NULL,
`have_reply` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `fans`
-- ----------------------------
DROP TABLE IF EXISTS `fans`;
CREATE TABLE `fans` (
`user_id` int(11) NOT NULL,
`noticer_id` int(11) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `label`
-- ----------------------------
DROP TABLE IF EXISTS `label`;
CREATE TABLE `label` (
`label_id` int(11) NOT NULL AUTO_INCREMENT,
`label_title` varchar(30) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`label_id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `place`
-- ----------------------------
DROP TABLE IF EXISTS `place`;
CREATE TABLE `place` (
`place_id` int(11) NOT NULL AUTO_INCREMENT,
`province` varchar(10) DEFAULT NULL,
`city` varchar(10) DEFAULT NULL,
`area` varchar(255) DEFAULT NULL,
PRIMARY KEY (`place_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_account` varchar(20) DEFAULT NULL,
`user_password` char(32) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `userinfo`
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`userinfo_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`user_name` varchar(20) DEFAULT NULL,
`user_sex` tinyint(1) DEFAULT NULL,
`user_birthday` date DEFAULT NULL,
`user_job` varchar(20) DEFAULT NULL,
`user_post` varchar(50) DEFAULT NULL,
`user_introduction` text,
`user_place` int(11) DEFAULT NULL,
`user_image` varchar(50) DEFAULT NULL,
`user_recent_login_time` datetime DEFAULT NULL,
`user_PV` int(11) DEFAULT NULL,
PRIMARY KEY (`userinfo_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;
----------------------------------------------------------------------------
本项目下载地址:
github:https://github.com/SCAUMankind/SSHBlogSystem