java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_User


java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_javaweb_02

一、项目搭建

1.1 src

6个包–>controller、dao、entity、filter、service、utils

一个c3p0-config.xml

c3p0数据库连接池使用步骤

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_css_03

1.2 web

css、js、WEB-INF下lib

导入jar包和jQuery、bootstrap

Maven下载 其中对BeanUtils的jar包下载

BeanUtils使用及报错的解决办法

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_css_04

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_User_05

二、entity实体层

重点就是继承Serializable接口
Serializable接口-所有实体类都继承 User类的代码

package com.itqf.entity;

import java.io.Serializable;

public class User implements Serializable {
    private static final long serialVersionUID = 4L;
    private int uid;
    private String uname;
    private String upassword;
    private String uemail;
    private String usex;
    private int status;
    private String ucode;
    private int urole;

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpassword() {
        return upassword;
    }

    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }

    public String getUemail() {
        return uemail;
    }

    public void setUemail(String uemail) {
        this.uemail = uemail;
    }

    public String getUsex() {
        return usex;
    }

    public void setUsex(String usex) {
        this.usex = usex;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getUcode() {
        return ucode;
    }

    public void setUcode(String ucode) {
        this.ucode = ucode;
    }

    public int getUrole() {
        return urole;
    }

    public void setUrole(int urole) {
        this.urole = urole;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upassword='" + upassword + '\'' +
                ", uemail='" + uemail + '\'' +
                ", usex='" + usex + '\'' +
                ", status=" + status +
                ", ucode='" + ucode + '\'' +
                ", urole=" + urole +
                '}';
    }
}

三、Dao层

重点c3p0连接数据库

c3p0数据库连接池使用步骤

3.1 UserDao

用户模块数据库的访问接口

package com.itqf.dao;
import com.itqf.entity.User;
/*
 * 用户模块数据库访问的接口*/
public interface UserDao {
    public User selectUserByUname(String username);
}
3.2 UserDaoImpl

用户模块数据库访问的实现类

package com.itqf.dao.impl;

import com.itqf.dao.UserDao;
import com.itqf.entity.User;
import com.itqf.utils.C3p0Utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.Connection;
import java.sql.SQLException;

/*
 * 用户模块数据库访问的实现类*/
public class UserDaoImpl implements UserDao {
    private QueryRunner queryRunner = new QueryRunner(C3p0Utils.getDataSource());
    @Override
    public User selectUserByUname(String username) {
        User user = null;
        String sql = "select u_id as uid,u_name as uname,u_password as upassword,u_email as uemail,u_sex as usex,u_status as status,u_code as ucode,u_role as urole from user where u_name = ?";
        try {
            user = queryRunner.query(sql, new BeanHandler<User>(User.class), username);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return user;
    }
}

四、 service层

4.1 UserService

检测用户名是否存在的接口

package com.itqf.service;

public interface UserService {
    //检测用户名是否存在
    public boolean checkUser(String name);
}
4.2 UserServiceImpl

检测用户名是否存在的实现类
用户名已经了存在返回false、不存在(就是可以注册)返回true

package com.itqf.service.impl;

import com.itqf.dao.UserDao;
import com.itqf.dao.impl.UserDaoImpl;
import com.itqf.entity.User;
import com.itqf.service.UserService;

public class UserServiceImpl implements UserService {
    @Override
    public boolean checkUser(String name) {
        UserDao userDao = new UserDaoImpl();
        User user = userDao.selectUserByUname(name);
        if(user!=null){
            return true;
        }
        return false;
    }
}

五、Controller层

5.1 先写BaseServlet页面、Constans处理常量的Utils类

重点就是

BaseServlet封装业务逻辑

以下是baseServlet页面代码

package com.itqf.controller;

import com.itqf.utils.Constants;

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.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@WebServlet(name = "BaseServlet")
public class BaseServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getParameter(Constants.TAG);
        if(method==null&method.equals("")){
            method = Constants.INDEX;
        }
        //1. 获取类的class对象
        Class clazz = this.getClass();
        try {
            Method method1 = clazz.getMethod(method,HttpServletRequest.class,HttpServletResponse.class);
            Object result = method1.invoke(this,req,resp);
            if(result != null){
                String str= (String)result;
                if(str.startsWith(Constants.FORWARD)){
                    String path = str.substring(str.indexOf(Constants.FLAG)+1);
                    req.getRequestDispatcher(path).forward(req,resp);
                }
                else if(str.startsWith(Constants.REDIRECT)){
                    String path = str.substring(str.indexOf(Constants.FLAG)+1);
                    resp.sendRedirect(path);
                }
                else {
                    resp.getWriter().println(str);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public String index(HttpServletRequest req,HttpServletResponse resp){
        return Constants.FORWARD+Constants.FLAG+"/index.jsp";
    }
}

以下是Constants类的代码

package com.itqf.utils;
public class Constants {
    public static final String TAG = "method";
    public static final String FORWARD = "forward";
    public static final String REDIRECT = "redirect";
    public static final String FLAG = ":";
    public static final String INDEX = "index";
    /*
     * 定义用户模块涉及的常量*/
    public static final String HAS_USER="1";
    public static final String NOT_HAS_USER="0";
}
5.2 再写UserController继承BaseServlet

Register.jsp页面通过jQuery AJAX传值给UserController页面,调用这个check方法

  1. 重点就是check方法是判断用户名
  2. checkEmail方法是判断用户输入的email格式对不对

jQuery 集成AJAX

下面return的0和1已经在Constants类下面定义成常量了

package com.itqf.controller;

import com.itqf.service.UserService;
import com.itqf.service.impl.UserServiceImpl;
import com.itqf.utils.Constants;

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.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/*
 * 用户模块的controller*/
@WebServlet(name = "UserController", value = "/user")
public class UserController extends BaseServlet {

    public String check(HttpServletRequest req, HttpServletResponse resp) {
        //1.获取用户名
        //2.调用业务逻辑判断用户名是否存在
        //3.响应字符串 1 存在 0 不存在
        String username = req.getParameter("username");
        if(username == null){
            return Constants.HAS_USER;
        }
        UserService userService = new UserServiceImpl();
        boolean b = userService.checkUser(username);
        if(b){
            return Constants.HAS_USER;
        }
        return Constants.NOT_HAS_USER;
    }
    public String checkEmail(HttpServletRequest req, HttpServletResponse resp){
        String uemail = req.getParameter("uemail");
        boolean result = isEmail(uemail);
        if(result){
            return "1";
        }
        return "0";
    }
    public static boolean isEmail(String string) {
        if (string == null)
            return false;
        String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        Pattern p;
        Matcher m;
        p = Pattern.compile(regEx1);
        m = p.matcher(string);
        if (m.matches())
            return true;
        else
            return false;
    }

}

六、Register.jsp页面的<body></body>

6.1 使用了bootstrap的模态框效果,

重点就是导入modal-dialog、modal-content、modal-header、modal-body、modal-footer类

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_java_06

6.2 注册框的头部

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_css_07

6.3 注册框的中部

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_css_08

6.4 注册框的尾部,也写在form表单中!不然提交按钮怎么提交?!!!

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_java_09

6.5 注册框中部 :form表单内的元素
6.5.1 用户名:

一个label标签、一个input输入框、

再加一个div>p>span用于显示验证用户名的信息,

div.class="col-xs-3"栅格用style居右,label.class=“col-xs-9”

p.class=“text-danger”,span.class=“help-block”

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_java判断密码是否符合要求的方法_10

6.5.2密码、确认密码、邮箱

这3个都是一个lable标签、一个input输入框、一个p标签(提示信息)

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_java_11

七、Register.jsp页面的<head></head>

7.1 导入问题:bootstrap.min.css和bootstrap.min.css.map和jquery-3.5.1.js、bootstrap.min.js都要导入

一开始导入失败:
右键浏览器页面检查
,报错:找不到bootstrap.min.css.map的404
发现是没有导入bootstrap.min.css.map、重新导入还是报错
网上找了是由于没有删除bootstrap.min.css的最后一行注释
删除了发现还是报同样的错误,原因是浏览器缓存了
做web项目对css和js文件更改后浏览器端不生效的解决办法

7.2 Register.jsp页面通过jQuery AJAX传值给UserController页面,调用check方法判断用户名,调用checkEmail方法判断email格式对不对

(check方法在UserController页面)

jQuery 集成AJAX

java判断密码是否符合要求的方法 javaweb判断用户名和密码equals_css_12

全部代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="#">
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/bootstrap.min.css.map" rel="stylesheet">
    <script type="text/javascript" src="js/jquery-3.5.1.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    <script type="text/javascript">
        var bool = true;

        $(function () {
            <%--    ajax判断用户名是否重复--%>
            $("#username").change(function () {
                $.get("user", "username=" + this.value + "&method=check", function (data) {
                    if (data == 1) {
                        $("#usernameMsg").html("用户名已经存在").css("color", "red");
                        bool = false;
                    } else {
                        $("#usernameMsg").html("用户名可用").css("color", "green");
                        bool = true;
                    }
                })
            });
           //ajax判断邮箱格式是否正确
            $("#email").change(function () {
                $.get("user", "uemail=" + this.value + "&method=checkEmail", function (data) {
                    if (data == 1) {
                        $("#uemailMsg").html("邮箱格式正确").css("color", "green");
                        bool = true;
                    } else {
                        $("#uemailMsg").html("邮箱格式输入不正确").css("color", "red");
                        bool = false;
                    }
                })
            });
            //ajax判断密码是否是6位
            $("#password").change(function () {
                if (this.value.length > 6 || this.value.length < 1) {
                    $("#upasswordMsg").html("密码格式错误,请输入6位字符").css("color", "red");
                    bool = false;
                } else {
                    $("#upasswordMsg").html("密码可用").css("color", "green");
                    bool = true;
                }
            });
            $("#registerBtn").attr("disabled",(!bool));
        })

    </script>
</head>
<body>
<div class="register modal-dialog">
    <div class="modal-content">
        <%--        注册框的头部--%>
        <div class="register_header modal-header">
            <div class="header">
                <div class="col-xs-6 h3" style="text-align: left">用户注册</div>
                <div class="col-xs-6" style="text-align: right"><a href="index.jsp">首页</a></div>
            </div>
            <hr>
        </div>
        <%--    注册框的中部--%>
        <div class="regiser_body">
            <form action="/qfshop_war_exploded/user?method=register" method="post">
                <div class="modal-body">
                    <%--   用户名--%>
                    <div class="form-group">
                        <label class="control-label col-xs-9 " style="text-align: left">用户名:</label>
                        <div class="col-xs-3" style="text-align: right">
                            <p class="text-danger"><span class="help-block" id="usernameMsg"></span></p>
                        </div>
                        <input type="text" class="form-control" name="uname" id="username" placeholder="Username">
                    </div>
                    <%--    密码--%>
                    <div class="form-group">
                        <label class="control-label">密码:</label>
                        <input type="text" class="form-control" name="upassword" id="password" placeholder="Password">
                        <p class="text-danger"><span class="help-block" id="upasswordMsg">请不输入6位以上字符</span></p>
                    </div>
                    <%--    确认密码--%>
                    <div class="form-group">
                        <label class="control-label">确认密码:</label>
                        <input type="text" class="form-control" name="pwd2" id="pwd2" placeholder="Password Again">
                        <p class="text-danger"><span class="help-block" id="pwd2Msg">两次输入要一致</span></p>

                    </div>
                    <%--    邮箱--%>
                    <div class="form-group">
                        <label class="control-label">邮箱:</label>
                        <input type="text" class="form-control" name="uemail" id="email" placeholder="Email">
                        <p class="text-danger"><span class="help-block" id="uemailMsg">请填写正确格式</span></p>
                    </div>
                    <div class="form-group">
                        <label class="control-label">性别:</label>
                        <input type="radio" id="checkbox" name="usex" value="男">男
                        <input type="radio" id="checkbox2" name="usex" value="女">女
                    </div>
                </div>
                <%--    注册框的尾部--%>
                <div class="register_footer">
                    <div class="modal-footer">
                        <input type="submit" class="btn-primary" id="registerBtn" value="注册"/>
                        <input type="reset" value="重置" class="btn btn-default">
                    </div>
                </div>
            </form>
        </div>
        <div>${registerMsg}</div>
        <div id="notnull" class="text-danger"></div>
    </div>
</div>
</body>
</html>