AJAX,JSON用户名校验
效果
开发结构
1,src部分有两个包dao和servlet
1.1dao包下有两个数据库工具类文件
SqlHelper.java
- package org.guangsoft.dao;
- import java.io.InputStream;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.Properties;
- /**
- *
- * @author guanghe
- */
- public class SqlHelper
- {
- //定义连接资源
- private static Connection ct = null;
- private static PreparedStatement ps = null;
- private static CallableStatement cs = null;
- private static ResultSet rs = null;
- //定义配置参数
- private static String driver = null;
- private static String url = null;
- private static String username = null;
- private static String password = null;
- private static Properties pp = null;
- private static InputStream is = null;
- //读取配置参数,加载驱动
- static
- {
- try
- {
- pp = new Properties();
- is = SqlHelper.class.getClassLoader().getResourceAsStream("org/guangsoft/dao/db.properties");
- pp.load(is);
- driver = pp.getProperty("driver");
- url = pp.getProperty("url");
- username = pp.getProperty("username");
- password = pp.getProperty("password");
- Class.forName(driver);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- System.exit(0);
- }
- finally
- {
- try
- {
- is.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- is = null;
- }
- }
- //获取连接
- public static Connection getConnection()
- {
- try
- {
- ct = DriverManager.getConnection(url, username, password);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return ct;
- }
- public static PreparedStatement getPs()
- {
- return ps;
- }
- public static ResultSet getRs()
- {
- return rs;
- }
- //执行DQL查询
- public static ResultSet executeQuery(String sql, String[] parameters)
- {
- try
- {
- ct = getConnection();
- ps = ct.prepareStatement(sql);
- if (parameters != null)
- {
- for (int i = 0; i < parameters.length; i++)
- {
- ps.setString(i + 1, parameters[i]);
- }
- }
- rs = ps.executeQuery();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new RuntimeException(e.getMessage());
- }
- return rs;
- }
- //执行DML更新
- public static int executeUpdate(String sql, String[] parameters)
- {
- try
- {
- ct = getConnection();
- ps = ct.prepareStatement(sql);
- if (parameters != null)
- {
- for (int i = 0; i < parameters.length; i++)
- {
- ps.setString(i + 1, parameters[i]);
- }
- }
- return ps.executeUpdate();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new RuntimeException(e.getMessage());
- }
- finally
- {
- close(ct, ps, rs);
- }
- }
- //执行DML批处理
- public static int executeUpdate2(String[] sql, String[][] parameters)
- {
- try
- {
- ct = getConnection();
- ct.setAutoCommit(false);
- for (int i = 0; i < sql.length; i++)
- {
- if (null != parameters[i])
- {
- ps = ct.prepareStatement(sql[i]);
- for (int j = 0; j < parameters[i].length; j++)
- {
- ps.setString(j + 1, parameters[i][j]);
- }
- return ps.executeUpdate();
- }
- }
- ct.commit();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- try
- {
- ct.rollback();
- }
- catch (Exception e1)
- {
- e1.printStackTrace();
- }
- throw new RuntimeException(e.getMessage());
- }
- finally
- {
- close(ct, ps, rs);
- }
- return 0;
- }
- //执行存储过程
- public static CallableStatement callPro1(String sql, String[] parameters)
- {
- try
- {
- ct = getConnection();
- cs = ct.prepareCall(sql);
- if (parameters != null)
- {
- for (int i = 0; i < parameters.length; i++)
- {
- cs.setObject(i + 1, parameters[i]);
- }
- }
- cs.execute();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new RuntimeException(e.getMessage());
- }
- finally
- {
- close(ct, cs, rs);
- }
- return cs;
- }
- //执行高级存储过程
- public static CallableStatement callPro2(String sql, String[] inparameters,
- Integer[] outparameters)
- {
- try
- {
- ct = getConnection();
- cs = ct.prepareCall(sql);
- if (inparameters != null)
- {
- for (int i = 0; i < inparameters.length; i++)
- {
- cs.setObject(i + 1, inparameters[i]);
- }
- }
- if (outparameters != null)
- {
- for (int i = 0; i < outparameters.length; i++)
- {
- cs.registerOutParameter(inparameters.length + 1 + i, outparameters[i]);
- }
- }
- cs.execute();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new RuntimeException(e.getMessage());
- }
- finally
- {
- close(ct, cs, rs);
- }
- return cs;
- }
- //关闭所有资源连接
- public static void close(Connection ct, Statement ps, ResultSet rs)
- {
- if (rs != null)
- {
- try
- {
- rs.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- rs = null;
- }
- if (ps != null)
- {
- try
- {
- ps.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- ps = null;
- }
- if (null != ct)
- {
- try
- {
- ct.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- ct = null;
- }
- }
- }
db.properties
- driver = com.mysql.jdbc.Driver
- url = jdbc:mysql://localhost:3306/student
- username = root
- password =root
1.2servlet包下有一个文件Servlet
CheckUname.java
- package org.guangsoft.servlet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.guangsoft.dao.SqlHelper;
- public class CheckUname extends HttpServlet
- {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- processRequest(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- processRequest(request, response);
- }
- protected void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException
- {
- request.setCharacterEncoding("UTF-8");
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/html; charset=utf-8");
- PrintWriter out = response.getWriter();
- String username = request.getParameter("username");
- Connection connection = null;
- PreparedStatement prepareStatement = null;
- ResultSet resultSet = null;
- try
- {
- connection = SqlHelper.getConnection();
- String sql = "select * from user where username=?";
- prepareStatement = connection.prepareStatement(sql);
- prepareStatement.setString(1,username);
- resultSet = prepareStatement.executeQuery();
- while(resultSet.next())
- {
- response.getWriter().print("true");
- return;
- }
- response.getWriter().print("false");
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- SqlHelper.close(connection, prepareStatement, resultSet);
- }
- }
- }
2,webRoot部分有两个文件js工具类和jsp页面
2.1 js工具类封装了操作json数据的函数
AjaxUtil.js
- function sendAjaxReq(method,url,param,fun200,fun404,fun500)
- {
- var req;
- if(window.XMLHttpRequest)
- {
- req = new XMLHttpRequest();
- }
- else if(window.ActiveXObject)
- {
- req = new ActiveXObject("Msxml2.XMLHTTP");
- }
- req.open(method,url);
- req.onreadystatechange = function()
- {
- if(req.readyState == 4)
- {
- if(req.status == 200)
- {
- if(fun200)
- {
- fun200(req.responseText);
- }
- }
- else if(req.status == 404)
- {
- if(fun404)
- {
- fun404();
- }
- }
- else if(req.status == 500)
- {
- if(fun500)
- {
- fun500();
- }
- }
- }
- }
- if(method.toUpperCase() == "GET")
- {
- req.send(null);
- }
- else if(method.toUpperCase() == "POST")
- {
- req.setRequestHeader("context-type", "application/x-www-form-urlencoded");
- req.send(param);
- }
- }
2.2 jsp页面是显示页面
index.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <style>
- .success
- {
- color:green;
- }
- .fail
- {
- color:red;
- }
- </style>
- <script src="/ajax/js/AjaxUtil.js"></script>
- <script>
- function checkUname(unameValue)
- {
- if(unameValue != "")
- {
- sendAjaxReq("get","checkUname?username="+unameValue,null,function(data)
- {
- if(eval(data))
- {
- document.getElementById("unameSpan").innerHTML="该用户名已被注册!";
- document.getElementById("unameSpan").className="fail";
- }
- else
- {
- document.getElementById("unameSpan").innerHTML="恭喜,可以注册!";
- document.getElementById("unameSpan").className="success";
- }
- });
- }
- }
- </script>
- </head>
- <body>
- <form method="get" action="/ajax/checkUname">
- <table>
- <tr>
- <td>用户名:</td>
- <td>
- <input type="text" name="username" id="username"
- onblur="checkUname(this.value);"
- onkeypress="document.getElementById('unameSpan').innerHTML='';" />
- </td>
- <td><span name="unameSpan" id="unameSpan"></span></td>
- </tr>
- <tr>
- <td>密 码:</td>
- <td><input type="password" name="password" /></td>
- </tr>
- </table>
- <input type="submit" value="提交">
- </form>
- </body>
- </html>
AJAX,JSON用户名校验的更多相关文章
- ajax实现用户名校验的传统和jquery的$.post方式
第一种:传统的ajax异步请求,后台代码以及效果在最下边 首先我们在eclipse中创建一个注册页面regist.jsp,创建一个form表单,注意,由于我们只是实现用户名校验的效果,下边红色部门是我 ...
- AJAX,JSON搜索智能提示
效果 开发结构参考AJAX,JSON用户校验 主要有两个核心文件 1,处理输入字符,进行后台搜索的servlet Suggest.java package org.guangsoft.servlet; ...
- 案例1.用Ajax实现用户名的校验
用Ajax实现用户名的校验 java的验证类 public class UserDao { public boolean checkUserName(String name) { //这里的name是 ...
- 使用AJAX完成用户名是否存在异步校验
一.JSP代码: 1.事件触发:onblur 2.编写AJAX代码:向Action中提交,传递username参数 <script> function checkUsername(){ / ...
- thinkphp中ajax用户名校验
ajax实在是太神奇了,刚刚接触,不足之处,请大家指正. 采用Ajax方式进行页面无刷新提示,来检测用户名是否存在. 搭建一个thinkphp的环境,在index.html中,ajax代码如下: &l ...
- ajax用户名校验demo详解
//用户名校验的方法 //这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互 var xmlhttp; function verify(){ //1.使用dom的方式获取文本框中的 ...
- SSH网上商城---使用ajax完成用户名是否存在异步校验
小伙伴在上网的时候,需要下载或者观看某些视频资料,更或者是在逛淘宝的时候,我们都需要注册一个用户,当我们填写好各种信息,点击确定的时候,提示用户名已经存在,小编就想,为什么当我们填写完用户名的时候,她 ...
- Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码 其中有json的一句话解释
前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function( ...
- ajax案例_校验用户名
目录 ajax案例_校验用户名 代码下载 需求 流程 搭建环境 开发代码 1_jsp 1_servlet 1_service.dao 2_servlet 2_jsp 测试后,功能实现,完结撒花 aja ...
随机推荐
- Session解析
1.除非关闭所有页面 或者超时session才销毁 2.在几个页面之间切换的时候 session保存用户状态. 3.遍历数组时候for循环中从0开始小于长度,不等于长度,用Matlab用习惯了,竟然从 ...
- C++ STL初学笔记
C++ STL初学笔记 更系统的版本见徐本柱的PPT set 在这儿:http://www.cnblogs.com/pdev/p/4035020.html #include <vector&g ...
- appium-车友会欢迎界面向右滑动4次点击‘立即体验’进入首屏
代码如下: driver.swipe(610, 2452, 658, 2452, 200) 只是示例滑动1页,可以使用循环,下一页比上一页x坐标大48
- easyui 动态修改窗口title
http://blog.csdn.net/liu251890347/article/details/39292307?utm_source=tuicool 使用easyui作为前台框架极大的节省了项目 ...
- ExtJS入门教程04,这是一个超级好用的grid
今天进行extjs入门教程的第四篇:grid. 来一份grid尝尝 小伙伴们都知道extjs的grid功能强大,更清楚功能强大的东西用起来必然会复杂.今天我们就从最简单的grid开始讲解. 先来一个最 ...
- mysql 存储过程中注意的问题
OPEN cur; REPEAT FETCH cur INTO int_type, int_element_id, int_num, int_user_id; IF NOT _DONE THEN IF ...
- hibernate提供的5种检索数据方式
一.五种检索数据方式 1.OID检索,即使用session.get或session.load通过类及指定id查询数据,如Customer c=(Customer)session.get("C ...
- 字符串匹配的Boyer-Moore算法 详解 加 C# 实现
上一篇文章,我介绍了KMP算法. 但是,它并不是效率最高的算法,实际采用并不多.各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法. Boyer-Mo ...
- C++编程思想重点笔记(下)
上篇请看:C++编程思想重点笔记(上) 宏的好处与坏处 宏的好处:#与##的使用 三个有用的特征:字符串定义.字符串串联和标志粘贴. 字符串定义的完成是用#指示,它容许设一个标识符并把它转化为字符串, ...
- 【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?
[一个iOS文档错误]关于keyWindow是否可以接受触摸事件? 关于keyWindow,官方文档有一个解释: 同一时间只有一个window可以成为keyWindow,keyWindow可以接受 ...