为用户添加角色
在显示用户的基础上,应该添加为用户授权角色的超链接。
<tableborder="1px">
<tr>
<td>用户名</td>
<td>密码</td>
<td>操作</td>
</tr>
<c:forEachitems="${list}"var="user">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>
<ahref="${pageContext.request.contextPath}/LookUserRole?user_id=${user.id}">
为用户授权角色
</a>
<ahref="#">修改用户</a>
<ahref="#">删除用户</a>
</td>
</tr>
</c:forEach>
</table>
- 效果:
- 处理显示授权页面的Servlet
//得到客户端传递过来的user_id
Stringuser_id=request.getParameter("user_id");
//获取该用户所有的角色
UserServiceuserService=newUserService();
List<Role>userRoles=userService.getUserRole(user_id);
//得到全部的角色
RoleServiceroleService=newRoleService();
List<Role>allRoles=roleService.getAllRole();
//为用户授权的JSP页面也应该显示用户的信息,所以把User对象也传递过去给JSP页面
Useruser=userService.findUser(user_id);
request.setAttribute("user",user);
request.setAttribute("userRoles",userRoles);
request.setAttribute("allRoles",allRoles);
//跳转到显示页面
request.getRequestDispatcher("/WEB-INF/jsp/LookUserRole.jsp").forward(request,response);
- 授权页面JSP
<tableborder="1px">
<tr>
<td>当前用户名称</td>
<td>${user.username}</td>
</tr>
<tr>
<td>当前用户所拥有的角色</td>
<td>
<c:forEachitems="${userRoles}"var="userRole">
${userRole.name}
</c:forEach>
</td>
</tr>
<tr>
<td>当前系统所拥有的角色</td>
<td>
<formmethod="post"action="${pageContext.request.contextPath}/AddUserRole">
<%--要为用户添加角色,需要知道是哪一个用户,通过hidden传递过去用户的id--%>
<inputtype="hidden"name="user_id"value="${user.id}">
<c:forEachitems="${allRoles}"var="roles">
<inputtype="checkbox"name="role_id"value="${roles.id}">${roles.name}
</c:forEach>
<inputtype="submit"value="添加角色!">
</form>
</td>
</tr>
</table>
- 效果:
- 处理表单数据并为用户添加角色的Servlet
//得到传递进来的role_id
String[]ids=request.getParameterValues("role_id");
try{
//得到想要修改哪个用户的id
Stringuser_id=request.getParameter("user_id");
//通过id获取得到User对象
UserServiceuserService=newUserService();
Useruser=userService.findUser(user_id);
//通过id获取得到Role对象,再把对象用List集合装载起来
RoleServiceroleService=newRoleService();
List<Role>list=newArrayList<>();
for(Stringid:ids){
Rolerole=roleService.findRole(id);
list.add(role);
}
//更新用户所拥有的角色
userService.updateUserRole(user,list);
request.setAttribute("message","添加角色成功!");
}catch(Exceptione){
e.printStackTrace();
request.setAttribute("message","添加角色失败!");
}
request.getRequestDispatcher("/message.jsp").forward(request,response);
角色模块
添加角色
- 提供添加角色页面的Servlet
//直接跳转到jsp页面即可
request.getRequestDispatcher("WEB-INF/jsp/AddRole.jsp").forward(request,response);
- 显示页面JSP
<formaction="${pageContext.request.contextPath}/AddRoleController"method="post">
<tableborder="1px">
<tr>
<td>角色名称</td>
<td><inputtype="text"name="name"></td>
</tr>
<tr>
<td>详细描述</td>
<td><textareaname="description" cols="30"rows="10"></textarea></td>
</tr>
<tr>
<td>
<inputtype="submit"value="添加角色">
</td>
</tr>
</table>
</form>
- 处理表单数据并添加角色的Servlet
//得到客户端带过来的数据
Stringname=request.getParameter("name");
Stringdescription=request.getParameter("description");
try{
//创建对象并封装数据
Rolerole=newRole();
role.setId(WebUtils.makeId());
role.setName(name);
role.setDescription(description);
//调用Service方法,完成功能
RoleServiceroleService=newRoleService();
roleService.addRole(role);
request.setAttribute("message","添加角色成功!");
}catch(Exceptione){
request.setAttribute("message","添加角色失败!");
e.printStackTrace();
}
request.getRequestDispatcher("/message.jsp").forward(request,response);
查看所有的角色
- 提供页面的Servlet
//得到所有的角色
RoleServiceroleService=newRoleService();
List<Role>list=roleService.getAllRole();
request.setAttribute("list",list);
request.getRequestDispatcher("/WEB-INF/jsp/LookRoles.jsp").forward(request,response);
- 显示页面JSP
<c:iftest="${empty(list)}">
您还没有任何角色,请添加!
</c:if>
<c:iftest="${!empty(list)}">
<tableborder="1px">
<tr>
<td>角色名称</td>
<td>描述</td>
</tr>
<c:forEachitems="${list}"var="role">
<tr>
<td>${role.name}</td>
<td>${role.description}</td>
</tr>
</c:forEach>
</table>
</c:if>
- 效果
为角色授权
与上面是类似的,我们要在查看角色的时候,添加授权的功能!
<c:forEachitems="${list}"var="role">
<tr>
<td>${role.name}</td>
<td>${role.description}</td>
<td>
<ahref="${pageContext.request.contextPath}/LookRolePrivilege?role_id=${role.id}">
为角色授权
</a>
<ahref="#">删除角色</a>
<ahref="#">修改角色</a>
</td>
</tr>
</c:forEach>
- 效果: