您的位置:首页 > Web前端 > JavaScript

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

2014-04-05 13:59 691 查看

从数据库动态加载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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐