2022年ssh框架下用ajax动态从数据库查询的菜单 .pdf
《2022年ssh框架下用ajax动态从数据库查询的菜单 .pdf》由会员分享,可在线阅读,更多相关《2022年ssh框架下用ajax动态从数据库查询的菜单 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、动态菜单的构建,即使用ajax 异步与服务器通信,实时以局部刷新的方式从数据库取出菜单。这里把我的实现记录下来,以备以后维护升级。1、首先是model 层publicclassTreeMenu private Long id ; private Long parentID; private String menuName ; private String url;setter,getter省略2、Dao 层数据库映射 数据库的操作主要用到通过角色来取出菜单,判断是否有子菜单的操作按角色取出所有菜单public ListgetTreeMenuByRoleID(longroleID) return
2、getHibernateTemplate().find(select b from Role a join a.treeMenu b where a.id=?, newObjectroleID); 按角色取出根菜单public ListgetFirstLeaveMenuByRoleID(longroleID) r eturngetHibernateTemplate().find(select b from Role a join a.treeMenu b where a.id=? andb.parentID=0, new ObjectroleID); 判断是否有子菜单publicboolean
3、hasChild(long id) return !getHibernateTemplate().find(from TreeMenu a where a.parentID=?, new Objectid).isEmpty(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 数据库中存的结构如下所示:3、思路及关键实现下面将要讲到关键的地方,首先就得把思路说一下,思路是先显示parentID为 0 的菜单, 也就是每个菜单的根
4、部。当点击根菜单的时候,再将下面的子菜单通过异步的方式取出。效果如下:这里的话,我就自顶向下的方式说明。首先是前台的jsp,主要代码如下:ul id =parent class=aimg id =downDetail src = /images/downDetail.jpg onclick=display( , );align=topheight=10px/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 表格的第一列存的是菜单
5、,第二列存的是箭头。菜单是通过一个List迭代出来的。 这里的关键是用到一个js 。js代码如下:var xmlHttp; var createMenuHistory=new Array(); var userIDAllScope; functioncreateXmlHttp() if(window.ActiveXObject) xmlHttp=new ActiveXObject(Microsoft.XMLHTTP); elseif(window.XMLHttpRequest) xmlHttp=new XMLHttpRequest(); returnxmlHttp; function disp
6、lay(userID,parentID) userIDAllScope=userID; /alert(userID+parentID);var flag=true; /alert(createMenuHistory.length);for( var i=0;icreateMenuHistory.length;i+) /alert(is not frist);/alert(createMenuHistoryi);if(createMenuHistoryi=parentID) flag=false; break; if(flag=true) /alert(is not exists+ +flag)
7、;if(createMenuHistory.length=0) /alert(is frist);createMenuHistory0=parentID; else createMenuHistorycreateMenuHistory.length=parentID; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - var queryString=userID=+userID+&parentID=+parentID; xmlHt
8、tp=createXmlHttp(); /alert(xmlHttp);xmlHttp.open(POST , jsonSubMenu, true); xmlHttp.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xmlHttp.onreadystatechange=getSubMenuComplete; /alert(it is worked);xmlHttp.send(queryString); else /alert(is exists+ +flag);var target=document.getE
9、lementById(parent+parentID); var showHide=target.className; if(showHide=show | showHide=hide) target.className=a; showHide=a; /alert(target.getAttribute(id)+ +showHide);/alert(child.length);if(showHide=b) target.className=a; var child=target.childNodes for( var i=1;ichild.length;i+) childi.className
10、=show; elseif(showHide=a) target.className=b; var child=target.childNodes for( var i=1;ichild.length;i+) if(childi.tagName!=SPAN ) childi.className=hide; functiongetSubMenuComplete() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - if(xmlHtt
11、p.readyState=4 &xmlHttp.status=200) eval(json=+xmlHttp.responseText+;); /alert(xmlHttp.responseText);for( var i=0;ijson.menus.length;i+) vartarget=document.getElementById(parent+json.menusi.parentID); var ulElmt= document.createElement(UL ); var id=parent+json.menusi.id; ulElmt.setAttribute(id,id);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年ssh框架下用ajax动态从数据库查询的菜单 2022 ssh 框架 ajax 动态 数据库 查询 菜单
限制150内