`

ajax

    博客分类:
  • java
阅读更多
         今天第一次注册这个javablog,写个学习笔记,在北京培训的第三个项目drp开始了,今天写该项目第一个版本的第一个模块——用户模块,首先会用到一个设计模式——单例模式,用来生成用户管理员类UserManager的一个instance,采用其中的饿汉式方法,其次用到的是ajax技术用来验证用的信息,下面来根据自己的理解大约介绍一下ajax技术:
                                                                                        Ajax:
  1, 首先ajax是一种综合javascript和xml的技术。
  2. 用来异步传输信息,for example:以往的验证用户信息的技术,都是在用户填完需要填写的信息后将整个页面提交交给后台验证,如有异常就会返回刷新让用户重新填写,这样就会浪费用户的时间等资源,也会使该网站的用量产生消减。当用了ajax以后就不用刷新就可以更新内容,也就是在等待传输的过程中, 用户就可以和系统进行交互,拿上个例子来说,如果当你填写到用户名的时候,如过系统发现你的用户名已经和系统中的重复的话就会在你填写完用户名后给你一个提示,而不用你填完整个页面向信息后在提示你,这样就会让系统更加人性化。
3.ajax的一个主要属性XMLHttpRequest,通过它可以提起和服务器的请求,所以必须首先产生一个XMLHttpRequest对象用来处理事件;
4.一些方法比如open,send在下面的例子中将会提到;
                                                                                
              以下是项目第一版本中的ajax用来验证用户输入的用户代码是否与系统中的已有代码重复的用例:

   首先必须在客户端添加一个事件用来触发我们的验证程序:
      <input name="userId" type="text" class="text1" id="userId"   onblur="validate()"><span id="resText"></span>
然后在javascript中添加以下方法:

var xmlHttp;
 
 function createXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
  if(window.XMLHttpRequest) {
   xmlHttp = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
   function validate() { //主方法

  createXMLHttpRequest();    //用来创建一个XMLHttpRequest对象
  var userId = document.getElementById("userId").value; //得到用户输入的userid
  var url = "user_validate.jsp?userId=" + userId + "&timestamp=" + new Date().getTime(); //将用户填写信息交到user_validate.jsp用于判断用户是 否重复,其中timestamp用于消除缓存,也可一在user_validate.jsp页面添加以下代码用于缓存:
/*
 response.setContentType("text/xml");
 response.setHeader("Cache-Control", "no-store"); //HTTP1.1 
 response.setHeader("Pragma", "no-cache"); //HTTP1.0
 response.setDateHeader("Expires", 0);
   */
  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange=callback;  //calllback方法用来将反馈信息出入到页面,给用户提示
  xmlHttp.send(null);
 }
function callback() {
     if (xmlHttp.readyState == 4) { //判断页面是否处理完毕
     if (xmlHttp.status == 200) { //判断user_validate.jsp页面是否找到 ,200代表页面一找到,如果没找到则返回404,你可以在这alert  (xmlHttp.status )来查看代码;
   var resTextSpan = document.getElementById("resText"); //根据id得到span 区域用于输出提示信息
   resTextSpan.innerHTML = "<font color='red'>" +     
              xmlHttp.responseText + "</font>"; //在span输出提示信息,其中  xmlHttp.responseText 用来得到user_validate.jsp 的out.println信息
     }
    }
 
下面是user_validate.jsp://可以写成servlet体现mvc结构。

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ page import="com.bjsxt.drp.sysmgr.*" %>   
<%

 /*
 //可以采用清除缓存的方法,如下
 response.setContentType("text/xml");
 response.setHeader("Cache-Control", "no-store"); //HTTP1.1 
 response.setHeader("Pragma", "no-cache"); //HTTP1.0
 response.setDateHeader("Expires", 0);
   */

 String userId = request.getParameter("userId");
 if (UserManager.getInstance().findUserById(userId) != null) {//其中findUserById(userId)是javabeen中的一个函数findUserById(String userId)方法
  out.println("用户代码[" + userId + "]存在!");
 }
 %>   
以下是所用到的javabeen类://只是一部分其中有一个User类没有贴出来 ,里面就是一些成员变量和get,set方法
import java.sql.*;
private static UserManager instance = new UserManager();
 
 //私有的构造函数
 private UserManager() {
 }
 
 /**
  * 入口点方法
  * @return UserManager实例
  */
 public static UserManager getInstance() {
  return instance;
 }
public User findUserById(String userId) {
  String sql = "select * from t_user where user_id=?";
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  User user = null;
  try{
   conn = DB.getConn();
   pstmt = conn.prepareStatement(sql);
   pstmt.setString(1, userId);
   rs = pstmt.executeQuery();
   if (rs.next()) {
    user = new User();
    user.setUserId(rs.getString("user_id"));
    user.setUserName(rs.getString("user_name"));
    user.setPassword(rs.getString("password"));
    user.setContactTel(rs.getString("contact_tel"));
    user.setEmail(rs.getString("email"));
    user.setCreateDate(rs.getTimestamp("create_date"));
   }
  }catch(SQLException e) {
   e.printStackTrace();
  }finally {
   DB.close(rs);
   DB.close(pstmt);
   DB.close(conn);
  }
  return user;
 }

这就是整个例子;
    总结它的流程:
       用户触发一个事件交给validate() 处理,在validate()方法里首先创建一个 XMLHttpRequest对象用来与服务器打交道,然后是得到用户输入的信息交给user_validate.jsp处理(因为要和数据库打交道所以新建一个页面user_validate.jsp)user_validate.jsp得到用户输入的信息,与数据库中的信息进行验证,如果数据库中有这个用户就输出(用户代码[" + userId + "]存在!");然后由xmlHttp.responseText 方法得到user_validate.jsp 的out.println信息,然后给用户打印出来。

整个过程就是这样。明天写分页组件。tomorrow  is comming!! 
  第一次在这写,对这个编辑器不是很熟悉,没有对代码进行高亮显示,见谅!!
分享到:
评论
1 楼 chenzheng8975 2012-08-02  

相关推荐

    Ajax中文手册 API

    很不错的Ajax开发草考文档,方便快捷1. AJAX介绍AJAX是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接受数据的技术。2. AJAX实例AJAX可以用来创建更多交互式的网络应用程序。3. AJAX源...

    Ajax从入门到精通.pdf

    Ajax从入门到精通.pdf 本书籍旨在深入浅出地介绍 Ajax 技术,从基础知识到高级应用,全面覆盖 Ajax 的核心概念、技术原理、实现方法和实践应用。书籍的主要内容包括: 1. Ajax 概述:本书首先介绍了 Ajax 的概念、...

    Java Ajax分页,jsp ajax分页

    Java AJAX(Asynchronous JavaScript and XML)分页与JSP(JavaServer Pages)相结合,可以提供无需刷新整个页面即可动态加载更多内容的能力,提高用户体验。本教程将深入探讨如何使用AJAX、JavaScript以及MySQL...

    深入浅出Ajax(Head Rush Ajax) 源码 书中代码

    **Ajax 概述** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它的核心是利用JavaScript与服务器进行异步数据交换,通过XML或者JSON格式传输数据,使得用户...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit 源代码

    本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者有任何的客户端...

    jquery+ajax例子

    在IT行业中,jQuery和Ajax是两个非常重要的技术,它们在构建动态、交互性强的Web应用程序时发挥着关键作用。jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。Ajax...

    AJAX原理 原理 AJAX

    "AJAX原理与技术的深入分析" AJAX(Asynchronous JavaScript and XML)是一种异步通信技术,允许Web应用程序异步地从服务器请求数据,而不需要重新加载整个网页。下面我们将深入分析AJAX的原理、技术、意义和发展...

    谷歌浏览器插件—— Ajax Interceptor

    **Ajax Interceptor:深入理解与应用** Ajax Interceptor 是一款专为谷歌浏览器(Chrome)设计的插件,它允许开发者在Ajax请求发送后和响应返回前进行干预,从而实现对AJAX请求数据的修改。这款插件对于前端开发、...

    AjaxRequest(Ajax使用包)

    **AjaxRequest(Ajax使用包)** Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。AjaxRequest是实现Ajax功能的一个工具包,它...

    实例详解Android Webview拦截ajax请求

    Android Webview虽然提供了页面加载及资源请求的钩子,但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉javascript发起的http请求,而有时候我们确实需要能够截获ajax请求并实现一些功能...

    Professional Ajax, 2nd Edition.pdf

    《Professional Ajax, 2nd Edition》是一本深入探讨Ajax技术的专业书籍,由三位作者Nicholas C. Zakas、Jeremy McPeak和Joe Fawcett共同撰写。本书在2007年由Wiley Publishing, Inc.出版,是针对网站开发、设计以及...

    ajax+json实例

    **Ajax+JSON 实例详解** 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)技术已经成为提升用户体验的重要工具,它允许网页在不刷新整个页面的情况下与服务器进行数据交互。结合JSON(JavaScript Object ...

    ajax代码 ajax代码

    **Ajax(Asynchronous JavaScript and XML)技术是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。这种技术可以提升用户体验,因为它...

    php+ajax例子

    标题中的“php+ajax例子”指的是使用PHP服务器端语言与AJAX(Asynchronous JavaScript and XML)客户端技术结合的示例应用。在Web开发中,PHP通常用于处理服务器端逻辑,而AJAX则允许网页在不刷新整个页面的情况下,...

    Ajax基础教程(亚马逊计算机榜首图书,国内第1本Ajax图书) [第一部分 共两部分]

    本书重点介绍Ajax及相关的工具和技术,主要内容包括XMLHttpRequest对象及其属性和方法、发送请求和处理响应、构建完备的Ajax开发工具、使用JsUnit测试JavaScript、分析JavaScript调试工具和技术,以及Ajax开发模式和...

    完美解决ajax访问遇到Session失效的问题

    现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不

    完全手册:ASP.net.Ajax电子教程

    **ASP.NET AJAX 全面解析** ASP.NET AJAX(Asynchronous JavaScript and XML)是微软为.NET Framework提供的一种技术,用于创建富交互式、响应快速的Web应用程序。它将JavaScript库(MicrosoftAjax.js)与服务器端...

    jquery.unobtrusive-ajax.rar

    2. **事件处理**:库内部监听`ajaxStart`、`ajaxSend`、`ajaxSuccess`、`ajaxError`等事件,提供了对Ajax请求生命周期的控制。开发者可以通过自定义事件处理器来扩展功能或处理错误。 3. **内容替换**:默认情况下...

    Struts2与Ajax 精简源码

    Struts2与Ajax 的实现原理,于Servlet+Ajax原理是一致的,都是通过后台的response.getWriter().print("");把数据传输给前台的。 前台Ajax格式如下(需要导入ajax库,比如:jquery-1.11.3.js) 格式: $(function()...

Global site tag (gtag.js) - Google Analytics