Javascript 樹形菜單



    

 

 


   用Hibernate+Struts+Spring做了一個簡單的樹形菜單..通過dtree.js組件顯示樹形菜單。

   具體Sql代碼以及java後臺的實現代碼都貼出來.以供參考..

   數據庫表的代碼:

 

  

Sql代碼  收藏代碼
  1. --權限涉及的如下五個表;  
  2. drop table roles;  
  3. drop table user_roles;  
  4. drop table menus;  
  5. drop table rols_menus;  
  6. drop table users;  

     

      

  

Sql代碼  收藏代碼
  1. --用戶表;  
  2. create table users(  
  3.      --主鍵,  
  4.      userid number primary key not null,  
  5.      username varchar2(50)not null,  
  6.      userpass varchar2(20)not null,  
  7.      --外鍵,所屬部門;  
  8.      deptid number not null,    
  9.      --生日;  
  10.      birthday date not null,  
  11.      sex varchar2(4)not null,  
  12.      age number not null,  
  13.      --手機;  
  14.      combine varchar2(11)null,  
  15.      email varchar2(50)null,  
  16.      address varchar2(50)null,  
  17.      zipcode varchar2(8)null,  
  18.      remark varchar2(50)null,  
  19.      --創建users表的所屬部門的外鍵;  
  20.      foreign key(deptid) references dept(deptid)  
  21. )  
  22.   
  23. --創建序列;  
  24. drop sequence seq_users;  
  25. create sequence seq_users;  
  26.   
  27. insert into users values(seq_users.nextval,'周海濤','123456',1,sysdate,'男',21,'13973312067','[email protected]','湖南株洲縣','412109','暫無備註');  

 

  

Sql代碼  收藏代碼
  1. --創建角色表;  
  2. create table roles(  
  3.     rolesid number primary key not null,                --主鍵角色編號;  
  4.     rolename varchar2(20)not null                         --角色名稱;    
  5. )  
  6. drop sequence seq_roles;  
  7. create sequence seq_roles;  
  8.   
  9. insert into roles values(seq_roles.nextVal,'管理員');  
  10. insert into roles values(seq_roles.nextVal,'程序員');  
  11. insert into roles values(seq_roles.nextVal,'項目經理');  
  12. insert into roles values(seq_roles.nextVal,'公司總裁');  
  13. insert into roles values(seq_roles.nextVal,'副總經理');  
  14. insert into roles values(seq_roles.nextVal,'前臺接待');  
  15. insert into roles values(seq_roles.nextVal,'產品銷售');  
  16. insert into roles values(seq_roles.nextVal,'普通用戶');  

 

Sql代碼  收藏代碼
  1. --用戶角色中間表;  
  2. create table user_roles(  
  3.     urId number references users(userid),     --<外鍵>用戶編號;  
  4.     rolesid number references roles(rolesid)  --<外鍵>角色編號;  
  5. );  
  6.   
  7. insert into user_roles values(1,1);  
  8. insert into user_roles values(2,2);  
  9. insert into user_roles values(3,3);  
  10. insert into user_roles values(4,4);  
  11. insert into user_roles values(5,8);  
Sql代碼  收藏代碼
  1. --菜單表;  
  2. create table menus(                   
  3.     menusid number primary key not null,                          --菜單編號;   
  4.     menusname varchar2(20)not null,                                --菜單姓名;   
  5.     menusparent number not null,                                      --父菜單編號;  
  6.     menusurl varchar2(150) null,                                        --菜單鏈接;  
  7.     isshow number not null                                                 --是否顯示;  
  8. )  
  9. drop sequence seq_menus;  
  10. create sequence seq_menus;  
  11.   
  12. --'-1'代表根目錄 ; --1代表根目錄下; 2--代表1的跟目下, --3代表-同級目錄;  
  13. insert into menus values(seq_menus.nextVal,'功能菜單',-1,'',1);  
  14. insert into menus values(seq_menus.nextVal,'系統管理',1,'',1);  
  15. insert into menus values(seq_menus.nextVal,'用戶管理',2,'',1);  
  16.   
  17. insert into menus values(seq_menus.nextVal,'考勤管理',3,'',1);  
  18. insert into menus values(seq_menus.nextVal,'個人設置',3,'',1);  
  19. insert into menus values(seq_menus.nextVal,'短信管理',3,'',1);  
  20. insert into menus values(seq_menus.nextVal,'通訊錄管理',3,'',1);  
  21. insert into menus values(seq_menus.nextVal,'權限管理',3,'',1);  
  22. insert into menus values(seq_menus.nextVal,'公告管理',3,'',1);  
  23.   
  24. insert into menus values(seq_menus.nextVal,'考勤查詢',4,'timecard.do?p=findtimecardSelect',1);  
  25. insert into menus values(seq_menus.nextVal,'外出查詢',4,'timecard.do?p=findpersonoutqin',1);  
  26. insert into menus values(seq_menus.nextVal,'上班考勤',4,'timecard.do?p=kaoqin',1);  
  27. insert into menus values(seq_menus.nextVal,'外出登記',4,'timecard.do?p=goout',1);  
  28.   
  29. insert into menus values(seq_menus.nextVal,'密碼修改',5,'geRenSheZhi.do?p=mimaxiugai',1);  
  30. insert into menus values(seq_menus.nextVal,'用戶資料',5,'geRenSheZhi.do?p=yonghuziliao',1);  
  31. insert into menus values(seq_menus.nextVal,'查看用戶',5,'geRenSheZhi.do?p=chakanyonghu',1);  
  32.   
  33. insert into menus values(seq_menus.nextVal,'發送短信',6,'shortmessage.do?p=fasongduanxin',1);  
  34. insert into menus values(seq_menus.nextVal,'已收短信',6,'shortmessage.do?p=yishouduanxin',1);  
  35. insert into menus values(seq_menus.nextVal,'已發短信',6,'shortmessage.do?p=yifaduanxinxi',1);  
  36.   
  37. insert into menus values(seq_menus.nextVal,'添加聯繫人',7,'linkman.do?p=tianjiailianxiren',1);  
  38. insert into menus values(seq_menus.nextVal,'添加新類型',7,'linkman.do?p=insertNewType',1);  
  39. insert into menus values(seq_menus.nextVal,'刪除聯繫人',7,'linkman.do?p=shanchulianxiren',1);  
  40. insert into menus values(seq_menus.nextVal,'查找聯繫人',7,'linkman.do?p=chazhaolianxiren',1);  
  41.   
  42. insert into menus values(seq_menus.nextVal,'查詢權限',8,'popedom.do?p=select_grant',1);  
  43. insert into menus values(seq_menus.nextVal,'添加權限',8,'popedom.do?p=insert_grant',1);  
  44. insert into menus values(seq_menus.nextVal,'修改權限',8,'popedom.do?p=update_grant',1);  
  45.   
  46. insert into menus values(seq_menus.nextVal,'發送公告',9,'proclaim.do?p=send_proclaim',1);  
  47. insert into menus values(seq_menus.nextVal,'已發公告',9,'proclaim.do?p=alreadysend',1);  
  48. insert into menus values(seq_menus.nextVal,'公告待審',9,'proclaim.do?p=proclaim_cognizance',1);  
  49. insert into menus values(seq_menus.nex tVal,'已收公告',9,'proclaim.do?p=receipt_receipt',1);  

 

   

Sql代碼  收藏代碼
  1. --角色菜單中間表;  
  2. create table rols_menus(  
  3.     rolesid number references roles(rolesid),            --<外鍵>角色編號;  
  4.                 menusid number references menus(menusid)     --<外鍵>菜單編號;  
  5. )  
  6.   
  7.   
  8. drop sequence seq_rols_menus;  
  9. create sequence seq_rols_menus;  
  10.   
  11. insert into rols_menus values(1,1);  
  12. insert into rols_menus values(1,2);  
  13. insert into rols_menus values(1,3);  
  14. insert into rols_menus values(1,4);  
  15. insert into rols_menus values(1,5);  
  16. insert into rols_menus values(1,6);  
  17. insert into rols_menus values(1,7);  
  18. insert into rols_menus values(1,8);  
  19. insert into rols_menus values(1,9);  
  20. insert into rols_menus values(1,10);  
  21. insert into rols_menus values(1,11);  
  22. insert into rols_menus values(1,12);  
  23. insert into rols_menus values(1,13);  
  24. insert into rols_menus values(1,14);  
  25. insert into rols_menus values(1,15);  
  26. insert into rols_menus values(1,16);  
  27. insert into rols_menus values(1,17);  
  28. insert into rols_menus values(1,18);  
  29. insert into rols_menus values(1,19);  
  30. insert into rols_menus values(1,20);  
  31. insert into rols_menus values(1,21);  
  32.   
  33. insert into rols_menus values(1,22);  
  34. insert into rols_menus values(1,23);  
  35. insert into rols_menus values(1,24);  
  36. insert into rols_menus values(1,25);  
  37. insert into rols_menus values(1,26);  
  38. insert into rols_menus values(1,27);  
  39. insert into rols_menus values(1,28);  
  40. insert into rols_menus values(1,29);  
  41. insert into rols_menus values(1,30);  
  42.   
  43. insert into rols_menus values(4,1);  
  44. insert into rols_menus values(4,2);  
  45. insert into rols_menus values(4,3);  
  46. insert into rols_menus values(4,4);  
  47. insert into rols_menus values(4,5);  
  48. insert into rols_menus values(4,6);  
  49. insert into rols_menus values(4,7);  
  50. insert into rols_menus values(4,10);  
  51. insert into rols_menus values(4,11);  
  52. insert into rols_menus values(4,12);  
  53. insert into rols_menus values(4,15);  
  54. insert into rols_menus values(4,16);  
  55. insert into rols_menus values(4,17);  
  56. insert into rols_menus values(4,18);  
  57. insert into rols_menus values(4,19);  

 

 

   BaseDAO中的查詢方法.

Java代碼  收藏代碼
  1. /** 
  2.      * 分頁查找; 
  3.      * @param hql 
  4.      * @param page 
  5.      * @param size 
  6.      * @param objects 
  7.      * @return 
  8.      */  
  9.     public List pageQuery(final String hql,final Integer page,final Integer size,final Object...objects){  
  10.   
  11.         return super.getHibernateTemplate().executeFind(new HibernateCallback(){  
  12.             //一個匿名內部類;  
  13.             public Object doInHibernate(Session session)  
  14.                     throws HibernateException, SQLException {  
  15.                 // TODO Auto-generated method stub  
  16.                 Query query=session.createQuery(hql);  
  17.                 if(objects!=null){  
  18.                     for(int i=0;i<objects.length;i++){  
  19.                         query.setParameter(i, objects[i]);  
  20.                     }  
  21.                 }  
  22.                   
  23.                 if(page!=null&& size!=null){  
  24.                     query.setFirstResult((page-1)*size).setMaxResults(size);  
  25.                 }  
  26.                   
  27.                 return query.list();  
  28.             }  
  29.               
  30.         });  
  31.     }  
  32.       

   

 

 

service中的方法,根據用戶名獲取所有菜單;

   

Java代碼  收藏代碼
  1. /** 
  2.      * 根據用戶名得到菜單     */  
  3.     public Set selectByName(String name) {  
  4.         // TODO Auto-generated method stub  
  5.           String hql="From Menus as M join fetch M.roleses R join fetch R.userses U where U.username=?";  
  6.         List list=iuser.pageQuery(hql, nullnull,name);  
  7.         //把list轉成set集合;  
  8.         Set set=new HashSet(list);  
  9.         return set;  
  10.     }  

    

 

  

 

 

   在Action中. 調用service中的方法。根據用戶查找得到菜單;保存到session中。

Java代碼  收藏代碼
  1. Set menus=iser.selectByName(name);  
  2.    System.out.println("菜單項:"+menus);  
  3.    //把菜單項設置到session中;  
  4.    request.getSession().setAttribute("MeunsList",menus);  
  5.       

  

 

在JSP也頁面使用dTree的方式是:

Html代碼  收藏代碼
  1. <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>  
  2. <%@taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <script type="text/javascript" src="dtree/dtree.js"></script>  
  4. <link rel="styleSheet" href="dtree/dtree.css" type="text/css"/>  
  5.   
  6. <html>  
  7. <head>  
  8. <meta http-equiv="Content-Type" content="text/html; charset=GBK">  
  9. <title>左邊的框架頁面</title>  
  10.   
  11. <!-- 定義樹 -->  
  12. <script>  
  13.     var d=new dTree('d');  
  14.     d.config.check=false;    //沒有複選框  
  15.     d.config.useIcons =true  //有圖片;  
  16. </script>  
  17.   
  18. <style type="text/css">  
  19.     *{  
  20.         font-size:12px;  
  21.         color:black;  
  22.     }  
  23. </style>  
  24. </head>  
  25. <body>  
  26.     <form  method="post" name="myform">  
  27.         <center>  
  28.         </center>  
  29.             <!-- 遍歷,添加節點; -->  
  30.             <c:forEach items="${MeunsList}" var="m">  
  31.                  <script>  
  32.                     //自己的菜單編號,父節點編號,名稱,鏈接,提示,顯示位置  
  33.                     d.add(${m.menusid},${m.menusparent},'${m.menusname}','${m.menusurl}','歡迎使用OA辦公管理系統!','right');  
  34.                  </script>  
  35.             </c:forEach>  
  36.               
  37.             <!--顯示樹-->  
  38.             <script>  
  39.                 document.write(d);  
  40.                 d.openAll();  
  41.             </script>  
  42.     </form>  
  43. </body>  
  44. </html> 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章