注册页面中使用AJAX即时提醒用户能否注册成功

ajax|页面

晕呼呼的看了2天AJAX初级教程,为将要做的论坛的注册页面加写技术进去...
AJAX实际上是在JAVASCRIPT向后台的SERVLET发送消息,然后从SERVLET的响应中获取消息。这里提供
一个简单的注册页面提醒用户注册名是否存在。
yemian.html:
<html>.....<script type="text/javascript">
 var xmlHttp;   //定义一个XMLHttpRequest对象,用来发送,提取消息(如想SERVLET后台程序发送)
  function createXMLHttpRequest(){   //初始化
  if(window.ActiveXObject){   //IE浏览器
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else if(window.XMLHttpRequest){  //Mozilla 浏览器
   xmlHttp = new XMLHttpRequest();
  }
 }
 function checkInfo(){  //HTML响应函数,一般HTML中输入什么东西发生变化调用次函数
  createXMLHttpRequest();  //生成XMLHttpRequest对象
  var date = document.getElementById("userName");
  var url = "zhuceyemian?userName=" + escape(date.value);
//第一个参数为方法,第二个参数为服务器路径名/还有其他的参数,第3个为是否异步,一般来说AJAX是异步
  xmlHttp.open("GET", url, true);  
  xmlHttp.onreadystatechange = handleStateChange;  //徽调函数
  xmlHttp.send(null);
 }
 function handleStateChange() {
     if(xmlHttp.readyState == 4) { //判断对象
         if(xmlHttp.status == 200) { //信息返回,处理信息。这里就可以即时验证输入是否为正确了
             var mes = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
             var val = xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
             setMessage(mes, val);
         }
     }
 }
 function setMessage(message, isValid){
  var messageArea = document.getElementById("nameMessage");
  var fontColor = "red";
  if(isValid == "true"){
   fontColor = "green";
  }
  messageArea.innerHTML = "<font color=" +fontColor + ">" + message + "</font>";
 }
</script></head>
<!-- 将chenckInfo()赋予onchange就是说当文本域里面发生变化时,就会调用上面那些函数,向SERVLET发
送消息,在后台SERVLET接受到消息后会查询数据库,已验证当前输入用户名是否已被注册,在<div>区域里
AJAX会填加提示信息->
  用户名:<input id="userName" type="text" maxlength="10" />
 <div id="nameMessage"></div>
.... </html>
在SERVLET里面的代码如下:zhuceyemian.java
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
/* zhuceyemian.java
 *   后台servlet程序,用来检测注册用户名字是否已被注册,提醒用户
 */
public class zhuceyemian extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        boolean passed = validateName(request.getParameter("userName"));
        response.setContentType("text/xml");
        response.setCharacterEncoding("gb2312");
        response.setHeader("Cache-Control", "no-cache");
        String message = "this name is unavilable.";
        if (passed) {
            message = "this name is avilable.";
        }
        out.println("<response>");
        out.println("<passed>" + Boolean.toString(passed) + "</passed>");
        out.println("<message>" + message + "</message>");
        out.println("</response>");
        out.close();
    }
   /**
    *  从数据库中查找是否用户名已被注册
    */
   private boolean validateName(String name) {
        boolean isValid = true;
       
        try {
            String driver = "com.mysql.jdbc.Driver";
            Class.forName( driver );  //装载驱动
            String url = "jdbc:mysql://localhost/test";
            Connection conn = DriverManager.getConnection( url, "", "" );             //连接数据库
            Statement stmt = conn.createStatement();
            stmt.executeQuery("use test");
            ResultSet rs = stmt.executeQuery("SELECT name  FROM useinfo where name=\"" + name + "\"");
            
            if(rs.next())
            {
             isValid = false;
            }
            rs.close();
            stmt.close();
            conn.close();
          }
          catch( Exception x ) {
            x.printStackTrace();
          }
        return isValid;
   }
}
在AJAX向SERVLET发送请求的第2个参数url在这里是 zhuceyemian?userName=....这里zhuceyemian是服务器
名字,在XML里面要降服务器名和CLASS所在路径要影射
 <servlet>
  <servlet-name>zhuceyemian</servlet-name>
  <servlet-class>zhuceyemian</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>zhuceyemian</servlet-name>
  <url-pattern>/zhuceyemian</url-pattern>
 </servlet-mapping>
最后...也是最恶心的地方,让我郁闷了2天,就是在SERVLET里面连接数据库的时候开始他说找不到驱动....郁闷
了,我用APPLICATION都能连接数据库,最后终于发现在SERVLET下必须把一个mysql-connector-java-3.1.10-bin.jar的包打在WEB-INF/LIB下面,直接从BUILD下引入死活就说找不到。

 

时间: 2024-08-22 19:20:17

注册页面中使用AJAX即时提醒用户能否注册成功的相关文章

解决微信返回上一页,页面中的AJAX的请求,对Get请求无效的问题

先给大家分析问题产生原因 最近在做一个微信的项目时,遇到一种很常见的情况,需求是这样的,当用户进入到"我的个人中心"的时候,会有一个点击跳转填写认证资料的按钮,点击此按钮后,会跳转到认证资料填写页面,填写资料,提交成功后.当用户直接返回到上一页的时候.需要修改认证状态为"认证中".此时需要使用一个AJAX方法去查询认证状态,并修改页面的状态显示. 当时没有按照标准的方法写ajax方法,默认使用的方法是Get请求,前台JS代码如下: window.onload = f

javascript-没有append到页面中的element,那些属性可以修改成功?

问题描述 没有append到页面中的element,那些属性可以修改成功? var ele=document.createElement("div"); //修改属性和样式 document.body.appendChild(ele); 我以前的经验,append之前,有些属性和样式可以修改成功,有些不行 谁知道这里面的细节? 解决方案 添加后不可以修改倒是有,如ie8- 输入控件的type添加后不可以修改

Github 现可在设置页面中查看你屏蔽的用户

Github 发布了一个新功能,现在你可以在设置页面中查看被你屏蔽的用户,你可以在这里查找或添加新的屏蔽用户,除此之外,你也可以把你不小心屏蔽的用户解除屏蔽. 操作示意图: 文章转载自 开源中国社区[http://www.oschina.net]

在查询页面中显示进度条,在数据load成功后隐去进度条

数据|显示|页面 <script language="javascript">function onSubmit() {  var waitingInfo = document.getElementById(getNetuiTagName("waitingInfo"));  waitingInfo.style.display = ""; //show the ProgressBar  progress_update();    //b

网易微博将正式关闭,提醒用户迁至LOFTER

网易微博将正式关闭,提醒用户迁至LOFTER11月5日消息,网易微博宣布将正式关闭,据网易微博页面显示,他们正在提醒用户将微博数据迁移到LOFTER(网易轻博客)以保存原微博内容.这意味着网易微博将彻底关闭.LOFTER是网易2011年推出的轻博客平台,原型则是美国的Tumblr.将内容搬到LOFTER之后,网易自动通过原账号开通轻博客业务.此次网易微博业务跳转至轻博客,意味着网易对原微博业务的彻底放弃,而网易也曾尝试将微博业务.轻博客和邮箱整合,仍难阻新浪微博的增长势头.网易微博上近期发起了"

Win10系统如何在注册表中设置去掉鼠标加速

Windows10系统在注册表中设置去掉鼠标加速的方法 注册表路径: HKEY_CURRENT_USER\Control Panel\Mouse (Control Panel:控制盘.Mouse:鼠标) 步骤: 右键点击系统桌面左下角的开始,在开始菜单中点击运行,输入:regedit,再点击确定或者回车,打开注册表编辑器: 此时会弹出一个用户帐户控制的询问对话框:你要允许此应用对你的电脑进行更改吗?我们点击:是(Y): 点击是(Y)以后,打开了注册表编辑器,我们在注册表编辑器中依次展开:HKEY

如何在注册表中存储加密的连接字符串

加密|注册表|字符串 目标本章的目标是: • 在注册表中存储加密的数据库连接字符串 • 从注册表中读取加密的数据库连接字符串并对其进行解密. 返回页首适用范围本章适用于以下产品和技术: • Microsoft Windows XP 或 Windows 2000 Server (Service Pack 3) 以及更高版本的操作系统 • Microsoft .net Framework 版本 1.0 (Service Pack 2) 以及更高版本 • Microsoft Visual C# .ne

对注册表进行编辑的三种途径_注册表

了解了关于注册表的基本内容之后,我们就可以正式进入我们所要讨论的话题了:对注册表进行编辑修改!一般来说,要想对注册表进行增.删.改,可以有以下三种途径: 第一种途径:直接修改(最不安全,但最直接最有效) 就是通过注册表编辑器直接的来修改注册表的键值数据项,这样做会避免在注册表中留下垃圾(虽然都很小,但越来越多会拖慢系统速度),但是要求用户有一定的注册表知识,熟悉注册表内部结构而且一定要小心谨慎. 注册表编辑器是一个可以让你改变系统注册设定的高级工具WIN98注册表编辑器的常用操作注册表编辑器是一

AJAX实现web页面中级联菜单的设计

ajax|web|菜单|设计|页面 看了大峡搞的级联菜单,我也班门弄斧一把,嘿嘿,花了一点时间搞了个级联菜单贴上来看看.本例中只要你选择成员分类名称就会自动显示成员名称:    首先在eclipse中建一个项目,名称你自己做主了,这里为Easyjf-menu,对应的浏览器页面代码为: Easyjf-menu.jsp <@page contentType="text/html;charser=UTF-8" language="java"%> <hea