#SSM练习第4
##大纲内容
- 用户角色权限表结构
- 用户退出功能
- 用户添加/列表查询
- 角色列表功能
- 权限资源列表/增加
- 角色列表/角色授权
- 添加用户的角色
第1章 用户角色模块
1.1 用户角色权限模块表结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKTwYv6a-1602591259149)(images\1555647462201.png)]
1.1.1 角色表
1.1.1.1 角色表信息描述role
序号 | 字段名称 | 字段类型 | 字段描述 |
---|---|---|---|
1 | id | int(5) | 主键自增 |
2 | roleName | varchar(50) | 角色名 |
3 | roleDesc | varchar(50) | 角色描述 |
1.1.1.2 SQL语句
--角色表
CREATE TABLE `sys_role` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`roleName` varchar(50) DEFAULT NULL,
`roleDesc` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1.2 用户与角色关联关系
用户与角色之间是多对多关系,我们通过user_role表来描述其关联,在实体类中User中存在List,在SysRole中有List.而角色与权限之间也存在关系,我们会在后面介绍。
--建表语句
CREATE TABLE `sys_user_role` (
`userId` int(5) NOT NULL,
`roleId` int(5) NOT NULL,
PRIMARY KEY (`userId`,`roleId`),
KEY `roleId` (`roleId`),
CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `sys_user` (`id`),
CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1.3 权限资源表
1.1.3.1 权限资源表描述permission
序号 | 字段名称 | 字段类型 | 字段描述 |
---|---|---|---|
1 | id | int(5) | 主键自增 |
2 | permissionName | varchar(50) | 权限名(菜单名) |
3 | url | varchar(50) | 权限路径(菜单访问路径) |
4 | pid | int(5) | 父菜单ID |
1.1.3.2 SQL语句
--资源权限表
CREATE TABLE `sys_permission` (
`id` int(5) NOT NULL,
`permissionName` varchar(50) DEFAULT NULL,
`url` varchar(50) DEFAULT NULL,
`pid` int(5) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1.4 权限资源与角色关联关系
权限资源与角色是多对多关系,我们使用role_permission表来描述。在实体类SysPermission中存在List,在Role类中有List
--资源角色表
CREATE TABLE sys_role_permission(
permissionId int(5),
roleId int(5),
PRIMARY KEY(permissionId,roleId),
FOREIGN KEY (permissionId) REFERENCES sys_permission(id),
FOREIGN KEY (roleId) REFERENCES sys_role(id)
);
1.1.5 实体类
角色实体Bean
public class SysRole {
private Integer id;
private String roleName;
private String roleDesc;
//一个角色可以授予多个用户,角色和用户之间属于一对多关系,彼此之间属于多对多关系
private List<SysUser> users;
//一个角色可以有多个权限,角色和权限之间属于一对多关系,彼此之间属于多对多关系
private List<SysPermisson> permissions;
//get...set...
}
权限资源实体Bean
public class SysPermisson {
private Long id;
private String permissionName;
private String url;
private Long pid;
//一个权限可以授予多个角色,权限和角色之间属于一对多关系,彼此之间属于多对多关系
private List<SysRole> rols;
//get..set...
}
1.2 用户退出功能
在header.jsp的页面中编写超链接
<a href="${pageContext.request.contextPath}/logout" class="btn btn-default btn-flat">注销</a>
1.3 用户的列表查询功能
1.3.1 SysUserController代码
修改SysUserController,实现分页查询
/***
* 用户列表
* @return
*/
@RequestMapping(value = "/list")
public String list(@RequestParam(value = "page",required = false,defaultValue = "1")int page,
@RequestParam(value = "size",required = false,defaultValue = "5")int size, Model model){
//集合查询
PageInfo<SysUser> pageInfo = userService.list(page,size);
model.addAttribute("pageInfo",pageInfo);
return "user-list";
}
1.3.2 Service代码
修改SysUserService和SysUserServiceImpl代码
/**
* 用户集合查询-接口
* @return
* @param page
* @param size
*/
PageInfo<SysUser> list(int page, int size);
/***
* 实现类
* @param page
* @param size
* @return
*/
@Override
public PageInfo<SysUser> list(int page, int size) {
//分页
PageHelper.startPage(page,size);
//集合查询
List<SysUser> sysUsers = userDao.list();
return new PageInfo<SysUser>(sysUsers);
}
1.3.3 Dao代码
修改SysUserDao代码
/***
* 列表查询
* @return
*/
@Select("select * from sys_user")
List<SysUser> list();
1.3.4 JSP页面
<tbody>
<c:forEach items="${pageInfo.list}" var="user">
<tr>
<td><input name="ids" type="checkbox"></td>
<td>${user.id }</td>
<td>${user.username}</td>
<td>${user.email}</td>
<td>${user.phoneNum}</td>
<td>
<c:if test="${user.status==1}">正常</c:if>
<c:if test="${user.status==2}">禁止登陆</c:if>
</td>
<td class="text-center">
<a href="${pageContext.request.contextPath}/pages/user-show.jsp" class="btn bg-olive btn-xs">详情</a>
<a href="${pageContext.request.contextPath}/pages/user-role-add.jsp" class="btn bg-olive btn-xs">添加角色</a>
</td>
</tr>
</c:forEach>
</tbody>
<div class="box-footer">
<div class="pull-left">
<div class="form-group form-inline">
总共${pageInfo.pages}页,共${pageInfo.total}条数据。 每页
<select class=