使用ajax实现邮箱验证—前台输入完成,光标离开输入框后,将输入内容拿到后台验证是否存在,如果存在就提醒已经存在

|--要求

 

|--实现方式:

1、前台使用使用函数检测输入内容,并使用jQuery的ajax异步将检测到的内容发送到后台对比

2、如果输入内容在数据库内已经存在,就提醒已经存在

 

|--代码


 1 package cn.exercise.dao; 2  3 import cn.exercise.util.ConfigManager; 4  5 import java.sql.*; 6  7 public class BaseDao { 8 //引入ps对象,conn对象,rs对象 9 private PreparedStatement ps = null;10 private Connection conn = null;11 private ResultSet rs = null;12 13 //引入连接数据库需要的配置信息14 public final String driver = ConfigManager.getInstance().getString("jdbc.driver");15 public final String url = ConfigManager.getInstance().getString("jdbc.url");16 public final String user = ConfigManager.getInstance().getString("jdbc.userName");17 public final String pwd = ConfigManager.getInstance().getString("jdbc.password");18 19 /**20  * 获取数据库连接21  *22  * @return23 */24 public Connection getConn() {25 try {26  Class.forName(driver);27 conn = DriverManager.getConnection(url, user, pwd);28 } catch (ClassNotFoundException e) {29  e.printStackTrace();30 } catch (SQLException e) {31  e.printStackTrace();32  }33 return conn;34  }35 36 /**37  * 查询方法38  *39  * @param sql40  * @param obj41  * @return42 */43 public ResultSet executeQuery(String sql, Object... obj) {44  getConn();45 try {46 ps = conn.prepareStatement(sql);47 for (int i = 0; i < obj.length; i++) {48 ps.setObject((i + 1), obj[i]);49  }50 rs = ps.executeQuery();51 } catch (SQLException e) {52  e.printStackTrace();53  }54 return rs;55  }56 57 58 /**59  * 更新数据库的方法60  *61  * @param sql62  * @param obj63  * @return64 */65 public int executeUpdate(String sql, Object... obj) {66  getConn();67 int result = 0;68 try {69 ps = conn.prepareStatement(sql);70 for (int i = 0; i < obj.length; i++) {71 ps.setObject((i + 1), i);72  }73 result = ps.executeUpdate();74 } catch (SQLException e) {75  e.printStackTrace();76  }77 78 return result;79  }80 81 public void closeAll() {82 try {83 if (rs != null) {84  rs.close();85  }86 if (ps != null) {87  ps.close();88  }89 if (conn != null) {90  conn.close();91  }92 } catch (SQLException e) {93  e.printStackTrace();94  }95  }96 97 98 99 }

BaseDao--访问数据库的基类

 1 package cn.exercise.dao; 2  3 import cn.exercise.pojo.JsonAnalysis; 4 import cn.exercise.pojo.User; 5 import com.sun.org.apache.xpath.internal.objects.XObject; 6  7 import java.sql.ResultSet; 8 import java.sql.SQLException; 9 10 public class UserDaoImpl extends BaseDao implements UserDao {11 ResultSet rs = null;12 JsonAnalysis jsonAnalysis = null;13 14  @Override15 public JsonAnalysis getUserByEmail(String uemail) {16 //SELECT * from jsonanalysis WHERE uemail=?17 String sql = "SELECT * from jsonanalysis WHERE uemail=?";18 Object obj = (Object) uemail;19 rs = executeQuery(sql, uemail);20 // System.out.println(rs);21 22 try {23 if (rs.next()) {24 jsonAnalysis = new JsonAnalysis();25 // System.out.println(rs.getInt("uid")+rs.getString("uname")+rs.getString("uemail"));26 jsonAnalysis.setUid(rs.getInt("uid"));27 jsonAnalysis.setUname(rs.getString("uname"));28 jsonAnalysis.setUemail(rs.getString("uemail"));29  }30 } catch (SQLException e) {31  e.printStackTrace();32  }33 // System.out.println(jsonAnalysis);34 return jsonAnalysis;35  }36 37 38 // public static void main(String[] args) {39 // UserDao user = new UserDaoImpl();40 // System.out.println(user.getUserByEmail("32567789@qq.com"));41 // }42 }

实体类Dao ---负责具体查询

 1 package cn.exercise.service; 2  3 import cn.exercise.dao.UserDao; 4 import cn.exercise.dao.UserDaoImpl; 5 import cn.exercise.pojo.JsonAnalysis; 6  7 public class JsonAnalysisServiceImpl implements JsonAnalysisService { 8  @Override 9 public boolean existByEmail(String uemail) {10 boolean flag = false;11 UserDao userDao = new UserDaoImpl();12 JsonAnalysis user = userDao.getUserByEmail(uemail);13 if (user != null) {14 flag = true;15 } else {16 flag = false;17  }18 return flag;19  }20 21 // public static void main(String[] args) {22 // JsonAnalysisServiceImpl j=new JsonAnalysisServiceImpl();23 // System.out.println(j.existByEmail("32567789@qq.com"));24 // }25 }

业务层的实现类---用于判定是否查到了信息

 1 package cn.exercise.web.serlet; 2  3 import cn.exercise.service.JsonAnalysisServiceImpl; 4  5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 import java.io.IOException;11 import java.io.PrintWriter;12 13 //@WebServlet(name = "AjaxServlet", urlPatterns = "/email")14 @WebServlet("/email")15 public class AjaxServlet extends HttpServlet {16 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {17 // this.doGet(request, response);18  doGet(request, response);19  }20 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {22 System.out.println("测试是否有接到请求");23 response.setContentType("text/html;charset=UTF-8");24 String uemail = request.getParameter("uemail");25 String uname = request.getParameter("uname");26 String pwd = request.getParameter("pwd");27 JsonAnalysisServiceImpl jasi = new JsonAnalysisServiceImpl();28 29 String reback = "";30 if (jasi.existByEmail(uemail)) {31 reback = "该邮箱已经注册,请换个邮箱注册";32 } else {33 reback = "该邮箱未注册,可以使用";34  }35 PrintWriter writer = response.getWriter();36  writer.println(reback);37  }38 }

Servlet类---负责控制业务
 前端

 1 <%-- 2  Created by IntelliJ IDEA. 3  User: Administrator 4 Date: 2019/10/17 5 Time: 9:09 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html>10 <head>11 <title>邮箱验证</title>12 <script src="js/jquery-1.12.4.js"></script>13 <script>14 function test() {15 var a = document.getElementById("input").value;16 // alert(a);17  $.ajax({18 "url": "email",19 "type": "get",20 "data": "uemail="+a,21 "dataType":"text",22 "success":function (data) {23  document.getElementById("a").innerText=data;24  },25 "error":function () {26  alert("请联系管理员");27  }28  })29  }30 </script>31 </head>32 <body>33 <form action="/email" method="get">34 <table>35 <tr>36 <td>注册邮箱:</td>37 <td><input type="email" name="uemail" onblur="test()" id="input"></td>38 <td id="a">*</td>39 </tr>40 <tr>41 <td>&nbsp;&nbsp;名:</td>42 <td><input type="text" name="uname"></td>43 <td>*</td>44 </tr>45 <tr>46 <td>&nbsp;&nbsp;&nbsp;码:</td>47 <td><input type="text" name="pwd"></td>48 <td>*</td>49 </tr>50 <tr align="center">51 <td colspan="3"><input type="submit" value="提交"></td>52 </tr>53 </table>54 </form>55 56 </body>57 </html>

Jsp--负责展示效果

|--过程中的错误

1、jsp访问servlet路径不对-----将jsp从一个目录里面取出来之后OK

2、resources文件夹没能被JDBC的ConfigManager读取到----右击resources文件夹,选择Make directory as --> resuorce root

3、servlet命名不规范,将"/email.do"写成“/Email.do”之后,服务器报错

4、将过滤器设置成了Servlet......导致服务器无法运行

相关文章