第四章:角色和菜單管理功能【基于Servlet+JSP的圖書管理系統(tǒng)】

角色和菜單功能

一、角色功能
接下來我們可以完成角色管理的增刪改查操作
1. Bean對象
創(chuàng)建sys_role
對應的實體對象SysRole
2. Dao層
現(xiàn)在我們就可以在Dao層創(chuàng)建涉及相關(guān)的數(shù)據(jù)庫操作的方法。
然后是具體的實現(xiàn)
3. Service層
添加角色管理的Service
相關(guān)的代碼
具體接口對應的實現(xiàn)類
4. Servlet層
RoleServlet
需要繼承前面定義的BaseServlet
,然后重寫定義的抽象方法。同時要重寫list
方法。具體如下:
5. 角色查詢
展示角色數(shù)據(jù),那么我們需要做的操作:
修改
main.jsp
中的跳轉(zhuǎn)地址修改
/sys/role/list.jsp
中的訪問地址和table數(shù)據(jù)


6. 添加和更新
添加和刪除功能是類似的。我們一塊來實現(xiàn),在Servlet中完善進入添加更新頁面的方法和保存和更新的方法的邏輯
然后就是對應的頁面處理
這樣就OK了

7.刪除角色
刪除角色我們需要做一個判斷。也就是已經(jīng)分配給用戶的角色是不能被刪除的。所以刪除操作的時候我們需要添加這樣一個判斷
service中的處理
這個是在UserService
的基礎(chǔ)上做的擴展,實現(xiàn)了方法的復用。

在前端頁面的處理上。加了條件判斷。

二、菜單功能
1.查詢功能
系統(tǒng)左側(cè)菜單欄我們需要做成動態(tài)的。那么就需要維護相關(guān)的菜單數(shù)據(jù)。所以設(shè)計了sys_menu
這張表。具體的實現(xiàn)。如下,先定義SysMenu
這個實體
然后維護DAO
,Service
和Servlet
的邏輯。
然后頁面的展示處理。注意main.jsp
的菜單地址和/sys/menu/list.jsp
頁面的調(diào)整,我們在此處沒有做分頁的處理操作。

2.添加和更新
添加和更新處理很類似。我們一并的實現(xiàn)。添加和更新我們已經(jīng)在用戶管理
和角色管理
中已經(jīng)實現(xiàn)了。所以在此處的難度就降低了很多。步驟一樣
進入登錄頁面:需要準備相關(guān)的數(shù)據(jù)(根據(jù)Id查詢信息和查詢所有的父菜單信息)
提交表單數(shù)據(jù):后端服務獲取數(shù)據(jù)后做添加和更新的操作
在此處需要注意的是:父菜單分配功能,需要使用到下拉菜單

對應的代碼
表單的提交功能。后端處理數(shù)據(jù)
功能搞定
3.菜單數(shù)據(jù)展示
菜單數(shù)據(jù)有父子菜單的關(guān)系。所以在展示數(shù)據(jù)的時候需要體現(xiàn)這種關(guān)系。我們可以通過雙重循環(huán)的方式來實現(xiàn)。效果如下:

同時我們可以通過序號來控制菜單的顯示的順序。關(guān)鍵是在查詢的時候通過seq
升序查詢

4.刪除菜單
刪除菜單本身很簡單。但是我們要考慮父子菜單的關(guān)系和菜單被分配給角色的情況。那么有些情況是不能被刪除的。所以我們在Servlet中需要做相關(guān)的判斷校驗
三、動態(tài)綁定
實現(xiàn)用戶和角色的綁定以及角色和菜單的綁定。實現(xiàn)整個系統(tǒng)動態(tài)功能分配管理的效果。
1.角色和菜單
角色和菜單是多對多的關(guān)聯(lián)關(guān)系。所以我們通過sys_role_menu
來維護他們之間的關(guān)聯(lián)關(guān)系。我們在更新角色信息的時候來維護菜單信息。

需要注意的地方,在jsp頁面中展示數(shù)據(jù)注意樣式

在展示數(shù)據(jù)的時候我們在進入更新頁面前需要對菜單數(shù)據(jù)做處理
查詢所以的菜單信息
對當前角色具有的菜單需要標識

保存更新數(shù)據(jù)的邏輯。針對菜單我們的步驟是:
先刪除該角色的所有菜單
新增分配的菜單信息

2.用戶和角色
用戶和角色是一對一的關(guān)聯(lián)關(guān)系,那么這塊我們就可以在添加和更新用戶的時候直接分配角色信息,這塊我們操作的內(nèi)容:
進入更新/添加界面前需要查詢所有的角色信息
在更新/添加界面中我們需要添加一個下拉菜單來處理分配功能
表單數(shù)據(jù)提交到后臺Servlet中我們需要處理角色相關(guān)的數(shù)據(jù)。同時調(diào)整前面寫的JDBC的方法

然后對應的表單代碼
后端的處理代碼

