首页 > 其他分享 >异步提交表单以及代码实现

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

时间:2023-02-13 14:35:52浏览次数:40  
标签:异步 itcast cn travel 表单 user 提交 import User

异步提交表单

在此使用异步提交表单是为了获取服务器响应的数据,因为我们前台使用的是html作为视图层,不能够直接从servlet相关的域对象获取值,只能通过ajax获取响应数据

register.html页面:

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

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

                return flag;
            }

            //校验邮箱
            function checkEmail() {
                //1.获取邮箱
                let email = $("#email").val();
                //2.定义正则
                var reg_email = /^\w+@\w+\.\w+$/;

                //3.判断
                let flag = reg_email.test(email);
                if (flag){
                    //真
                    $("#email").css("border","");
                }else {
                    //假
                    $("#email").css("border","1px solid red");
                }
                return flag;
            }



            $(function () {
                $("#registerForm").submit(function () {
                    //1.发送数据到服务器
                    if (checkUsername && checkPassword && checkEmail()){
                        //校验通过,发送ajax请求,提交表单数据  username=zhangsan&&password=123

                        $.post("regisUserServlet",$(this).serialize(),function (data){// serialize:序列化为(username=zhangsan&&password=123)格式
                            //处理服务器响应的数据 data
                        });
                    }
                    //2.跳转页面
                    return false;
                    //如果这个方法没有返回值,或者返回为true,则表单提交,如果返回为false,则表单不提交
                });

                //当某一个组件失去焦点是,调用对应的校验方法
                $("#username").blur(checkUsername);
                $("#password").blur(checkPassword);
                $("#email").blur(checkEmail);
            });
        </script>

 

 

 

 

 

 

serlvet代码实现

RegistUserServlet:

package cn.itcast.travel.web.servlet;

import cn.itcast.travel.domain.ResultInfo;
import cn.itcast.travel.domain.User;
import cn.itcast.travel.service.UserService;
import cn.itcast.travel.service.impl.UserServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.beanutils.BeanUtils;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import java.util.Random;

/**
 * 验证码
 */
@WebServlet("/registUserServlet")
public class RegistUserServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        this.doPost(request,response);
    }
    public 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);//把map集合中数据封装到user属性中
        } 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);//字符流输出
    }
}

 

Dao代码实现

UserDao

package cn.itcast.travel.dao;

import cn.itcast.travel.domain.User;

public interface UserDao {

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


    /**
     * 用户保存 添加
     * @param user
     */
    public void save(User user);
}

UserDaoImpl

package cn.itcast.travel.dao.impl;

import cn.itcast.travel.dao.UserDao;
import cn.itcast.travel.domain.User;
import cn.itcast.travel.util.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

public class UserDaoImpl implements UserDao {

    //创建一个工具类
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());//(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.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) value(?,?,?,?,?,?,?)";

        //2.执行sql
        template.update(sql, user.getUsername(),
                user.getPassword(),
                user.getName(),
                user.getBirthday(),
                user.getSex(),
                user.getTelephone(),
                user.getEmail());

    }
}

 

 

 

service代码实现

UserService

package cn.itcast.travel.service;

import cn.itcast.travel.domain.User;

public interface UserService {
    boolean regist(User user);
}

UserServiceImpl

package cn.itcast.travel.service.impl;

import cn.itcast.travel.dao.UserDao;
import cn.itcast.travel.dao.impl.UserDaoImpl;
import cn.itcast.travel.domain.User;
import cn.itcast.travel.service.UserService;

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;
    }
}

 

标签:异步,itcast,cn,travel,表单,user,提交,import,User
From: https://www.cnblogs.com/qihaokuan/p/17116209.html

相关文章

  • javascript表单提交的内容显示在表格中
    实现三个文本域的内容提交之后显示在表格中,代码直接用文本文件运行,记得后缀改为.html运行结果输入123,并点击提交按钮之后,数据就会显示在下面的表格中,有什么问题可以私聊我......
  • 注册功能分析以及表单校验
    注册功能分析      表单校验表单校验:1.用户名:单词字符,8到20位长度2.密码:单词字符,8到20位长度3.email:邮件格式4.姓名:非空......
  • 08 Form表单组件
    Form表单组件form表单向后端提交数据时,需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示......
  • NIO,同步异步,阻塞非阻塞
    1、我们何时使用IO,何时使用NIO呢?这两者有三个差异:1)IO面向流,NIO是面向缓冲区的,IO面向流意味着每次从流中读一个或多个字节,直到读取所有字节,它们没有被缓存在任何地方。此......
  • 前端项目实战28-表单置空数据重置为null
     这样可以实现原来的值......
  • react实战笔记49:获取表单数据1
    利用onchange绑定数据......
  • react实战笔记48:增加表单
     增加form表单 制作表单......
  • react实战笔记50:获取表单数据2
    //创建三个变量,用来存储表单中的数据letinputDate='';letinputDesc='';letinputTime=0;//创建一个响应函数,监听日期的变化constdateChange......
  • 事件监听器 - 实现异步监听
    异步监听代码实现:publicclassAsyncApplicationEventMulticasterextendsAbstractApplicationEventMulticaster{privateTaskExecutortaskExecutor=newSim......
  • Python黑客编程之爆破网站登录表单
    描述遍历字典,发送requests请求到目标网站,根据响应判断是否登录成功分析SecLists仓库中存放了大量有用的字典文件,我这里用了一个爆破字典cain.txt在本地部署wordpres......