第四章:角色和菜单管理功能【基于Servlet+JSP的图书管理系统】

角色和菜单功能

一、角色功能
接下来我们可以完成角色管理的增删改查操作
1. Bean对象
创建sys_role
对应的实体对象SysRole
2. Dao层
现在我们就可以在Dao层创建涉及相关的数据库操作的方法。
然后是具体的实现
3. Service层
添加角色管理的Service
相关的代码
具体接口对应的实现类
4. Servlet层
RoleServlet
需要继承前面定义的BaseServlet
,然后重写定义的抽象方法。同时要重写list
方法。具体如下:
5. 角色查询
展示角色数据,那么我们需要做的操作:
修改
main.jsp
中的跳转地址修改
/sys/role/list.jsp
中的访问地址和table数据


6. 添加和更新
添加和删除功能是类似的。我们一块来实现,在Servlet中完善进入添加更新页面的方法和保存和更新的方法的逻辑
然后就是对应的页面处理
这样就OK了

7.删除角色
删除角色我们需要做一个判断。也就是已经分配给用户的角色是不能被删除的。所以删除操作的时候我们需要添加这样一个判断
service中的处理
这个是在UserService
的基础上做的扩展,实现了方法的复用。

在前端页面的处理上。加了条件判断。

二、菜单功能
1.查询功能
系统左侧菜单栏我们需要做成动态的。那么就需要维护相关的菜单数据。所以设计了sys_menu
这张表。具体的实现。如下,先定义SysMenu
这个实体
然后维护DAO
,Service
和Servlet
的逻辑。
然后页面的展示处理。注意main.jsp
的菜单地址和/sys/menu/list.jsp
页面的调整,我们在此处没有做分页的处理操作。

2.添加和更新
添加和更新处理很类似。我们一并的实现。添加和更新我们已经在用户管理
和角色管理
中已经实现了。所以在此处的难度就降低了很多。步骤一样
进入登录页面:需要准备相关的数据(根据Id查询信息和查询所有的父菜单信息)
提交表单数据:后端服务获取数据后做添加和更新的操作
在此处需要注意的是:父菜单分配功能,需要使用到下拉菜单

对应的代码
表单的提交功能。后端处理数据
功能搞定
3.菜单数据展示
菜单数据有父子菜单的关系。所以在展示数据的时候需要体现这种关系。我们可以通过双重循环的方式来实现。效果如下:

同时我们可以通过序号来控制菜单的显示的顺序。关键是在查询的时候通过seq
升序查询

4.删除菜单
删除菜单本身很简单。但是我们要考虑父子菜单的关系和菜单被分配给角色的情况。那么有些情况是不能被删除的。所以我们在Servlet中需要做相关的判断校验
三、动态绑定
实现用户和角色的绑定以及角色和菜单的绑定。实现整个系统动态功能分配管理的效果。
1.角色和菜单
角色和菜单是多对多的关联关系。所以我们通过sys_role_menu
来维护他们之间的关联关系。我们在更新角色信息的时候来维护菜单信息。

需要注意的地方,在jsp页面中展示数据注意样式

在展示数据的时候我们在进入更新页面前需要对菜单数据做处理
查询所以的菜单信息
对当前角色具有的菜单需要标识

保存更新数据的逻辑。针对菜单我们的步骤是:
先删除该角色的所有菜单
新增分配的菜单信息

2.用户和角色
用户和角色是一对一的关联关系,那么这块我们就可以在添加和更新用户的时候直接分配角色信息,这块我们操作的内容:
进入更新/添加界面前需要查询所有的角色信息
在更新/添加界面中我们需要添加一个下拉菜单来处理分配功能
表单数据提交到后台Servlet中我们需要处理角色相关的数据。同时调整前面写的JDBC的方法

然后对应的表单代码
后端的处理代码

