Day17JavaWeb [tourism project] development function: registration***

Registration function_function analysis

Insert picture description here
Insert picture description here

Registered background function code

Write UserService's register method test

com\wzx\service\TestUserService.java

 @Test
    public void test03() {
    
    

        UserService userService = new UserService();

        User user = new User();
        user.setUsername("jackhello");
        user.setPassword("123456");
        user.setStatus('Y');

        int code = userService.register(user);

        System.out.println(code);
    }

Write the register method of UserService

com\wzx\service\UserService.java

 public int register(User user) {
    
    
        UserDao userDao = MySessionUtils2.getMapper(UserDao.class);
        //判断 用户的账号是否存在
        User user2 = userDao.findByUserName(user.getUsername());
        //不存在,调用保存 返回 1
        if(user2 == null){
    
    
            userDao.save(user2);
            return 1;
        }else{
    
    
            //存在,返回-1
            return -1;
        }

    }

How to write UserDao

with \ wzx \ dao \ UserDao.java

  //select * from tab_user where username='jackhello3'
    User findByUserName(String username);
    //insert into tab_user values(null,...)
    void save(User user2);

with \ wzx \ dao \ UserDao.xml

    <select id="findByUserName" parameterType="string" resultType="user">
         select * from tab_user where username=#{username}
    </select>

    <insert id="save" parameterType="user" >
        insert into tab_user values(null,#{username},
        #{password},#{name},#{birthday},#{sex},#{telephone},#{email},#{status},#{code})
    </insert>

Test the method of UserDao class

with \ wzx \ dao \ UserDaoTest2.java

public class UserDaoTest2 {
    
    

    @Test
    public void findByUserName() {
    
    
        UserDao dao =    MySessionUtils2.getMapper(UserDao.class);
        User user = dao.findByUserName("jackhello");
        System.out.println(user);
    }

    @Test
    public void save() {
    
    
        UserDao dao =    MySessionUtils2.getMapper(UserDao.class);
        User user= new User(33,"jackhello33","jackhello34",new Date(),"jack","男","3333","[email protected]",'N',"ddd");
        // User(int uid, String username, String password, Date birthday, String name, String sex, String telephone, String email, char status, String code)
        dao.save(user);
    }
}

Front desk code

register.jsp

Create a new register.jsp and
copy reister.html into the
replacement project and replace register.html with register.jsp

Data verification of register.jsp page

  • (0) The format of the data in the actual project is verified in the browser, why?
    Improve the user experience and reduce the pressure on the server.
  • (1) Verify user name/^\w{8,20}$/ word characters, length 8 to 20 digits
  • (2) Verify password /^\w{8,20}$/ word characters, length 8-20 digits
  • (3) Check email = /^\w+@\w+.\w+$/ Email [email protected]
    Regular expression
    Regular expression.test (string)
    returns a Boolean value
    true, the format is correct,
    false, the format is incorrect
  <script type="text/javascript" >

        function checkUsername(){
    
    
            //判断一下账号输入是否合法
           var  username = $("#username").val();
           var  reg =  /^\w{8,20}$/ ;
           var flag = reg.test(username);
           if(flag){
    
    
               //不提示
               $("#username").css("border","");
           }else{
    
    
               //提示
               $("#username").css("border","1px solid red");
           }
           return flag;
        }

        function checkPassword(){
    
    
            //判断一下密码输入是否合法
            var  password = $("#password").val();
            var  reg =  /^\w{8,20}$/ ;
            var flag = reg.test(password);
            if(flag){
    
    
                //不提示
                $("#password").css("border","");
            }else{
    
    
                //提示
                $("#password").css("border","1px solid red");
            }
            return flag;
        }

        function checkEmail(){
    
    
            //判断一下密码输入是否合法
            var  email = $("#email").val();
            var  reg =   /^\w+@\w+\.\w+$/  ;
            var flag = reg.test(email);
            if(flag){
    
    
                //不提示
                $("#email").css("border","");
            }else{
    
    
                //提示
                $("#email").css("border","1px solid red");
            }
            return flag;
        }

        $(function () {
    
    
            //账号密码 手机号 邮箱 正则判断
            //格式正确不作提示,如果错误将边框改成红色
            $("#username").blur(checkUsername)
            $("#password").blur(checkPassword)
            $("#email").blur(checkEmail)

            $("#registerForm").submit(function () {
    
    
                //ajax提交
                return false;
            })
        });
    </script>

Register the front desk_Ajax request

(1) The submit function
controls whether the form is submitted. The function returns true, the form is submitted, and the form returns false. The form is not submitted.
Here
, if you submit ajax, write false
(2) Why return false? How does the data get to the server?
ajax submission

register.jsp

  $("#registerForm").submit(function () {
    
    
                //ajax提交
                if(checkUsername()&&checkPassword()&&checkEmail()){
    
    
                    //使用jquery
                    $.post("registerServlet",$("#registerForm"). serialize(),
                        function(data){
    
    
                           //{code:1,data:成功}
                            if(1 == data.code){
    
    
                                //注册成功
                                window.location = "login.jsp";
                            }else{
    
    
                                //注册失败
                                $("#errorMsg").html(data.data);
                            }
                        },"json");
                }
                return false;
            })

Write RegisterServlet

com\wzx\web\servlet\RegisterServlet.java


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
            //接收请求,获取参数
        Map<String, String[]> map = request.getParameterMap();
        User user = new User();
        //将请求中的参数赋值给变量
        try {
    
    
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
    
    
            e.printStackTrace();
        } catch (InvocationTargetException e) {
    
    
            e.printStackTrace();
        }
        //对参数处理
        UserService userService = new UserService();
        int code = userService.register(user);

         //响应给浏览器
        ResponseInfo responseInfo = new ResponseInfo();
        responseInfo.setCode(code);
        if(code==1){
    
    
            responseInfo.setData("注册成功");
        }else{
    
    //-1,-2,-3
            responseInfo.setData("注册失败");
        }
        String json = new ObjectMapper().writeValueAsString(responseInfo);
        response.getWriter().println(json);
    }

BeanUtils string to date****

  • ConvertUtils.register方法 The converter can be registered to BanUtils
  • You can automatically convert string to java.util.Date
   ConvertUtils.register(new Converter() {
    
    

            public Object convert(Class type, Object value) {
    
    


                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                try {
    
    
                    return simpleDateFormat.parse(value.toString());
                } catch (ParseException e) {
    
    
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }
        }, Date.class);

Registered verification code processing

Copy it directly from LoginServlet, but modify the prompt.

Guess you like

Origin blog.csdn.net/u013621398/article/details/108864890