AJAX,JSON用户名校验

效果

开发结构

1,src部分有两个包dao和servlet

1.1dao包下有两个数据库工具类文件

SqlHelper.java

  1 package org.guangsoft.dao;
  2 
  3 import java.io.InputStream;
  4 import java.sql.CallableStatement;
  5 import java.sql.Connection;
  6 import java.sql.DriverManager;
  7 import java.sql.PreparedStatement;
  8 import java.sql.ResultSet;
  9 import java.sql.Statement;
 10 import java.util.Properties;
 11 /**
 12  *
 13  * @author guanghe
 14  */
 15 public class SqlHelper
 16 {
 17     //定义连接资源
 18     private static Connection ct = null;
 19     private static PreparedStatement ps = null;
 20     private static CallableStatement cs = null;
 21     private static ResultSet rs = null;
 22 
 23     //定义配置参数
 24     private static String driver = null;
 25     private static String url = null;
 26     private static String username = null;
 27     private static String password = null;
 28 
 29     private static Properties pp = null;
 30     private static InputStream is = null;
 31 
 32     //读取配置参数,加载驱动
 33     static
 34     {
 35         try
 36         {
 37             pp = new Properties();
 38             is = SqlHelper.class.getClassLoader().getResourceAsStream("org/guangsoft/dao/db.properties");
 39             pp.load(is);
 40             driver = pp.getProperty("driver");
 41             url = pp.getProperty("url");
 42             username = pp.getProperty("username");
 43             password = pp.getProperty("password");
 44             Class.forName(driver);
 45         }
 46         catch (Exception e)
 47         {
 48             e.printStackTrace();
 49             System.exit(0);
 50         }
 51         finally
 52         {
 53             try
 54             {
 55                 is.close();
 56             }
 57             catch (Exception e)
 58             {
 59                 e.printStackTrace();
 60             }
 61             is = null;
 62         }
 63     }
 64 
 65     //获取连接
 66     public static Connection getConnection()
 67     {
 68         try
 69         {
 70             ct = DriverManager.getConnection(url, username, password);
 71         }
 72         catch (Exception e)
 73         {
 74             e.printStackTrace();
 75         }
 76         return ct;
 77     }
 78     
 79     public static PreparedStatement getPs()
 80     {
 81         return ps;
 82     }
 83     
 84     public static ResultSet getRs()
 85     {
 86         return rs;
 87     }
 88 
 89     //执行DQL查询
 90     public static ResultSet executeQuery(String sql, String[] parameters)
 91     {
 92         try
 93         {
 94             ct = getConnection();
 95             ps = ct.prepareStatement(sql);
 96             if (parameters != null)
 97             {
 98                 for (int i = 0; i < parameters.length; i++)
 99                 {
100                     ps.setString(i + 1, parameters[i]);
101                 }
102             }
103             rs = ps.executeQuery();
104         }
105         catch (Exception e)
106         {
107             e.printStackTrace();
108             throw new RuntimeException(e.getMessage());
109         }
110         return rs;
111     }
112 
113     //执行DML更新
114     public static int executeUpdate(String sql, String[] parameters)
115     {
116         try
117         {
118             ct = getConnection();
119             ps = ct.prepareStatement(sql);
120             if (parameters != null)
121             {
122                 for (int i = 0; i < parameters.length; i++)
123                 {
124                     ps.setString(i + 1, parameters[i]);
125                 }
126             }
127             return ps.executeUpdate();
128         }
129         catch (Exception e)
130         {
131             e.printStackTrace();
132             throw new RuntimeException(e.getMessage());
133         }
134         finally
135         {
136             close(ct, ps, rs);
137         }
138     }
139 
140     //执行DML批处理
141     public static int executeUpdate2(String[] sql, String[][] parameters)
142     {
143         try
144         {
145             ct = getConnection();
146             ct.setAutoCommit(false);
147 
148             for (int i = 0; i < sql.length; i++)
149             {
150 
151                 if (null != parameters[i])
152                 {
153                     ps = ct.prepareStatement(sql[i]);
154                     for (int j = 0; j < parameters[i].length; j++)
155                     {
156                         ps.setString(j + 1, parameters[i][j]);
157                     }
158                     return ps.executeUpdate();
159                 }
160 
161             }
162             ct.commit();
163         }
164         catch (Exception e)
165         {
166             e.printStackTrace();
167             try
168             {
169                 ct.rollback();
170             }
171             catch (Exception e1)
172             {
173                 e1.printStackTrace();
174             }
175             throw new RuntimeException(e.getMessage());
176         }
177         finally
178         {
179             close(ct, ps, rs);
180         }
181         return 0;
182     }
183     
184     //执行存储过程
185     public static CallableStatement callPro1(String sql, String[] parameters)
186     {
187         try
188         {
189             ct = getConnection();
190             cs = ct.prepareCall(sql);
191             if (parameters != null)
192             {
193                 for (int i = 0; i < parameters.length; i++)
194                 {
195                     cs.setObject(i + 1, parameters[i]);
196                 }
197             }
198             cs.execute();
199         }
200         catch (Exception e)
201         {
202             e.printStackTrace();
203             throw new RuntimeException(e.getMessage());
204         }
205         finally
206         {
207             close(ct, cs, rs);
208         }
209         return cs;
210     }
211 
212     //执行高级存储过程
213     public static CallableStatement callPro2(String sql, String[] inparameters,
214             Integer[] outparameters)
215     {
216         try
217         {
218             ct = getConnection();
219             cs = ct.prepareCall(sql);
220             if (inparameters != null)
221             {
222                 for (int i = 0; i < inparameters.length; i++)
223                 {
224                     cs.setObject(i + 1, inparameters[i]);
225                 }
226             }
227             if (outparameters != null)
228             {
229                 for (int i = 0; i < outparameters.length; i++)
230                 {
231                     cs.registerOutParameter(inparameters.length + 1 + i, outparameters[i]);
232                 }
233             }
234             cs.execute();
235         }
236         catch (Exception e)
237         {
238             e.printStackTrace();
239             throw new RuntimeException(e.getMessage());
240         }
241         finally
242         {
243             close(ct, cs, rs);
244         }
245         return cs;
246     }
247     
248     //关闭所有资源连接
249     public static void close(Connection ct, Statement ps, ResultSet rs)
250     {
251         if (rs != null)
252         {
253             try
254             {
255                 rs.close();
256             }
257             catch (Exception e)
258             {
259                 e.printStackTrace();
260             }
261             rs = null;
262         }
263         if (ps != null)
264         {
265             try
266             {
267                 ps.close();
268             }
269             catch (Exception e)
270             {
271                 e.printStackTrace();
272             }
273             ps = null;
274         }
275         if (null != ct)
276         {
277             try
278             {
279                 ct.close();
280             }
281             catch (Exception e)
282             {
283                 e.printStackTrace();
284             }
285             ct = null;
286         }
287     }
288 }

db.properties

1 driver = com.mysql.jdbc.Driver
2 url = jdbc:mysql://localhost:3306/student
3 username = root
4 password =root

1.2servlet包下有一个文件Servlet

CheckUname.java

 1 package org.guangsoft.servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.sql.Connection;
 6 import java.sql.PreparedStatement;
 7 import java.sql.ResultSet;
 8 
 9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 import org.guangsoft.dao.SqlHelper;
15 
16 public class CheckUname extends HttpServlet
17 {
18 
19     public void doGet(HttpServletRequest request, HttpServletResponse response)
20             throws ServletException, IOException
21     {
22         processRequest(request, response);
23     }
24 
25     public void doPost(HttpServletRequest request, HttpServletResponse response)
26             throws ServletException, IOException
27     {
28         processRequest(request, response);
29     }
30 
31     protected void processRequest(HttpServletRequest request,
32             HttpServletResponse response) throws ServletException, IOException
33     {
34         request.setCharacterEncoding("UTF-8");
35         response.setCharacterEncoding("UTF-8");
36         response.setContentType("text/html; charset=utf-8");
37         PrintWriter out = response.getWriter();
38         String username = request.getParameter("username");
39         Connection connection = null;
40         PreparedStatement prepareStatement = null;
41         ResultSet resultSet = null;
42         try
43         {
44             connection = SqlHelper.getConnection();
45             String sql = "select * from user where username=?";
46             prepareStatement = connection.prepareStatement(sql);
47             prepareStatement.setString(1,username);
48             resultSet = prepareStatement.executeQuery();
49             while(resultSet.next())
50             {
51                 response.getWriter().print("true");
52                 return;
53             }
54             response.getWriter().print("false");
55         }
56         catch(Exception e)
57         {
58             e.printStackTrace();
59         }
60         finally
61         {
62             SqlHelper.close(connection, prepareStatement, resultSet);
63         }
64     }
65 
66 }

2,webRoot部分有两个文件js工具类和jsp页面

2.1 js工具类封装了操作json数据的函数

AjaxUtil.js

 1 function sendAjaxReq(method,url,param,fun200,fun404,fun500)
 2       {
 3           var req;
 4           if(window.XMLHttpRequest)
 5           {
 6               req = new XMLHttpRequest();    
 7           }
 8           else if(window.ActiveXObject)
 9           {
10               req = new ActiveXObject("Msxml2.XMLHTTP");
11     }
12     req.open(method,url);
13     req.onreadystatechange = function()
14     {
15         if(req.readyState == 4)
16         {
17             if(req.status == 200)
18             {
19                 if(fun200)
20                 {
21                       fun200(req.responseText);
22                 }
23             }
24             else if(req.status == 404)
25             {
26                 if(fun404)
27                 {
28                     fun404();
29                 }
30             }
31             else if(req.status == 500)
32             {
33                 if(fun500)
34                 {
35                     fun500();
36                 }
37             }
38         }
39     }
40     if(method.toUpperCase() == "GET")
41     {
42         req.send(null);
43     }
44     else if(method.toUpperCase() == "POST")
45     {
46         req.setRequestHeader("context-type", "application/x-www-form-urlencoded");
47         req.send(param);
48     }
49 }

2.2 jsp页面是显示页面

index.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <style>
12         .success
13         {
14             color:green;
15         }
16         .fail
17         {
18             color:red;
19         }
20     </style>
21     <script src="/ajax/js/AjaxUtil.js"></script>
22     <script>
23         function checkUname(unameValue)
24         {
25             if(unameValue != "")
26             {
27                 sendAjaxReq("get","checkUname?username="+unameValue,null,function(data)
28                 {
29                     if(eval(data))
30                     {
31                         document.getElementById("unameSpan").innerHTML="该用户名已被注册!";
32                         document.getElementById("unameSpan").className="fail";                
33                     }
34                     else
35                     {
36                         document.getElementById("unameSpan").innerHTML="恭喜,可以注册!";
37                         document.getElementById("unameSpan").className="success";
38                     }
39                 });
40             }
41         }
42         
43     </script>
44   </head>
45   
46   <body>
47       <form method="get" action="/ajax/checkUname">
48           <table>
49               <tr>
50                   <td>用户名:</td>
51                   <td>
52                       <input type="text" name="username" id="username" 
53                       onblur="checkUname(this.value);" 
54                       onkeypress="document.getElementById('unameSpan').innerHTML='';" />
55                   </td>
56                   <td><span name="unameSpan" id="unameSpan"></span></td>
57               </tr>
58               <tr>
59                   <td>密 码:</td>
60                   <td><input type="password" name="password" /></td>
61               </tr>
62           </table>
63           <input type="submit" value="提交">
64       </form>
65       
66   </body>
67 </html>
原文地址:https://www.cnblogs.com/guanghe/p/5994305.html