@H_502_3@
到目录树结构的实现全过程:@H_502_3@
@H_502_3@
中间产生的JSON数据:@H_502_3@
@H_502_3@
配置jdbc数据源,从数据库中读取以上的层级表,将所有的记录存到ArrayList中,利用fastJson将其解析成JSON数据格式(序列化@H_502_3@),而后利用ztree生成目录树结构。@H_502_3@
fastJson1.1.9,ztree3.5,jdk1.7,struts1.2,jquery1.4,oracle9i@H_502_3@
index.jsp(@H_502_3@访问@H_502_3@http://localhost:8088/fastjson/index.jsp)@H_502_3@@H_502_3@
<%@ page language="java"import="java.util.*" pageEncoding="ISO-8859-1"%>@H_502_3@
<%@H_502_3@
String path = request.getContextPath();@H_502_3@
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";@H_502_3@
%>@H_502_3@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">@H_502_3@
<html>@H_502_3@
<head>@H_502_3@
<base href="<%=basePath%>">@H_502_3@
<title>My JSP 'index.jsp' starting page</title>@H_502_3@
<Metahttp-equiv="pragma" content="no-cache">
<Metahttp-equiv="cache-control" content="no-cache">
<Metahttp-equiv="expires" content="0">
<Metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<Metahttp-equiv="description" content="This is my page">
<!--
<linkrel="stylesheet" type="text/css"href="styles.css">
-->
</head>
<body>
<%
response.sendRedirect("getJson.do");
%>
</body>
</html>@H_502_3@@H_502_3@
GetJsonAction.java@H_502_3@(@H_502_3@ActionServlet@H_502_3@)@H_502_3@@H_502_3@
package com.nns.struts.action;@H_502_3@
importjavax.servlet.http.HttpServletRequest;@H_502_3@
importcom.nns.util.Menu;@H_502_3@
importcom.alibaba.fastjson.*;@H_502_3@
importjava.util.ArrayList;@H_502_3@
importjava.util.List;@H_502_3@
importjavax.servlet.http.HttpServletResponse;@H_502_3@
importorg.apache.struts.action.Action;@H_502_3@
importorg.apache.struts.action.ActionForm;@H_502_3@
importorg.apache.struts.action.ActionForward;@H_502_3@
importorg.apache.struts.action.ActionMapping;@H_502_3@
importjava.sql.Connection;@H_502_3@
importjava.sql.ResultSet;@H_502_3@
importjava.sql.sqlException;@H_502_3@
importjava.sql.Statement;@H_502_3@
importjavax.naming.Context;@H_502_3@
importjavax.naming.InitialContext;@H_502_3@
importjavax.naming.NamingException;@H_502_3@
importjavax.sql.DataSource;@H_502_3@
publicclass GetJsonAction extends Action {@H_502_3@
@H_502_3@publicActionForward execute(ActionMapping mapping,ActionForm form,@H_502_3@
@H_502_3@HttpServletRequestrequest,HttpServletResponse response) {@H_502_3@
@H_502_3@
List<Menu> m = new ArrayList<Menu>();@H_502_3@
@H_502_3@//@H_502_3@连接数据源@H_502_3@
@H_502_3@Connectionconn = null;@H_502_3@
@H_502_3@try {@H_502_3@
@H_502_3@Context ctx= new InitialContext();
@H_502_3@ContextcompNamingContext = (Context)ctx.lookup("java:comp/env");
DataSourceds = (DataSource)compNamingContext.lookup("jdbc/user1DataSource");
@H_502_3@try {@H_502_3@
@H_502_3@conn =ds.getConnection();
@H_502_3@ @H_502_3@if(conn==null){@H_502_3@
@H_502_3@ System.out.println("@H_502_3@获取数据源连接失败@H_502_3@");@H_502_3@
@H_502_3@} else {@H_502_3@
@H_502_3@ Statement st= conn.createStatement();@H_502_3@
@H_502_3@ String sql ="select * from jsontree";@H_502_3@
@H_502_3@ ResultSet rs= st.executeQuery(sql);@H_502_3@
@H_502_3@ Stringid="",pid="",name="",t="";@H_502_3@
@H_502_3@ while(rs.next()){@H_502_3@
@H_502_3@id=rs.getString("id");@H_502_3@
@H_502_3@pid=rs.getString("pid");@H_502_3@
@H_502_3@name=rs.getString("name");@H_502_3@
@H_502_3@t=rs.getString("t");@H_502_3@
@H_502_3@//System.out.println("=="+id+"=="+pid+"=="+name+"=="+t);@H_502_3@
@H_502_3@Menu m1 =new Menu();@H_502_3@
@H_502_3@m1.setId(id);@H_502_3@
@H_502_3@m1.setPid(pid);@H_502_3@
@H_502_3@m1.setName(name);@H_502_3@
@H_502_3@m1.setT(t);@H_502_3@
@H_502_3@m.add(m1);@H_502_3@
@H_502_3@ }@H_502_3@
@H_502_3@}@H_502_3@
@H_502_3@} catch(sqlException e) {@H_502_3@
@H_502_3@e.printStackTrace();@H_502_3@
@H_502_3@}@H_502_3@
@H_502_3@} catch(NamingException e) {@H_502_3@
@H_502_3@e.printStackTrace();@H_502_3@
@H_502_3@} finally{@H_502_3@
@H_502_3@if(conn!=null){@H_502_3@
@H_502_3@try {@H_502_3@
@H_502_3@ conn.close();@H_502_3@
@H_502_3@} catch(sqlException e) {@H_502_3@
@H_502_3@ e.printStackTrace();@H_502_3@
@H_502_3@}@H_502_3@
@H_502_3@conn=null;@H_502_3@
@H_502_3@}@H_502_3@
@H_502_3@}@H_502_3@
@H_502_3@ //序列化过程
@H_502_3@ @H_502_3@String jsonString = JSON.toJSONString(m);@H_502_3@
@H_502_3@ System.out.println("序列化(将javabean对象转换成json数据)");@H_502_3@
@H_502_3@ System.out.println(jsonString.replaceAll("pid","pId"));@H_502_3@
@H_502_3@ request.setAttribute("jsondata",jsonString.replaceAll("pid",153); white-space:pre">@H_502_3@ @H_502_3@
@H_502_3@ //反序列化测试@H_502_3@
@H_502_3@ List<Menu> mcs = new ArrayList<Menu>();@H_502_3@
@H_502_3@ @H_502_3@mcs = JSON.parseArray(jsonString,Menu.class);@H_502_3@
@H_502_3@ System.out.println("反序列化(将json数据还原成javabean对象)");@H_502_3@
@H_502_3@ Iterator<Menu> iter = mcs.iterator();@H_502_3@
@H_502_3@ while(iter.hasNext()){@H_502_3@
@H_502_3@ @H_502_3@@H_502_3@Menu mu = iter.next();@H_502_3@
@H_502_3@System.out.println("id="+mu.getId()+";pid="+mu.getPid()+";name="+mu.getName()+";t="+mu.getT());@H_502_3@
@H_502_3@ }@H_502_3@
@H_502_3@ return mapping.findForward("success");@H_502_3@
@H_502_3@}@H_502_3@
}@H_502_3@@H_502_3@
success.jsp(@H_502_3@显示目录树页面@H_502_3@)@H_502_3@:@H_502_3@@H_502_3@
<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>@H_502_3@
<%@H_502_3@
String path = request.getContextPath();@H_502_3@
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";@H_502_3@
%>@H_502_3@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">@H_502_3@
<html>@H_502_3@
<head>@H_502_3@
<base href="<%=basePath%>">@H_502_3@
<title>My JSP 'goto.jsp' starting page</title>@H_502_3@
<Metahttp-equiv="pragma" content="no-cache">
<Metahttp-equiv="cache-control" content="no-cache">
<Metahttp-equiv="expires" content="0">
<Metahttp-equiv="keywords" content="keyword1,keyword3">
<Metahttp-equiv="description" content="This is my page">
<scripttype="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript"src="js/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="js/jquery.ztree.excheck-3.5.js"></script>
<linkrel="stylesheet" href="css/demo.css"type="text/css" />
<link rel="stylesheet"href="css/zTreeStyle/zTreeStyle.css" type="text/css" />@H_502_3@
<SCRIPTtype="text/javascript">@H_502_3@
var@H_502_3@setting@H_502_3@= {@H_502_3@
data:{@H_502_3@
key:{@H_502_3@
title:"t"@H_502_3@
},@H_502_3@
simpleData:{@H_502_3@
enable:true,@H_502_3@
idKey:"id",@H_502_3@
pIdKey:"pId",@H_502_3@
rootPId:0@H_502_3@
}@H_502_3@
},@H_502_3@
callback:{@H_502_3@
onClick:onClick@H_502_3@
}@H_502_3@
};@H_502_3@
varzNodes@H_502_3@=<%=(String)request.getAttribute("jsondata")%>;
@H_502_3@functionbeforeClick(treeId,treeNode,clickFlag) {
}
functiononClick@H_502_3@(event,treeId,clickFlag) {@H_502_3@
@H_502_3@//treeId@H_502_3@是目录树的@H_502_3@id@H_502_3@,即@H_502_3@treeDemo@H_502_3@
@H_502_3@//alert('@H_502_3@目录树的@H_502_3@id:'+treeId);@H_502_3@
@H_502_3@//alert('@H_502_3@名称:@H_502_3@'+treeNode.name);@H_502_3@
@H_502_3@alert('@H_502_3@父节点@H_502_3@id@H_502_3@:@H_502_3@'+treeNode.pId);@H_502_3@
@H_502_3@alert('@H_502_3@节点@H_502_3@id@H_502_3@:@H_502_3@'+treeNode.id);@H_502_3@
@H_502_3@//alert('@H_502_3@选中标示@H_502_3@:'+clickFlag);@H_502_3@
@H_502_3@}@H_502_3@
@H_502_3@$(document).ready(function(){@H_502_3@
@H_502_3@$.fn.zTree.init($("#treeDemo"),setting,zNodes);@H_502_3@
@H_502_3@});@H_502_3@
@H_502_3@//-->@H_502_3@
@H_502_3@</SCRIPT>@H_502_3@
</head>@H_502_3@
<body>@H_502_3@
<div>@H_502_3@
<ul id="treeDemo" class="ztree">@H_502_3@
</ul></div>@H_502_3@
</body>@H_502_3@
</html>@H_502_3@@H_502_3@
Menu.java@H_502_3@(工具类@H_502_3@javabean@H_502_3@):@H_502_3@@H_502_3@
package com.nns.util;
import java.util.ArrayList;
import java.util.List;
public class Menu {
private String id = ""; //@H_502_3@当前节点@H_502_3@id
private String pid = ""; //@H_502_3@父级节点@H_502_3@ id
private String name = "";//@H_502_3@节点名称@H_502_3@
private String t=""; // @H_502_3@提示@H_502_3@
//private List<Menu> menus = new ArrayList<Menu>();
//@H_502_3@可根据需要添其他属性@H_502_3@ public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getT() { return t; } public void setT(String t) { this.t = t; } /* public List<Menu> getMenus() { return menus; } public void setMenus(List<Menu> menus) { this.menus = menus; } */ } @H_502_3@@H_502_3@