Ajax用户唯一性的验证

 

         Ajax用户唯一性的验证

今天初步学习了Ajax技术,简单的做了一个小程序,用Ajax技术,实现从数据库中获取名字,验证用户的用户名的唯一性的操作。

在写的时候遇到了BUG,调了半天,不知道怎么回事,就是在<input type=”text”>文本框中不管输入什么,在后台总是显示null 。 后来才发现 是参数名传错了。 纠结啊~~~~~~~~

 

我是用hibernate来写的,需要引入的文件:

 

1、首先建WEB PROJECT ,

在domain包下创建Employee实体,封装id,name属性。生成 构造器,toString()方法,以及set()和get()方法。在创建Employee.hbm.xml文件。

2、在dao包下,创建EmployeeDao接口,在里面封装根据用户名查找findByName()方法。在EmployeeDaoImpl中实现 这个方法。根据query查询。

3、创建service层。

4、JSP源码:

在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%>">

    <title>用户名唯一性的验证</title>

  </head>

  <body>

    <div id="bdy" align="center">

    <h1>Ajax案例</h1>

    用户名:<input type="text" name="uname" id="uname"/>

    <input type="button" value="检查用户名" id="checkBtn">

    <span id="msg" style="color: red"></span>

    </div>

  </body>

</html>

<script type="text/javascript">

<!--

    //当窗体加载完毕后 触发该函数

    window.onload = function(){

      

       //alert(createXMLHttpRequest());

       //第一步:初始化XMLHttpRequest对象

       var xmlHttp = createXMLHttpRequest();

       //获取btn按钮对象

       var btnNode = document.getElementById("checkBtn");

       //注册事件

       btnNode.onclick = function(){

           var inputNameNode = document.getElementById("uname");

           //当readystate对象状态发生变化的时候触发该匿名函数

           xmlHttp.onreadystatechange = function(){

              //服务器端已经处理完毕,返回信息

              if(xmlHttp.readyState==4){

              //代表的是返回的页面是否正常

                  if(xmlHttp.status==200){

                     /*第六步:客户端接收*/

                     var msg = xmlHttp.responseText;

                     /*第七步:修改页面内容*/

                     document.getElementById("msg").innerHTML=msg;

                  }

              }

       }

       //第二步:规定请求的参数

       /*

           method:get|post 区别

           url:请求的路径    相对路径   绝对路径

           async:异步:true    同步:false    boolean值

       */

       xmlHttp.open("POST","./servlet/HelloServlet?timeStamp="+new Date().getTime(),true);

       //用POST方法时,必须设置一个头    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

       /*第三步:服务器发送请求*/

       xmlHttp.send("name="+inputNameNode.value);

       /*第四步:第五步:  服务器接收     服务器返回*/

       }

    }

   

    //ajax XMLHttpRequest对象

    function createXMLHttpRequest(){

       //声明一个xmlHttp;

       var xmlHttp;

      

       try{

       //firefox opera等非 IE的浏览器中

       xmlHttp = new XMLHttpRequest();

       }catch(ex){

           try{

              //IE浏览器

           xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");

           }catch(e){

              xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

           }

       }

       return xmlHttp;

    }

//-->

</script>

 

5、在servlet中完成操作。代码如下:

package cn.csdn.hr.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import cn.csdn.hr.dao.EmployeeDao;

import cn.csdn.hr.dao.EmployeeDaoImpl;

import cn.csdn.hr.domain.Employee;

 

public class HelloServlet extends HttpServlet {

         public HelloServlet() {

                   super();

         }

         public void doGet(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

                   //System.out.println("请求处理中...........");

                   doPost(request, response);

         }

         public void doPost(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

                   //doGet(request, response);

                   //第四步:服务器接收

                   request.setCharacterEncoding("utf-8");

                   String name = request.getParameter("name");

                   System.out.println(name);

                  

                   //第五步:服务器返回

                   response.setContentType("text/html;charset=utf-8");

                   PrintWriter out = response.getWriter();

                   EmployeeDao employeeDao= new EmployeeDaoImpl();

                   boolean flag = employeeDao.findByName(name);

                            if(flag){

                                     out.print("用户名已经存在");

                            }else{

                                     out.print("用户名可用!");

                            }

                   out.flush();

                   out.close();

         }

}

最终,运行结果如下:

(1)       在数据库中的数据读取:

 

 

 

(2)       如果用户名不在数据库中存在的情况下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值