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 ...
随机推荐
- Scrapy中的item是什么
这两天看Scrapy,看到item这个东西,觉得有点抽象,查了一下,有点明白了. Item 是保存爬取到的数据的容器:其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定 ...
- SOAP 格式设置选项
SOAP 格式设置选项 两个格式设置选项为: Style:适用于 SOAP 消息中 Body 元素的子元素(也可能是孙级).此选项指定为 binding WSDL 元素(通常情况下)或 operati ...
- Spring MVC 读取静态资源时404错误
背景:web.xml配置时拦截策略是拦截所有请求: <servlet> <servlet-name>springmvc</servlet-name> <ser ...
- hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
解题思路: 一只母猪生下第二头后立马被杀掉,可以这样想即,生下第二头便被杀掉,可以看成母猪数量没变 第一天 1 第二天 2 第三天 3 :第一头生第二头后杀掉还是1头,第二头再加上第二头生下的,一共三 ...
- 转:Java NIO系列教程(二) Channel
Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Bu ...
- HttpApplication的处理管道19个事件。
HttpApplication对象是由Asp.net帮助我们创建的,它是asp.net中处理请求的重要对象.为了便于扩展,HttpApplication采用处理管道的方式进行处理,将处理的步骤分为多个 ...
- 字符串数组元素排列与组合的Java递归实现
我们在笔试面试过程中经常会遇到关于排列与组合的问题,其实这些可以通过递归简单的实现,看下面两个例子: (1)关于字符串排列的问题 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串ab ...
- 百科编辑器ueditor应用笔记
最近项目上要用到文本编辑器,选了百科开源的ueditor,使用过程中虽然有些问题,但是一个个都解决了,记录如下: 开发的项目环境是vs2012:.net4.0: 1:百度js编辑器,编辑器加载到项目中 ...
- javascript模板插件amaze.js
摘要: 最近在开发项目时,异步接口需要前端渲染数据,js拼接太低级,必然要用模板插件.之前用过基于jQuery的和juicer等插件,考虑到以后公司项目上的统一,移动端和pc端上的统一,以及可维护性, ...
- Buy Tickets(线段树)
Buy Tickets Time Limit:4000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...