zoukankan      html  css  js  c++  java
  • [AJAXJSP]验证用户名存在

    [LIUYONGCN]

    [2011-06-30]

    [http://www.cnblogs.com/liuyongcn/]
    一 原理
    1-什么是AJAX
        AJAX(Asynchronous JavaScript and  Xml)异步的JavaScript和Xml,AJAX整合了JavaScript、Xml和CSS。我们通过JavaScript和XMLHttpRequest对象完成发送请求到服务器并获得返回结果的任务,然后用JavaScript更新局部的网页。使用AJAX 避免了重复加栽页,减少了带宽,同时还提高了用户体验

    2-XMLHttpRequest对象
        XMLHttpRequest可以提供不重新加载页面的情况下更新网页,在页面加载后在客户端向服务器请求数据,在页面加载后在服务器端接受数据,在后台向客户端发送数据。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。

    readyState属性
      HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4。
      5 个状态中每一个都有一个相关联的非正式的名称,下表列出了状态、名称和含义:
      
    状态    名称    描述
    0    Uninitialized    初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。
    1    Open    open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
    2    Sent    Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。
    3    Receiving    所有响应头部都已经接收到。响应体开始接收但未完成。
    4    Loaded    HTTP 响应已经完全接收。


    二 AJAX实现简单的登录验证的例子

    <%@ page language="java" pageEncoding="gbk"%>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
     
    <html>
        <head>
            <script type="text/javascript">
           
                //创建xmlHttpRequest
                var xmlHttpRequest ;
                function createXMLHttpRequest(){
                    if(window.ActiveXObject){
                        //如果是IE浏览器
                        xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP") ;
                    }
                    else if(window.XMLHttpRequest){
                        //如果是非IE浏览器
                        xmlHttpRequest = new XMLHttpRequest() ;
                    }
                }
                //检查姓名
                function checku(name){
                    //获取登陆名
                    var uname=name.value;
                    if(!uname){
                        //登陆名为空显示错误信息,并获取文本框焦点
                        document.getElementById("div").innerHTML="<font size='2' color='orange'> 用户名不能为空</font>";
                        name.focus();
                        return;
                    }
                    //访问地址,如果是servlet
                    //var url="LoginServlet?name="+uname;   
                    //访问地址,如果使用action,login.do是对应loginAction doLogin是action中的一个方法
                    var url="login.do?operate=doLogin&name="+uname;
                                   
                    //1创建XmlHttpRequest组键
                    createXMLHttpRequest();
                    //2初始化XmlHttpRequest,true表示使用异步,false表示同步
                    xmlHttpRequest.open("GET",url,true) ;
                    //3创建回调用函数
                    xmlHttpRequest.onreadystatechange = back ;
                    //4发送请求
                    xmlHttpRequest.send(null) ;;
                   
                }
                //回调函数,完成操作后,最后调用这个函数显示结果
                function back(){
                    //4表示完成 200表示运行正常
                    if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
                        var b=xmlHttpRequest.responseText;//获取PrintWriter输出信息
                        if(b=="true"){
                            document.getElementById("div").innerHTML="<font size='2' color='orange'> 用户名已存在</font>"
                        }else{
                            document.getElementById("div").innerHTML="<font size='2' color='green'> √</font>"
                        }
                    }
                }   
            </script>
            <title>This is a ajax test</title>
        </head>
        <body>
            <form action="index.jsp" method="post">
            <html:form action="/login">
                name : <html:text property="name" onblur="return checku(this)" /><div id="div" style="display:inline" ></div>
                <br/>
                <html:submit/><html:cancel/>
            </html:form>
            </form>
        </body>
    </html>

    LoginAction中的 doLogin方法。用于测试
    public ActionForward doLogin(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) {
           
            response.setContentType("text/html;charset=gb2312");
            PrintWriter out;
            try {
                out = response.getWriter();
                UserBiz biz=new UserBiz();
                User user=new User();
                user.setName(request.getParameter("name"));
                System.out.println(request.getParameter("name"));
                if(biz.checkUser(user)){
                    out.print("true");
                }else{
                    out.print("false");
                }
               
                out.flush();
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           
            return null;
        }

  • 相关阅读:
    补间动画 帧动画 基本使用 案例 [MD]
    Builder 建造者模式 MD
    Prototype 原型模式 复制 浅拷贝 clone [MD]
    Composite 组合模式 树 递归 MD
    Proxy 代理模式 动态代理 cglib MD
    Decorator Wrapper 装饰模式 MD
    Adapter 适配器模式 MD
    Observer 观察者模式 MD
    Template Method 模板方法 MD
    剪切板 复制文本 ClipboardManager
  • 原文地址:https://www.cnblogs.com/liuyongcn/p/2096333.html
Copyright © 2011-2022 走看看