当前位置: 首页 > 图文教程 > 网络编程 > JSP > 实现论坛树型结构的具体算法

JSP
关于seeion的文章
jsp与javaBeans的结合使用
使用JavaBean,一句代码完成对文本文件读取和写入!!!
利用HttpSessionListener实现网站在线人数统计功能
第一章:taglib 原理和实现
用web_xml控制Web应用的行为(上)待徐
Taglib 原理和实现:第三章 tag之间的嵌套和属性读取
Taglib 原理和实现:第四章 循环的Tag
学习笔记:ServletContext接口
checkbox的使用
DelphiBBS的JSP实现(未经授权).
可以自动跳转到出错页面的servlet/jsp框架
学用Java Web Start 部署应用程序
Web页面数据批量录入----使用上传组件与JXL工具包联合实现
使用jsp实现word、excel格式报表打印
JSP页面查询显示常用模式
使用XML封装数据库操作语句的实现(完全版)--发布源码
深入浅出taglib
用Java实现Web服务器
如何利用xml,javascript绕开applet的安全问题

JSP 中的 实现论坛树型结构的具体算法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 58 ::
收藏到网摘: n/a


实现论坛树型结构的算法很多,具体你可以去www.chinaasp.com的全文搜索中查询。我现在的JSP论坛采用的也是当中的一种:不用递归实现树型结构的算法,现在我将论坛树型结构的具体算法和大家介绍一下,和大家一起交流。

1。演示表的结构:
表名:mybbslist
字段
数据类型
说明
BBSID 自动编号
RootID Int 根帖ID,本身为根帖则RootID = ID
FID Int 父帖ID,上一层帖子的ID,如是根帖则FID = 0
DEPTH Int 根帖Level=0,其他依据回复的深度递增
BBSSubject Char 主题

2。创建表:
create table mybbslist (
forumID int(20) not null,
bbsID int auto_increment primary key,
rootid int(20) not null,
fid int(20) not null,
depth int(20) not null,
userID int(20) not null,
bbsUser varchar(24) not null,
bbsSubject varchar(100) not null,
bbsContent text,
bbsTime varchar(30),
bbsRead int(20),
bbsReply int(20),
INDEX forumID (forumID))

3。连接MYSQL数据库的BEAN
package netzero;
import java.sql.*;
public class mydb
{
String driverName = "org.gjt.mm.mysql.Driver";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String connURL= "jdbc:mysql://localhost/mybbs?user=root&password=how&useUnicode=true&characterEncode=8859_1";
//String connURL= "jdbc:mysql://localhost/netzerobbs?user=root&password=how";
public mydb()
{
try
{
Class.forName(driverName);
}
catch (java.lang.ClassNotFoundException e)
{
System.err.println("netzero(String): " + e.getMessage());
}
}

public ResultSet executeQuery(String sql) throws SQLException
{
conn = DriverManager.getConnection(connURL);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}

public boolean closeConn()
{
try
{
if (rs!=null) rs.close();
if (stmt!=null) stmt.close();
if (conn!=null) conn.close();
return true;
}
catch ( SQLException ex )
{
System.err.println("closeConn: " + ex.getMessage());
return false;
}
}

}

4。显示论坛的JSP程序
<jsp:useBean id="mybbs" scope="session" class="netzero.mydb" />
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%
int intRowCount;
out.print("显示论坛树形结构");
out.print("<br><br>");
try {
String sql="select * from mybbslist order by rootid desc,depth,fid,bbsid";
ResultSet rs = mybbs.executeQuery(sql);
if (rs.next())
{
rs.last();
intRowCount=rs.getRow();
out.print("论坛树中有");
out.print(intRowCount);
out.print("个叶子节点");
rs.first();
int j=0;
int Depth = 0;
out.print("<ul>");
while(j<intRowCount)
{
int rsDepth=rs.getInt("Depth");
if (rsDepth<Depth)
{
for(int i=1;i<Depth+1;i=i+1)
{
out.print("</ul>");
}
}
rsDepth=rs.getInt("Depth");
if (rsDepth>Depth)
{
out.print("<ul>");
}
out.print("<li>");

String bbssubject=rs.getString("bbssubject");
out.print(bbssubject);
out.print("</li>");
Depth = rs.getInt("Depth");
j=j+1;
rs.next();
}
out.print("</ul>");
}
else
{
out.print("数据库中无记录");
}
}catch (SQLException E) {
out.println("SQLException: " + E.getMessage());
out.println("SQLState: " + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
}
%>
<% //关闭mysql连接
try {
if(!mybbs.closeConn());
} catch (Exception ex) {
System.err.println("closeConn: " + ex.getMessage());
}
%>


算法参考:http://www.chinaasp.com/sqlbbs/showEssence.asp?id=4783