`
suiyuan0808
  • 浏览: 155228 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用最原始AJAX与Java Servlet实现无刷新的登录系统

    博客分类:
  • Java
阅读更多

     已经有一年半没有从事J2ee开发了,各种各样的Ajax框架JQuery,Prototype ,YUI等都发展到一句话搞定程度了。这篇文章是我在2009年时候写在QQ空间里面,现在顺便把它copy和大家一起分享。写的不好,见谅

     现在的ajax越赖越先进了,当年10行代码搞定今天只要一句话搞定了,社会进步,人类的进步,但我想起当年最初最底层的ajax编写就是玩出来的:
    建立登录界面index.jsp(客户端):
 

 

 

该界面很简单,如图1所示,但要注意三点:
(1)在<head>与</head>引入外部外部js文件(该文件用于XMLHttpRequest对象收集信息及处理返回结果):
    <script language="JavaScript" type="text/javascript" src="js/loginCheck.js"></script>
(2)登录用户名,密码的ID分别为userID,userPwd。将登录按钮的类型改成button,onClick事件为checkUserLogin()。即当用户点击登录按钮时,浏览器将调用loginCheck.js文件中的checkUserLogin函数来处理:
<td width="112" align="right">UserID:</td>
<td width="166"><input name="userID" type="text" id="userID"></td>
<td align="right">Password:</td>  <td><input name="userPwd" type="password" id="userPwd"></td>
<input type="button" name="login" value="Login"  onClick="checkUserLogin();">


(3)在登录表单下面有一表格,该表格的Style值为display:none表示该表格以及其中的所有组件在初始化时是隐藏的,只有在用户登录成功后才显示。
<table width="304" align="center" style="display:none " id="loginOKTable"> <tr><td  align="center" ><input type="text" name="welcomeUI" size="40"   readonly  id="welcomeUI"></td>     </tr>
</table>

三.建立登录界面loginCheck.js脚本文件(客户端):
该页面代码解释:
(1)创建全局XMLHttpRequest对象实例变量。该对象是IE浏览器已定义的,后来又由其他浏览器支持,是AJAX中的核心对象。它是一种支持异步请求的技术,通过该技术可以使用JavaScript向服务器提出请求并处理响应,在服务器未返回结果前不阻塞用户继续操作。
var httpRequest;

(2)定义创建XMLHttpRequest对象函数
function createHttpReqObj()
{
if(window.XMLHttpRequest) //创建IE之外浏览器的XMLHttpRequest对象
    {
       httpRequest = new XMLHttpRequest();
    }
else if (window.ActiveXObject) //创建IE浏览器的XMLHttpRequest对象
,不同的IE版本创建不同的对象
    {
           try
           {
              httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
           }
           catch (e)
            {
              try
              {
             httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
              } catch (e) {}
           }
    }
 
}

(3)检查用户登录函数(通过点击登录按钮触发)
function  checkUserLogin()
{
   var isValidInput=true;//用户未输入用户名帐号标志
  
  //获取用户输入的用户名以及密码
   var userName=document.getElementById("userName");
   var userPwd=document.getElementById("userPwd");

//判断用户名和密码是否为空
   if(userName.value=="")
   {
     window.alert("UserName can not be null.");
     userName.focus();
     isValidInput =false;
  
   }
   if(userPwd.value=="")
   {
     window.alert("User password can not be null.");
     isValidInput.focus();
     isCheckInput=false;
   }
   createHttpReqObj() ; //调用createHttpReqObj函数创建XMLHttpRequest对象
if(isValidInput && httpRequest)
   {
   
      var url="servlet/CheckUserLogin";
         httpRequest.open("POST",url, true);
       
        // onreadystatechange是XMLHttpRequest对象的参数。用于定义该对象状态改变时的监听器,其值对应一个javacript函数。本文将使用handleCheckLogin函数来监听。
        httpRequest.onreadystatechange = handleCheckLogin;

         httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       //send(body) 函数是XMLHttpRequest对象的内置函数,用于发送请求到http服务器并接收回应,参数body为请求发送的数据.  
        httpRequest.send("userName=" + userName.value + "&userPFONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">   }
}


function  handleCheckLogin()
{
  if (XMLHttpReq.readyState == 4)
  {
  
            if (XMLHttpReq.status == 200)
            {
               //获取XMLHttpRequest对象返回的responseXML结果
                var result=httpRequest.responseXML;

              //获取返回结果中的所有的loginInfo信息
            var loginInfos=result.getElementsByTagName("loginInfo");

//获取登录界面上的隐藏表格loginOKTable
var loginOKTable=window.document.getElementById("loginOKTable");

//将表格loginOKTable隐藏
                  loginOKTable.style.display="none";
                for(var i=0;i<loginInfos.length;i++)
                {
                   //使用getElementsByTagName函数获取所有是否登录成功loginSuccess标鉴信息:true 或false。因为返回的loginSuccess标鉴可以有很多个,所以用firstChild属性获取第一个loginSuccess标鉴; data属性获取loginSuccess标鉴的文本信息。
                   var isSuccess=loginInfos.getElementsByTagName ("loginSuccess")[0].firstChild.data;

                    //如果loginSuccess标鉴文本内容为true,表示登录成功
                   if(isSuccess!=null && isSuccess=="true")
                   {
                      //获取第一个userName标鉴的文本信息
                var loginUserName=loginInfos.getElementsByTagName ("userName")[0].firstChild.data;

         var loginContext=(loginUserName+" login success.Thank you.");

    //获取表格loginOKTable的welcomeUI文本框并在该文本框追加登录成功信息window.document.getElementById("welcomeUI").value=loginContext;
       
  //将隐藏表格loginOKTabl以及其中所有组件显示出来
           loginOKTable.style.display="block";
               }
else
           {
                    window.alert("Login fail!\nYour loginName or password was not correct ");   //登录失败提示
           }
                      break;
            }             
         }
else  {
         window.alert("Error happened on server!");//服务器出现错误
        }
   }
}

创建CheckUserLogin(Servlet)类的内容(服务端:

tringBuffer xmlBuffer = new StringBuffer(
              "<?xml version='1.0' encoding='UTF-8'?>");
       xmlBuffer.append("<loginInfo>");
       xmlBuffer.append("<loginSuccess>");
       xmlBuffer.append(isLoginSuccess);
       xmlBuffer.append("</loginSuccess>");
       if (isLoginSuccess) //如果检验成功追加userName标鉴
       {
           xmlBuffer.append("<userName>");
           xmlBuffer.append(userName);
           xmlBuffer.append("</userName>");
         //获取HttpSession对象并设置登录成功值,在其他页面可以通过此页面来判断是否已经登录成功       
HttpSession session = request.getSession(true);

           session.setAttribute("loginSuccess", true);
       }
       xmlBuffer.append("</loginInfo>");
       PrintWriter out = response.getWriter();
       out.println(xmlBuffer.toString());
       out.flush();
     out.close();

}

 

 

  • 大小: 9.6 KB
  • 大小: 110.5 KB
  • 大小: 10.3 KB
0
1
分享到:
评论

相关推荐

    ajax无刷新聊天室源码--jsp版

    综上所述,"ajax无刷新聊天室源码--jsp版"涵盖了Ajax技术、JSP编程、Servlet交互、数据库操作等多个核心知识点,对于学习JavaWeb开发和理解前后端交互机制有着重要的实践意义。通过深入研究这个项目,开发者不仅可以...

    ajax 实现网页无闪自动局部刷新

    ### AJAX 实现网页无闪自动局部刷新 #### 一、简介 在现代Web开发中,提升用户体验是一项重要的任务。传统的Web页面更新方式是通过表单提交或者点击链接来完成整个页面的重新加载,这种方式会导致页面闪烁并且加载...

    jsp+servlet实现增删改查

    本项目以"jsp+servlet实现增删改查"为主题,旨在利用这两者实现CRUD(Create、Read、Update、Delete)操作,这是任何数据管理系统的基石。 首先,`CRUD`是数据库操作的基本动作。创建(Create)指的是向数据库添加...

    基于jsp+servlet+ajax+bootstrap 的超市管理系统.zip

    在超市管理系统中,AJAX可以用来实现无刷新的用户交互,比如实时查询库存、添加商品到购物车等操作,提高用户体验。通过XMLHttpRequest对象向服务器发送异步请求,获取数据,然后用JavaScript更新DOM元素。 **...

    基于mybatis + servlet实现的在线投票系统.zip

    - **用户体验**: 通过AJAX实现无刷新投票,提高交互性。 - **异常处理**: 建立健全的异常处理机制,确保系统稳定运行。 综上所述,基于MyBatis和Servlet的在线投票系统利用了两者的优势,实现了高效、灵活的数据...

    过滤器和ajax

    在"使用servlet实现ajax的基本登入判断"中,可能是利用AJAX发送一个异步请求到服务器,然后服务器端的Servlet处理这个请求,验证用户的登录状态,并将结果返回给客户端,这样可以避免页面的完全刷新,提供更流畅的...

    javaweb登入注册+答题系统 解决了反之用户重复登陆

    3. **Ajax (Asynchronous JavaScript and XML)**: Ajax允许网页部分刷新,实现了页面无刷新的数据交互,提高了用户体验。在这个系统中,当用户提交登录或注册信息时,可以通过Ajax异步发送请求,避免整个页面刷新,...

    SwfUpload上传控件,用java上传大文件,无缝刷新

    SwfUpload是一款强大的JavaScript上传控件,它支持大文件上传并能实现无刷新(Ajax)效果,极大地提升了用户在网页上的文件上传体验。在Java环境中,我们可以利用SwfUpload与后端服务配合,处理文件上传请求,实现...

    基于java开发的jsp+servlet+mysql的旅游管理系统

    这些JSP页面通过AJAX异步技术与Servlet进行通信,实现页面无刷新的交互体验。而Servlet在后台接收到请求后,会调用相应的业务逻辑方法,对数据进行处理,如验证用户输入、查询数据库等。 在管理端,系统提供了更...

    JAVAWEB+Mysql数据库实现注册登录数据库

    同时,考虑到用户体验,还需要进行前端优化,如使用AJAX实现异步提交,减少页面刷新。 总的来说,"JAVAWEB+Mysql数据库实现注册登录数据库"是一个涵盖后端编程、数据库设计、前端交互和安全策略等多个方面的综合...

    java完美的验证码生成

    本教程将详细讲解如何在Java环境下实现一个完美的、可定制的验证码生成系统。 首先,验证码的基本原理是生成一串随机字符串,并将其与图像结合,用户在看到图像后需输入对应的字符串,服务器端会验证用户输入的字符...

    jsp-ajax_demos_JSP源码_

    这个项目旨在帮助开发者理解如何在JSP(Java Server Pages)中有效地运用Ajax技术,从而实现页面的无刷新更新,提升用户体验。 【描述】"JSP Ajax example set" 描述了这是一个专门的示例集,涵盖了多个JSP与Ajax的...

    ajax-B.rar

    JavaScript库如jQuery、Prototype或AngularJS等,通常简化了AJAX的使用,但在原始的AJAX实现中,我们需要手动创建和配置XMLHttpRequest对象。 **XMLHttpRequest** 是浏览器内置的对象,是AJAX的基础。通过这个对象...

    基于Spring框架的云笔记设计与实现.pdf

    基于Spring框架的云笔记设计与实现涉及多个IT领域的知识点,这些知识点包括但不限于Spring框架、Java语言、MySQL数据库、MyEclipse开发环境、Tomcat服务器、SpringMVC框架、MyBatis框架、AJAX技术等。下面详细介绍...

    jsp js java网页头像切割实例

    本实例主要探讨如何使用JSP、JavaScript(JS)以及Java技术来实现这一功能。以下是这个实例涉及的关键知识点: 1. **JSP(JavaServer Pages)**: JSP是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java...

    ajax基础教程

    Ajax是Web开发中的关键技术,它提高了用户体验,实现了网页的无刷新交互。掌握Ajax的基础知识,包括JavaScript、XMLHttpRequest、DOM、CSS以及数据格式,对于构建高效、响应式的Web应用至关重要。结合Java,可以构建...

    漂亮验证码(jsp版)

    JSP生成随机的验证码图片,Servlet负责验证,Ajax和jQuery提供无刷新的交互体验,共同确保了Web应用的安全性。这种实现方式对于初学者了解Web开发中的关键概念和技术栈,以及在实际项目中应用这些技术,都是很有价值...

    基于JavaEE技术的毕业设计选题系统的设计与实现本科毕业论文.pdf

    - 例如,使用Servlet处理HTTP请求,JSP用于生成动态网页内容,JavaBean封装数据和业务逻辑,AJAX实现无刷新页面更新等。 8. 网络技术与自动化办公: - 论文将讨论网络技术的发展如何推动了办公自动化的进程,以及...

    jsp.rar_hibernate jsp ajax

    4. **整合应用**:在实际项目中,Hibernate用于处理数据库操作,JSP用于生成和展示用户界面,Ajax则用于在客户端和服务器之间进行异步通信,实现数据的动态加载和更新,比如无刷新的搜索结果、分页、实时数据推送等...

    IBM java面试题

    - JavaScript中的Ajax(Asynchronous JavaScript and XML)用于创建异步Web应用程序,通过XMLHttpRequest对象向服务器发送请求,获取数据并在不刷新整个页面的情况下更新部分网页内容。 - 创建XMLHttpRequest对象...

Global site tag (gtag.js) - Google Analytics