黑马旅游网学习记录(二)

黑马旅游网学习记录(二)

今天学习三层结构的逻辑实现:dao,service,servlet;

servlet层的代码实现

在RegistUserServlet中的doPost 函数中写下如下的代码:

/**
 * 首先需要明白这一层是用来干嘛的,servlet是用来对表单提交注册后的行为进行反应的。
 * 也就是说,当浏览器前端提交表单以后,就会进入到RegistUserServlet中
 * 那么步骤就明显了:
 * 1、获取前端发送的数据
 * 2、将该数据封装进实体对象
 * 3、使用该对象进行注册
 * 4、对注册结果进行判断
 * 5、对注册结果进行序列化,返回给前端
 */
Map<String, String[]> map = request.getParameterMap();//获取对象
User user = new User();//封装对象
        try {
            BeanUtils.populate(user,map);//这里是将map中的键值对封装进user中。
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        UserService userService = new UserServiceImpl();//用户服务层的实现类
        ResultInfo info = new ResultInfo();//domain中的返回结果对象。可以到domain中查看ResultInfo的声明等。
        boolean flag = userService.regist();//这个时候UserServiceImpl中还没有regist方法,需要首先在接口中声明,然后再实现类中重写
        //4、注册反馈
        if(flag){
            //注册成功
            info.setFlag(true);
        }else{
            //注册失败
            info.setFlag(false);
            info.setErrorMsg("注册失败!");
        }
        //将info序列化
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(info);
        //将json数据写回客户端
        //设置context-type类型
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(json);//通过response返回给前端数据。

Dao层的实现

//UserDaoImpl
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public User FindByUserName(String username) {
        User user = null;
        try {
            String sql = "select * from tab_user where username = ?";
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);
        }catch (Exception e){

        }
        return user;
    }

    @Override
    public void Save(User user) {
        String sql = "insert into tab_user (username,password,name,birthday,sex,telephone,email) values(?,?,?,?,?,?,?)";
        template.update(sql,user.getUsername(),
                            user.getPassword(),
                            user.getName(),
                            user.getBirthday(),
                            user.getSex(),
                            user.getTelephone(),
                            user.getEmail()
                );
    }

这里有关键点:
1、表名不要写错 tab_user;
2、JDBCUtils的声明中,使用Druid连接池的时候,需要把前面的一个下划线删除。
在这里插入图片描述
3、修改数据库的用户名和密码
在druid.properties中修改数据库名称和密码。

service层的实现

private UserDao userDao;

    /**
     * 用户注册
     * @return
     * @param user
     */
    @Override
    public boolean regist(User user) {
        UserDao userDao = new UserDaoImpl();
        //1、根据用户名查询用户
        User u = userDao.FindByUserName(user.getUsername());
        if(u != null){
            return false;
        }
        userDao.Save(user);
        //2、保存用户信息
        return true;
    }				
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值