APP下载

基于MVC模式的BBS论坛设计及实现

2016-11-02谢诗加

电脑知识与技术 2016年18期

谢诗加

摘要:该文介绍了基于MVC三层模式的BBS论坛设计,使用CSS样式设计页面布局,JavaScript页面动态响应,实现记录主题帖点击浏览次数、普通用户注册、登录、发帖、回复、积分统计、文本编辑等功能,以及管理员用户对帖子的删除、修改、置顶和加精的管理功能。

关键词:MVC;HTML;论坛;CSS

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)18-0088-03

1概述

信息时代的到来使得信息成为当今最重要的资源之一,Internet在信息的传播中扮演了极其重要的角色。BBS论坛已经成为信息发布的重要源地,也是信息传播和交换的重要枢纽。

本次BBS论坛整体基于MVC模式设计和开发,使用MyEclipse作为主要开发工具,使用DreamWeaver进行页面整体框架布局设计,使用CSS样式进行界面美化,根据具体BBS论坛需求分析,设计各个界面及功能模块。

设计采用MVC三层模式实现模型层(Model)、视图层(View)控制层(Controller)三层分离,如图1所示。模型层是应用程序的核心部分,用于实现操作的具体方法、处理具体数据;视图层生成用户界面,提供数据输入与显示模型层数据处理结果;控制层负责从视图层读取数据,并将数据传输给模型层处理。采用MVC模式使得程序结构设计更为清晰,使得程序更易维护;同时,将界面设计与详细设计分割开,可在进行功能设计和后台数据库处理时,省去繁琐的界面设计的考虑,也更便于单独处理界面美化。

2系统设计与实现

功能概述:进入论坛首页可浏览帖子,用户可注册登录论坛后回复帖子及发表新帖,管理员用户登录论坛可对帖子进行管理操作。

1)帖子显示:帖子采用“平板模式”显示,即论坛首页显示各个主题贴标题,点击标题可查看主题贴详细内容及回复贴的内容。

2)帖子回复及发表:用户可对每个主题帖及回复贴进行跟帖回复,在帖子回复及发表页面加入FCK插件,提供简单的文本编辑功能。

3)论坛登录:在登录界面设置登录选项,区分普通用户与管理员用户。实现登录后,普通用户与管理员用户所见的论坛界面不同,对帖子也有不同的操作权限。

4)浏览计数:主题帖的浏览次数根据用户点击帖子的次数而增加。

5)积分统计:用户注册成功后有基础积分,用户发表新帖和回复帖可得到相应积分。

6)帖子管理:管理员用户登录成功后可对帖子进行修改、删除、置顶和加精的管理操作。

2.1界面设计

使用DreamWeaver作为整体界面设计工具,界面整体使用Table安排布局,将论坛首页界面划分为标题区,帖子区两大板块,如图2所示。

标题区登录和搜索功能,显示论坛标题及欢迎语,每个界面统一使用此样式布局显示,使整个论坛更为整洁和整体化。

主题体贴列表区内设置两种颜色不同的样式显示主题帖,使帖子排列显示更为清晰。帖子区显示发帖标题,作者姓名,帖子浏览次数及发帖时间。主题帖显示出各个主题的标题,点击帖子标题,查看帖子详细内容,及所有用户和游客对主题帖的回复贴。

2.2 数据库设计

本次数据库设计采用了JDBC数据库连接池的连接方式。数据库连接池为数据库的连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个连接使用即可,在使用完毕之后再放回去。通过设定连接池的最大连接数来防止系统无尽的与数据库连接,减少系统的反应时间,也减轻系统资源的频繁分配。

数据库连接:

private String driverName = "com.mysql.jdbc.Driver";

privateString

url="jdbc:mysql://localhost:3306/bbs?user=root&password=&useUnicod=true&characterEncoding=gb2312";

根据系统功能设计,数据库主要含有普通用户表、管理员用户表和帖子信息表。其中以帖子信息表为例,如表1所示,IsLeaf字段用于判断帖子是否为主题帖,是否可以排列在BBS论坛首页主题帖列表内;Level字段用于判断帖子优先级别,判断主题帖为置顶帖、精华帖或者是普通贴。

1)帖子显示及内容读取

BBS论坛帖子分为主题帖和回复贴两类。论坛首页的主题帖采用平板形式排列显示,即点击主题帖标题,则展开主题帖详细内容及其各个回复贴。用户点击主题帖后,通过控制器调用方法,读取数据库中帖子信息表内的所有帖子信息。根据IsLeaf字段的值判断帖子是否为主题帖,主题帖将在论坛首页主题帖列表显示,根据主题帖的Level字段优先级别和发帖时间顺序排列,Level字段值的高级别优先排列,同等级别的主题贴最新发表的优先排列。

论坛首页统计论坛所有主题帖数量,并分页显示主题帖,实现上下翻页功能。用户每点击一次主题帖标题,对应主题帖的浏览次数计数器的值将加1,则该主题帖的浏览次数将增加一次浏览记录。排列在主题贴详细内容后的各个回复贴,根据回复时间先后,采用树形结构由上向下排列显示。

2)发帖与回复

发帖与回复页面的文本编辑框内都加入FCK插件,可对要发表的文本进行字体、字号、颜色、格式等进行编辑。普通用户登录成功后可发表新帖,新主题帖的IsLeaf字段的值自动判断为0,并将其显示在论坛首页的主题帖列表内。每个主题贴及回复贴都设置有回复按钮,点击回复按钮,则跳转至回复页面,控制器读取用户填写的要发表的回复内容,并将其添加入数据库。回复贴根据回复时间的先后顺序,依次排列于主题帖下,并在各回复贴上显示“第几楼”的回复序列号,如图3所示。

3)积分统计

每一位新用户在注册成功后,有1000分基础积分。根据用户的不同操作增加用户的积分,例如,发表一份新主题帖,用户积分增加20分;回复一次帖子,用户积分增加5分。

4)关键字搜索

在论坛首页设有搜索框,可输入搜索关键字,查询关键字相关的主题帖,并分页显示查询结果。

查询主题帖:

String(request.getParameter("search").getBytes("8859_1"),"GBK");

String sql="select * from article where pid=0 order by pdate desc where title like '%"+keyword+"%' or cont like '%"+keyword+"%'";

5)登录过滤

BBS论坛未登录用户,将直接被识别为“游客”身份。论坛用户分为普通用户和管理员用户两类。在论坛登录界面设置 “用户”和“管理员”的登录选项,用户根据自己身份情况,选择对应的登录选项,并填写登录信息。用户点击登录后,将用户选取的登录选项值及用户输入的登录信息传给控制器,由控制器根据用户选取的登录选项,调用数据库中不同的数据表的信息,与用户输入的登录信息作对比,信息对比通过,则登录成功,设置3秒后自动跳转至论坛首页,反之则登录失败,返回到登录界面,系统的登录流程如图4所示。

用户登录成功后,根据用户不同类别判断,显示对应类别的登录成功后的论坛界面。不同类别的用户登录成功后有不同操作的权限。普通用户登录成功后,可以进行发帖、回复等操作,管理员用户登录成功后,可对“普通用户”的发帖进行管理。

登录过滤:

if(loginn.equals("admin")){

String sql="select *from admin where username='"+usename+"'and pwd='"+password+"'";

if(Login.isLogin(stat, sql)){

session.setAttribute("admin", "admin");

sessions.setAttribute("adminname", usename);

response.sendRedirect("successful.jsp");

}else{

session.setAttribute("admin", "noadmin");

response.sendRedirect("fail.jsp");

}else{

String sql="select *from user where name='"+usename+"'and password='"+password+"'";

if(Login.isLogin(stat, sql)){

session.setAttribute("user", "user");

sessions.setAttribute("username", usename);

response.sendRedirect("successful.jsp");

}else{

session.setAttribute("user", "nouser");

response.sendRedirect("fail.jsp");

}

}

6)帖子管理权限

管理员用户登录成功后,可查看主题贴的详细内容及各个回复贴的情况,可对帖子进行修改、删除、置顶以及加精的管理操作。

置顶:在帖子信息表内设计Level字段,用于判断主题帖的优先级别。在BBS论坛首页的主题贴列表内,主题贴的排序顺序,是根据主题贴的Level字段的值降序排列及主题帖的发帖时间降序排列。主题贴的Level字段的值为第一优先考虑排序条件,当主题帖的Level字段的值相同时,再根据发帖时间降序排列各个主题贴。新发表的主题贴时,其Level字段的值默认为0,管理员用户点击某个主题贴置顶按钮后,对应主题贴的Level字段的值从0改为2,并在对应主题贴标题后,添加小红旗图案作为置顶后的标志。置顶贴的位置跳转至论坛首页的主题贴列表的顶端。

加精:加精功能的设计与置顶类似,用帖子信息表内的Level字段的值对主题帖进行判断。管理员用户点击主题帖后的加精按钮,主题帖的Level字段的值从0改为1,主题帖整体先根据其Level字段的值降序排列,所以精华主题帖排列在置顶主题帖后。主题帖加精后,将在对应主题帖后添加“精”字图片作为精华帖 的标志。主题帖列表框内,主题帖的排列顺序从上往下依次为置顶帖、精华帖、普通贴。

修改:管理员用户点击修改后,页面跳转至修改页面,则管理员用户可对主题帖的标题及其内容进行修改。修改界面也加入FCK控件,为管理员用户提供文本样式编辑功能。

删除:管理员用户点击删除按钮后,将删除对应主题贴及其所有的回复帖。

3结束语

在信息大爆炸的今天,BBS论坛成为网络巨大的信源地和信宿地,成为信息交换的一个大平台。HTML成为BBS论坛开发良好工具,不断丰富BBS论坛的功能,为人们的信息获取和交换带来极大的便利。

参考文献:

[1] 柳永坡, 刘雪梅, 赵长海.JSP应用开发技术[M]. 北京: 人民邮电出版社, 2005.

[2] 王夕宁, 王晓平.JSP通用模块及典型系统开发实例导航[M]. 北京: 人民邮电出版社, 2006.

[3] 耿祥义. JSP基础教程[M]. 北京: 清华大学出版社, 2004.

[4] 孙卫琴, 李洪成.Tomcat与Java Web开发技术详解[M]. 北京: 电子工业出版社, 2004.

[5] 曾云飞.基于Struts框架的电子政务研究和实现[M]. 沈阳: 东北大学出版社, 2005.

[6] 赛奎春.JSP信息系统开发实例精选[M].北京: 机械工业出版社, 2006.

[7] 邓良松, 刘海岩, 陆丽娜.软件工程[M]. 西安: 西安电子科技大学出版社, 2000.

[8] 王永茂.JSP程序设计[M]. 北京: 清华大学出版社, 2010.