Ajax的实现(基于jsp画面和struts)

      ajax是一种创建交互式网页应用的网页开发技术。通俗的讲就是实现html画面的局部刷新。

      例如:传统的web开发,当服务器端执行服务端代码(执行客户请求,数据库操作,业务逻辑操作)之后将生成的信息发送到客户端(浏览器)。客户端通过解析相应的html、css、javascript、xml等信息并将其展示到客户端上,形成一个画面,并开始执行客户端脚本(这里我们只讨论javascript脚本)。此时如果需要改变页面中的一个元素的内容,必须重新向web服务器发送请求(get、post)由服务器执行服务端代码生成相应的信息并发送到客户端浏览器中,此时浏览器的当前画面刷新。如果我们不想刷新整个页面,又想与服务器交互该如何处理呢?ajax技术可以很好的处理这一类问题,实现与服务器交互,并通过javascript实现局部刷新。

      1.首先我们需要创建HttpRequest对象,javascript代码如下:

 

function   CreateHttpRequest()
{
     if ( window .XMLHttpRequest)
    {
        http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType)
        {
            http_request.overrideMimeType( 'text/xml' );
        }
     }
     else if ( window . ActiveXObject )
    {
         try
        {
               http_request= new ActiveXObject ( "Msxml2.XMLHTTP" );
        }
         catch (e)
        {
               try
               {
                    http_request= new ActiveXObject ( "Microsoft.XMLHTTP" );
               }
               catch (e)
              {
            
               }
         }
     }    
     if (!http_request)
     {
         return false ;
     }    
}

 

      2.执行ajax请求:

 

//实现ajax方式向服务器提交请求
function beginAjax()
{
     //初始化HttpRequest
    CreateHttpRequest();

     //指定请求url地址,如果是用struts来完成将地址修改为struts请求即可
     var url = "Message2.jsp" ;
    
     //设定回调函数
    http_request.onreadystatechange = showResult;

     //提交ajax请求
    http_request. open ( "GET" , url, true );
    http_request.send( null );
}

 

      3.通过回调函数来取得服务器响应后的信息:

 

//回调函数
function showResult()
{
     //服务器请求状态为“完成”
     if (http_request. readyState == 4)
    {
         //服务器响应状态为“OK”
         if (http_request. status == 200)
        {
             //取得服务器执行相应后所生成内容信息
             var responseText =  http_request.responseText;
            
             //进行自定义处理,通过javascript实现局部刷新

        }
    }
}    

 

      利用ajax技术可以实现很多用传统请求方式的复杂处理,下面介绍一个常用的例子:用户注册时通过ajax校验用户注册的用户名是否已经被其他人使用:

      1.首先在html中为username控件元素添加onBlur事件,并为此驱动事件绑定checkUserName方法。于是,当用户在此输入框中输入自己想要注册的用户名之后,焦点离开userName控件时,会触发checkUserName方法。html代码如下:

 


<input type = "text" id = "userName" name = "userName" onBlur= "checkUserName(this.value);" >
    

 

      2.checkUserName方法的实现:

 

//校验用户名是否被注册的javascript方法
function checkUserName(userName)
{
     //校验用户名格式是否合法,代码略
     if (checkStringFormat(userName, "userName" )
    {
         //初始化 HttpRequest
        CreateHttpRequest();

         //指定请求 url地址
         var url = "checkUserName.do?userName=" + userName;
        
         //设定回调函数
        http_request.onreadystatechange = showResult;

         //提交ajax请求
        http_request. open ( "GET" , url, true );
        http_request.send( null );
    }
}

 

      3.struts中校验用户名是否已经被注册过:

 

//用来校验用户名是否被注册过的Struts方法(Struts2)
public String checkUserName()
{
     //取得response对象代码略

     //定义一个PrintWriter对象用于输出
     PrintWriter out;        
     try
    {
         //取得response Writer
        out = response.getWriter();

         //通过与数据库中现有的用户名校验确定此用户名是否被注册过,代码略
         //如果未被注册
         if (userService.checkUserName( this .userName)
        {
             //向画面输出0
            out.write( "0" );
        }

         //如果已被注册
         else
        {
             //向画面输出1
            out.write( "1" );
        }
        
    }

     //异常处理
     catch ( IOException e)
    {
        e.printStackTrace();
    }
     finally
    {
        out.close();
    }
     return null ;
}

 

      4.画面中使用回调函数处理局部刷新:

 

//回调函数
function showResult()
{
     //服务器请求状态为“完成”
     if (http_request. readyState == 4)
    {
         // 服务器响应状态为“OK”
         if (http_request. status == 200)
        {
             //取得服务器执行相应后所生成内容信息
             var responseText =  http_request.responseText;
            
             //进行自定义处理,通过javascript实现局部刷新
             //如果服务器响应后返回0,说明此用户名尚未被注册
             if (responseText == "0" )
            {
                 //提示此用户名可以注册,具体代码略
                
            }

             else if (responseText == "1" )
            {
                 //提示此用户名已经被注册,请重新输入用户名,具体代码略

            }
        }
    }
}  

 

      以上为javascript和struts2实现基于ajax的校验用户名的功能实现。实际上ajax能够实现的功能,和其所应用到的领域十分广泛,了解了ajax的核心原理,无论使用现有的各种ajax插件来进行开发都很容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值