异步(ajax)提交表单

6.3.3异步(ajax)提交表单
在此使用异步提交表单是为了获取服务器响应的数据。因为我们前台使用的是html作为视图层,不能够直接从servlet相关的域对象获取值,只能通过ajax获取响应数据
6.3.4代码实现
6.3.5编写RegistUserServlet
@WebServlet("/registUserServlet")
public class RegistUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    //验证校验
    String check = request.getParameter("check");
    //从sesion中获取验证码
    HttpSession session = request.getSession();
    String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
    session.removeAttribute("CHECKCODE_SERVER");//为了保证验证码只能使用一次
    //比较
    if(checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)){
        //验证码错误
        ResultInfo info = new ResultInfo();
        //注册失败
        info.setFlag(false);
        info.setErrorMsg("验证码错误");
        //将info对象序列化为json
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(info);
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(json);
        return;
    }

    //1.获取数据
    Map<String, String[]> map = request.getParameterMap();

    //2.封装对象
    User user = new User();
    try {
        BeanUtils.populate(user,map);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }

    //3.调用service完成注册
    UserService service = new UserServiceImpl();
    boolean flag = service.regist(user);
    ResultInfo info = new ResultInfo();
    //4.响应结果
    if(flag){
        //注册成功
        info.setFlag(true);
    }else{
        //注册失败
        info.setFlag(false);
        info.setErrorMsg("注册失败!");
    }

    //将info对象序列化为json
    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(info);

    //将json数据写回客户端
    //设置content-type
    response.setContentType("application/json;charset=utf-8");
    response.getWriter().write(json);


}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
}

}
6.3.6编写UserService以及UserServiceImpl
public class UserServiceImpl implements UserService {

private UserDao userDao = new UserDaoImpl();
/**
 * 注册用户
 * @param user
 * @return
 */
@Override
public boolean regist(User user) {
    //1.根据用户名查询用户对象
    User u = userDao.findByUsername(user.getUsername());
    //判断u是否为null
    if(u != null){
        //用户名存在,注册失败
        return false;
    }
    //2.保存用户信息
    userDao.save(user);
    return true;
}

}

6.3.7编写UserDao以及UserDaoImpl
public class UserDaoImpl implements UserDao {

private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

@Override
public User findByUsername(String username) {
    User user = null;
    try {
        //1.定义sql
        String sql = "select * from tab_user where username = ?";
        //2.执行sql
        user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);
    } catch (Exception e) {

    }

    return user;
}

@Override
public void save(User user) {
    //1.定义sql
    String sql = "insert into tab_user(username,password,name,birthday,sex,telephone,email) values(?,?,?,?,?,?,?)";
    //2.执行sql

    template.update(sql,user.getUsername(),
                user.getPassword(),
            user.getName(),
            user.getBirthday(),
            user.getSex(),
            user.getTelephone(),
            user.getEmail());
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值