




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SSH2+Extjs用戶根據(jù)角色加載不同的樹(shù)二級(jí)節(jié)點(diǎn)說(shuō)明:通過(guò)登錄界面,用戶輸入名和密碼,系統(tǒng)獲取到用戶名和密碼后與與數(shù)據(jù)庫(kù)進(jìn)行比對(duì):如果該用戶是系統(tǒng)用戶,則用戶成功登錄并跳轉(zhuǎn)到新的界面。當(dāng)該用戶要查看相應(yīng)的功能樹(shù)的時(shí)候,系統(tǒng)會(huì)先獲取用戶登錄的username,通過(guò)該用戶名查詢到在數(shù)據(jù)庫(kù)中給該用戶所賦予的角色id,然后再根據(jù)這個(gè)角色的id來(lái)查找這個(gè)角色所擁有的樹(shù)的功能子節(jié)點(diǎn),然后將查詢到的資源按照tree所要求的json形式輸出到前臺(tái)從而顯示出tree。通過(guò)點(diǎn)擊tree的節(jié)點(diǎn),將該node的id發(fā)送的后臺(tái),后臺(tái)自動(dòng)加載該id對(duì)應(yīng)的子節(jié)點(diǎn)并加載實(shí)現(xiàn)相應(yīng)的樹(shù)。本功能實(shí)現(xiàn)沒(méi)有添加service層,A
2、ction直接調(diào)用Dao層的實(shí)現(xiàn)方法1. 實(shí)現(xiàn)界面展示首先是登錄界面1,登錄成功后跳轉(zhuǎn)圖片2點(diǎn)擊圖片2中圈紅的點(diǎn)擊后便進(jìn)入tree的顯示圖片3,能夠看到系統(tǒng)已經(jīng)自動(dòng)顯示到二級(jí)樹(shù)節(jié)點(diǎn)點(diǎn)擊圖片3中的節(jié)點(diǎn)ShangjiShiyan,系統(tǒng)會(huì)自動(dòng)查找該node的id對(duì)應(yīng)的子節(jié)點(diǎn)并加載顯示這里可以把樹(shù)節(jié)點(diǎn)設(shè)置成多層,這里僅是用到三級(jí)節(jié)點(diǎn)便到葉子節(jié)點(diǎn)就結(jié)束了。2. 數(shù)據(jù)庫(kù)設(shè)計(jì)思路:通過(guò)Users表中查找系統(tǒng)用戶UserName對(duì)應(yīng)的UserID屬性,然后通過(guò)連接表userrolerelationship找到該用戶對(duì)應(yīng)Role表的RoleID屬性,在通過(guò)連接表roleresourcerelationship查
3、找到該RoleID對(duì)應(yīng)的Resource,并把這些resource放到List中輸出。具體的表如下所示:(1)users表(UserName就是用戶登錄時(shí)的用戶名)(2)userrolerelationship表(分別對(duì)應(yīng)上表中的UserID和下表的RoleID)(3)role表(4)Roleresourcerelationship表(5)Resource表(6)Tree表(json屬性結(jié)構(gòu)標(biāo)準(zhǔn)表,resource需要轉(zhuǎn)換成tree形式輸出)注意: Mysql中連接表的外鍵設(shè)定(UserID找到RoleID)(1)在Mysql中設(shè)計(jì)三個(gè)連接表Users表Userrolerelationship
4、表(連接表)Role表這里通過(guò)Users表的Username到連接表中查找連接的表,然后通過(guò)連接表查找要連接的RoleID。在連接之前,首先要先確定Users表和Role表的主鍵類型,必須和連接表中這兩列的屬性完全一致,否則無(wú)法連接。在各自的表中id和RoleID也都是Int10先完善Users和Role表中的數(shù)據(jù),在填寫(xiě)連接表中的內(nèi)容(2)確定多表之間的關(guān)聯(lián)清空連接表中的內(nèi)容點(diǎn)擊+添加外鍵,連接Users表點(diǎn)擊+添加外鍵,連接Role表3. 前臺(tái)界面設(shè)計(jì)說(shuō)明:通過(guò)登錄界面,系統(tǒng)將用戶登錄的時(shí)候輸入的用戶名保存則session對(duì)象中,這樣能夠方便其他的Action訪問(wèn)該username,從而確
5、定該用戶名的權(quán)限前臺(tái)界面樹(shù)界面XueshengGuanli.js:Ext.onReady( function() / 設(shè)定一個(gè)根節(jié)點(diǎn)var rootAsy = new Ext.tree.AsyncTreeNode( text:'學(xué)生管理', iconCls : 'icon-treeroot', id:'0', expanded:true);/設(shè)定一個(gè)樹(shù)加載器,當(dāng)樹(shù)節(jié)點(diǎn)展開(kāi)時(shí),延遲加載子節(jié)點(diǎn)var depTreeLoader = new Ext.tree.TreeLoader(preloadChildren : true,dataUrl :
6、9;Tree.action'/,baseParams : / action : 'getAllDlb'/ );/加載樹(shù)的觸發(fā)事件 depTreeLoader.on('beforeload',function(depTreeLoader,node)this.baseParams.id=node.id; /通過(guò)這個(gè)傳遞參數(shù),這樣就可以點(diǎn)一個(gè)節(jié)點(diǎn)出來(lái)它的子節(jié)點(diǎn)來(lái)實(shí)現(xiàn)異步加載 ,depTreeLoader);/顯示的 treevar testtree = new Ext.tree.TreePanel(autoScroll : true,bodyStyle : &
7、#39;background-color:white',animate : true,containerScroll : true,root : rootAsy,loader : depTreeLoader);/將上面的testree放到Viewport中就可以顯示樹(shù)型結(jié)構(gòu)了4.查找Tree.action(通過(guò)配置文件)(1)根據(jù)testree的提交的dataUrl,查找名為T(mén)ree的Action的java文件的位置。首先通過(guò)Struts.xml來(lái)找到Tree對(duì)應(yīng)的action在Spring配置文件中的名稱<package name="extjs" exten
8、ds="json-default" namespace="/"><!- 根據(jù)不同用戶對(duì)應(yīng)的角色加載不同的服務(wù)Tree選項(xiàng) -> <action name="Tree" class="TreeAsyLoaderAction"> <result type="json"> <param name="root">menusList</param> </result> </action></
9、package>(2)通過(guò)Spring配置文件applicationContext.xml查找TreeAsyLoaderAction<!- 根據(jù)用戶對(duì)應(yīng)的系統(tǒng)角色加載相應(yīng)的系統(tǒng)功能 :通過(guò)id找到TreeAsyLoaderAction,在其中直接調(diào)用Dao層內(nèi)容-><bean id="TreeDAO" class="org.dao.imp.TreeDaoImp"><property name="sessionFactory"><ref bean="sessionFactory&
10、quot; /></property></bean><bean id="TreeAsyLoaderAction" class="org.action.TreeAsyLoader"><property name="resourceDao"><ref bean="ResourceDAO" /></property></bean><!- 通過(guò)用戶的角色找到對(duì)應(yīng)的資源內(nèi)容,需要以下幾個(gè)表的關(guān)聯(lián)。其中Roleresourcerel
11、ationshipDAO為中介表,這三個(gè)表需要通過(guò)Hibernate的逆向工程實(shí)現(xiàn)數(shù)據(jù)庫(kù)的轉(zhuǎn)換。只列出一個(gè),剩下的四個(gè)省略-> <bean id="UserrolerelationshipDAO" class="org.dao.imp.UserrolerelationshipDAO"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean>5
12、. 核心Action:TreeAsyLoader.javapackage org.action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class TreeAsyLoader extends ActionSupport private List<Tree> menusList; /與Struts.xml中的參數(shù)同名,存放讀取出來(lái)的Resource(都已經(jīng)轉(zhuǎn)換成了Tree類型)private TreeDao treeDao;/直接調(diào)
13、用Dao層的方法private ResourceDao resourceDao; /直接調(diào)用Dao層查找資源的方法private Dlb dlb;private String username1;private Integer roleid1;/省去對(duì)應(yīng)的setter和getter方法 public String execute() throws Exception System.out.println("Listing Tree.!");/* 在Struts中通過(guò)ServletActionContext的request方法來(lái)獲取前臺(tái)參數(shù) */HttpServletRequ
14、est req = ServletActionContext.getRequest();/查找該用戶對(duì)應(yīng)的權(quán)限username1=ActionContext.getContext().getSession().get("username").toString();String id1 = req.getParameter("id");/讀取前臺(tái)傳來(lái)的用戶點(diǎn)擊的node的idint id=Integer.parseInt(id1); tryList<Resource> re =resourceDao.findResourceByRoleId(u
15、sername1);/通過(guò)用戶名找到用戶對(duì)應(yīng)角色,再找到角色對(duì)應(yīng)的資源int a = new int10;/數(shù)組的長(zhǎng)度應(yīng)該足夠長(zhǎng),保證放下所有的數(shù)據(jù),包括資源葉子節(jié)點(diǎn)到樹(shù)根所經(jīng)過(guò)的節(jié)點(diǎn)int j=0;for(Resource r : re)/將根節(jié)點(diǎn)所在的路徑放在一個(gè)一維數(shù)組中存儲(chǔ)for(;j<a.length-1;j+) aj = r.getResourceId();aj+1 = r.getParentId();r = resourceDao.getReourceById(r.getParentId();if (r = null) j+;break;/通過(guò)獲得用戶點(diǎn)擊的node的id以
16、及該id所涉及到的子節(jié)點(diǎn)來(lái)進(jìn)行加載List<Resource> menuList1 = resourceDao.findByParentIdAndIds(id,a);System.out.println("Tree:"+ menuList1);menusList = new ArrayList<Tree>();/將返回的數(shù)據(jù)轉(zhuǎn)換成系統(tǒng)識(shí)別的tree的類型for (Resource r : menuList1) Tree tn = new Tree();tn.setId(r.getResourceId();tn.setText(r.getResourc
17、eName();tn.setPid(r.getParentId();if (r.getLeaf()=true) tn.setLeaf(true); else tn.setLeaf(false);menusList.add(tn);catch(Exception e)menusList = null;System.out.println(e.toString();return SUCCESS;6. Dao層實(shí)現(xiàn)方法(1)Action通過(guò)過(guò)調(diào)用DaoImp的方法resourceDao.findResourceByRoleId(username1)如下:public List<Resource
18、> findResourceByRoleId(String username)try /注意三表連接的查詢語(yǔ)句的編寫(xiě):列屬性的大小寫(xiě)要和model中生成的屬性值形式一致String queryStr = "select ro from Users uss,Role ro,Userrolerelationship upp "+ "where ro.roleId = upp.role.roleId and uss.userId = upp.users.id and uss.userName = '"+ username+"'&
19、quot;List<Role> listt =getHibernateTemplate().find(queryStr); /先查詢出RoleID,然后再根據(jù)RoleID查詢對(duì)應(yīng)的ResourcesString queryStrS = "select re from Role ro,Resource re,Roleresourcerelationship rr "+ "where ro.roleId = rr.role.roleId and re.resourceId = rr.resource.resourceId and ro.roleId = "+ listt.get(0).getRoleId();List<Resource> listResource =getHibernateTemplate().find(queryStrS)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程質(zhì)量管理流程標(biāo)準(zhǔn)化方案
- 陜西省西安市新城區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 投資理財(cái)借款合同
- 城市公園建設(shè)與管理合作協(xié)議
- 教育培訓(xùn)領(lǐng)域在線教育平臺(tái)內(nèi)容優(yōu)化策略研究
- 客戶關(guān)系管理解決方案實(shí)施報(bào)告
- 農(nóng)業(yè)產(chǎn)業(yè)鏈延伸作業(yè)指導(dǎo)書(shū)
- 干砌擋土墻現(xiàn)場(chǎng)質(zhì)量檢驗(yàn)報(bào)告單
- 國(guó)際貿(mào)易術(shù)語(yǔ)題庫(kù)
- 院感知識(shí)崗前培訓(xùn)
- 品管圈PDCA案例-介入中心提高手術(shù)患者交接記錄書(shū)寫(xiě)合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 第十七屆山東省職業(yè)院校技能大賽中職組“西式烹飪”賽項(xiàng)規(guī)程
- 華東師范大學(xué)《外國(guó)人文經(jīng)典(下)》2022-2023學(xué)年第一學(xué)期期末試卷
- 儲(chǔ)能電池模組PACK和系統(tǒng)集成項(xiàng)目可行性研究報(bào)告
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 2024年陜西省中考數(shù)學(xué)試題含答案
- 牙慢性損傷-楔狀缺損
- JTJ034-2000 公路路面基層施工技術(shù)規(guī)范
- 2024-2030年中國(guó)光伏建筑一體化(BIPV)市場(chǎng)規(guī)模預(yù)測(cè)與競(jìng)爭(zhēng)格局分析研究報(bào)告
- 零售業(yè)視覺(jué)營(yíng)銷(xiāo)與商品展示技巧考核試卷
- 民營(yíng)醫(yī)院并購(gòu)合同范本
評(píng)論
0/150
提交評(píng)論