前言:
同时网站的一些酷炫前端不是自己写的,遥想暑假苦逼写前段的日子就无奈,自己会的很基础好看的效果出不来,所以
有的是用模版的,网站的信息填充也是网站抓取的。综之:侵删 :)逃
正文:
- 目录结构:
** **目录结构有些不是必需的,只是那时候年少无知,稀里糊涂的就这么写了 **
**
** **
评论功能:
模仿CSDN的评论结构如下:也就是通过父子关系,让不管一级还是二级的子评论都挂在父评论之下,
其中1,2都是对文章的评论,3回复2,4回复3. 等级越高,向右靠5px的距离。
我的想法是,利用数据结构,将对文章的评论(一级评论)放在一张表中,其他的都放在另一个表中,然后通flag
进行标记,关联互相的父子关系。
数据库表设置如下:
**
**
** **
代表存放一级评论 comment表:
**ID:**回复的ID号
**sport_id: **被回复的文章ID号
user_id: 评论者
**
**
** **
代表存放二级评论 Reply表:(除了直接回复文章的都是)
**
**
** ID:**表示二级评论序号
** sport_id:**表示文章ID号
** type:**是reply类型,代表是回复“子回复(也就是等级肯定 >= 2)”的,如果是comment 代表是回复一级回复
(直接回复文章的)
** targetCRId:**代表其“父评论”是在reply表中还是comment表中
** user_id: **回复者
** target_id:**被回复者(给被回复人发消息提醒,你被回复了)
**
**
这样设置表,然后通过文章id号,得到所有的评论,然后通过数据结构将评论进行父子关系的关联结构:假设将取出的一级评论放入一个栈中,将二级以上的评论放入list2,同时设置一个栈Stack和一个存放最后顺序排序成功的list3
循环栈,只要栈不空,取出栈顶元素放入list3,将取出的栈顶元素作为父节点,去list2中找子评论(根据表二中的type和targetCDId), 只要找到一个子评论过,便将这个子评论加入list3,同时将这个自评论加入栈顶,continue循环,继续取出栈顶元素,继续以上操作。当stack全都pop之后,在jsp页面只要循环展示list3就可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 1 while(!S.isEmpty()){
2 CRList template = S.pop();
3 list3.add(template);
4 for(int i = 0; i<list2.size(); i++){
5 //如果是父子关系
6 if((template.getId() == list2.get(i).getTargetId())){
7 if((list2.get(i).getFlag() == 2 && template.getFlag() == 2)
8 || (list2.get(i).getFlag() - template.getFlag() == 1)){
9 if((template.getRank() + 50) >= 600){
10 list2.get(i).setRank(600); // 设置右靠的最大间距
11 }else{ // 设置向右靠的间距
12 list2.get(i).setRank(template.getRank() + 50);
13 }
14
15 S.push(list2.get(i));
16 }
17 }
18 }
19 }
20
-
源码或运行文件及数据库
-
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(2)
-
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站 (3)
-
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(4 )
-
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(5)
** **