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 = "";
}
}
注册就结束了!!