1.导入 dtree文件 dtree.css img文件夹 dtree.js

2. 建立对应 的数据库 1 父ID name id

3 建立连接类 mysql 例子


package com.dtree.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;  import com.opensymphony.xwork2.ActionSupport;  public class ConnectionManager {           private static final String driver ="org.gjt.mm.mysql.Driver";              private static final String url = "jdbc:mysql://localhost:3306/yuqing?useUnicode=true&characterEncoding=utf8";      private static final String username="root";      private static final String userpwd="zfn";            public static Connection getConnection(){                    Connection conn=null;          try{              Class.forName(driver);              conn=DriverManager.getConnection(url,username,userpwd);                       }catch(Exception ex){              ex.printStackTrace();          }          return conn;      }    public static void closeConnection(Connection conn){        try{            if(conn!=null && (!conn.isClosed())){                conn.close();            }        }catch(SQLException ex){            ex.printStackTrace();        }    }    public static void closeResultSet(ResultSet res){        try{            if(res!=null){                res.close();                res=null;            }        }catch(SQLException ex){            ex.printStackTrace();        }    }    public static void closeStatement(PreparedStatement stmt){        try{            if(stmt!=null){                stmt.close();            }        }catch(SQLException ex){            ex.printStackTrace();        }    } }


4. 实现类


package com.dtree.test;  import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;     public class OrganizationService {                private Connection conn;        private PreparedStatement titleQuery;        private ResultSet results;             public  List getOrganization(){         List list = new ArrayList();                  try {                      conn=ConnectionManager.getConnection();                      String sql="select * from treetest";                          titleQuery=conn.prepareStatement(sql);                         results=titleQuery.executeQuery();                                          while(results.next()){                             Organization org1 = new Organization();                             org1.setId(results.getInt("id"));                             org1.setParentId(results.getInt("parentId"));                             org1.setName(results.getString("name"));                                                                           list.add(org1);                     }                                                               } catch (SQLException e) {                     // TODO Auto-generated catch block                     e.printStackTrace();                 }                 finally{                                           ConnectionManager.closeResultSet(results);                      ConnectionManager.closeStatement(titleQuery);                      ConnectionManager.closeConnection(conn);                 }                                  return list;                       }          public int insertUser1(String name) {            int num=0;            try {                  conn=ConnectionManager.getConnection();                  String sql="insert into treetest (parentId,name,pid)values(0,?,1)";                   titleQuery=conn.prepareStatement(sql);                  titleQuery.setString(1,name);                               num=titleQuery.executeUpdate();                              } catch (SQLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }finally{                  ConnectionManager.closeResultSet(results);                  ConnectionManager.closeStatement(titleQuery);                  ConnectionManager.closeConnection(conn);             }                        return num;        }                public int insertUser2(int parentId,String name) {            int num=0;            try {                  conn=ConnectionManager.getConnection();                  String sql="insert into treetest (parentId,name,pid)values(?,?,2)";                   titleQuery=conn.prepareStatement(sql);                  titleQuery.setInt(1,parentId);                  titleQuery.setString(2,name);                               num=titleQuery.executeUpdate();                              } catch (SQLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }finally{                  ConnectionManager.closeResultSet(results);                  ConnectionManager.closeStatement(titleQuery);                  ConnectionManager.closeConnection(conn);             }                        return num;        }     public  List getOrganization1(){         List list = new ArrayList();                  try {                      conn=ConnectionManager.getConnection();                      String sql="select * from treetest where pid=1";                          titleQuery=conn.prepareStatement(sql);                         results=titleQuery.executeQuery();                                          while(results.next()){                             Organization org1 = new Organization();                             org1.setId(results.getInt("id"));                             org1.setParentId(results.getInt("parentId"));                             org1.setName(results.getString("name"));                                                                           list.add(org1);                     }                                                               } catch (SQLException e) {                     // TODO Auto-generated catch block                     e.printStackTrace();                 }                 finally{                     ConnectionManager.closeResultSet(results);                      ConnectionManager.closeStatement(titleQuery);                      ConnectionManager.closeConnection(conn);                 }                                  return list;         } }


5. 实体类


package com.dtree.test;  public class Organization {     private int id;          private String name;          private int parentId;      public int getId() {         return id;     }      public void setId(int id) {         this.id = id;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public int getParentId() {         return parentId;     }      public void setParentId(int parentId) {         this.parentId = parentId;     } }


6 action


package com.dtree.test; import java.util.ArrayList; import java.util.List;  import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;  public class DtreeAction extends ActionSupport {          List list = new ArrayList();     private String name = null;     private String name2 = null;     private int parentId;     public int getParentId() {         return parentId;     }     public void setParentId(int parentId) {         this.parentId = parentId;     }     public String getName2() {         return name2;     }     public void setName2(String name2) {         this.name2 = name2;     }     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }     public String execute() {         OrganizationService service = new OrganizationService();          list = service.getOrganization();              return SUCCESS;     }          public String insertname1() {         OrganizationService service = new OrganizationService();         System.out.print(name);         int num=service.insertUser1(name);              return SUCCESS;     }          public String insertname2() {         OrganizationService service = new OrganizationService();         System.out.println(parentId);         System.out.println(name);         int num=service.insertUser2(parentId, name2);              return SUCCESS;     }          public List getList() {         return list;     }     public void setList(List list) {         this.list = list;     } }


6 struts xml


<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts> <package name="dtree"  namespace="/dtree" extends="struts-default"> <action name="dtree" class="com.dtree.test.DtreeAction"> <result name="success">/dtree.jsp</result> </action>  <action name="insertname1" class="com.dtree.test.DtreeAction" method="insertname1"> <result name="success">/dtree.jsp</result> </action>   <action name="insertname2" class="com.dtree.test.DtreeAction" method="insertname2"> <result name="success">/dtree.jsp</result> </action>   </package>  </struts>


7 显示树形菜单 jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ taglib prefix="s" uri="/struts-tags" %>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>   <head>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">     <base href="<%=basePath%>">          <title>树形结构例子</title>                                             <link rel="stylesheet" type="text/css" href="styles.css">     <link rel="StyleSheet" href="css/dtree.css" type="text/css" />     <script type="text/javascript" src="script/dtree.js"></script>   </head>      <body>   <div class="dtree">   <script type="text/javascript">     d = new dTree('d');     //构造根节点     d.add(0,-1,'学校人员分布');          <s:iterator value="list">     d.add(<s:property value="id"/>,<s:property value="parentId"/>,'<s:property value="name"/>','example01.html');     </s:iterator>     document.write(d);   </script>  </div>   </body> </html>


8 动态增加 树形菜单列的jsp


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page import="com.dtree.test.*" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%           &nbsp;%> <html> &nbsp; <head>&nbsp; &nbsp; &nbsp; <title></title> &nbsp; &nbsp; <script type="text/javascript"> &nbsp; &nbsp; &nbsp; &nbsp; function sbmt(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.fm.action="dtree/insertname1.action"; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fm.submit(); &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function sbmt2(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;document.fm.action="dtree/insertname2.action"; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fm.submit(); &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</script>   &nbsp; </head> &nbsp;&nbsp; &nbsp; <body>   <form name="fm" method="post" action=""> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <p>m > <br></p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <p>&nbsp;</p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <p>&nbsp;</p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <p>&nbsp;</p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <p>&nbsp;</p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <table width="846" height="63" border="0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <tr> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <th width="118" scope="col"><div align="center">插入一级名称</div></th> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <th width="217" scope="col"><div align="center"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="name"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></th> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <th width="185" scope="col">&nbsp;</th> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <th width="239" scope="col"><div align="center"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="button" onClick="return sbmt()" name="Submit" value="提交"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></th> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <th width="65" scope="col">&nbsp;</th> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tr> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <tr> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><div align="center">插入二级名称</div></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><div align="center"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="name2"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><select name="parentId" > &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<% &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OrganizationService o=new OrganizationService(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;List list=o.getOrganization1(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int i=0;i<list.size();i++){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Organization o1=(Organization)list.get(i); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; %> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <option value=<%=o1.getId() %> selected><%=o1.getName() %></option> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<%} %> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </select> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><div align="center"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="button" onClick="return sbmt2<span style="white-space:pre">    </span>()" name="Submit2" value="提交"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td>&nbsp;</td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tr> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <tr> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><div align="center">插入三级名称</div></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><div align="center"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="name3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><select name="select2"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </select></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><div align="center"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="button" name="Submit3" value="提交"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td>&nbsp;</td> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tr> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </table> &nbsp; &nbsp; &nbsp; &nbsp; </form>   &nbsp; </body> </html>