登录注册页面连接数据库并完成注册(三)

1:我们接上一次的service层的内容:

我这里创建了一个接口,里面只需要实现

public boolean regist(User user);

这个方法就可以了你们

 2:然后我们实现这个接口,下面就是他的一个实现类;

package serviceDemo.impl;

import dao.impl.UserDaoImpl;
import domain.User;
import serviceDemo.userService;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

public class userServiceImpl  implements userService {
    /**
     * 注册用户
     *
     * @param user
     * @return
     */
    @Override
    public boolean regist(User user) {
        //根据用户名查询对象
        UserDaoImpl userDao = new UserDaoImpl();
        User byUserName = userDao.findByUserName(user.getUsername());
        //判断是否存在用户
        if (byUserName != null) {
            //说明用户名存在
            return false;
        } else {
            userDao.save(user);
            return true;
        }
    }

}

3:接下来就是dao层,连接数据库和处理了,处理下面这个代码

 4:下面就是dao层的代码了,里面我写了注释的哦,可能介绍的顺序是从下往上看

package dao.impl;

import dao.UserDao;
import domain.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import util.DruidJDBCUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

public class UserDaoImpl implements UserDao {
    private JdbcTemplate template = new JdbcTemplate(DruidJDBCUtils.getDataSource());
    //查询用户名
    @Override
    public User findByUserName(String username) {
        //获取数据层连接
        User user = null;
        try {
            //定义sql语句
            String sql = "select * from user where username = ?";
            //执行sql语句
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class),username);
        } catch (Exception ignored) {
        }
        return user;
    }
    //添加用户
    @Override
        //定义sql语句
        public void save(User user) {
        String sql = "insert into user(username,password,phone,address,rgdate) values(?,?,?,?,?)";
        //执行sql
        template.update(sql,user.getUsername(), user.getPassword(), user.getPhone(), user.getAddress(),user.getRgdate());
    }
    //查询用户名和密码完成登录功能
    @Override
    public User findByUserNamePassword(String username, String password) {
        User user = null;
        try {
            //定义sql语句
            String sql = "select * from user where username = ? and password = ?";
            //执行sql语句
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class),username,password);
        } catch (Exception ignored) {
        }
        return user;
    }
}

5:这里定义了一个私有的变量,方便每一个方法获取;

这个方法需要jar包的JdbcTemplate,我的云盘里面有,在二里面链接;

 6:然后里面调用的是一个工具类,我自己写的一个连接数据库的;

package util;



import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * druid工具类
 */
public class DruidJDBCUtils {
    //1:定义成员变量DataSource
    private static DataSource ds;
    static {
        try {
            //加载配置文件
            Properties ps = new Properties();
            //需要一个字节输入流
            InputStream rst = DruidJDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            ps.load(rst);
            //2:获取DataSource连接池对象
            ds = DruidDataSourceFactory.createDataSource(ps);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //3:获取连接
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    //4:释放资源
    public static void close(Statement st, Connection conn){
        close(null,st,conn);
    }
    public static void close(ResultSet rs, Statement st, Connection conn){
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
    //5:获取连接池的方法
    public static DataSource getDataSource(){
        return ds;
    }

}

7:工具类里面需要自己写一个配置文件,这是我的一个配置文件;

这是里面的内容:

其中url最后面的why代表的是自己数据库的名称

 

 这个是我数据库里面表的字段名称

 8:到这里注册差不多算已经是完成了

看看注册成功的效果图吧!

 对了下面还要js的代码,里面包括了正则表达式的验证,还有json返回数据,接收数据

window.onload=function () {
    //校验用户名
    function checkUsername() {
        var re_name =  /^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){6,12}$/;
        //获取用户名的值
        var valueName = $("#username_1").val();
        if (valueName == null && valueName === "") {
            return false;
        }else if (!(re_name.test(valueName))){
            //定义正则表达式
            //判断给出提示信息
            //为false不合格,就改变边框颜色为黄色
            $("#username_1").css("border","1px solid yellow");
            $("#errorMsg").html("用户名错误!只能是英文开头或者英文数字组合!!");
            return false;
        }else if (re_name.test(valueName)) {
            //为true合格,就不改变边框颜色
            $("#username_1").css("border","");
            return true;
        }
    }
    //校验密码
    function checkPassword() {
        var re_name = /^(?=.*[0-9])(?=.*[a-zA-Z])(.{6,12})$/ ;
        //获取用户密码的值
        var valuePassword = $("#password_1").val();
        if (valuePassword == null && valuePassword === "") {
            return false;
        }else if (!(re_name.test(valuePassword))){
            //定义正则表达式
            //判断给出提示信息
            //为false不合格,就改变边框颜色为黄色
            $("#password_1").css("border","1px solid yellow");
            $("#errorMsg").html("密码错误!必须6到12位,中文英文结合!!!");
            return false;
        }else if(re_name.test(valuePassword)){
            //为true合格,就不改变边框颜色
            $("#password_1").css("border","");
            return true;
        }
    }
    //校验电话号码
    function checkPhone() {
        var re_name = /^1(34[0-8]|705|(3[5-9]|5[0127-9]|8[23478]|78)\d)\d{7}$/;
        //获取用户电话号码的值
        var valuePhone = $("#phone_1").val();
        if (valuePhone == null && valuePhone === "") {
            return false;
        }else if (!(re_name.test(valuePhone))){
            //定义正则表达式
            //判断给出提示信息
            //为false不合格,就改变边框颜色为黄色
            $("#phone_1").css("border","1px solid yellow");
            $("#errorMsg").html("电话号码错误!!必须11位中国移动!");
            return false;
        }else if (re_name.test(valuePhone)) {
            //为true合格,就不改变边框颜色
            $("#phone_1").css("border","");
            return true;
        }
    }
    //校验地址
    function checkAddress() {
        //定义正则表达式
        var re_name = /^.+省.+市.+区.*$/;
        //获取用户地址的值
        var valueAddress = $("#address_1").val();
        if (valueAddress == null && valueAddress === "") {
            return false;
        }else if (!(re_name.test(valueAddress))) {
            //判断给出提示信息
            //为false不合格,就改变边框颜色为黄色
            $("#address_1").css("border", "1px solid yellow");
            $("#errorMsg").html("地址错误!!必须包含省市区!");
            return false;
        }else if (re_name.test(valueAddress)) {
            //为true合格,就不改变边框颜色
            $("#address_1").css("border", "");
            return true;
        }
    }
    $(function () {
        //注册
        //当表单提交的时候校验所有方法
        $("#form").submit(function (){
            if(checkUsername() && checkPassword() && checkPhone() && checkAddress()){
                //校验通过,发送ajax请求,提交表单数据
                $.post("registUser",$(this).serialize(),function (data) {
                    if (data.flag) {
                        document.getElementById("pop").style.display = "inline";
                    }else {
                        $("#errorMsg").html(data.errorMsg);
                    }
                });
            }
            return false;
        });
        //当某一个失去光标的时候调用校验对应的方法
        $("#username_1").change(checkUsername);//失去焦点方法blur();
        $("#password_1").change(checkPassword);
        $("#phone_1").change(checkPhone);
        $("#address_1").change(checkAddress);
        //当某一个获得光标的时候
        $(".a").focus(function(){
            //获取焦点后要执行的
            $("#errorMsg").html("");
        })
    });
    $(function (){
        $("#form_1").submit(function (){
            //登录
            //校验通过,发送ajax请求,提交表单数据
            $.post("caseServlet",$(this).serialize(),function (data) {
                if (data.flag) {
                    location.href="header.jsp";
                }else {
                    $("#login_ww").html(data.errorMsg);
                }
            });
            return false;
        });
        //当登录时某一个获得光标的时候
        $(".dc").focus(function(){
            //获取焦点后要执行的
            $("#login_ww").html("");
        });
    });
    // 封装的时间函数
    date();
}
function date() {
    var date = new Date();
    var formdate = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
    $("#rgdate_1").val(formdate);
}
function confirm() {
    document.getElementById("pop").style.display = "none";
    fun("yes");
}
//点击注册登录清空里面数据
function fun(type) {
    if (type === "no") {
        var on_1 = document.getElementById("login");
        on_1.style.display = "none";
        var to_2 = document.getElementById("register");
        to_2.style.display = "inline";
        document.getElementById("username_1").value = "";
        document.getElementById("password_1").value = "";
        document.getElementById("phone_1").value = "";
        document.getElementById("address_1").value = "";
        document.getElementById("login_ww").innerText = "";
    }else if (type === "yes") {
        var on_1 = document.getElementById("login");
        on_1.style.display = "inline";
        var to_2 = document.getElementById("register");
        to_2.style.display = "none";
        document.getElementById("username1").value = "";
        document.getElementById("password1").value = "";
        document.getElementById("errorMsg").innerText = "";
    }
}

注册就结束了!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值