效果

开发结构

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>

AJAX,JSON用户名校验的更多相关文章

  1. ajax实现用户名校验的传统和jquery的$.post方式

    第一种:传统的ajax异步请求,后台代码以及效果在最下边 首先我们在eclipse中创建一个注册页面regist.jsp,创建一个form表单,注意,由于我们只是实现用户名校验的效果,下边红色部门是我 ...

  2. AJAX,JSON搜索智能提示

    效果 开发结构参考AJAX,JSON用户校验 主要有两个核心文件 1,处理输入字符,进行后台搜索的servlet Suggest.java package org.guangsoft.servlet; ...

  3. 案例1.用Ajax实现用户名的校验

    用Ajax实现用户名的校验 java的验证类 public class UserDao { public boolean checkUserName(String name) { //这里的name是 ...

  4. 使用AJAX完成用户名是否存在异步校验

    一.JSP代码: 1.事件触发:onblur 2.编写AJAX代码:向Action中提交,传递username参数 <script> function checkUsername(){ / ...

  5. thinkphp中ajax用户名校验

    ajax实在是太神奇了,刚刚接触,不足之处,请大家指正. 采用Ajax方式进行页面无刷新提示,来检测用户名是否存在. 搭建一个thinkphp的环境,在index.html中,ajax代码如下: &l ...

  6. ajax用户名校验demo详解

    //用户名校验的方法 //这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互 var xmlhttp; function verify(){ //1.使用dom的方式获取文本框中的 ...

  7. SSH网上商城---使用ajax完成用户名是否存在异步校验

    小伙伴在上网的时候,需要下载或者观看某些视频资料,更或者是在逛淘宝的时候,我们都需要注册一个用户,当我们填写好各种信息,点击确定的时候,提示用户名已经存在,小编就想,为什么当我们填写完用户名的时候,她 ...

  8. Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码 其中有json的一句话解释

    前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function( ...

  9. ajax案例_校验用户名

    目录 ajax案例_校验用户名 代码下载 需求 流程 搭建环境 开发代码 1_jsp 1_servlet 1_service.dao 2_servlet 2_jsp 测试后,功能实现,完结撒花 aja ...

随机推荐

  1. Session解析

    1.除非关闭所有页面 或者超时session才销毁 2.在几个页面之间切换的时候 session保存用户状态. 3.遍历数组时候for循环中从0开始小于长度,不等于长度,用Matlab用习惯了,竟然从 ...

  2. C++ STL初学笔记

    C++  STL初学笔记 更系统的版本见徐本柱的PPT set 在这儿:http://www.cnblogs.com/pdev/p/4035020.html #include <vector&g ...

  3. appium-车友会欢迎界面向右滑动4次点击‘立即体验’进入首屏

    代码如下: driver.swipe(610, 2452, 658, 2452, 200) 只是示例滑动1页,可以使用循环,下一页比上一页x坐标大48

  4. easyui 动态修改窗口title

    http://blog.csdn.net/liu251890347/article/details/39292307?utm_source=tuicool 使用easyui作为前台框架极大的节省了项目 ...

  5. ExtJS入门教程04,这是一个超级好用的grid

    今天进行extjs入门教程的第四篇:grid. 来一份grid尝尝 小伙伴们都知道extjs的grid功能强大,更清楚功能强大的东西用起来必然会复杂.今天我们就从最简单的grid开始讲解. 先来一个最 ...

  6. mysql 存储过程中注意的问题

    OPEN cur; REPEAT FETCH cur INTO int_type, int_element_id, int_num, int_user_id; IF NOT _DONE THEN IF ...

  7. hibernate提供的5种检索数据方式

    一.五种检索数据方式 1.OID检索,即使用session.get或session.load通过类及指定id查询数据,如Customer c=(Customer)session.get("C ...

  8. 字符串匹配的Boyer-Moore算法 详解 加 C# 实现

    上一篇文章,我介绍了KMP算法. 但是,它并不是效率最高的算法,实际采用并不多.各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法. Boyer-Mo ...

  9. C++编程思想重点笔记(下)

    上篇请看:C++编程思想重点笔记(上) 宏的好处与坏处 宏的好处:#与##的使用 三个有用的特征:字符串定义.字符串串联和标志粘贴. 字符串定义的完成是用#指示,它容许设一个标识符并把它转化为字符串, ...

  10. 【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?

    [一个iOS文档错误]关于keyWindow是否可以接受触摸事件?   关于keyWindow,官方文档有一个解释: 同一时间只有一个window可以成为keyWindow,keyWindow可以接受 ...