博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类别列表_显示树状结构
阅读量:6801 次
发布时间:2019-06-26

本文共 1997 字,大约阅读时间需要 6 分钟。

最近正在做一个有树状显示的小项目,在此将树状显示做一下小总结。

1.从数据库中取出数据并按树形结构排好序

Category中添加如下函数:

public static List<Category> getCategorys(){

  List<Category> categorys = new ArrayList<Category>();
  categorys = CategoryDAO.getCategorys(categorys, 0);
  return categorys;
 }

CategoryDAO中添加如下函数:

public static List<Category> getCategorys(List<Category> categorys, int id) {

  Connection conn = null;
  ResultSet rs = null;
   try {
   conn = DB.getConn();
   rs = DB.executeQuery(conn,  "select * from category where pid = " + id);
   while(rs.next()) {
    Category c = new Category();
    c.setId(rs.getInt("id"));
    c.setName(rs.getString("name"));
    c.setDescr(rs.getString("descr"));
    c.setPid(rs.getInt("pid"));
    c.setLeaf(rs.getInt("isleaf")==0 ? false : true);
    c.setGrade(rs.getInt("grade"));
    categorys.add(c);
    if(!c.isLeaf()) {
     getCategorys(categorys,c.getId());//将会建立好多好多的连接,因为每次conn都是重新构建的,解决方法如下。
    }
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   DB.closeResultSet(rs);
   DB.closeConn(conn);
  }
  return categorys;
 }

将此方法改为private static List<Category> getCategorys(Connection conn,List<Category> categorys, int id)

里面调用getCategorys(conn, categorys, c.getId());//这样用递归风险特别大每递归一次就会执行完getCategorys整个方法,以至于关闭与数据库的连接,只能遍历一层,并抛出异常。解决方法:将递归写成另一个方法,进行调用。在此不再详述。

再重新加入方法

public static List<Category> getCategorys(List<Category> categorys, int id) {

  Connection conn = null;
  conn = DB.getConn();
  categorys = getCategorys(conn, categorys, id);
  return categorys;
 }

以上方法在return之前调用DB.closeConn(conn); 将finally里的这一句去掉

2.树形显示

首先在jsp页面中拿到categorys

<%

List<Category> categorys = Category.getCategorys();
 %>

其次在jsp页面中引入使用到的js文件

<script language="javascript" src="script/TV20.js"></script>

然后在jsp页面的body中添加代码如下

<script language="javascript">

<!--

  addNode(-1,0,"所有类别","admin/images/top.gif");
  <%
  for(Iterator<Category> it = categorys.iterator(); it.hasNext();) {
   Category c = it.next();
  %>
   addNode(<%=c.getPid() %>, <%=c.getId() %>, "<%=c.getName() %>", "admin/images/top.gif");
  <%
  }
  %>
 showTV();
-->
</script>

转载于:https://www.cnblogs.com/happy-kate/p/3210961.html

你可能感兴趣的文章
容器 - Map的遍历方法
查看>>
介绍一开源在线视频会议平台BigBlueButton
查看>>
sublime_text配置php调试环境
查看>>
如何在域账户下使用管理员账号安装共享打印机
查看>>
戏说守护、僵尸、孤儿进程
查看>>
表单提交时候后台数据乱码
查看>>
angular.js使用路由时,子控制器监听不到父级$boardcast的事件
查看>>
加入域的计算机登录域出现指定域的名称或安全标识(SID)与该域的信认信息不一致。...
查看>>
hadoop及hbase集群启停的几种方式
查看>>
刚毕业想走上IT这条路-必看 找工作升职加薪真的那么难吗?-上篇
查看>>
how to send mail from 3rd
查看>>
mappingResources、mappingLocations、mappingDirectoryLocations、mappingJarLocations
查看>>
AJAX 传递jison数组 ;前端循环辅助数组 -----解决方案
查看>>
关于磁盘相关知识
查看>>
Mozilla推出HTML/CSS在线交互式学习网站Thimble
查看>>
关于ppp认证
查看>>
彻底禁用SilentDetection.aspx,极速登录
查看>>
为了忘却的纪念,我的天龙游戏生涯
查看>>
12294错误事件的处理--利用审核日志查找病毒来源
查看>>
第25讲: Scala中柯里化实战详解
查看>>