通过一个简单的AJAX实例,了解其大致步骤

     ajax现在来说也不算什么新的技术了,很多程序开发中都用到了它,至于概念什么的不知道就google吧。下面通过一个简单的用户验证来了解下ajax的大致开发步骤:

    index.jsp:

    在<script></script>中首先创建一个XMLHttpRequest对象的变量(分IE和非IE),然后启动ajax异步通信,主要通过open建立连接,send发送请求,当然还有别的函数具体见文章尾部,最后通过回调函数得到服务器的响应。

    

  1. <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <html>
  7.   <head>
  8.     <base href="<%=basePath%>">
  9.     <title>验证唯一性</title>
  10.     <script type="text/javascript">
  11.     var xmlHttp;//定义一个用户存放XMLHttpRequest对象的变量
  12.     //该函数用于创建一个XMLHttpRequest对象
  13.     function createXMLHttpRequest(){
  14.         if(window.ActiveXObject){
  15.             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器用activexobject对象创建
  16.         }else if(window.XMLHttpRequest){
  17.             xmlHttp = new XMLHttpRequest();//非IE浏览器,用xmlhttprequest对象创建
  18.         }
  19.     }
  20.     //启动AJAX异步通信
  21.     function checkName(){
  22.         var tempLoginName=document.all.loginName.value;
  23.         if(tempLoginName==""){
  24.             alert("用户名不能为空!");
  25.             return;
  26.         }
  27.         createXMLHttpRequest();
  28.         xmlHttp.onreadystatechange=processor;//指定回调函数,将状态触发器绑定到一个函数
  29.         //**OPEN于服务器建立连接,通过POST方法向指定URL简历服务器的调用
  30.         xmlHttp.open("POST","CheckUser?loginName="+tempLoginName);
  31.         //发送请求
  32.         xmlHttp.send();
  33.     }
  34.     //回调函数,处理状态改变
  35.     function processor(){
  36.         var responseContext;//定义一个变量用于存放服务器端返回的响应结果 
  37.         if(xmlHttp.readyState==4){//请求状态为4表示成功,如果响应完成
  38.             if(xmlHttp.status==200){//http状态200表示OK,如果返回成功
  39.                 //取出服务器的响应内容
  40.                 responseContext = xmlHttp.responseText;
  41.                 //如果注册名检查有效
  42.                 if (responseContext.indexOf("true")!=-1){
  43.                     alert("恭喜您,该注册名有效!");
  44.                 }else{
  45.                     alert("对不起,该注册名已被使用!");
  46.                 }
  47.             }
  48.         }
  49.     }
  50.     </script>
  51.   </head>
  52.   <body>
  53.     <form action="CheckUser" method="POST">
  54.         UserName:
  55.         <input type="text" name="loginName" id="loginName"/>
  56.         <input name="checkLoginName" type="button" value="用户名是否存在" onclick="checkName()"/>
  57.     </form>
  58.   </body>
  59. </html>

    web.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4" 
  3.     xmlns="http://java.sun.com/xml/ns/j2ee" 
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  6.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  7.   <servlet>
  8.     <servlet-name>CheckUser</servlet-name>
  9.     <servlet-class>CheckUser</servlet-class>
  10.   </servlet>
  11.   <servlet-mapping>
  12.     <servlet-name>CheckUser</servlet-name>
  13.     <url-pattern>/CheckUser</url-pattern>
  14.   </servlet-mapping>
  15.   <welcome-file-list>
  16.     <welcome-file>index.jsp</welcome-file>
  17.   </welcome-file-list>
  18. </web-app>

    CheckUser.java:(这个一个servlet)

  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. public class CheckUser extends HttpServlet {
  8.     public void doGet(HttpServletRequest request, HttpServletResponse response)
  9.             throws ServletException, IOException {
  10.         this.doPost(request, response);
  11.     }
  12.     public void doPost(HttpServletRequest request, HttpServletResponse response)
  13.             throws ServletException, IOException {
  14.         response.setContentType("text/html");
  15.         PrintWriter out = response.getWriter();
  16.         //有以下用户存在,可以从数据库中查询出来
  17.         String[] logined={"admin","user","xiaoli"};
  18.         //从客户端提交过来的用户名
  19.         String loginName=request.getParameter("loginName");
  20.         //创建一个存放响应内容的字符串
  21.         String responseContext="true";
  22.         for(int i=0;i<logined.length;i++){
  23.             //遍历存在用户,和提交用户比较如存在则想用内容为false
  24.             if(loginName.equals(logined[i])){
  25.                 responseContext="false";
  26.             }
  27.         }
  28.         out.println(responseContext);
  29.     }
  30. }

XMLHttpRequest 对象的方法与属性

方    法

描    述

abort()

停止当前请求

getAllResponseHeaders()

把HTTP请求的所有响应首部作为键/值对返回

getResponseHeader("header")

返回指定首部的串值

open("method", "url")

建立对服务器的调用。method参数可以是GET、POST或PUT。url参数可以是相对URL或绝对URL。这个方法还包括3个可选的参数

send(content)

向服务器发送请求

setRequestHeader("header", "value")

把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()


  属  性

描    述

onreadystatechange

每个状态改变时都会触发这个事件处理器,通常会调用一个JavaScript函数

readyState

请求的状态。有5个可取值:0 = 未初始化,1 = 正在加载,2 = 已加载,3 = 交互中,4 = 完成

responseText

服务器的响应,表示为一个串

responseXML

服务器的响应,表示为XML。这个对象可以解析为一个DOM对象

status

服务器的HTTP状态码(200对应OK,404对应Not Found(未找到),等等)

statusText

HTTP状态码的相应文本(OK或Not Found(未找到)等等)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值