public class UserService {
UserDao userDao = new UserDao();
//添加用户
public void addUser(User user) {
userDao.addUser(user);
}
//根据id查找用户
public User findUser(String id) {
return userDao.find(id);
}
//得到所有的用户
public List<User> getAllUser() {
return userDao.getAll();
}
//获取用户所有的角色
public List<Role> getUserRole(String user_id) {
return userDao.getRoles(user_id);
}
//修改用户的角色
public void updateUserRole(User user, List<Role> roles) {
userDao.updateRole(user, roles);
}
}
RoleService
public class RoleService {
RoleDao roleDao = new RoleDao();
//添加角色
public void addRole(Role role) {
roleDao.add(role);
}
//根据id查找角色
public Role findRole(String id) {
return roleDao.find(id);
}
//获取所有的角色
public List<Role> getAllRole() {
return roleDao.getAll();
}
//获取角色所有的权限
public List<Privilege> getRolePrivilege(String role_id) {
return roleDao.getPrivileges(role_id);
}
//修改角色的权限
public void updateRolePrivilege(Role role, List<Privilege> privileges) {
roleDao.addPrivilege2Role(role, privileges);
}
}
PrivilegeService
public class PrivilegeService {
PrivilegeDao privilegeDao = new PrivilegeDao();
//添加权限
public void addPrivilege(Privilege privilege) {
privilegeDao.addPrivilege(privilege);
}
//根据id获得权限
public Privilege findPrivilege(String id) {
return privilegeDao.findPrivilege(id);
}
//获取所有的权限
public List<Privilege> getAllPrivileges() {
return privilegeDao.getAllPrivileges();
}
}
开发Web
用户模块
添加用户
- 提供页面界面的Servlet
//直接跳转到显示添加用户的界面
request.getRequestDispatcher("/WEB-INF/jsp/addUser.jsp").forward(request, response);
- 显示页面的JSP
<form action="AddUserController" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="添加用户"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
- 处理表单数据的Servlet
//得到客户端传递进来的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = new User();
user.setId(WebUtils.makeId());
user.setUsername(username);
user.setPassword(password);
try {
UserService userService = new UserService();
userService.addUser(user);
request.setAttribute("message","添加用户成功!");
} catch (Exception e) {
request.setAttribute("message", "添加用户失败!");
throw new RuntimeException("在Controller添加客户失败");
}
request.getRequestDispatcher("/message.jsp").forward(request,response);
}
- 效果:
显示用户
- 提供页面界面的Servlet
UserService userService = new UserService();
List<User> list = userService.getAllUser();
request.setAttribute("list", list);
//跳转到显示页面
request.getRequestDispatcher("/WEB-INF/jsp/LookUser.jsp").forward(request, response);
- 显示页面JSP
<c:if test="${empty(list)}">
对不起,暂时没有任何客户
</c:if>
<c:if test="${!empty(list)}">
<table border="1px">
<tr>
<td>用户名</td>
<td>密码</td>
</tr>
<c:forEach items="${list}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
</tr>
</c:forEach>
</table>
</c:if>
- 效果:
为用户添加角色
在显示用户的基础上,应该添加为用户授权角色的超链接。
<table border="1px">
<tr>
<td>用户名</td>
<td>密码</td>
<td>操作</td>
</tr>
<c:forEach items="${list}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>
<a href="${pageContext.request.contextPath}/LookUserRole?user_id=${user.id}">
为用户授权角色
</a>
<a href="#">修改用户</a>
<a href="#">删除用户</a>
</td>
</tr>
</c:forEach>
</table>
- 效果:
- 处理显示授权页面的Servlet
//得到客户端传递过来的user_id
String user_id = request.getParameter("user_id");
//获取该用户所有的角色
UserService userService = new UserService();
List<Role> userRoles = userService.getUserRole(user_id);
//得到全部的角色
RoleService roleService = new RoleService();
List<Role> allRoles = roleService.getAllRole();
//为用户授权的JSP页面也应该显示用户的信息,所以把User对象也传递过去给JSP页面
User user = 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
<table border="1px">
<tr>
<td>当前用户名称</td>
<td>${user.username}</td>
</tr>
<tr>
<td>当前用户所拥有的角色</td>
<td>
<c:forEach items="${userRoles}" var="userRole">
${userRole.name}
</c:forEach>
</td>
</tr>
<tr>
<td>当前系统所拥有的角色</td>
<td>
<form method="post" action="${pageContext.request.contextPath}/AddUserRole">
<%--要为用户添加角色,需要知道是哪一个用户,通过hidden传递过去用户的id--%>
<input type="hidden" name="user_id" value="${user.id}">
<c:forEach items="${allRoles}" var="roles">
<input type="checkbox" name="role_id" value="${roles.id}">${roles.name}
</c:forEach>
<input type="submit" value="添加角色!">
</form>
</td>
</tr>
</table>
- 效果:
- 处理表单数据并为用户添加角色的Servlet
//得到传递进来的role_id
String[] ids = request.getParameterValues("role_id");
try {
//得到想要修改哪个用户的id
String user_id = request.getParameter("user_id");
//通过id获取得到User对象
UserService userService = new UserService();
User user = userService.findUser(user_id);
//通过id获取得到Role对象,再把对象用List集合装载起来
RoleService roleService = new RoleService();
List<Role> list = new ArrayList<>();
for (String id : ids) {
Role role = roleService.findRole(id);
list.add(role);
}
//更新用户所拥有的角色
userService.updateUserRole(user, list);
request.setAttribute("message","添加角色成功!");
} catch (Exception e) {
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
<form action="${pageContext.request.contextPath}/AddRoleController" method="post">
<table border="1px">
<tr>
<td>角色名称</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>详细描述</td>
<td><textarea name="description" cols="30" rows="10"></textarea></td>
</tr>
<tr>
<td>
<input type="submit" value="添加角色">
</td>
</tr>
</table>
</form>
- 处理表单数据并添加角色的Servlet
//得到客户端带过来的数据
String name = request.getParameter("name");
String description = request.getParameter("description");
try {
//创建对象并封装数据
Role role = new Role();
role.setId(WebUtils.makeId());
role.setName(name);
role.setDescription(description);
//调用Service方法,完成功能
RoleService roleService = new RoleService();
roleService.addRole(role);
request.setAttribute("message","添加角色成功!");
} catch (Exception e) {
request.setAttribute("message","添加角色失败!");
e.printStackTrace();
}
request.getRequestDispatcher("/message.jsp").forward(request, response);
- 效果:
查看所有的角色
- 提供页面的Servlet
//得到所有的角色
RoleService roleService = new RoleService();
List<Role> list = roleService.getAllRole();
request.setAttribute("list", list);
request.getRequestDispatcher("/WEB-INF/jsp/LookRoles.jsp").forward(request, response);
- 显示页面JSP
<c:if test="${empty(list)}">
您还没有任何角色,请添加!
</c:if>
<c:if test="${!empty(list)}">
<table border="1px">
<tr>
<td>角色名称</td>
<td>描述</td>
</tr>
<c:forEach items="${list}" var="role">
<tr>
<td>${role.name}</td>
<td>${role.description}</td>
</tr>
</c:forEach>
</table>
</c:if>
- 效果
为角色授权
与上面是类似的,我们要在查看角色的时候,添加授权的功能!
<c:forEach items="${list}" var="role">
<tr>
<td>${role.name}</td>
<td>${role.description}</td>
<td>
<a href="${pageContext.request.contextPath}/LookRolePrivilege?role_id=${role.id}">
为角色授权
</a>
<a href="#">删除角色</a>
<a href="#">修改角色</a>
</td>
</tr>
</c:forEach>
- 效果:
- 提供显示权利页面的Servlet
//得到浏览器想要查看的角色id
String role_id = request.getParameter("role_id");
RoleService roleService = new RoleService();
//根据id获取得到Role对象
Role role = roleService.findRole(role_id);
//得到当前角色所有的权利
List<Privilege> rolePrivilege = roleService.getRolePrivilege(role_id);
//得到系统所有的权利
PrivilegeService privilegeService = new PrivilegeService();
List<Privilege> allPrivilege = privilegeService.getAllPrivileges();
request.setAttribute("role", role);
request.setAttribute("rolePrivilege", rolePrivilege);
request.setAttribute("allPrivilege", allPrivilege);
//跳转到显示页面
request.getRequestDispatcher("/WEB-INF/jsp/LookRolePrivilege.jsp").forward(request, response);
- 显示页面JSP
<table border="1px">
<tr>
<td>角色名称</td>
<td>${role.name}</td>
</tr>
<tr>
<td>当前角色拥有的权利</td>
<td>
<c:forEach items="${rolePrivilege}" var="privi">
${privi.name}
</c:forEach>
</td>
</tr>
<tr>
<td>系统拥有的所有权利</td>
<td>
<form action="${pageContext.request.contextPath}/AddRolePrivilegeController" method="post">
<%--让服务器知道要修改哪一个用户,就要把用户的id传递过去--%>
<input type="hidden" name="role_id" value="${role.id}">
<c:forEach items="${allPrivilege}" var="privileges">
<input type="checkbox" name="privilege" value="${privileges.id}">${privileges.name}
</c:forEach>
<input type="submit" value="添加权利">
</form>
</td>
</tr>
</table>
- 效果:
热门评论
源代码能打包吗?这样看太费劲了