树状展现(递归调用),代码如下:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021-01-20
Time: 18:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<!--%!表示方法的定义或者是方法的声明-->
<%!
String str = "";//作用:把tree方法里面的内容写到字符串上,再把字符串输出到页面上
private void tree(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;
String preStr = "";
for(int i=0; i<level; i++) {
preStr += "****";
}
try {
stmt = conn.createStatement();
String sql = "select * from article where pid = " + id;
rs = stmt.executeQuery(sql);
while(rs.next()) {
str += "<tr><td>" + rs.getInt("id") + "</td><td>" +
preStr + rs.getString("title") + "</td></tr>";
//if(rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), level+1);
//}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
<%
Class.forName("com.mysql.jdbc.Driver");//加载
String url = "jdbc:mysql://localhost:3306/bbs?&serverTimezone=Asia/Shanghai";//地址
Connection conn = DriverManager.getConnection(url,"root","123456");//链接
Statement stmt = conn.createStatement();//创建stmt对象并链接
ResultSet rs = stmt.executeQuery("select * from article where pid = 0");//执行sql语句主贴:蚂蚁大战大象
/*tr:行,td:列
* 一行俩列:一列数字、一列文字
* 第一个表格 + 蚂蚁大战大象,然后跳转到tree
* */
while(rs.next()) {
str += "<tr><td>" + rs.getInt("id") + "</td><td>" +
rs.getString("title") + "</td></tr>";
//if(rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), 1);
//}
}
rs.close();
stmt.close();
conn.close();
%>
<html>
<head>
<title>标题</title>
</head>
<body>
<table border="1">
<%= str %>
<%
str = "";
%>
</table>
</body>
</html>
运行结果: