闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳婀遍埀顒傛嚀鐎氼參宕崇壕瀣ㄤ汗闁圭儤鍨归崐鐐烘偡濠婂啰绠荤€殿喗濞婇弫鍐磼濞戞艾骞堟俊鐐€ら崢浠嬪垂閸偆顩叉繝闈涱儐閻撴洘绻涢崱妤冪缂佺姵濞婇弻宥堫檨闁告挻鐟х划璇差吋婢跺﹦锛熼梻渚囧墮閸楁洟宕堕澶嬫櫖濠电姴锕ら幊鎰版倿婵傚憡鐓熼幖鎼灣缁夌敻鏌涚€b晝鍔嶇紒鍌氱Т楗即宕奸悢鍝勫箰闂備礁鎲¢崝鎴﹀礉瀹€鍕劦妞ゆ帒鍊归弳顒侇殽閻愯尙绠婚柛鈺佸瀹曟ǹ顦寸紒鐘宠壘椤啴濡堕崱妤€顫囬梺绋匡攻濞茬喎顕i幖浣哥婵犫偓鍨归柊锝呯暦閹偊妾梻濠庡墻閸撶喖寮婚悢纰辨晩闁伙絽鏈崳鏉款渻閵堝啫鐏俊顐㈠暙閻g兘鎮㈤悡骞晠鏌曟径鍫濃偓鏇⑺夊鑸电厽闁绘柨鎽滈惌濠勭磼缂佹ê娴€规洘宀搁獮鎺楀箻閸撲胶妲囨繝娈垮枟閿曗晠宕滃☉銏╂晣婵炲樊浜濋埛鎴︽煙缁嬪灝顒㈤柣鎾卞劦閺屾稑螣閼姐倗鐓夐悗瑙勬礃閸ㄥ潡鐛Ο鑲╃<婵☆垳绮悵鏍⒒娓氣偓閳ь剛鍋涢懟顖涙櫠閹绢喗鐓欐い鏇楀亾缂佺姵鐗犲顐﹀箻缂佹ê浜归梺鑲┾拡閸擄箓宕ョ€n偂绻嗛柣鎰典簻閳ь剚鐗曡灋濞达綀顫夐崣蹇涙煏閸繍妯堥柡浣革躬閺岋繝宕堕妷銉т痪闂佹娊鏀辩敮鎺楁箒闂佹寧绻傞幊蹇涘箟閸濄儳纾煎璺鸿嫰閸斿菐閸パ嶈含妞ゃ垺娲熸慨鈧柍銉ュ帠濞n噣姊绘担绛嬪殐闁哥姵宀稿畷鎴﹀Χ婢跺﹥鐎梺鍛婂姦閸犳牜澹曢崗鍏煎弿婵☆垰娼¢崫娲煟閹垮嫮绉慨濠勭帛閹峰懘宕妷顬劌鈹戦埥鍡椾簻婵炵》绻濋獮鍐倷閻戞ɑ娅囬梺绋挎湰缁嬫垶绂嶅Δ鍛拺闂傚牊渚楀Σ鎾煛閸涱喚鐭掗柟顕嗙節閹垽宕楅懖鈺佸箰闂備焦鎮堕崕顕€寮插☉娆戭浄婵犲﹤鐗婇悡鍐喐濠婂牆绀堟繛鍡楅獜閼板潡姊洪鈧粔鎾倿閸偁浜滈柟鍝勭Х閸忓矂鏌涢悢鍝ュ弨闁哄瞼鍠栧畷娆撳Χ閸℃浼�     婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚敐澶婎潊闁绘ê妯婂Λ宀勬⒑鏉炴壆顦﹂柨鏇ㄤ邯瀵鍨鹃幇浣告倯闁硅偐琛ラ埀顒€纾鎰版⒒閸屾艾鈧悂宕戦崱娑樺瀭闂侇剙绉存闂佸憡娲﹂崹浼村礃閳ь剟姊洪棃娴ゆ盯宕ㄩ姘瑢缂傚倸鍊搁崐宄懊归崶鈺冪濞村吋娼欑壕瑙勭節闂堟侗鍎忛柦鍐枛閺屻劌鈹戦崱鈺傂ч梺鍝勬噺閻擄繝寮诲☉妯锋闁告鍋為悘宥夋⒑閸︻厼鍘村ù婊冪埣楠炲啫螖閸愨晛鏋傞梺鍛婃处閸撴盯藝閵娾晜鈷戠紓浣股戦幆鍫㈢磼缂佹ḿ绠撴い鏇稻缁绘繂顫濋鐐扮盎闂佽崵鍋炵粙鍫ュ焵椤掆偓閸樻牗绔熼弴鐐╂斀闁绘劖娼欓悘锔姐亜韫囧骸宓嗘鐐差儔閺佸啴鍩€椤掑倸顥氶柛褎顨嗛悡娑㈡煕閵夈垺娅呴柡瀣⒒缁辨帡鎮╅懡銈囨毇闂佸搫鐬奸崰鎾诲焵椤掍胶鈯曞畝锝呮健楠炲﹪宕橀鐣屽幗闂婎偄娲ら敃銉モ枍婵犲洦鐓涚€光偓鐎n剛袦濡ょ姷鍋炲玻鍧楀焵椤掑嫭娑ч柟璇х節瀹曟艾鈽夐姀鈾€鎷洪梺鍛婄箓鐎氼厼锕㈡导瀛樼厽闁冲搫锕ら悘锕傛煟濞戝崬娅嶇€规洖鐖奸、妤呭焵椤掑倻鐭嗛柛宀€鍋為悡鏇熺節闂堟稑顏╅柛鏃€绮撻弻锟犲川椤撴粌浠┑顔硷功缁垶骞忛崨瀛樻優闁荤喐澹嗛濂告⒒娴g儤鍤€闁硅绻濋獮鍐磼閻愵亖鍋撴笟鈧浠嬪Ω閵壯呯嵁濠电姷鏁告慨瀵糕偓娑掓櫇缁辩偞鎯旈埦鈧弨浠嬫煟閹邦剙绾ч柍缁樻礀闇夋繝濠傚閻帗顨ラ悙鏉戠伌闁硅櫕绮撻幃娆撴焻濞戞氨娉块梻鍌欐祰椤鐣峰Ο琛℃灃婵炴垶鐟ч々閿嬬節婵犲倸鏆婇柡鈧禒瀣厓闁宠桨绀侀弳鐐烘煏閸ャ劎绠栭柟渚垮妽缁绘繈宕ㄩ鍛摋闂備胶鎳撳鍫曞箰閸愯尙鏆﹂柣鏃傗拡閺佸洭鏌i弮鍋冲綊寮查幖浣光拺閻犲洤寮堕崬澶嬨亜椤愩埄妲搁悡銈夋煟閺傛崘鑽$紓鍌涙皑閹叉悂寮崼娑掑亾娴e壊娼╅悹杞扮秿閵娾晜鐓ラ柡鍌氱仢閳锋棃鏌i敃鈧悧鎾愁潖濞差亜绠归柣鎰絻婵矂姊洪崨濠冪叆缂佸鎸抽崺銏狀吋婢跺⿴娼婇梺闈涚墕濡矂骞忓ú顏呯厽闁绘ê鍘栭懜顏堟煕閺傝儻瀚伴柍璇茬Ч楠炲洭鎮ч崼銏犲箥闂備礁鎲¢崹顖炲磹閺嶎偀鍋撳鐐

45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:使用struts menu动态从数据库建树型菜单设计的方法

使用struts menu动态从数据库建树型菜单设计的方法

2016-09-03 18:33:53 来源:www.45fan.com 【

使用struts menu动态从数据库建树型菜单设计的方法

关于struts-menu,中文资源只有蓝色天空网站站长的两篇文章广为传播,在此表示感谢。

1.“源码分析”见http://champion.ewuxi.com/old/opensource/struts-new/strutsmenu.htm

2.“ibatis+少量代码动态建树“见 http://www.ewuxi.cn/ithome/develop/deve_languagedata/200406/489.html

我们项目中用到几种树形菜单,如组织机构与部门,系统模块,这都是基于一张单表的,我自己花了一上午时间想了一个设计,很不成熟,希望大家告诉我哪里不妥,我改使用struts menu动态从数据库建树型菜单设计的方法

使用struts-menu2.3 以及 ibatis2.0,另外,我还用到了spring,类图如下:

使用struts menu动态从数据库建树型菜单设计的方法

设计思路:MeunRule很显然是一个策略模式,基于单表构造一棵树时,为满足开闭原则,易变的部分有两处,一是对应的sqlMap名称,另一个节点所附加的规则(包括url action target等),规则一般由节点id等自身信息决定,自然地,MenuRule就包括这两个部分,当然,如果你在表中已经详细记录了这些字段,就没有必要再作这一步工作了,我们的表设计中是不包括这些的。

MenuTree类需要spring容器注入两个属性,一是menuDao,另一个是menuRule.很显示,一个类型的菜单对应一个MenuTree实例,在此类中主要的方法如下:

public MenuRepository getMenuRepository(Object paramObject){

MenuRepository repository = new MenuRepository();

List items = menuDao.getMenuItemList(menuRule.getSqlMapId(),paramObject);

MenuItem item;

for (int i=0;i<items.size(); i++){

item = (MenuItem)items.get(i);

//规则解析

menuRule.processActionUrl(item);

repository.addMenu(item.getMeun());

if (item.getParentName()!=null){

MenuComponent father = repository.getMenu(item.getParentName());

item.getMeun().setParent(father);

}

}

return repository;

}

MenuItem这个类是MenuComponent的一个包装器,为了处理父子关系。

最后,附上客户端调用的步骤:

1.创建具体的MenuRule子类,每一类型的树菜单一个;

2.在根配置文件中装配每一类型的TreeMeun对象,注入menuDao属性和menuRule属性;

3.要用系统的serviceLocater或上下文bean工厂类来产生TreeMenu实例,如 getTreeMenu(String menuLogicName) 。

4.调用treeMenu.getMenuRepository(Object param)来构造树

5.在struts action中,置给menuDisplayer属性,最后置入上下文环境供jsp页显示。(注:这一点感觉比较别扭)

因为使用了ibatis的缓存,从数据库中读这一部分的性能得到改善,节点数量不大,并发压力不大的情况下,先采取这种一次性读入的方案了。

 

本文地址:http://www.45fan.com/a/question/71904.html
Tags: 我的 Struts Menu
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部