第十八节——spring练习之页面上用户列表的展示

一、展示步骤分析

  1. 修改页面上用户管理页面上超链接跳转地址,使其跳转到controller层的方法函数
  2. 创建RoleController和showList()方法
  3. 创建RoleService和showList()方法
  4. 创建RoleDao和findAll()方法
  5. 使用JdbcTemplate完成查询操作
  6. 将查询数据存储到Model中
  7. 转发到user-list.jsp页面进行展示
  8. 由于一个用户可以对应多个角色,所以我们创建一个中间表sys_user_role,用于查询每个用户所具有的角色

二、展示具体设计

  1. 修改webapp-pages目录下的aside,使用户管理按钮超链接跳转到controller层方法
    在这里插入图片描述
  2. 在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;
    }
}
  1. 修改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;
    }
  1. 在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;
    }
}
  1. 在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;
    }
}
  1. 在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;
    }
}
  1. 编辑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>
  1. 修改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">
													&nbsp;&nbsp;${
    
    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>

在这里插入图片描述
在这里插入图片描述

  1. 开启tomcat,访问http://localhost:8080/demo04_war/user/list页面验证数据

猜你喜欢

转载自blog.csdn.net/qq_37589805/article/details/120695797
今日推荐