第十九节——spring练习之页面上用户的添加

Posted 想学习安全的小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十九节——spring练习之页面上用户的添加相关的知识,希望对你有一定的参考价值。

一、添加步骤分析

  1. 点击列表页面新建按钮跳转到角色添加页面,由于页面上需要展示角色列表,所以不能直接跳转到页面,应该先跳转到controller层查询角色后再跳转到页面展示
  2. 输入角色信息,点击保存按钮,表单数据提交服务器
  3. 编写RoleController的save()方法
  4. 编写RoleService的save()方法
  5. 编写RoleDao的save()方法
  6. 使用JdbcTemplate保存Role数据到sys_role
  7. 跳转回角色列表页面

二、具体设计

  1. 修改user-list页面下的新建按钮超链接,使其跳转到controller层的user/add方法函数
  2. 在UserController.class里添加add方法函数
public class UserController {
    @Autowired
    private RoleService roleService;

    @RequestMapping("/add")
    public ModelAndView add(){
        ModelAndView modelAndView = new ModelAndView();
        List<Role> roleList = roleService.list();
        modelAndView.addObject("roleList",roleList);
        modelAndView.setViewName("user-add");
    }
}
  1. 修改user-add页面,动态展示页面上的角色信息
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach items="${roleList}" var="role">
	<input class="" type="checkbox" name="roleIds" value="${role.id}">${role.roleName}
</c:forEach>


  1. 修改user-add页面中保存按钮的超链接,使其跳转到controller层的save方法函数,并检查页面提交的name参数,使其名字和domain下User.class里的属性名一致,(角色属性另外处理)

  2. 在UserController.class里添加save方法
@RequestMapping("/save")
    public String save(User user,Long[] roleIds){
        userService.save(user,roleIds);
        return "redirect:/user/list";
    }
  1. 在UserService以及UserServiceImpl添加相应的save方法
public interface UserService {
    List<User> list();

    void save(User user, Long[] roleIds);
}

@Override
public void save(User user, Long[] roleIds) {
    //第一步 向sys_user表中存储数据
    Long userId = userDao.save(user);
    //第二步 向sys_user_role 关系表中存储多条数据
    userDao.saveUserRoleRel(userId,roleIds);
}
  1. 在UserDao以及UserDaoImpl添加相应的save以及saveUserRoleRel函数
@Override
public Long save(final User user) {
    //创建PreparedStatementCreator
    PreparedStatementCreator creator = new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            //使用原始jdbc完成有个PreparedStatement的组建
            PreparedStatement preparedStatement = connection.prepareStatement("insert into sys_user values(?,?,?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS);
            preparedStatement.setObject(1, null);
            preparedStatement.setString(2, user.getUsername());
            preparedStatement.setString(3, user.getEmail());
            preparedStatement.setString(4, user.getPassword());
            preparedStatement.setString(5, user.getPhoneNum());
            return preparedStatement;
        }
    };
    //创建keyHolder
    GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
    jdbcTemplate.update(creator, keyHolder);
    //获得生成的主键
    long userId = keyHolder.getKey().longValue();
    return userId; //返回当前保存用户的id 该id是数据库自动生成的
}

@Override
public void saveUserRoleRel(Long userId, Long[] roleIds) {
    for (Long roleId : roleIds) {
        jdbcTemplate.update("insert into sys_user_role values(?,?)",userId,roleId);
    }
}
  1. 开启tomcat,验证数据

以上是关于第十九节——spring练习之页面上用户的添加的主要内容,如果未能解决你的问题,请参考以下文章

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

第十六节——spring练习之页面上角色列表的展示

第十四节——Spring练习之环境搭建

第二十节——spring练习之页面上用户的删除

EasyClick Html UI 第十九节 jQuery选择集转移

第十九节——线程与同步代码块和锁