JSP实现论坛树型结构的具体算法
点击次数:49 次 发布日期:2008-11-26 16:38:41 作者:源代码网
|
实现论坛树型结构的算法很多,具体你可以去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 (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());}%>源代码网供稿. |
