欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏
csdn:雷园的csdn博客
个人博客:雷园的个人博客
简书:雷园的简书
今日头条:来自底层程序员的仰望
异步验证是否重名、用户名是否存在
首先是数据库设计,在这里我只做简单的示例
1.sql语句如下:
CREATE TABLE `你的数据库名`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(45) NOT NULL,
`password` VARCHAR(45) NOT NULL,
`create_date` VARCHAR(45),
PRIMARY KEY (`id`));
2.表结构如下图所示:
然后就是编写我们的dao层代码
1.jdbc模式代码如下:
package test;
import java.sql.*;
// 注意在此处引入你的User类
public class UserDao {
// JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/你的数据库名";
// 数据库的用户名与密码,需要根据自己的设置
static final String USER = "your_username";
static final String PASS = "your_password";
// 验证用户名是否存在
public User verifyUser(String username){
Connection conn = null;
Statement stmt = null;
User user = null;
try{
user = new User();
// 注册 JDBC 驱动
Class.forName("com.mysql.jdbc.Driver");
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM user where username = '"+ username +"'";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while(rs.next()){
// 通过字段检索
int id = rs.getInt("id");
String username1 = rs.getString("username");
String password = rs.getString("password");
String createDate = rs.getString("create_date");
user.setId(id);
user.setUsername(username1);
user.setPassword(password);
user.setCreateDate(createDate);
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
return user;
}
}
2.mybatis模式如下:
// dao层接口如下
package dao;
import User;
import java.util.List;
public interface UserDao {
// 判断是否重名
User verifyUser(String username);
}
<!-- mapping文件如下 -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="UserDao" >
<!--查询User是否重名-->
<select id="verifyUser" resultType="User">
SELECT * FROM user where username = #{username};
</select>
</mapper>
3.hibernate模式如下:
// dao层接口
package dao;
import User;
import java.util.List;
public interface UserDao {
// 查询User是否重名
User verifyUser(String username);
}
// dao层实现类
package dao.impl;
import UserDao;
import User;
import org.apache.struts2.ServletActionContext;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
// 根据用户名判断用户是否存在
@Override
@Transactional
public User verifyUser(String username) {
return (User) sessionFactory.getCurrentSession().createQuery("from User where username='" + username +"'").uniqueResult();
}
}
接下来编写我们的service
// UserService接口
package service;
import User;
public interface UserService {
// 根据用户ID查询用户
String verifyUser(String username);
}
// UserServiceImpl实现类
package service.impl;
import User;
import service.UserService;
@Service
public class UserServiceImpl implements UserService {
// 注入userDao,如果试用jdbc的话直接在方法内对UserDao进行实例化即可
@Autowired
private UserDao userDao;
// 业务逻辑层对查询结果进行处理
public String verifyUser(String username){
User user = userDao.verifyUser(username);
// 这里代表如果通过用户名没有查询到用户信息,即代表未重名返回SUCCESS,否则返回ERROR代表以重名
if(user == null){
return "SUCCESS";
}else{
return "ERROR";
}
}
}
接下来到了我们的控制器层Controller
package controller;
import User;
import org.springframework.beans.factory.annotation.Autowired;
import service.UserService;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
// 注入userService
private UserService userService;
@ResponseBody
@RequestMapping(value = "/verifyUser", method = RequestMethod.GET)
public String verifyUser(@RequestParam("username") String username){
return userService.verifyUser(username);
}
}
最后就是我们的重头戏了——我们的前端代码以及通过jquery实现ajax异步验证
1.jquery怎么导入看我另外一篇博客
2.编写html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>验证测试</title>
<script src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
</head>
<body>
<input type="text" name="username" id="username" onkeyup="verifyUser()"/>
<input type="text" name="password" id="password"/>
<script>
function verifyUser() {
$.ajax({
type: "get",
url:"/user/verifyUser",
data:{
username:$("#username").val()
},
success(data){
if (data=="SUCCESS"){
alert("用户名已经存在,请更换!!");
} else {
// 这里应该不做反应,或是与if进行反向操作
alert("");
}
},
error(){
alert("ajax配置有错,请检查url与type是否正确");
}
});
}
</script>
</body>
</html>
结束语
至此,我们的验证算是完成,大家如果还有什么问题,可以评论或者留言告诉我,我会尽全力为大家进行解答,谢谢各位🙏🙏🙏🙏。