动态zTree显示目录与后台传递Json数据

 

从数据库动态加载zTree目录

 

  大家好,经过一些痛苦的学习与试验,小编总结了动态加载zTree的方法,大部分是要从网上拷贝的。这个也是我从网上拷贝的,也有很多地方不知道什么意思。但是程序员就要会复制粘贴嘛,可能有很多地方需要改进,大神勿喷!下面我把我的理解带给大家:

 

Jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

         String path = request.getContextPath();

         String basePath = request.getScheme() + "://"

                            + request.getServerName() + ":" + request.getServerPort()

                            + path + "/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 

<head>

<base href="<%=basePath%>">

 

<title>My JSP ‘success.jsp‘ starting page</title>

 

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!-- 下面是css和各种js的引用(注意:不要将css和js源文件放入WEB-INF中 -->

<!-- 否则会无法识别,很蛋疼的东西啊)-->

 

 

<link rel="stylesheet" href="pages/css/demo.css" type="text/css">

<link rel="stylesheet" href="pages/css/zTreeStyle/zTreeStyle.css"

         type="text/css">

<script type="text/javascript" src="pages/js/jquery-1.4.4.min.js"></script>

<script type="text/javascript" src="pages/js/jquery.ztree.core-3.5.js"></script>

<script type="text/javascript" src="pages/js/jquery.ztree.exhide-3.5.js"></script>

 

 

<SCRIPT type="text/javascript">

 

         //下面开始进入复制阶段

         var setting = {

                            data : {

                                     key : {

                                               title : "title"

                                     },

                                     simpleData : {

                                               enable : true

                                     }

                            }

                   };

         function setTitle(node) {

                   var zTree = $.fn.zTree.getZTreeObj("treeDemo");

                   var nodes = node ? [ node ] : zTree.transformToArray(zTree.getNodes());

                   for var i = 0, l = nodes.length; i < l; i++) {

                            var n = nodes[i];

                            n.title = "[" + n.id + "] isFirstNode = " + n.isFirstNode

                                               + ", isLastNode = " + n.isLastNode;

                            zTree.updateNode(n);

                   }

         }

         function count() {

                   var zTree = $.fn.zTree.getZTreeObj("treeDemo"), hiddenCount = zTree

                                     .getNodesByParam("isHidden", true).length;

                   $("#hiddenCount").text(hiddenCount);

         }

         function showNodes() {

                   var zTree = $.fn.zTree.getZTreeObj("treeDemo"), nodes = zTree

                                     .getNodesByParam("isHidden", true);

                   zTree.showNodes(nodes);

                   setTitle();

                   count();

         }

         function hideNodes() {

                   var zTree = $.fn.zTree.getZTreeObj("treeDemo"), nodes = zTree

                                     .getSelectedNodes();

                   if (nodes.length == 0) {

                            alert("请至少选择一个节点");

                            return;

                   }

                   zTree.hideNodes(nodes);

                   setTitle();

                   count();

         }

        

         //以上可以直接复制,有兴趣的可以参考zTree文档进行研究

         //从后台读取数据用来保存结点的数组

         var treeNodes = [];

 

 

         //一切准备好后初始化树

                   $(document).ready(function() {

                   //初始化zNodes数组——treeNodes

                   $(function() {

                            //从后台获取json串的连接

                            var url = "http://localhost:8080/InspurUser/JsonRightServlet";

                           

                            //right是从session获取并保存在jsp页面body中的一个hidden标签中

                            var right = document.getElementById("right").value;

                            $.ajax({

                                     url : url,

                                     type : ‘post‘,

                                     //这个是传到后台的数据,后台就是根据它获取zTree结点信息的,它是一个json格式的串

                                     data : {right : right},

                                     async : false,

                                     success : function(data) {

                                               //这个data是ajax传回的数据一个json串

                                               /*

                                               json串={"right":[{"id":"1","isHidden":0,"name":"公司","open":1,"pId":"0","target":"","title":"","url":""},

                                                               {"id":"11","isHidden":0,"name":"超级管理员","open":0,"pId":"1","target":"mainF","title":"","url":""},

                                                               {"id":"111","isHidden":0,"name":"显示报表","open":0,"pId":"11","target":"mainF","title":"","url":"http://localhost:8080/InspurUser/chart/index.jsp"},

                                                               {"id":"112","isHidden":0,"name":"管理用户","open":0,"pId":"11","target":"mainF","title":"","url":"http://localhost:8080/InspurUser/DirectTo?method=toUserManager"}]}

                                               */

                                               var msg = eval(‘(‘ + data + ‘)‘);

                                               //非常强大的遍历函数

                                               $.each(msg, function(i, item) {

                                                        //此处i=right

                                                        //item是json串的后半部分

                                                        $.each(item,function(ii,iit){//遍历json数据(对我们有用的——树的节点的所有信息)

                                                                 treeNodes.push({"id":iit.id,"name":iit.name,"pId":iit.pId,"url":iit.url,"target":iit.target});

                                                        });

                                               });

                                     }

                            });

                   });

                  

                   //一下是初始化zTree的函数,可以直接复制,

                   //但$("#treeDemo")中的treeDemo是要存放zTree的div的id

                   $.fn.zTree.init($("#treeDemo"), setting, treeNodes);

                   $("#hideNodesBtn").bind("click", {

                            type : "rename"

                   }, hideNodes);

                   $("#showNodesBtn").bind("click", {

                            type : "icon"

                   }, showNodes);

                   setTitle();

                   count();

         });

</script>

</head>

 

<body background="img/back.jpg">

         <div>

                   <table width="100%" height="100%">

                            <tr height="10%">

                                     <td colspan="2"><marquee direction="right">

                                                        <font color="#00FFFF" size="30px">浪潮内训图表</font>

                                               </marquee></td>

                            </tr>

                            <tr>

                                     <td rowspan="2" width="20%">

                                      <%--

                                               这就是要摆放zTree的地方

                                               --%>

                                               <div>

                                                        <ul id="treeDemo" class="ztree"></ul>

                                               </div>

                                               <%--

                                               这就是存放权限right的hidden标签,在穿到后面的时候用到

                                               --%>

                                               <input type="hidden" name="right" id="right"

                                               value="${sessionScope.user.right }"></td>

                                     <td width="1000px" height="530px"

                                               style="padding: 0px;text-align: center;"><iframe src=""

                                                        width="100%" height="100%" frameborder="0" name="mainF"

                                                        scrolling="auto" style="margin: 0px;"></iframe></td>

                            </tr>

                   </table>

         </div>

 

</body>

</html>

 

 

 

获取Json数据的Servlet代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

 

                   response.setContentType("text/html");

                   response.setCharacterEncoding("utf-8");

                   PrintWriter out = response.getWriter();

                   String right = request.getParameter("right");

                   System.out.println(right);

                   RightDao dao = new RightDao();

                   //获取所有right

                   List<RightNodes> list = dao.getRightsMess(right);

                   System.out.println("right list个数="+list.size());

                   try{

 

                            //此处要引入Json的包(还要放入到tomcat下的lib中)

               // http://pan.baidu.com/s/1dDDuSQd

 

                            JSONArray json =JSONArray.fromObject(list);

                            JSONObject jb =new JSONObject();

                            jb.put("right", json);

                            System.out.println("json串="+jb.toString());

                            out.print(jb.toString());

                            out.flush();

                            out.close();

                   }catch(Exception e){

                            e.printStackTrace();

                   }finally{

                            out.close();

                   }

 

         }

 

 

 

 

 

 

  有了上面的就够了吗?

  不,还要有对应的数据库设计:大家可以参照zTree节点的各个参数来设计数据库。以便进行更进一步的操作,如跳转链接等。

  一下便是我的数据库设计:

 

create table rightnodes(

         id varchar2(5) not null,

         pid varchar2(5) not null,

         name varchar2(20) not null,

         url varchar2(200),

         open number(1),

         ishidden number(1),

         title varchar2(50),

         target varchar2(30)

         );

        

--插入数据

insert into rightnodes values(1,0,‘公司‘,‘‘,1,0,‘‘,‘‘);

insert into rightnodes values(11,1,‘超级管理员‘,‘‘,0,0,‘‘,‘mainF‘);

insert into rightnodes values(111,11,‘显示报表‘,‘http://localhost:8080/InspurUser/chart/index.jsp‘,0,0,‘‘,‘mainF‘);

insert into rightnodes values(112,11,‘管理用户‘,‘http://localhost:8080/InspurUser/DirectTo?method=toUserManager‘,0,0,‘‘,‘mainF‘);

insert into rightnodes values(12,1,‘普通用户‘,‘‘,0,0,‘‘,‘mainF‘);

insert into rightnodes values(121,12,‘跳转到Google‘,‘http://www.google.com‘,0,0,‘‘,‘mainF‘);

insert into rightnodes values(122,12,‘叶子结点2‘,‘‘,0,0,‘‘,‘mainF‘);

 

 

备注:如有疑问,欢迎追问。qq:1149500475

 

 

 

动态zTree显示目录与后台传递Json数据,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。