實(shí)現(xiàn)JSP論壇樹型結(jié)構(gòu)的具體算法
作者:佚名
本文將源碼的形式向你展示使用JSP語言來實(shí)現(xiàn)論壇的樹形結(jié)構(gòu),其具體明了的算法相信會對你有所幫助。
1、JSP論壇之演示表的結(jié)構(gòu):
- 表名:mybbslist
- 字段 數(shù)據(jù)類型 說明
- BBSID 自動編號
- RootID Int 根帖ID,本身為根帖則RootID = ID
- FID Int 父帖ID,上一層帖子的ID,如是根帖則FID = 0
- DEPTH Int 根帖Level=0,其他依據(jù)回復(fù)的深度遞增
- BBSSubject Char 主題
2、JSP論壇之創(chuàng)建表:
- 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、JSP論壇之實(shí)現(xiàn)連接MYSQL數(shù)據(jù)庫的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論壇的之顯示論壇的JavaScript/" target="_blank">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("顯示論壇樹形結(jié)構(gòu)");
- 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("個(gè)葉子節(jié)點(diǎn)");
- rs.first();
- int j=0;
- int Depth = 0;
- out.print("﹤ul﹥");
- while(j﹤intRowCount)
- {
- int rsrsDepth=rs.getInt("Depth");
- if (rsDepth﹤Depth)
- {
- for(int i=1;i﹤Depth+1;ii=i+1)
- {
- out.print("﹤/ul﹥");
- }
- }
- rsrsDepth=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");
- jj=j+1;
- rs.next();
- }
- out.print("﹤/ul﹥");
- }
- else
- {
- out.print("數(shù)據(jù)庫中無記錄");
- }
- }catch (SQLException E) {
- out.println("SQLException: " + E.getMessage());
- out.println("SQLState: " + E.getSQLState());
- out.println("VendorError: " + E.getErrorCode());
- }
- %﹥
- ﹤% //關(guān)閉mysql連接
- try {
- if(!mybbs.closeConn());
- } catch (Exception ex) {
- System.err.println("closeConn: " + ex.getMessage());
- }
- %﹥
上述就是實(shí)現(xiàn)的JSP論壇的具體算法及樹形結(jié)構(gòu),希望對你有所幫助。
【編輯推薦】
責(zé)任編輯:仲衡
來源:
互聯(lián)網(wǎng)