异步提交表单以及代码实现

异步提交表单

在此使用异步提交表单是为了获取服务器响应的数据。因为我们前台使用的是html作为视图层,

不能够直接从servlet相关的域对象获取值 ,只能通过ajax获取响应数据

register.html页面:

复制代码
        <script>
            /*
                表单校验:
                    1、用户名:单词字符,长度8到20位
                  2、密码:单词字符,长度8到20位
                  3、email:邮件格式
                  4、姓名:非空
                  5、手机号:手机号格式
                  6、出生日期:非空
                  7、验证码:非空
             */
            //校验用户名
            function checkUsername() {
                //1、获取用户名
                var usernmae = $("#username").val();
                //2、定义正则
                var reg_username = /^\w{8,20}$/;
                //判断给出提示信息
                var flag = reg_username.test(usernmae);
                if (flag){
                    //用户名合法
                    $("#username").css("border","");
                } else {
                    //用户名非法
                    $("#username").css("border","1px solid red");
                }
                return flag;

            }
            //校验密码
            function checkPassword(){
                //1、获取用户名
                var password = $("#password").val();
                //2、定义正则
                var reg_password = /^\w{8,20}$/;
                //判断给出提示信息
                var flag = reg_password.test(password);
                if (flag){
                    //用户名合法
                    $("#password").css("border","");
                } else {
                    //用户名非法
                    $("#password").css("border","1px solid red");
                }
                return flag;
            }
            //校验邮箱
            function checkEmail(){
                //1、获取邮箱
                var email = $("#email").val();
                //定义规则
                var reg_email = /^\w+@\w+\.\w+$/;
                //判断
                var flag = reg_email.test(email);
                if (flag){
                    $("#email").css("border","");
                }else {
                    $("#email").css("border","1px solid red");
                }
                return flag;
            }

            $(function () {
                $("#registerForm").submit(function () {
                    //发送数据到服务器
                    if (checkUsername() && checkPassword() && checkEmail()){
                        //校验通过发送ajax请求,提交表单的数据
                        $.post("registUserServlet",$(this).serialize(),function (data) {
                            //处理服务器响应的数据
                            
                        });
                    }
                    return false;
                });

                $("#username").blur(checkUsername);
                $("#password").blur(checkPassword);
                $("#email").blur(checkEmail);
            })
        </script>
复制代码

 

 

 

 

 

 

 

Servlet代码实现

RegistUserServlet:

复制代码
@WebServlet("/registUserServlet")
public class RegistUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //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);
        //4、响应结果
        ResultInfo info = new ResultInfo();
        if (flag){
            //注册成功
            info.setFlag(true);
        }else {
            //注册失败
            info.setFlag(false);
            info.setErrorMsg("注册失败");
        }
        //将info对象序列化为json
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(info);
        //将json数据写回客户端
        //设置content-type
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(string);

    }

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

 

Dao代码实现

UserDao接口:

复制代码
public interface UserDao {

    /**
     * 根据用户名查询用户信息
     * @param username
     * @return
     */
    public User findByUsername(String username);

    /**
     * 用户保存
     * @param user
     */
    public void save(User user);
}
复制代码

UserDaoImpl实现类:

复制代码
public class UserDaoImpl implements UserDao {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    @Override
    public User findByUsername(String username) {
        User user = null;
        try {
            //定义sql
            String sql = "select * from tab_user where username = ?";
            //执行sql
            user = template.queryForObject(sql, new BeanPropertyRowMapper<>(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());

    }
}
复制代码

 

 

 

 

service代码实现

UserService接口:

public interface UserService {

    boolean regist(User user);
}

UserServiceImpl实现类:

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

 

posted @   xjw12345  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示