µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú AJAX£ºÈçºÎ´¦ÀíÊéÇ©ºÍºóÍ˰´Å¥
AJAX£ºÈçºÎ´¦ÀíÊéÇ©ºÍºóÍ˰´Å¥
ÕªÒª: ±¾ÎĽ«Õ¹Ê¾Ò»¸ö¿ªÔ´JavaScript¿â£¬¸Ã½Å±¾¿â¸øAJAXÓ¦ÓóÌÐò´øÀ´ÁËÊéÇ©ºÍºóÍ˰´Å¥Ö§³Ö
¡¡¡¡ÏÂÔØ±¾ÎÄÔ´´úÂë
¡¡¡¡±¾ÎĽ«Õ¹Ê¾Ò»¸ö¿ªÔ´JavaScript¿â£¬¸Ã½Å±¾¿â¸øAJAXÓ¦ÓóÌÐò´øÀ´ÁËÊéÇ©ºÍºóÍ˰´Å¥Ö§³Ö¡£ÔÚѧϰÍêÕâ¸ö½Ì³Ìºó£¬¿ª·¢ÈËÔ±½«Äܹ»»ñµÃ¶ÔÒ»¸öAJAXÎÊÌâµÄ½â¾ö·½°¸£¨ÉõÖÁÁ¬Google MapsºÍGmailÏÖÔÚ¶¼²»Ìṩ¸Ã½â¾ö·½°¸£©£ºÒ»¸öÇ¿´óµÄ¡¢¿ÉÓõÄÊéÇ©ºÍºóÍËǰ½ø¹¦ÄÜ£¬Æä²Ù×÷ÐÐΪÈçͬÆäËûµÄWebÓ¦ÓóÌÐòÒ»Ñù¡£
¡¡¡¡±¾ÎĽ«²ûÊöĿǰAJAXÓ¦ÓóÌÐòÔÚʹÓÃÊéÇ©ºÍºóÍ˰´Å¥·½ÃæËùÃæÁÙµÄÑÏÖØÎÊÌ⣻չʾReally Simple History£¨RSH£©¿â¡ª¡ªÒ»¸ö¿ÉÒÔ½â¾öÒÔÉÏÎÊÌâµÄ¿ªÔ´¿ò¼Ü£¬²¢Ìṩ¼¸¸öÔËÐÐÖеÄÀý×Ó¡£
¡¡¡¡±¾ÎÄËùչʾµÄÕâ¸ö¿ò¼ÜµÄÖ÷Òª·¢Ã÷·ÖΪÁ½²¿·Ö¡£Ê×ÏÈÊÇÒ»¸öÒþ²ØµÄHTML±íµ¥£¬ÓÃÓÚ»º´æ´óÁ¿¶ÌÆÚ»á»°µÄ¿Í»§¶ËÐÅÏ¢£»ÕâÖÖ»º´æ¹¦ÄÜÎªÒ³Ãæµ¼º½ÌṩÁËÇ¿´óµÄÖ§³Ö¡£Æä´ÎÊdz¬Á´½ÓêµãºÍÒþ²ØIframeµÄ×éºÏ£¬ËüÃDZ»Ç¶ÈëºóÍ˺Íǰ½ø°´Å¥£¬ÓÃÀ´½Ø»ñºÍ¼Ç¼ä¯ÀÀÆ÷µÄÀúÊ·¼Ç¼Ê¼þ¡£ÒÔÉÏÁ½ÖÖ¼¼Êõ¶¼±»°ü×°ÔÚÒ»¸ö¼òµ¥µÄJavaScript¿âÖÐÀ´¼ò»¯¿ª·¢¡£
¡¡¡¡ÎÊÌâ
¡¡¡¡ÊéÇ©ºÍºóÍ˰´Å¥ÔÚ´«Í³µÄ¶àÒ³ÃæWebÓ¦ÓóÌÐòÖÐÔËÐе÷dz£ºÃ¡£µ±Óû§ä¯ÀÀwebÕ¾µãµÄʱºò£¬Æää¯ÀÀÆ÷µÄµØÖ·À¸¼ÇÂ¼ËæÐµÄURL¶ø¸üУ¬ÕâЩ¼Ç¼¿ÉÒÔ±»Õ³Ìùµ½µç×ÓÓʼþ»òÕßÊéÇ©Öй©ÒÔºóʹÓ᣺óÍ˺Íǰ½ø°´Å¥Ò²¿ÉÒÔÕý³£²Ù×÷£¬Ê¹Óû§¿ÉÒÔÔÚ·ÃÎʹýµÄÒ³ÃæÖÐÏòǰ»òÏòºó·¶¯¡£
¡¡¡¡µ«ÊÇAJAXÓ¦ÓóÌÐòÈ´²»Ò»Ñù£¬ËüÃÇÊÇÔËÐÐÔÚµ¥¸öWebÒ³ÃæÖеĸ´ÔÓ³ÌÐò¡£ä¯ÀÀÆ÷²¢²»ÊÇΪÕâÀà³ÌÐò¶ø¹¹½¨µÄ¡ª¡ªÕâÀàWebÓ¦ÓóÌÐòÒѾ¹ýʱ£¬ËüÃÇÔÚÿ´ÎÊó±êµã»÷µÄʱºò¶¼ÐèÒªÖØÐÂË¢ÐÂÕû¸öÒ³Ãæ¡£
¡¡¡¡ÔÚÕâÖÖÀàËÆÓÚGmailµÄAJAXÈí¼þÖУ¬ä¯ÀÀÆ÷µÄµØÖ·À¸ÔÚÓû§Ñ¡Ôñ¹¦Äܺ͸ıä³ÌÐò״̬µÄʱºò±£³Ö²»±ä£¬ÕâʹµÃÎÞ·¨ÔÚÌØ¶¨µÄÓ¦ÓóÌÐòÊÓͼÖÐʹÓÃÊéÇ©¡£´ËÍ⣬Èç¹ûÓû§°´Ï¡°ºóÍË¡±°´Å¥À´¡°³·Ïú¡±ÉϴεIJÙ×÷£¬ËûÃÇ»á¾ªÆæµØ·¢ÏÖ£¬ä¯ÀÀÆ÷»áÍêÈ«À뿪¸ÃÓ¦ÓóÌÐòµÄWebÒ³Ãæ¡£
¡¡¡¡½â¾ö·½°¸
¡¡¡¡¿ªÔ´RSH¿ò¼Ü¿ÉÒÔ½â¾öÕâЩÎÊÌ⣬ËüΪAJAXÓ¦ÓóÌÐòÌṩÁËÊéÇ©ºÍ¿ØÖƺóÍË¡¢Ç°½ø°´Å¥µÄ¹¦ÄÜ¡£RSHĿǰ»¹´¦ÓÚBeta½×¶Î£¬¿ÉÒÔÔÚFirefox 1.0¡¢Netscape 7+¡¢Internet Explorer 6+µÈä¯ÀÀÆ÷ÉÏÔËÐУ»Ä¿Ç°»¹²»Ö§³ÖSafari¡£
¡¡¡¡Ä¿Ç°Óм¸¸öAJAX¿ò¼Ü¶ÔÊéÇ©ºÍÀúÊ·¼Ç¼ÎÊÌâÓÐËù°ïÖú£»µ«ÕâЩ¿ò¼ÜĿǰ¶¼Óм¸¸öÓÉÓÚʵÏÖ¶øÔì³ÉµÄÖØ´óBug¡£´ËÍ⣬ºÜ¶àAJAXÀúÊ·¼Ç¼¿ò¼Ü±»°ó¶¨µ½½Ï´óµÄ¿âÉÏ£¬ÀýÈçBackbaseºÍDojo£»ÕâЩ¿ò¼ÜΪAJAXÓ¦ÓóÌÐòÒýÈëÁËÍêÈ«²»Í¬µÄ±à³ÌÄ£ÐÍ£¬ÆÈʹ¿ª·¢ÈËԱʹÓÃȫеķ½Ê½À´»ñµÃÀúÊ·¼Ç¼¹¦ÄÜ¡£
¡¡¡¡Ïà½Ï֮ϣ¬RSHÊÇÒ»¸ö¿ÉÒÔ°üº¬ÔÚÏÖÓÐAJAXϵͳÖеļ
òµ¥Ä£¿é¡£´ËÍ⣬RSH¿â²ÉÓÃÁËһЩ¼¼ÊõÒÔ±ÜÃâ²úÉúÓ°ÏìÆäËûÀúÊ·¼Ç¼¿ò¼ÜµÄBug¡£
¡¡¡¡RSH¿ò¼ÜÓÉÁ½¸öJavaScriptÀà×é³É£ºDhtmlHistoryºÍHistoryStorage¡£
¡¡¡¡DhtmlHistoryÀàΪAJAXÓ¦ÓóÌÐòÌṩÀúÊ·¼Ç¼³éÏó¡£AJAXÒ³ÃæÊ¹ÓÃadd()·½·¨Ìí¼ÓÀúÊ·¼Ç¼Ê¼þµ½ä¯ÀÀÆ÷£¬Ö¸¶¨ÐµĵØÖ·ºÍÏà¹ØµÄÀúÊ·¼Ç¼Êý¾Ý¡£DhtmlHistoryÀàʹÓÃÒ»¸öêɢÁУ¨Èç#new-location£©¸üÐÂä¯ÀÀÆ÷µ±Ç°µÄURL£¬Í¬Ê±°ÑÀúÊ·¼Ç¼Êý¾ÝºÍ¸ÃÐÂURL¹ØÁª¡£AJAXÓ¦ÓóÌÐò½«×Ô¼º×¢²áΪÀúÊ·¼Ç¼µÄ¼àÌýÆ÷£¬µ±Óû§Ê¹ÓúóÍ˺Íǰ½ø°´Å¥½øÐÐä¯ÀÀʱ£¬ÀúÊ·¼Ç¼Ê¼þ±»´¥·¢£¬Îªä¯ÀÀÆ÷ÌṩеÄλÖÃÒÔ¼°Óëadd()µ÷ÓÃÒ»Æð±£´æµÄÈκÎÀúÊ·¼Ç¼Êý¾Ý¡£
¡¡¡¡µÚ¶þ¸öÀࣺHistoryStorage£¬ÔÊÐí¿ª·¢ÈËÔ±±£´æÈÎÒâÊýÁ¿µÄÒÑ´æÀúÊ·¼Ç¼Êý¾Ý¡£ÔÚÆÕͨWebÒ³ÃæÖУ¬µ±Óû§µ¼º½µ½Ò»¸öеÄwebÕ¾µãʱ£¬ä¯ÀÀÆ÷Ð¶ÔØ²¢Çå³ýwebÒ³ÃæÉϵÄËùÓÐÓ¦ÓóÌÐòºÍJavaScript״̬£»Èç¹ûÓû§ÓúóÍ˰´Å¥·µ»Ø£¬ËùÓеÄÊý¾Ý¶¼¶ªÊ§ÁË¡£HistoryStorageÀàͨ¹ýÒ»¸ö°üº¬¼òµ¥É¢ÁÐ±í·½·¨£¨ÀýÈçput()¡¢get()¡¢hasKey()£©µÄAPIÀ´½â¾öÕâÀàÎÊÌâ¡£ÉÏÃæµÄ·½·¨ÔÊÐí¿ª·¢ÈËÔ±ÔÚÓû§À뿪WebÒ³ÃæÖ®ºó±£´æÈÎÒâÊýÁ¿µÄÊý¾Ý£»µ±Óû§°´ºóÍ˰´Å¥ÖØÐ·µ»ØÊ±£¬ÀúÊ·¼Ç¼Êý¾Ý¿ÉÒÔͨ¹ýHistoryStorageÀàÀ´·ÃÎÊ¡£ÔÚÄÚ²¿£¬ÎÒÃÇͨ¹ýʹÓÃÒþ²ØµÄ±íµ¥×Ö¶ÎÀ´ÊµÏִ˹¦ÄÜ£¬ÕâÊÇÒòΪä¯ÀÀÆ÷»á×Ô¶¯±£´æ±íµ¥×Ö¶ÎÖеÄÖµ£¬ÉõÖÁÔÚÓû§À뿪WebÒ³ÃæµÄʱºòÒ²Èç´Ë¡£
¡¡¡¡Àý×Ó
¡¡¡¡ÈÃÎÒÃÇÏÈ´ÓÒ»¸ö¼òµ¥µÄÀý×Ó¿ªÊ¼¡£
¡¡¡¡Ê×ÏÈ£¬ÈκÎÐèҪʹÓÃRSH¿ò¼ÜµÄÒ³Ãæ¶¼±ØÐë°üº¬dhtmlHistory.js½Å±¾£º
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
<tr>
<td>£¼!-- Load the Really Simple
History framework --£¾
£¼script type="text/javascript"
src="../../framework/dhtmlHistory.js"£¾
£¼/script£¾</td></tr></table>
¡¡¡¡DHTMLÀúÊ·¼Ç¼ӦÓóÌÐòÒ²±ØÐëÔÚÓëAJAX WebÒ³ÃæÏàͬµÄĿ¼Ï°üº¬blank.htmlÎļþ£»Õâ¸öÎļþÓëRSH¿ò¼Ü´ò°üÔÚÒ»Æð£¬ÇÒ¶ÔÓÚInternet ExplorerÀ´ËµÊDZØÐèµÄ¡£Ë³±ãÌáһϣ¬RSHʹÓÃÒ»¸öÒþ²ØIframeÀ´¸ú×ÙºÍÌí¼ÓInternet ExplorerµÄÀúÊ·¼Ç¼±ä»¯£»Õâ¸öIframeÐèÒªÎÒÃÇÖ¸¶¨Ò»¸öʵ¼ÊµÄÎļþλÖòÅÄÜÕý³£¹¤×÷£¬Õâ¾ÍÊÇblank.html¡£
¡¡¡¡RSH¿ò¼Ü´´½¨ÁËÒ»¸ö½Ð×ödhtmlHistoryµÄÈ«¾Ö¶ÔÏó£¬ÕâÊDzÙ×Ýä¯ÀÀÆ÷ÀúÊ·¼Ç¼µÄÈë¿Úµã¡£Ê¹ÓÃdhtmlHistoryµÄµÚÒ»²½ÊÇÔÚWebÒ³Ãæ¼ÓÔØÍê³Éºó³õʼ»¯dhtmlHistory¶ÔÏó£º
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
<tr>
<td>window.onload = initialize;
function initialize() {
¡¡// initialize the DHTML History
¡¡// framework
¡¡dhtmlHistory.initialize();</td></tr></table>
¡¡¡¡È»ºó£¬¿ª·¢ÈËԱʹÓÃdhtmlHistory.addListener()·½·¨¶©ÔÄÀúÊ·¼Ç¼±ä»¯Ê¼þ¡£Õâ¸ö·½·¨´øÓÐÒ»¸öJavaScript»Øµ÷º¯Êý£¬µ±DHTMLÀúÊ·¼Ç¼±ä»¯Ê¼þ·¢Éúʱ£¬¸Ãº¯Êý½ÓÊÕÁ½¸ö²ÎÊý£ºÐµÄÒ³ÃæÎ»ÖÃÒÔ¼°ÈκοÉÓë¸Ãʼþ¹ØÁªµÄ¿ÉÑ¡ÀúÊ·¼Ç¼Êý¾Ý£º
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
<tr>
<td>window.onload = initialize;
function initialize() {
¡¡// initialize the DHTML History
¡¡// framework
¡¡dhtmlHistory.initialize();
¡¡// subscribe to DHTML history change
¡¡// events
¡¡dhtmlHistory.addListener(historyChange);</td></tr></table>
¡¡¡¡historyChange()·½·¨ºÜ¼òµ¥£¬¸Ãº¯ÊýÔÚÓû§µ¼º½µ½Ò»¸öÐÂλÖúó½ÓÊÕnewLocationÒÔ¼°ÈκÎÓë¸Ãʼþ¹ØÁªµÄ¿ÉÑ¡historyData¡£
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
<tr>
<td>/** Our callback to receive history change
events. */
function historyChange(newLocation,
historyData) {
¡¡debug("A history change has occurred: "
¡¡¡¡+ "newLocation="+newLocation
¡¡¡¡+ ", historyData="+historyData,
¡¡¡¡true);
}</td></tr></table>
¡¡¡¡ÉÏÃæÓõ½µÄdebug()·½·¨ÊǶ¨ÒåÔÚʾÀýÔ´ÎļþÖеÄÒ»¸öʵÓú¯Êý£¬ËüÓëÍêÕûʾÀý´ò°üÔÚÒ»Æð¹©ÏÂÔØ¡£debug()Ö»ÊÇÓÃÀ´½«ÏûÏ¢´òÓ¡µ½WebÒ³ÃæÉÏ£»µÚ¶þ¸ö²¼¶ûÐͲÎÊý£¨ÔÚÉÏÊö´úÂëÖÐֵΪtrue£©¿ØÖÆÊÇ·ñÔÚ´òӡеĵ÷ÊÔÏûϢ֮ǰÇå³ýÔÓеÄÈ«²¿ÏûÏ¢¡£
¡¡¡¡¿ª·¢ÈËԱʹÓÃadd()·½·¨Ìí¼ÓÀúÊ·¼Ç¼Ê¼þ¡£Ìí¼ÓÀúÊ·¼Ç¼Ê¼þÉæ¼°ÎªÀúÊ·¼Ç¼±ä»¯Ö¸¶¨Ò»¸öеØÖ·£¬ÀýÈçedit:SomePage£¬ÒÔ¼°Ìṩһ¸öºÍ¸ÃʼþÒ»Æð±£´æµÄ¿ÉÑ¡historyDataÖµ¡£
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
<tr>
<td>window.onload = initialize;
function initialize() {
¡¡// initialize the DHTML History
¡¡// framework
¡¡dhtmlHistory.initialize();
¡¡// subscribe to DHTML history change
¡¡// events
¡¡dhtmlHistory.addListener(historyChange);
¡¡// if this is the first time we have
¡¡// loaded the page...
¡¡if (dhtmlHistory.isFirstLoad()) {
¡¡¡¡debug("Adding values to browser " + "history", false);
¡¡¡¡// start adding history
¡¡¡¡dhtmlHistory.add("helloworld", "Hello World Data");
¡¡¡¡dhtmlHistory.add("foobar", 33);
¡¡¡¡dhtmlHistory.add("boobah", true);
¡¡¡¡var complexObject = new Object();
¡¡¡¡complexObject.value1 = "This is the first value";
¡¡¡¡complexObject.value2 = "This is the second data";
¡¡¡¡complexObject.value3 = new Array();
¡¡¡¡complexObject.value3[0] = "array 1";
¡¡¡¡complexObject.value3[1] = "array 2";
¡¡¡¡dhtmlHistory.add("complexObject", complexObject);</td></tr></table>
¡¡¡¡ÔÚadd()±»µ÷ÓÃÖ®ºó£¬ÐµĵØÖ·½«Á¢¼´×÷Ϊһ¸öêֵ£¨Á´½ÓµØÖ·£©ÏÔʾÔÚä¯ÀÀÆ÷µÄURLµØÖ·À¸ÖС£ÀýÈ磬¶ÔµØÖ·Îªhttp://codinginparadise.org/my_ajax_appµÄAJAX WebÒ³Ãæµ÷ÓÃdhtmlHistory.add("helloworld", "Hello World Data")Ö®ºó£¬Óû§½«»áÔÚÆää¯ÀÀÆ÷URLµØÖ·À¸Öп´µ½ÈçϵĵØÖ·£º
¡¡¡¡http://codinginparadise.org/my_ajax_app#helloworld
¡¡¡¡È»ºóÓû§¿ÉÒÔ½«Õâ¸öÒ³Ãæ×ö³ÉÊéÇ©£¬Èç¹ûÒÔºóÓõ½Õâ¸öÊéÇ©£¬AJAXÓ¦ÓóÌÐò¿ÉÒÔ¶ÁÈ¡#helloworldÖµ£¬²¢ÓÃËüÀ´³õʼ»¯WebÒ³Ãæ¡£É¢ÁкóÃæµÄµØÖ·ÖµÊÇRSH¿ò¼Ü¿ÉÒÔ͸Ã÷±àÂëºÍ½âÂëµÄURLµØÖ·¡£
¡ü·µ»ØÄ¿Â¼
ǰһƪ:
ʵÏÖ¸ßЧJava±à³Ì¹æ·¶µÄʮһÌõ»ù´¡¹æÔò
ºóһƪ:
ʹÓÃJavaScriptºÍAJAX·¢³öÒì²½ÇëÇó