AJAX¼¶ÁªÏÂÀ­¿òµÄ¼òµ¥ÊµÏÖ°¸Àý

¡¡¡¡ÐèÒªµÄJAVAÀà

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡package com.ajaxlab.ajax;

¡¡¡¡import java.util.ArrayList;

¡¡¡¡import java.util.Collection;

¡¡¡¡import java.util.Iterator;

¡¡¡¡import org.jdom.Document;

¡¡¡¡import org.jdom.Element;

¡¡¡¡import org.jdom.input.SAXBuilder;

¡¡¡¡import com.ajaxlab.ajax.ProductClass;

¡¡¡¡public class ClassService {

¡¡¡¡private Document dom;

¡¡¡¡public ClassService(){

¡¡¡¡try{

¡¡¡¡SAXBuilder builder=new SAXBuilder();

¡¡¡¡this.dom=builder.build(ClassService.class.getResource("product.xml"));

¡¡¡¡}catch(Exception e){

¡¡¡¡e.printStackTrace();

¡¡¡¡}

¡¡¡¡}

¡¡¡¡public ProductClass[] getAllClass1(){

¡¡¡¡Collection products=new ArrayList();

¡¡¡¡Iterator iterator=this.dom.getRootElement().getChildren().iterator();

¡¡¡¡do{

¡¡¡¡Element element=(Element)iterator.next();

¡¡¡¡ProductClass product=new ProductClass(element.getAttributeValue("id"),

¡¡¡¡element.getAttributeValue("className"));

¡¡¡¡products.add(product);

¡¡¡¡}while(iterator.hasNext());

¡¡¡¡return (ProductClass[])products.toArray(new ProductClass[0]);

¡¡¡¡}

¡¡¡¡public ProductClass[] getAllClass2ById(String class1Id){

¡¡¡¡Collection products=new ArrayList();

¡¡¡¡Element classElement=null;

¡¡¡¡Iterator iterator=this.dom.getRootElement().getChildren().iterator();

¡¡¡¡do{

¡¡¡¡Element element=(Element)iterator.next();

¡¡¡¡if(class1Id.equalsIgnoreCase(element.getAttributeValue("id"))){

¡¡¡¡classElement=element;

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡}while(iterator.hasNext());

¡¡¡¡if(classElement!=null){

¡¡¡¡Iterator iter=classElement.getChildren().iterator();

¡¡¡¡do{

¡¡¡¡Element element=(Element)iter.next();

¡¡¡¡ProductClass product=new ProductClass(element.getAttributeValue("id"),

¡¡¡¡element.getAttributeValue("className"));

¡¡¡¡products.add(product);

¡¡¡¡}while(iter.hasNext());

¡¡¡¡return (ProductClass[])products.toArray(new ProductClass[0]);

¡¡¡¡}

¡¡¡¡else{

¡¡¡¡return null;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡public ProductClass[] getAllClass3ById(String class1Id,String class2Id) {

¡¡¡¡Collection products = new ArrayList();

¡¡¡¡Element class1Element = null;

¡¡¡¡Element class2Element = null;

¡¡¡¡Iterator iterator = this.dom.getRootElement().getChildren().iterator();

¡¡¡¡do {

¡¡¡¡Element element = (Element)iterator.next();

¡¡¡¡if(class1Id.equalsIgnoreCase(element.getAttributeValue("id"))) {

¡¡¡¡class1Element = element;

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡}while(iterator.hasNext());

¡¡¡¡if(class1Element!=null) {

¡¡¡¡Iterator iter = class1Element.getChildren().iterator();

¡¡¡¡do {

¡¡¡¡Element element = (Element)iter.next();

¡¡¡¡if(class2Id.equalsIgnoreCase(element.getAttributeValue("id"))) {

¡¡¡¡class2Element = element;

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡}while(iter.hasNext());

¡¡¡¡if(class2Element!=null) {

¡¡¡¡Iterator iter2 = class2Element.getChildren().iterator();

¡¡¡¡do {

¡¡¡¡Element element = (Element)iter2.next();

¡¡¡¡ProductClass product = new ProductClass(element.getAttributeValue("id"),element.getAttributeValue("className"));

¡¡¡¡products.add(product);

¡¡¡¡}while(iter2.hasNext());

¡¡¡¡}

¡¡¡¡return (ProductClass[])products.toArray(new ProductClass[0]);

¡¡¡¡}

¡¡¡¡else return null;

¡¡¡¡}

¡¡¡¡}

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

¡¡¡¡<!DOCTYPE class SYSTEM "product.dtd" >

¡¡¡¡<class>

¡¡¡¡<class1 className="µçÄÔÅä¼þ" id="1">

¡¡¡¡<class2 className="ÄÚ´æ" id="1">

¡¡¡¡<class3 id="1" className="kingmax"></class3>

¡¡¡¡<class3 id="2" className="kingston"></class3>

¡¡¡¡<class3 id="3" className="samsung"></class3>

¡¡¡¡<class3 id="4" className="hydadi"></class3>

¡¡¡¡<class3 id="5" className="ibm"></class3>

¡¡¡¡</class2>

¡¡¡¡<class2 className="Ó²ÅÌ" id="2">

¡¡¡¡<class3 id="6" className="hithait"></class3>

¡¡¡¡<class3 id="7" className="IBM"></class3>

¡¡¡¡<class3 id="8" className="samsung"></class3>

¡¡¡¡<class3 id="9" className="westdata"></class3>

¡¡¡¡</class2>

¡¡¡¡</class1>

¡¡¡¡<class1 className="ʳƷÅä¼þ" id="2">

¡¡¡¡<class2 className="ºº±¤°ü" id="1">

¡¡¡¡<class3 id="1" className="Âóµ±ÀÍ"></class3>

¡¡¡¡<class3 id="2" className="¿ÏµÃ»ù"></class3>

¡¡¡¡<class3 id="3" className="ÂÞ½ÜË¿"></class3>

¡¡¡¡</class2>

¡¡¡¡<class2 className="ÒûÁÏ" id="2">

¡¡¡¡<class3 id="4" className="cocacola"></class3>

¡¡¡¡<class3 id="5" className="sprite"></class3>

¡¡¡¡<class3 id="6" className="coffee"></class3>

¡¡¡¡<class3 id="7" className="water"></class3>

¡¡¡¡</class2>

¡¡¡¡</class1>

¡¡¡¡</class>

¡¡¡¡<?xml version="1.0" encoding="GB2312" ?>

¡¡¡¡<!ELEMENT class (class1+)>

¡¡¡¡<!ELEMENT class1 (class2+)>

¡¡¡¡<!ATTLIST class1 className NMTOKEN #REQUIRED>

¡¡¡¡<!ATTLIST class1 id NMTOKEN #REQUIRED>

¡¡¡¡<!ELEMENT class2 (class3+)>

¡¡¡¡<!ATTLIST class2 className NMTOKEN #REQUIRED>

¡¡¡¡<!ATTLIST class2 id NMTOKEN #REQUIRED>

¡¡¡¡<!ELEMENT class3 EMPTY>

¡¡¡¡<!ATTLIST class3 className NMTOKEN #REQUIRED>

¡¡¡¡<!ATTLIST class3 id NMTOKEN #REQUIRED>

¡¡¡¡JSP:

¡¡¡¡(1)getClass.jsp ³äµ±ÒµÎñ²ã¹©ajaxµ÷ÓÃ

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

¡¡¡¡<%@ page import="com.ajaxlab.ajax.*"%>

¡¡¡¡<%

¡¡¡¡String class1Id = request.getParameter("class1Id");

¡¡¡¡String class2Id = request.getParameter("class2Id");

¡¡¡¡if("".equals(class1Id)) class1Id = null;

¡¡¡¡if("".equals(class2Id)) class2Id = null;

¡¡¡¡ClassService service = new ClassService();

¡¡¡¡if((class1Id!=null)&&(class2Id==null)) {

¡¡¡¡ProductClass[] classes = service.getAllClass2ById(class1Id);

¡¡¡¡if(classes!=null) {

¡¡¡¡for(int i=0;i<classes.length;i++) {

¡¡¡¡out.print(classes[i].getId()+","+classes[i].getClassName()+"|");

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡else if((class1Id!=null)&&(class1Id!=null)) {

¡¡¡¡ProductClass[] classes = service.getAllClass3ById(class1Id,class2Id);

¡¡¡¡if(classes!=null) {

¡¡¡¡for(int i=0;i<classes.length;i++) {

¡¡¡¡out.print(classes[i].getId()+","+classes[i].getClassName()+"|");

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡%>

¡¡¡¡(2)divmenu.jsp

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

¡¡¡¡<%@ page import="com.ajaxlab.ajax.*"%>

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

¡¡¡¡<html>

¡¡¡¡<head>

¡¡¡¡<script type="text/javascript" src="ajax_func.js" ></script>

¡¡¡¡<script type="text/javascript">

¡¡¡¡function doChange() {

¡¡¡¡var f = document.forms[0];

¡¡¡¡send_request("GET","getClass.jsp?class1Id="+f.select11.value+"&class2Id=",null,"TEXT",populateClass2);

¡¡¡¡}

¡¡¡¡function doChange2() {

¡¡¡¡var f = document.forms[0];

¡¡¡¡send_request("GET","getClass.jsp?class1Id="+f.select11.value+"&class2Id="+f.select12.value,null,"TEXT",populateClass3);

¡¡¡¡}

¡¡¡¡function populateClass2(){

¡¡¡¡var f=document.forms[0];

¡¡¡¡if(http_request.readystate==4){

¡¡¡¡if(http_request.status==200){

¡¡¡¡var list=http_request.responseText;

¡¡¡¡var classList=list.split("|");

¡¡¡¡f.select12.options.length=1;

¡¡¡¡for(var i=0;i<classList.length-1;i++){

¡¡¡¡var temp=Trim(classList[i]).split(",");

¡¡¡¡f.select12.add(new Option(temp[1],temp[0]));

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡function populateClass3(){

¡¡¡¡var f=document.forms[0];

¡¡¡¡if(http_request.readystate==4){

¡¡¡¡if(http_request.status==200){

¡¡¡¡var list=http_request.responseText;

¡¡¡¡var classList=list.split("|");

¡¡¡¡f.select13.options.length=1;

¡¡¡¡for(var i=0;i<classList.length-1;i++){

¡¡¡¡var temp=Trim(classList[i]).split(",");

¡¡¡¡f.select13.add(new Option(temp[1],temp[0]));

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡function LTrim(str)

¡¡¡¡{

¡¡¡¡var whitespace = new String(" /t/n/r");

¡¡¡¡var s = new String(str);

¡¡¡¡if (whitespace.indexOf(s.charAt(0)) != -1)

¡¡¡¡{

¡¡¡¡var j=0, i = s.length;

¡¡¡¡while (j < i && whitespace.indexOf(s.charAt(j)) != -1)

¡¡¡¡{

¡¡¡¡j++;

¡¡¡¡}

¡¡¡¡s = s.substring(j, i);

¡¡¡¡}

¡¡¡¡return s;

¡¡¡¡}

¡¡¡¡function RTrim(str)

¡¡¡¡{

¡¡¡¡var whitespace = new String(" /t/n/r");

¡¡¡¡var s = new String(str);

¡¡¡¡if (whitespace.indexOf(s.charAt(s.length-1)) != -1)

¡¡¡¡{

¡¡¡¡var i = s.length - 1;

¡¡¡¡while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)

¡¡¡¡{

¡¡¡¡i--;

¡¡¡¡}

¡¡¡¡s = s.substring(0, i+1);

¡¡¡¡}

¡¡¡¡return s;

¡¡¡¡}

¡¡¡¡function Trim(str)

¡¡¡¡{

¡¡¡¡return RTrim(LTrim(str));

¡¡¡¡}

¡¡¡¡</script>

¡¡¡¡<%

¡¡¡¡ClassService service = new ClassService();

¡¡¡¡ProductClass[] classes = service.getAllClass1();

¡¡¡¡%>

¡¡¡¡<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

¡¡¡¡<title>Insert title here</title>

¡¡¡¡</head>

¡¡¡¡<body><center>

¡¡¡¡<form name="classForm" method="post" action="">

¡¡¡¡<select name="select11" id="select11" onchange="doChange(this.value)">

¡¡¡¡<option value="">ÇëÑ¡Ôñ·ÖÀàÒ»</option>

¡¡¡¡<%

¡¡¡¡for(int i=0;i<classes.length;i++) {

¡¡¡¡out.println("<option value='"+classes[i].getId()+"'>"+classes[i].getClassName()+"</option>");

¡¡¡¡}

¡¡¡¡%>

¡¡¡¡</select>

¡¡¡¡<select name="select12" id="select12" onchange="doChange2(this.value)">

¡¡¡¡<option value="">ÇëÑ¡Ôñ·ÖÀà¶þ</option>

¡¡¡¡</select>

¡¡¡¡<select name="select13" id="select13">

¡¡¡¡<option value="">ÇëÑ¡Ôñ·ÖÀàÈý</option>

¡¡¡¡</select>

¡¡¡¡</form>

¡¡¡¡</center></body>

¡¡¡¡</html>