codefans

导航

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

程序设计链接

搜索

最新评论

阅读排行榜

评论排行榜

Ajax入门实例

安装jdk1.4和tomcat5.0.28,IE5.5获FireFox。进入正题

[1]写index.jsp文件

<%@ page contentType="text/html;charset=gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>My JSP 'index.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="description" content="This is my page">

    <link rel="stylesheet" type="text/css" href="styles.css">

  </head>

 

  <body>

    <script type="text/javascript">

    var req;

     function validate() {

         var idField = document.getElementById("userid");

         var url = "servlet/ValidateServlet?id=" + escape(idField.value);

         if (window.XMLHttpRequest) {

             alert("0");

             req = new XMLHttpRequest();

         }else if (window.ActiveXObject) {

             alert("1");

             req = new ActiveXObject("Microsoft.XMLHTTP");

         }

        if(req){

            req.open("GET", url, true);

             req.onreadystatechange = callback;

            req.send(null);       

         }

    }

function callback() {

    if (req.readyState == 4) {

        if (req.status == 200) {

                 parseMessage();

                 // update the HTML DOM based on whether or not message is valid

        }else{

            alert ("Not able to retrieve description" + req.statusText);

        }      

    }

}

function parseMessage() {

    var message = req.responseXML.getElementsByTagName("message")[0];

    var name = req.responseXML.getElementsByTagName("name")[0];

    setMessage(message.firstChild.data,name.firstChild.data);

}

 function setMessage(message,name) {

     var userMessageElement = document.getElementById("userIdMessage");

     userMessageElement.innerHTML = "<font color=\"red\">" + message + " you "+name+"</font>";

 }

</script>

<div id="userIdMessage"></div>

    <input type="text"

            size="20"

              id="userid"

            name="id"

         onkeyup="validate();">

  </body>

</html>

[2] 写servlet/ValidateServlet.java类

/*

 * 创建日期 2005-8-3

 *

 * TODO 要更改此生成的文件的模板,请转至

 * 窗口 - 首选项 - Java - 代码样式 - 代码模板

 */

package com;//com包需要自己创建.

 

import java.io.IOException;

import java.io.PrintWriter;

import java.util.HashMap;

 

import javax.servlet.ServletConfig;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

 * @author Administrator

 *

 * TODO 要更改此生成的类型注释的模板,请转至

 * 窗口 - 首选项 - Java - 代码样式 - 代码模板

 */

public class ValidateServlet extends HttpServlet {

 

    /**

     * Constructor of the object.

     */

  

    private ServletContext context;

    private HashMap users = new HashMap();

 

    public ValidateServlet() {

        super();

    }

 

    /**

     * Destruction of the servlet. <br>

     */

    public void destroy() {

        super.destroy(); // Just puts "destroy" string in log

        // Put your code here

    }

 

    /**

     * The doGet method of the servlet. <br>

     *

     * This method is called when a form has its tag value method equals to get.

     *

     * @param request the request send by the client to the server

     * @param response the response send by the server to the client

     * @throws ServletException if an error occurred

     * @throws IOException if an error occurred

     */

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.setContentType("text/xml");

        response.setHeader("Cache-Control", "no-cache");

      

        String targetId = request.getParameter("id");

        System.out.println(targetId.trim());

 

        if ((targetId != null) && users.containsKey(targetId.trim())) {

 

                          response.getWriter().write("<info><message>welcome</message><name>sdl</name></info>");

        } else {

 

                  response.getWriter().write("<info><message>kill</message><name>bush</name></info>");

                System.out.print("invalid");

            }

 

 

    }

    /**

     * Initialization of the servlet. <br>

     *

     * @throws ServletException if an error occure

     */

    public void init(ServletConfig config) throws ServletException {

        this.context = config.getServletContext();

        users.put("greg","account data");

        users.put("duke","account data");

 

    }

 

}

[3]写web.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

    xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <servlet>

    <description>This is the description of my J2EE component</description>

    <display-name>This is the display name of my J2EE component</display-name>

    <servlet-name>ValidateServlet</servlet-name>

    <servlet-class>com.ValidateServlet</servlet-class>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>ValidateServlet</servlet-name>

    <url-pattern>/servlet/ValidateServlet</url-pattern>

  </servlet-mapping>

</web-app>

[4]说明:
你可以在IE或FireFox里测试,在文本输入框里输入,当按键抬起,会在层中显示”kill you bush”。其中index.htm中的styles.css只是美化页面,没有列出来源代码。如果在servlet向客户端输出中文,需要编码转换。

posted on 2006-02-25 11:17 春雷的博客 阅读(224) 评论(0)  编辑  收藏 所属分类: web service


只有注册用户登录后才能发表评论。


网站导航: