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 ...
随机推荐
- 写在SDOI2016Round1前的To Do List
理性的整理了一下自己的不足. 计算几何啥都不会,字符串类DP毫无练习,数据结构写的不熟,数论推不出式子,网络流建模常建残: 需要达成的任务: 一.网络流: 熟练网络流的板子(之前一直仰慕zkw费用流, ...
- 【bzoj1061】 Noi2008—志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 (题目链接) 题意 给定n天,第i天需要ai个志愿者,有m类志愿者,每类志愿者工作时间为[l, ...
- C#文件复制功能
目的是将用户自定义文件复制到指定文件夹并且能查看该文件,下面是个人做的源码: sing System; using System.Collections.Generic; using System.C ...
- pthread_rwlock
读写锁 1.概述 读写锁与互斥量类似,不过读写锁允许更高的并行性.互斥量要么是锁住状态,要么是不加锁状态,而且一次只有一个线程对其加锁.读写锁可以有三种状态:读模式下加锁状态,写模式下加锁状态,不 ...
- centos 7 的几点改动
1.运行级别 旧:/etc/inittab 新:/etc/ststemd/system 例:ln -sf /lib/systemd/system/multi-user.target /etc/sys ...
- .NET设计模式(2):单件模式(Singleton Pattern)(转载)
概述 Singleton模 式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程 序在调用某一个类时,它是不 ...
- c语言中的fgets函数
fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为: char * fgets(char * string, int size, FILE * stream); 参数说明:string ...
- 繁华模拟赛 ljw分雕塑
/* 用f[i][k]表示考虑到第i个雕塑,分成k组,可不可行(这是一个bool类型的数组) 转移: f[i][k]=f[j][k-1],sum[i]-sum[j]合法 */ #include < ...
- Summarize Series For Burying My College
Summarize Series For Burying My College For Grade ...
- Poj 3233 Matrix Power Series(矩阵二分快速幂)
题目链接:http://poj.org/problem?id=3233 解题报告:输入一个边长为n的矩阵A,然后输入一个k,要你求A + A^2 + A^3 + A^4 + A^5.......A^k ...