自己动手做论坛(三)
编程爱好者
编者按:前两期,我们介绍了论坛的功能分析、数据库设计、数据库连接程序模块、外部和用户接口的程序设计。最后,我们将介绍论坛的后台管理和架设安装部分。这样,大家对论坛编程就会有一个比较全面的认识。示例中的所有代码可在http://download.cpcw.com/下载。
所有的论坛都要安装架设才能正常使用,所有的论坛都有管理员和后台管理程序模块。本期,我们就着重介绍这两部分知识,使大家对论坛开发有一个全面的认识。
一、后台管理程序的原理和界面
论坛的后台管理需要登录者具备一定的权限,我们将所有的后台管理员都放置在admin表中,登录验证通过该表进行验证,方法类同于普通用户的登录验证,这里不再赘述。登录后的界面如图1所示。

我们的后台用户都可以对系统进行哪些管理呢?基本的应该有对版块、版面的添加、删除和修改操作,对用户信息的删除和修改操作,当然一个论坛光有这些功能是远远不够的,读者朋友可以按照前面所讲述的方法来添加自己需要的功能!版块与版面是从属关系,版面包含于版块中,添加版面时要设置它所属的版块ID;删除版块时,要删除版块中所有的版面。我们的论坛设置界面如图2所示。

点击图的左上角的“添加版块”和“添加版面”链接,分别出现如图3和图4所示的界面。


二、管理程序的实现代码
限于篇幅,我们只重点讲解添加版块和添加版面两部分的实现代码,其他功能相对较简单,大家可以参看下载的源程序。添加版块对应文件为bk_insert.jsp,添加版面对应文件为bm_insert.jsp。
1.添加版块
添加版块实际上属于数据库添加记录的操作,要重点把握参数传递,得到正确的版块编号和版块信息参数。
<jsp:useBean id="one" class="bbs.DbC
onnect" scope="session" />
<%
//得到传递过来的版块编号
String xbk_id=request.getParameter("bk_id");
//得到传递过来的版块信息
String bk_info=request.getParameter("bk_info");
int bk_id=Integer.parseInt(xbk_id);
//查询数据库中是否已经存在此版块编号
String bk_sql_select="select * from bbs_bk where bk_id="+bk_id;
//将数据插入到数据库中
String bk_sql_insert="insert into bbs_bk values("+bk_id+",'"+bk_info+"')";
try
{
ResultSet rs=one.getRs(bk_sql_select);
if(rs.next())
{
out.println("<script>");
//如果此版块编号已经存在,弹出提示
out.println("alert('版块编号"+bk_id+"已存在');");
//页面转向insertbk.jsp
out.println("location='insertbk.jsp?bk_info="+bk_info+"';");
//表单的焦点在bk_id文本框中
out.println("form1.bk_id.focus()");
out.println("</script>");
rs.close();
}< br>
else
{
one.UpdateRecord(bk_sql_insert);
one.close();
session.setAttribute("admin","123");
//重定向到bbs_set.jsp中
response.sendRedirect("bbs_set.jsp");
}
}
catch(Exception e)
{
out.print(e);
}
%>
2.添加版面
添加版面实际上也属于简单的数据库插入记录操作,重点要把握好记录应该插入的位置即可。
//使用javaBean
<jsp:useBean id="one" class="bbs.DbC
onnect" scope="session" />
<%
//得到bm_id的值
String xbm_id=request.getParameter("bm_id");
//得到bm_name的值
String bm_name=request.getParameter("bm_name");
//得到bm_info的值
String bm_info=request.getParameter("bm_info");
//得到bm_jpg的值
String bm_jpg=request.getParameter("bm_jpg");
//得到bk_id的值
String xbk_id=request.getParameter("bk_id");
int bm_id=Integer.parseInt(xbm_id);
int bk_id=Integer.parseInt(xbk_id);
String bm_sql_select="select * from bbs_bm where bm_id="+bm_id;
String bm_sql_insert="insert into bbs_bm values("+bm_id+",'"+bm_name+"','"+bm_info+"','"+bm_jpg+"',"+bk_id+")";
try
{
ResultSet rs=one.getRs(bm_sql_select);
//检查是否存在此版面编号
if(rs.next())
{
out.println("<script>");
out.println("alert('版面编号"+bm_id+"已存在');");
out.println("location='insertbk.jsp?bm_info="+bm_info+"';");
out.println("form1.bm_id.focus()");
out.println("</script>");
rs.close();
}
//如果不存在此版面编号,则将所得到的数据插入到数据库中
else
{
one.UpdateRecord(bm_sql_insert);
one.close();
session.setAttribute("admin","123");
//重定向页面到bbs_set.jsp页面
response.sendRedirect("bbs_set.jsp");
}
}
catch(Exception e)
{
out.print(e);
}
%>
3.用户的删除、修改
修改用户资料操作上期我们已经介绍过了,而删除用户的操作类似于修改操作,所不同的是实现的sql语句不同。但我们设计程序时,希望管理员在删除用户前能够得到提示并确认操作,防止误删用户资料。程序界面如图5所示,代码很简单,这里就不赘述了。

三、论坛的部署、安装和运行
基于JSP的论坛安装配置很简单。本例中,我们的具体步骤如下:
●首先修改resion的resion.conf文件,将其中的web-app项指向本系统所在目录,启动resion;
●打开IE浏览器,在地址栏输入http://127.0.0.1:8080 (具体的端口取决于resion的具体配置),即可打开本论坛系统首页(如图6所示)。

到此,大家都应该能写一个属于自己的论坛了,通过对此系统的学习,相信大家会在以后的数据库项目开发中得心应手。
编后:基本的论坛程序我们做完了,但是,要想吸引更多的人使用论坛。特色功能必不可少,如自定义头像、论坛用户间互发短消息……限于篇幅,这些问题我们会在以后继续探讨,也欢迎对此有研究的读者来信或投稿。