验证用户名简单示例

验证用户名是否存在
在js文件中主要需要4步
1、获取页面参数
2、对参数值可行性的验证
3、将数据发送到服务器中
4、在回调函数中将服务器返回的值,写到html页面上

主要业务流程如下
步骤1:准备客户端html页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>使用jquery做用户名验证</title>
<script type="text/javascript" src="jslib/jquery.js"></script>
<script type="text/javascript" src="jslib/verify1.js"></script>
</head>
<body>
用户名:<input type="text" id="username" onblur="verify()"/> <span id="result"></span><br/>
密码:<input type="text" id="password"><br/>
</body>
</html>

步骤2:服务器servlet代码

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-10-22
* Time: 10:28:07
* To change this template use File | Settings | File Templates.
*/
public class validateUserServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//1.取参数
String old = request.getParameter("username");
//2.检查参数是否有问题
if(old == null || old.length()==0){
out.println("用户名不能为空");
}else{
//3.校验操作
String username = old;
if(username.equals("anmo")){
//4.和传统应用不同之处,这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新页面发送给用户
out.println("用户名["+username+"]已经存在,请使用其他用户名");
}else{
out.println("你可以使用此用户名!!!");
}
}
}
}

步骤3:准备JS文件,(本示例用了两个一个是jquery.js,一个是自己定义的js文件)下面的代码是自己定义的js

//定义用户名校验的方法
function verify(){
//1.获取文本框中的内容
//使用DOM方式获取:document.getElementById("username");
var jqueryObj = $("#username"); //使用JQuery方式查找节点
//2.取值
var username = jqueryObj.val();
//将文本框中的数据发送给服务器端的servlet
$.get("validateUserServlet?username="+username,null,callback); //使用jquery的XMLHTTTRequest对象get请求封装
}
//回调函数
function callback(data){
//3.接受客户端返回的数据
//alert(data); //data中是服务器返回给页面的值
//4.将服务器端返回的数据动态的显示在页面上
var resultObj = $("#result");
//动态改变页面中span中的内容
resultObj.html(data);
}


到此,整个示例已经完了,也可以将js文件中的代码细化,细化后代码如下

function verify(){
//去出页面中的值
var username = $("#username").val();
//将值发送到服务器,进行验证,并且处理完后回调callback函数,将服务器返回的数据发送到页面显示
$.get("validateUserServlet?username="+username, null, function callback(data){
$("#result").html(data);
});
}



-------------------------------------------------------------------------------
如果不想使用jquery的话,可以自己写ajax应用,来验证用户名

//用户名校验
//这个方法是用XMLHTTPRequert对象进行AJAX的异步交互

var xmlhttp;
function verify(){
//第一步:使用DOM方式获取文本框中的数据
var username = document.getElementById("username").value;

//使用XMLHTTPRequert对象,这个XMLHttpRequest对象是使用中最复杂的一部,要兼容各个浏览器
if(window.XMLHttpRequest){
//针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的BUG进行修正
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
//针对IE6,IE5.5,IE5
//将两个可以用户创建XMLHTTPRequest对象的控件名称,保存在一个JS的数组中
//排在前面的版本较新
var activexName = ["MXXML2.XMLHTTP","Microsoft.XMLHTTP"];
//循环创建ActiveXObject
for(var i = 0; i < activexName.length; i++){
try{
//取出一个控件名进行创建,如果创建成功就终止循环
//如果创建失败,就抛出异常,然后可以继续循环,继续尝试创建
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){
}
}
}

//第二步:注册回调函数,调用回调函数的时候不能加括号
//我们需要将函数名注册,如果加上括号,就会把函数的返回值注册上,这就错误的
xmlhttp.onreadystatechange = callback;

//第三步:设置连接信息
//第1个参数是表示http请求方式,支持所有http请求方式,主要是get和post
//第2个参数表是url地址,get方式请求的参数也在url中
//第3个参数表示采用异步还是同步方式交互,true表示异步
xmlhttp.open("GET", "validateUserServlet?username="+username, true);

//第四步,发送数据,开始和服务器端进行交互
//如果是同步的话,当代码运行到shend()的时候就会停住,直到服务器端的数据完全返回才运行
//如果是异步的话,shend会立即完成执行
xmlhttp.send(null);
}

//回调函数
function callback(){
//第五步,判断对象的状态是交互完成
if(xmlhttp.readyState == 4){
//判断http的交互是否成功
if(xmlhttp.status == 200){
//获取服务器端返回的数据
//以存文本的方式获取
var responseText = xmlhttp.responseText;
//将数据显示在页面上
document.getElementById("result").innerHTML = responseText;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值