AJAX+servletʵÀýÈëÃÅ
ÏÂÔØÔ´´úÂë
¡¼ ×÷Õߣº²»Ïê ¡½¡¼ ´óС£º2k ¡½¡¼ ·¢²¼ÈÕÆÚ£º2006-03-06 ¡½¡¼ ä¯ÀÀ£º559 ¡½
ÕâЩʱ¼ä£¬Ï¹×ÓÒ²¿´µÃ¼û£¬AJAXÕý´ó̤²½µÄ³¯ÎÒÃÇ×ßÀ´¡£²»¹ÜÎÒÃÇÊÇÓµ»¤Ò²ºÃ£¬·´¶ÔÒ²°Õ£¬»¹ÊÇÊÓ¶ø²»¼û£¬AJAXÏñÒ»Õó³±Á÷£¬Ï¯×ªÁËÎÒÃÇËùÓеÄÈË¡£
¡¡¡¡¹ØÓÚAJAXµÄ¶¨ÒåÒ²ºÃ£¬´ó»°Ò²ºÃ£¬ÔçÓÐÈËÔÚÍøÉÏ·¢±íÁ˺¹Å£³ä¶°µÄÎÄ×Ö£¬ÔÚÕâÀïÎÒÒ²²»ÏëÕÕ±¾Ðû¿Æ¡£
¡¡¡¡Ö»Ïë˵˵ÎҸоõµ½µÄһЩÓŵ㣬¶ÔÓÚ²»¶Ô£¬´ó¼ÒÒ²¿ÉÒÔºÍÎÒÌÖÂÛ£º
¡¡¡¡Ê×ÏÈÊÇÒì²½½»»¥£¬Óû§¸Ð¾õ²»µ½Ò³ÃæµÄÌá½»£¬µ±È»Ò²²»µÈ´ýÒ³Ãæ·µ»Ø¡£ÕâÊÇʹÓÃÁËAJAX¼¼ÊõµÄÒ³Ãæ¸øÓû§µÄµÚÒ»¸Ð¾õ¡£
¡¡¡¡Æä´ÎÊÇÏìÓ¦Ëٶȿ죬ÕâÒ²ÊÇÓû§Ç¿ÁÒÌåÑé¡£
¡¡¡¡È»ºóÊÇÓëÎÒÃÇ¿ª·¢ÕßÏà¹ØµÄ£¬¸´ÔÓUIµÄ³É¹¦´¦Àí£¬Ò»Ö±ÒÔÀ´£¬ÎÒÃǶÔB/SģʽµÄUI²»ÈçC/SģʽUI·á¸»¶ø¿àÄÕ¡£ÏÖÔÚÓÉÓÚAJAX´óÁ¿Ê¹ÓÃJS£¬Ê¹µÃ¸´ÔÓµÄUIµÄÉè¼Æ±äµÃ¸ü¼Ó³É¹¦¡£
¡¡¡¡×îºó£¬AJAXÇëÇóµÄ·µ»Ø¶ÔÏóΪXMLÎļþ£¬ÕâÒ²ÊÇÒ»¸ö³±Á÷£¬¾ÍÊÇWEB SERVICE³±Á÷Ò»Ñù¡£Ò×ÓÚºÍWEB SERVICE½áºÏÆðÀ´¡£
¡¡¡¡ºÃÁË£¬Ïл°ÉÙ˵£¬ÈÃÎÒÃÇתÈëÕýÌâ°É¡£
¡¡¡¡ÎÒÃǵĵÚÒ»¸öÀý×ÓÊÇ»ùÓÚServletΪºǫ́µÄÒ»¸öwebÓ¦Óá£
¡¡¡¡»ùÓÚServletµÄAJAX
¡¡¡¡ ÕâÊÇÒ»¸öºÜ³£¼ûµÄUI£¬µ±Óû§ÔÚµÚÒ»¸öÑ¡Ôñ¿òÀïÑ¡ÔñZHEJIANGʱ£¬µÚ¶þ¸öÑ¡Ôñ¿òÒª³öÏÖZHEJIANGµÄ³ÇÊУ»µ±Óû§ÔÚµÚÒ»¸öÑ¡Ôñ¿òÀïÑ¡ÔñJIANGSUʱ£¬µÚ¶þ¸öÑ¡Ôñ¿òÀïÒª³öÏÖJIANGSUµÄ³ÇÊС£
¡¡¡¡Ê×ÏÈ£¬ÎÒÃÇÀ´¿´ÅäÖÃÎļþweb.xml£¬ÔÚÀïÃæÅäÖÃÒ»¸öservlet£¬¸úÍù³£Ò»Ñù£º
<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
">
<servlet>
<servlet-name>SelectCityServlet</servlet-name>
<servlet-class>com.stephen.servlet.SelectCityServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SelectCityServlet</servlet-name>
<url-pattern>/servlet/SelectCityServlet</url-pattern>
</servlet-mapping>
</web-app>
¡¡¡¡È»ºó£¬À´¿´ÎÒÃǵÄJSPÎļþ£º
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyHtml.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<!--<link type="text/css" href="./styles.css">-->
</head>
<script type="text/javascript">
function getResult(stateVal) {
¡¡¡¡ var url = "servlet/SelectCityServlet?state="+stateVal;
¡¡¡¡ if (window.XMLHttpRequest) {
¡¡¡¡ req = new XMLHttpRequest();
¡¡¡¡ }else if (window.ActiveXObject) {
¡¡¡¡ req = new ActiveXObject("Microsoft.XMLHTTP");
¡¡¡¡ }
¡¡¡¡ if(req){
¡¡¡¡ req.open("GET",url, true);
¡¡¡¡ req.onreadystatechange = complete;
¡¡¡¡ req.send(null);
¡¡¡¡ }
}
function complete(){
¡¡¡¡ if (req.readyState == 4) {
¡¡¡¡ if (req.status == 200) {
¡¡¡¡ var city = req.responseXML.getElementsByTagName("city");
¡¡¡¡ file://alert(city.length);
¡¡¡¡ var str=new Array();
¡¡¡¡ for(var i=0;i<city.length;i++){
¡¡¡¡ str[i]=city[i].firstChild.data;
¡¡¡¡ }
¡¡¡¡ file://alert(document.getElementById("city"));
¡¡¡¡ buildSelect(str,document.getElementById("city"));
¡¡¡¡ }
¡¡¡¡ }
}
function buildSelect(str,sel) {
¡¡¡¡ sel.options.length=0;
¡¡¡¡ for(var i=0;i<str.length;i++) {
¡¡¡¡ sel.options[sel.options.length]=new Option(str[i],str[i])
¡¡¡¡ }
}
</script>
<body>
<select onChange="getResult(this.value)">
¡¡¡¡
<option value="">Select</option>>
¡¡¡¡
<option value="zj">ZEHJIANG</option>>
¡¡¡¡
<option value="zs">JIANGSU</option>>
</select>
<select>
¡¡¡¡
<option value="">CITY</option>
</select>
</body>
</html>
¡¡¡¡µÚÒ»ÑÛ¿´À´£¬¸úÎÒÃÇÆ½³£µÄJSPûÓÐÁ½Ñù¡£×Ðϸһ¿´£¬²»Í¬ÔÚJSÀïÍ·¡£
¡¡¡¡ÎÒÃÇÊ×ÏÈÀ´¿´µÚÒ»¸ö·½·¨£ºgetResult(stateVal)£¬ÔÚÕâ¸ö·½·¨ÀÊ×ÏÈÊÇÈ¡µÃXmlHttpRequest£»È»ºóÉèÖøÃÇëÇóµÄurl£ºreq.open("GET",url, true);½Ó×ÅÉèÖÃÇëÇó·µ»ØÖµµÄ½ÓÊÕ·½·¨£ºreq.onreadystatechange = complete;¸Ã·µ»ØÖµµÄ½ÓÊÕ·½·¨Îª¡ª¡ªcomplete();×îºóÊÇ·¢ËÍÇëÇó£ºreq.send(null);
¡¡¡¡È»ºóÎÒÃÇÀ´¿´ÎÒÃǵķµ»ØÖµ½ÓÊÕ·½·¨£ºcomplete()£¬ÕâÕâ¸ö·½·¨ÀÊ×ÏÈÅжÏÊÇ·ñÕýÈ··µ»Ø£¬Èç¹ûÕýÈ··µ»Ø£¬ÓÃDOM¶Ô·µ»ØµÄXMLÎļþ½øÐнâÎö¡£¹ØÓÚDOMµÄʹÓã¬ÕâÀï²»ÔÙ½²Êö£¬Çë´ó¼Ò²ÎÔÄÏà¹ØÎĵµ¡£µÃµ½cityµÄÖµÒÔºó£¬ÔÙͨ¹ýbuildSelect(str,sel)·½·¨¸³Öµµ½ÏàÓ¦µÄÑ¡Ôñ¿òÀïÍ·È¥¡£
¡¡¡¡ ×îºóÎÒÃÇÀ´¿´¿´ServletÎļþ£º
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class SelectCityServlet extends HttpServlet {
¡¡¡¡ public SelectCityServlet() {
¡¡¡¡ super();
¡¡¡¡ }
¡¡¡¡ public void destroy() {
¡¡¡¡ super.destroy();
¡¡¡¡ }
¡¡¡¡ public void doGet(HttpServletRequest request, HttpServletResponse response)
¡¡¡¡ throws ServletException, IOException {
¡¡¡¡ response.setContentType("text/xml");
¡¡¡¡ response.setHeader("Cache-Control", "no-cache");
¡¡¡¡ String state = request.getParameter("state");
¡¡¡¡ StringBuffer sb=new StringBuffer("<state>");
¡¡¡¡ if ("zj".equals(state)){
¡¡¡¡ sb.append("<city>hangzhou</city><city>huzhou</city>");
¡¡¡¡ } else if("zs".equals(state)){
¡¡¡¡ sb.append("<city>nanjing</city><city>yangzhou</city><city>suzhou</city>");
¡¡¡¡ }
¡¡¡¡ sb.append("</state>");
¡¡¡¡ PrintWriter out=response.getWriter();
¡¡¡¡ out.write(sb.toString());
¡¡¡¡ out.close();
¡¡¡¡ }
}
¡¡¡¡Õâ¸öÀàҲʮ·Ö¼òµ¥£¬Ê×ÏÈÊÇ´ÓrequestÀïÈ¡µÃstate²ÎÊý£¬È»ºó¸ù¾Ýstate²ÎÊýÉú³ÉÏàÓ¦µÄXMLÎļþ£¬×îºó½«XMLÎļþÊä³öµ½PrintWriter¶ÔÏóÀï¡£
¡¡¡¡µ½ÏÖÔÚΪֹ£¬µÚÒ»¸öÀý×ӵĴúÂëÒѾȫ²¿½áÊø¡£ÊDz»ÊDZȽϼòµ¥£¿
ÔËÐÐͼ£º
À´Ô´£º ?id=27
ÑϽû·¢±íÉæ¼°·â½¨ÃÔÐÅ¡¢¹ú¼ÒÕþÖεÈÃô¸ÐÎÊÌâµÄÄÚÈÝ
ÒÔÉÏÎÄÕ°æÈ¨ÓÉÔ×÷ÕßËùÓС£Î´¾Í¬Ò⣬²»µÃ½«ÆäÈκÎÒ»²¿·Ö¸´ÖÆ¡¢×ªÔØ¡¢·¢²¼µÈδÊÚȨ²Ù×÷¡£
JavaѧϰÊÒ ¡ª ³Âನ¸öÈËÖ÷Ò³
E-mail: zz3zcwb@sina.com
COPY RIGHT 2005
¡¡