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','haitao7290783@126.com','湖南株洲县','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> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值