首先,创建一个数据表 userinfo ,里面有id, name ,phoneNum,paswd 和 memberLevel,图片如下:
后端java先连接数据库,建一个BaseConnection类,代码如下:
package com.determ.until;
import java.sql.Connection;
import java.sql.DriverManager;
public class BaseConnection {
public static Connection getConnection(){
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/customerInfo","root","root");
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
然后创建一个Customer基础类,里面声明一些属性,也对应数据库里面的字段,关键代码如下:
private int id;
private String name;
private String phoneNum;
private String paswd;
private String memberLevel;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
省略部分get 和set方法
然后在com.determ.servlet包里面建一个FindServlet类,主要通过接收前端传来的phoneNum,然后执行sql查询语句,来检测号码是否与数据库中重复,如果没有,则可以注册。
public void checkPhone(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Connection conn = BaseConnection.getConnection(); //建立连接
Statement stmt = conn.createStatement(); //获取Statement对象
String userPhone = request.getParameter("phoneNum"); //获取前端传过来的phoneNum
String result =""; //声明结果
String sql = "select*from userinfo where phoneNum='"+userPhone+"';" ; //数据库语句
System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql); //执行数据库语句
if(rs.next()){ //如果数据库语句能执行,返回"0" 也表示手机号码已经注册
result ="0";
}else{
result = "1"; //如果数据库语句不能执行,返回"1" 也表示手机号码未注册,可以注册
}
//将返回值转换成json字符串,并实现jsonpCallback successCallback转换。
String string ="successCallback("+JSON.toJSONString(result,true).toString()+")";
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();//返回给前端
out.write(string);//返回给前端
System.out.println(string);
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//最后在doPost里面执行checkPhone方法。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.checkPhone(request, response);
}
前端js代码是:
//手机号码失去焦点判断手机号可否注册
$("#phone").focusout(function(){
var phone = $("#phone").val();
if(!(/^1[34578]\d{9}$/.test(phone))){
mui.alert("手机号码有误,请重填");
}else{
checkPhoneNum(phone);
}
})
//发ajax请求后台判断手机号码是否重复
function checkPhoneNum(phone){
$.ajax({
url:"http://localhost:8080/DeterminationInCloud/FindServlet?action=checkPhone",
type:"post",
dataType:"jsonp",
jsonpCallback:"successCallback", //如果这一句不写,程序将直接执行error,而不会执行success.
async:true,
data:{phoneNum:phone},
success:function(result){
console.log(result);
if(result == "1"){
mui.toast("该号码可以注册!");
}else{
mui.alert("该号码已经注册!");
}
},
error:function(){
mui.alert("对不起,请求出错!");
}
})
}
好了代码就这么多,这一个ajax 请求可以执行,能够验证注册手机号码是否唯一。ヾ(∀)ノ也是新手,还望大咖指教。