`
antjava
  • 浏览: 8806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

通用js树形导航【下】

    博客分类:
  • JAVA
阅读更多

   在上文中 通用js树形导航【上】 我们已经实现了一个动态的 js 导航树,节点信息从数据库中读取,添加修改或者删除节点内容,我们的展示层和业务逻辑层的代码一句与不用更改。
    现在有一个问题我们在 jsp  页面通过循环显示出了集合中的值,并将其作为参数传递给 add 方法。能不能我在页面做的再简单点呢?接着封装,我们将实现的步骤封装到 业务类中,业务类返回一个 String 之后我们只需要在页面中显示这个 StringOk 了!

首先我们要修改业务类的方法,需要返回一个 String 类型的字符串
DBManager.java  数据库访问类 并取得 DTree 表中的所有数据 封装在一个 StringBuffer

package com.ant.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.accp.po.DTree;
public class DBManager {
    private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=tree";
    private static final String SA = "sa";
    private static final String PWD = "sqlpwd";
    private static Connection conn=null;
    // 打开连接
    public static void getConnection() {
        try {
            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URL, SA, PWD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    // 关闭连接
    public void closeConnection() {
        if (conn != null) {
            try {
                if (!conn.isClosed()) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    // 执行在查询
    public static ResultSet executeQuery(String sql) {
        getConnection();
        Statement st;
        try {
            st = conn.createStatement();
            return st.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    // 得到所有的节点
    public static String getAll() {
        ResultSet rs = executeQuery("select * from dtree");
        List<DTree> li = new ArrayList<DTree>();
        DTree d = new DTree();
        try {
            //这里可以直接封装到 StringBuffer 中
            while (rs.next()) {
                d = new DTree();
                d.setId(rs.getInt("id"));
                d.setPid(rs.getInt("pid"));
                d.setName(rs.getString("name"));
                d.setUrl(rs.getString("url"));
                d.setTitle(rs.getString("title"));
                d.setTarget(rs.getString("target"));
                d.setIcon(rs.getString("icon"));
                d.setIconOpen(rs.getString("iconOpen"));
                d.setOpen(rs.getString("open"));
                li.add(d);
            }
            StringBuffer contents = new StringBuffer();
            contents.append("d = new dTree('d');");
            for (DTree tn : li) {
                contents.append("\n");
                contents.append("d.add('");
                contents.append(tn.getId());
                contents.append("','");
                contents.append(tn.getPid());
                contents.append("','");
                contents.append(tn.getName());
                contents.append("','");
                contents.append(tn.getUrl());
                contents.append("','");
                contents.append(tn.getTitle());
                contents.append("','");
                contents.append(tn.getTarget());
                contents.append("','");
                contents.append(tn.getIcon());
                contents.append("','");
                contents.append(tn.getIconOpen());
                contents.append("','");
                contents.append(tn.getOpen());
                contents.append("');");
                contents.append("\n");                
            }
            contents.append("document.write(d);");        
            return contents.toString();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

index.jsp  数据显示页面,现在的页面就简洁多了!

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@page import="com.ant.dao.DBManager"%>
<script type="text/javascript" src="script/dtree.js"></script>
<link rel="StyleSheet" href="script/dtree.css" type="text/css" />
<script type="text/javascript">
     <%=DBManager.getAll() %>
</script>



至此 我们就完成了一个通用的导航树  以后只操作数据库就好了!

  • 描述: 预览效果
  • 大小: 22 KB
分享到:
评论

相关推荐

    div+css+js树形导航

    在网页设计中,"div+css+js树形导航"是一种常见的交互式菜单设计方法,它结合了HTML的结构、CSS的样式以及JavaScript的动态功能,以创建出可展开和折叠的层次化导航菜单。这种导航模式对于组织大量链接和子菜单的...

    javascript 树形菜单

    总的来说,构建JavaScript树形菜单涉及的技术包括HTML结构设计、CSS样式控制、JavaScript DOM操作、事件处理、数据结构和算法(如遍历树形结构)、以及可能的异步加载和动画效果。通过这些技术的组合,我们可以创建...

    ASP.NET ,和HTM通用的JS树形菜单

    ASP.NET 和 HTML 中的JavaScript树形菜单是一种交互式的网页元素,常用于展现层次结构的数据,如网站导航、文件目录或数据库记录。这类菜单通常由HTML、CSS和JavaScript组成,其中JavaScript负责动态展示和操作菜单...

    jstree+JS树形菜单合集

    本资源"jstree+JS树形菜单合集"聚焦于JavaScript实现的树形菜单,涵盖了多种应用场景和实现方式。 首先,我们来看"struts+hibernate树形菜单"。Struts是Java Web开发中的一个MVC框架,而Hibernate则是一个ORM(对象...

    javascript树形菜单

    JavaScript树形菜单是一种在网页中展示层次结构数据的交互式组件。它们通常用于网站的导航、文件目录浏览或数据组织。在这个压缩包中,我们有几种不同的JavaScript树形菜单实现,包括`dtree`和`dhtmlxtree`,以及...

    DIV+CSS+JS树形菜单

    标题中的“DIV+CSS+JS树形菜单”指的是在网页设计中使用HTML的`&lt;div&gt;`元素、CSS样式以及JavaScript脚本来实现一种交互式的树状菜单。这种菜单通常用于网站的导航,允许用户通过展开和折叠节点来浏览多级结构的内容。...

    树形菜单tag框架 非树形的点击事件

    树形菜单通常用于展示层级关系的数据,而这里的“非树形”的含义可能是指在没有明显层级结构的菜单中,通过某种方式模拟树形菜单的展开、收缩和点击行为。这种技术通常涉及到前端JavaScript或jQuery的交互设计,以及...

    CSS树形菜单

    树形菜单是一种常见的网页导航结构,它通常以层级形式展示,用户可以通过展开和折叠来浏览和选择不同级别的内容。在CSS中实现这样的效果,我们需要掌握以下几个关键知识点: 1. **盒模型与布局**:理解CSS盒模型是...

    asp.net 经典树形菜单

    ASP.NET经典树形菜单是一种常见的Web用户界面元素,用于展示层次结构的数据,如网站导航、组织结构或文件系统。在ASP.NET中实现这样的菜单通常涉及客户端脚本与服务器端代码的交互,以便动态构建和操作菜单。在这个...

    收集树形菜单显示集锦

    在IT领域,树形菜单是一种常见的用户界面元素,它用于组织和展示层级关系的数据,比如文件系统、网站导航或组织结构。在这个“收集树形菜单显示集锦”中,我们将会探讨几种不同的树形菜单实现方式,包括xtree、tree...

    纯JS资源树

    【纯JS资源树】是一种基于JavaScript技术实现的交互式数据展示工具,主要用于构建层次结构清晰、操作便捷的树形界面。这种树结构常用于网站导航、文件目录展示、组织架构图等多种场景,允许用户进行添加、删除、修改...

    两款蓝色后台模板(树形菜单)

    其中的关键特色是“树形菜单”,这是一种常见的网页导航结构,能够清晰地展示层级关系,方便用户快速定位和访问不同的功能模块。 “后台模板”是指用于构建网站或内容管理系统(CMS)后端控制面板的预设计布局和...

    小程序 树结构相关内容 自定义 树结构组件

    在IT领域,尤其是在前端开发中,树形结构是一种常见的数据表示方式,用于展现层次关系的数据。在小程序开发中,自定义树结构组件是一项重要的技术任务,它能够帮助用户以直观的方式浏览和操作层级化信息。以下将详细...

    JS无限极树形菜单,json格式、数组格式通用示例

    本文介绍的是一种在Web开发中常见的功能——JS无限极树形菜单。无限级树形菜单能够以树状的形式展示多层嵌套的数据,广泛应用于网站的导航栏、资源管理、组织架构等场景中。在本示例中,所实现的树形菜单能够处理...

    MzTreeView 梅花雪树形菜单通用版.zip

    总结,MzTreeView是一款强大的JavaScript树形菜单组件,具备丰富的功能和良好的可扩展性。无论是新手还是经验丰富的开发者,都能借助其强大功能,快速实现具有交互性的树形菜单,提升网页应用的用户体验。在实际项目...

    ztree树形3.518官方源码

    zTree是一款广泛应用于Web开发中的JavaScript树形插件,它的最新版本为3.518。作为一款轻量级、高性能的开源组件,zTree以其强大的功能和灵活的配置选项深受开发者喜爱。本文将深入解析zTree 3.518的官方源码,帮助...

    树形下拉

    在IT行业中,"树形下拉"是一种...通过阅读这篇博客,开发者不仅可以学习到树形下拉的实现,还能了解到前端开发中的一些通用技巧和最佳实践。如果你对这个话题感兴趣,建议查找并阅读原始博客,以便更深入地学习和理解。

    见到的一些JS写的TREE

    这些资源对于学习和实现JavaScript树形控件非常有帮助,你可以根据具体需求选择适合的库或示例进行研究。在实际项目中,理解如何用JavaScript操作DOM、处理事件和异步请求是关键,同时,了解如何优化性能和提升用户...

    ExtJs 后台通用界面布局,左侧树,Center Tab 选项

    本主题主要关注的是ExtJs 中的一个常见布局模式:左侧树形导航与中心Tab选项卡结合的后台通用界面布局。 首先,我们要理解ExtJs中的“布局”(Layouts)。布局是ExtJs组件管理其子组件的方式,决定了子组件如何在...

Global site tag (gtag.js) - Google Analytics