第十八节——spring练习之页面上用户列表的展示
Posted 想学习安全的小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十八节——spring练习之页面上用户列表的展示相关的知识,希望对你有一定的参考价值。
一、展示步骤分析
- 修改页面上用户管理页面上超链接跳转地址,使其跳转到controller层的方法函数
- 创建RoleController和showList()方法
- 创建RoleService和showList()方法
- 创建RoleDao和findAll()方法
- 使用JdbcTemplate完成查询操作
- 将查询数据存储到Model中
- 转发到user-list.jsp页面进行展示
- 由于一个用户可以对应多个角色,所以我们创建一个中间表sys_user_role,用于查询每个用户所具有的角色
二、展示具体设计
- 修改webapp-pages目录下的aside,使用户管理按钮超链接跳转到controller层方法
- 在controller目录下新建一个UserController.class
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/list")
public ModelAndView list(){
List<User> userList = userService.list();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("userList",userList);
modelAndView.setViewName("user-list");
return modelAndView;
}
}
- 修改domain目录下的User.class,使每个用户对象具有角色属性
public class User {
private Long id;
private String username;
private String email;
private String password;
private String phoneNum;
private List<Role> roles;
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
- 在service创建UserService接口和UserServiceImpl.class
public interface UserService {
List<User> list();
}
public class UserServiceImpl implements UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
private RoleDao roleDao;
public void setRoleDao(RoleDao roleDao) {
this.roleDao = roleDao;
}
@Override
public List<User> list() {
List<User> userList = userDao.findAll();
//封装userList中的每一个User的roles数据
for (User user : userList) {
//获得user的id
Long id = user.getId();
//将id作为参数 查询当前userId对应的Role集合数据
List<Role> roles = roleDao.findRoleByUserId(id);
user.setRoles(roles);
}
return userList;
}
}
- 在dao目录下创建UserDao接口和UserDaoImpl.class
public interface UserDao {
List<User> findAll();
}
public class UserDaoImpl implements UserDao{
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public List<User> findAll() {
List<User> userList = jdbcTemplate.query("select * from sys_user", new BeanPropertyRowMapper<User>(User.class));
return userList;
}
}
- 在dao目录下修改RoleDao接口和RoleDaoImpl.class
public interface RoleDao {
List<Role> finAll();
void save(Role role);
List<Role> findRoleByUserId(Long id);
}
public class RoleDaoImpl implements RoleDao{
@Override
public List<Role> findRoleByUserId(Long id) {
List<Role> roles = jdbcTemplate.query("select * from sys_user_role ur,sys_role r where ur.roleId=r.id and ur.userId=?", new BeanPropertyRowMapper<Role>(Role.class), id);
return roles;
}
}
- 编辑applicationContext.xml
<!--配置UserService-->
<bean id="userService" class="service.UserServiceImpl">
<property name="userDao" ref="userDao"/>
<property name="roleDao" ref="roleDao"/>
</bean>
<!--配置UserDao-->
<bean id="userDao" class="dao.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
- 修改webapp-pages目录下的user-list.jsp页面
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${userList}" 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 class="text-center">
<c:forEach items="${user.roles}" var="role">
${role.roleName}
</c:forEach>
</td>
<td class="text-center">
<a href="javascript:void(0);" onclick="delUser('${user.id}')" class="btn bg-olive btn-xs">删除</a>
</td>
</tr>
</c:forEach>
- 开启tomcat,访问http://localhost:8080/demo04_war/user/list页面验证数据
以上是关于第十八节——spring练习之页面上用户列表的展示的主要内容,如果未能解决你的问题,请参考以下文章