1、JSP论坛之演示表的结构:
- 表名:mybbslist
- 字段 数据类型说明
- BBSID自动编号
- RootID Int 根帖ID,本身为根帖则RootID = ID
- FID Int 父帖ID,上一层帖子的ID,如是根帖则FID = 0
- DEPTHInt 根帖Level=0,其他依据回复的深度递增
- BBSSubject Char主题
2、JSP论坛之创建表:
- 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论坛之实现连接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论坛的之显示论坛的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("显示论坛树形结构");
- out.print("brbr");
- 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(jintRowCount)
- {
- int rsrsDepth=rs.getInt("Depth");
- if (rsDepthDepth)
- {
- for(int i=1;iDepth+1;ii=i+1)
- {
- out.print("/ul");
- }
- }
- rsrsDepth=rs.getInt("Depth");
- if (rsDepthDepth)
- {
- 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("数据库中无记录");
- }
- }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());
- }
- %
上述就是实现的JSP论坛的具体算法及树形结构,希望对你有所帮助。