ajax異步刷新簡單的demo

說明:本案例是在瀏覽器中局部刷新對象people的age屬性的值

1.首先創建一個People類

package com.jsf.demo1;

public class People {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public People(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    
}

2.創建一個處理請求的servlet

package com.jsf.demo1;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.collections.map.HashedMap;

/**
 * Servlet implementation class GetPeopleInf
 */
public class GetPeopleInf extends HttpServlet implements Serializable {
    private static final long serialVersionUID = 1L;
    private HashMap<String, People> peoples;

    /*處理請求
     * (non-Javadoc)
     * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    @Override
    protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=gbk");
        // 改變age的值
        int a = (int) (Math.random() * 100);
        People p2 = peoples.get("tom");
        p2.setAge(a);
        StringBuilder builder = new StringBuilder();
        //將數據封裝成javascript能處理的json型數據
        builder.append("(").append("{").append("\"").append("name\"").append(":\"").append(
                p2.getName()).append("\"").append(",\"").append("age\"").append(":\"").append(
                p2.getAge()).append("\"").append("}").append(")");
       PrintWriter out = response.getWriter();
       out.print(builder);       
    }

    /*
     * 初始化數據
     * (non-Javadoc)
     * @see javax.servlet.GenericServlet#init()
     */
    @Override
    public void init() throws ServletException {
        People p = new People("tom", 20);
        peoples = new HashMap<String, People>();
        peoples.put(p.getName(), p);
    }

}

3.配置web.xml配置文件

<servlet>
    <description></description>
    <display-name>GetPeopleInf</display-name>
    <servlet-name>GetPeopleInf</servlet-name>
    <servlet-class>com.jsf.demo1.GetPeopleInf</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>GetPeopleInf</servlet-name>
    <url-pattern>/GetPeopleInf</url-pattern>
  </servlet-mapping>

4.寫testpeople.js文件(他和jquery.js同時放在WebContent-->js中)

$(document).ready(function(){
    getInf();
    //每1秒取一次
    setInterval(getInf, 1000);
});
function getInf() {
    //向服務器獲取數據
    $.get("GetPeopleInf", null, function(date){
        var obj = eval(date);
        var name = obj["name"];
//        alert( name);
        //將取得的數據賦給相應的div
        $("#name").html(name);
        $("#age").html(obj["age"]);
    });
}

5.寫test.jsp頁面

<script language="javascript" type="text/javascript"
    src="js/testpeople.js"></script>
<title>Insert title here</title>
</head>
<body>
姓名:
<div id="name"></div>
年齡:
<div id="age"></div>

6.結果顯示

姓名:

tom
年齡:
27


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章