三月底刚学完SSM试着做了个简单的论坛,想分享一下,顺便整理一下自己的收获。
一、demo介绍
一个具有登录、注册功能,发帖、回帖功能的简易论坛。没有后台系统。
设计逻辑类似于贴吧,发帖时自动附带一个一楼。
二、使用的框架/库
前端:ajax,bootstrap以及简单的js.没有使用jsp
后端:SSM框架。
数据库:MySQL
三、成品展示
因为个人审美问题所以可能比较丑(捂脸),不过我们实现一下功能,外观什么的不重要……(个鬼)
四、建表分析
1.首先我们需要一个User表,varchar类型的username和password,并且由uid作为主键(自增长),可以根据个人需求加上性别、年龄、个人介绍、上次登录时间、上次登录IP等字段。
2.我们还需要一个Article表,aid作为主键,设置topic作为字段,还应该保存最后回复时间,以便按照最后回复时间排序帖子,使得最新帖子在最上面。还应该保存发帖人的uid用来显示发帖者的昵称。
3.一个Article应该对应很多楼层Floor,我们需要建立一个叫Floor的表,fid作为主键并且设置自增长属性,每个楼层应该有回复人的uid,以及这个楼层是哪个article里的楼层,因此还需要保存aid。
还可以根据个人需求加上is_top(是否置顶)等属性。
因为贴吧的逻辑是,假如最新一楼是3楼,3楼被删掉,再回复一条还是4楼,因此我们推断Article还应该储存总楼层数,每次发帖总楼层数+1,新楼层楼层标号的依据是总楼层数。因此再增加一个叫fnum的字段保存总楼层数。
4.单独建一个叫Context的表用来保存楼层的内容,原因是长文本会拖慢数据库的查询速度。Context表和Floor是一对一关系,保存fid来对应楼层,context字段保存内容即可。
五、表
以下是我们建好的表,因为当时想做一个跟贴吧差不多的论坛所以数据库名起名为tieba
1.整体结构
因为当时还想分不同的贴吧,所以建了一个叫tieba的表,每个article通过tid字段判断自己属于哪个贴吧然后加载,后来因为懒就没有做,但是逻辑还是很简单的,你勤快的话也可以做一做。
image表本来是用来存用户头像的,因为懒也没有做。
上面两个被黄线划掉的表可以不要。
2.article表:
tid用于判定article属于哪个贴吧,因为懒惰所以划掉。
3.context表
4.floor表
5.user表
实际上后续因为懒只需要uid username password这三个字段……
六、环境搭建
SSM环境搭建参照https://www.bilibili.com/video/BV1Sb411s7qa的p46-p54
IDEA2019.3版本从零搭建是正常的。
但是由于我们需要用ajax传递json进行前后端交互,因此pom.xml中还需要加上jackson依赖来解析json,如下
<!--json-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
以及记得从jQuery官网下载jQuery的js文件,对于ajax不太了解的小伙伴可以看看我写的ajax教程。
至此我们准备完成。