¡¡¡¡Ðí¶àWebÓ¦Óá¢ÆóÒµÓ¦ÓÃÉæ¼°µ½³¤Ê±¼äµÄ²Ù×÷£¬ÀýÈ縴ÔÓµÄÊý¾Ý¿â²éѯ»ò·±ÖصÄXML´¦ÀíµÈ£¬ËäÈ»ÕâЩÈÎÎñÖ÷ÒªÓÉÊý¾Ý¿âϵͳ»òÖмä¼þÍê³É£¬µ«ÈÎÎñÖ´ÐеĽá¹ûÈÔ¾ÉÒª½èÖúJSP²ÅÄÜ·¢Ë͸øÓû§¡£±¾ÎĽéÉÜÁËÒ»ÖÖͨ¹ý¸Ä½øÇ°¶Ë±íÏÖ²ãÀ´¸ÄÉÆÓû§¸Ð¾õ¡¢¼õÇá·þÎñÆ÷¸ºÔصİ취¡£ ¡¡¡¡µ±JSPµ÷ÓÃÒ»¸ö±ØÐ볤ʱ¼äÔËÐеIJÙ×÷£¬ÇҸòÙ×÷µÄ½á¹û²»ÄÜ£¨ÔÚ·þÎñÆ÷¶Ë£©»º³å£¬Óû§Ã¿´ÎÇëÇó¸ÃÒ³Ãæʱ¶¼±ØÐ볤ʱ¼äµÈ´ý¡£ºÜ¶àʱºò£¬Óû§»áʧȥÄÍÐÄ£¬½Ó×ų¢ÊÔµã»÷ä¯ÀÀÆ÷µÄˢа´Å¥£¬×îÖÕʧÍûµØÀ뿪¡£ ¡¡¡¡±¾ÎĽéÉܵļ¼ÊõÊÇ°Ñ·±ÖصļÆËãÈÎÎñ·ÖÀ뿪À´£¬ÓÉÒ»¸ö¶ÀÁ¢µÄÏß³ÌÔËÐУ¬´Ó¶ø½â¾öÉÏÊöÎÊÌâ¡£µ±Óû§µ÷ÓÃJSPÒ³Ãæʱ£¬JSPÒ³Ãæ»áÁ¢¼´·µ»Ø£¬²¢ÌáʾÓû§ÈÎÎñÒѾÆô¶¯ÇÒÕýÔÚÖ´ÐУ»JSPÒ³Ãæ×Ô¶¯Ë¢ÐÂ×Ô¼º£¬±¨¸æÔÚ¶ÀÁ¢Ïß³ÌÖÐÔËÐеķ±ÖؼÆËãÈÎÎñµÄµ±Ç°½ø¶È£¬Ö±ÖÁÈÎÎñÍê³É¡£ Ò»¡¢Ä£ÄâÈÎÎñ ¡¡¡¡Ê×ÏÈÎÒÃÇÉè¼ÆÒ»¸öTaskBeanÀ࣬ËüʵÏÖjava.lang.Runnable½Ó¿Ú£¬Æärun()·½·¨ÔÚÒ»¸öÓÉJSPÒ³Ã棨start.jsp£©Æô¶¯µÄ¶ÀÁ¢Ïß³ÌÖÐÔËÐС£ÖÕÖ¹run()·½·¨Ö´ÐÐÓÉÁíÒ»¸öJSPÒ³Ãæstop.jsp¸ºÔð¡£TaskBeanÀ໹ʵÏÖÁËjava.io.Serializable½Ó¿Ú£¬ÕâÑùJSPÒ³Ãæ¾Í¿ÉÒÔ½«Ëü×÷ΪJavaBeanµ÷Ó㺠package test.barBean; import java.io.Serializable; public class TaskBean implements Runnable, Serializable { private int counter; private int sum; private boolean started; private boolean running; private int sleep; public TaskBean() { counter = 0; sum = 0; started = false; running = false; sleep = 100; } } ¡¡¡¡TaskBean°üº¬µÄ¡°·±ÖØÈÎÎñ¡±ÊǼÆËã1+2+3¡+100µÄÖµ£¬²»¹ýËü²»Í¨¹ý100*(100+1)/2=5050¹«Ê½¼ÆË㣬¶øÊÇÓÉrun()·½·¨µ÷ÓÃwork()·½·¨100´ÎÍê³É¼ÆËã¡£work()·½·¨µÄ´úÂëÈçÏÂËùʾ£¬ÆäÖе÷ÓÃThread.sleep()ÊÇΪÁËÈ·±£ÈÎÎñ×ܺÄʱԼ10Ãë¡£ protected void work() { try { Thread.sleep(sleep); counter++; sum += counter; } catch (InterruptedException e) { setRunning(false); } } ¡¡¡¡status.jspÒ³Ãæͨ¹ýµ÷ÓÃÏÂÃæµÄgetPercent()·½·¨»ñµÃÈÎÎñµÄÍê³É×´¿ö£º public synchronized int getPercent() { return counter; } ¡¡¡¡Èç¹ûÈÎÎñÒѾÆô¶¯£¬isStarted()·½·¨½«·µ»Øtrue£º public synchronized boolean isStarted() { return started; } ¡¡¡¡Èç¹ûÈÎÎñÒѾÍê³É£¬isCompleted()·½·¨½«·µ»Øtrue£º public synchronized boolean isCompleted() { return counter == 100; } ¡¡¡¡Èç¹ûÈÎÎñÕýÔÚÔËÐУ¬isRunning()·½·¨½«·µ»Øtrue£º public synchronized boolean isRunning() { return running; } ¡¡¡¡SetRunning()·½·¨ÓÉstart.jsp»òstop.jspµ÷Ó㬵±running²ÎÊýÊÇtrueʱ¡£SetRunning()·½·¨»¹Òª½«ÈÎÎñ±ê¼ÇΪ¡°ÒѾÆô¶¯¡±¡£µ÷ÓÃsetRunning(false)±íʾҪÇórun()·½·¨Í£Ö¹Ö´ÐС£ public synchronized void setRunning(boolean running) { this.running = running; if (running) started = true; } ¡¡¡¡ÈÎÎñÖ´ÐÐÍê±Ïºó£¬µ÷ÓÃgetResult()·½·¨·µ»Ø¼ÆËã½á¹û£»Èç¹ûÈÎÎñÉÐδִÐÐÍê±Ï£¬Ëü·µ»Ønull£º public synchronized Object getResult() { if (isCompleted()) return new Integer(sum); else return null; } ¡¡¡¡µ±running±ê¼ÇΪtrue¡¢completed±ê¼ÇΪfalseʱ£¬run()·½·¨µ÷ÓÃwork()¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬run()·½·¨Ò²ÐíÒªÖ´Ðи´ÔÓµÄSQL²éѯ¡¢½âÎö´óÐÍXMLÎĵµ£¬»òÕßµ÷ÓÃÏûºÄ´óÁ¿CPUʱ¼äµÄEJB·½·¨¡£×¢Òâ¡°·±ÖصÄÈÎÎñ¡±¿ÉÄÜÒªÔÚÔ¶³Ì·þÎñÆ÷ÉÏÖ´ÐС£±¨¸æ½á¹ûµÄJSPÒ³ÃæÓÐÁ½ÖÖÑ¡Ôñ£º»òÕߵȴýÈÎÎñ½áÊø£¬»òÕßʹÓÃÒ»¸ö½ø¶ÈÌõ¡£ public void run() { try { setRunning(true); while (isRunning() && !isCompleted()) work(); } finally { setRunning(false); } } ¡¡¡¡¶þ¡¢Æô¶¯ÈÎÎñ ¡¡¡¡start.jspÊÇweb.xml²¿ÊðÃèÊö·ûÖÐÉùÃ÷µÄ»¶ÓÒ³Ã棬web.xmlµÄÄÚÈÝÊÇ£º <?xml version="1.0" encoding="GB2312"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <welcome-file-list> <welcome-file>start.jsp</welcome-file> </welcome-file-list> </web-app> ¡¡¡¡start.jspÆô¶¯Ò»¸öרÓõÄÏß³ÌÀ´ÔËÐС°·±ÖصÄÈÎÎñ¡±£¬È»ºó°ÑHTTPÇëÇ󴫵ݸøstatus.jsp¡£ ¡¡¡¡start.jspÒ³ÃæÀûÓÃ<jsp:useBean>±ê¼Ç´´½¨Ò»¸öTaskBeanµÄʵÀý£¬½«scopeÊôÐÔ¶¨ÒåΪsessionʹµÃ¶ÔÓÚÀ´×Ôͬһä¯ÀÀÆ÷µÄHTTPÇëÇó£¬ÆäËûÒ³ÃæÒ²ÄÜÌáÈ¡µ½Í¬Ò»¸öBean¶ÔÏó¡£start.jspͨ¹ýµ÷ÓÃsession.removeAttribute("task")È·±£<jsp:useBean>´´½¨ÁËÒ»¸öеÄBean¶ÔÏ󣬶ø²»ÊÇÌáÈ¡Ò»¸ö¾É¶ÔÏó£¨ÀýÈ磬ͬһ¸öÓû§»á»°ÖиüÔçµÄJSPÒ³ÃæËù´´½¨µÄBean¶ÔÏ󣩡£ ¡¡¡¡ÏÂÃæÊÇstart.jspÒ³ÃæµÄ´úÂëÇåµ¥£º <% session.removeAttribute("task"); %> <jsp:useBean id="task" scope="session" class="test.barBean.TaskBean"/> <% task.setRunning(true); %> <% new Thread(task).start(); %> <jsp:forward page="status.jsp"/> ¡¡¡¡start.jsp´´½¨²¢ÉèÖúÃTaskBean¶ÔÏóÖ®ºó£¬½Ó×Å´´½¨Ò»¸öThread£¬²¢½«Bean¶ÔÏó×÷Ϊһ¸öRunnableʵÀý´«Èë¡£µ÷ÓÃstart()·½·¨Ê±Ð´´½¨µÄÏ߳̽«Ö´ÐÐTaskBean¶ÔÏóµÄrun()·½·¨¡£ ¡¡¡¡ÏÖÔÚÓÐÁ½¸öÏß³ÌÔÚ²¢·¢Ö´ÐУºÖ´ÐÐJSPÒ³ÃæµÄỊ̈߳¨³Æ֮Ϊ¡°JSPÏ̡߳±£©£¬ÓÉJSPÒ³Ãæ´´½¨µÄỊ̈߳¨³Æ֮Ϊ¡°ÈÎÎñÏ̡߳±£©¡£½ÓÏÂÀ´£¬start.jspÀûÓõ÷ÓÃstatus.jsp£¬status.jspÏÔʾ³ö½ø¶ÈÌõÒÔ¼°ÈÎÎñµÄÖ´ÐÐÇé¿ö¡£×¢Òâstatus.jspºÍstart.jspÔÚͬһ¸öJSPÏß³ÌÖÐÔËÐС£ ¡¡¡¡start.jspÔÚ´´½¨Ïß³Ì֮ǰ¾Í°ÑTaskBeanµÄrunning±ê¼ÇÉèÖóÉÁËtrue£¬ÕâÑù£¬¼´Ê¹µ±JSPÏß³ÌÒÑ¿ªÊ¼Ö´ÐÐstatus.jsp¶øÈÎÎñÏ̵߳Ärun()·½·¨ÉÐδÆô¶¯£¬Ò²Äܹ»È·±£Óû§»áµÃµ½¡°ÈÎÎñÒÑ¿ªÊ¼ÔËÐС±µÄ״̬±¨¸æ¡£ ¡¡¡¡½«running±ê¼ÇÉèÖóÉtrue¡¢Æô¶¯ÈÎÎñÏß³ÌÕâÁ½ÐдúÂë¿ÉÒÔÒÆÈëTaskBean¹¹³ÉÒ»¸öеķ½·¨£¬È»ºóÓÉJSPÒ³Ãæµ÷ÓÃÕâ¸öз½·¨¡£Ò»°ã¶øÑÔ£¬JSPÒ³ÃæÓ¦µ±¾¡Á¿ÉÙÓÃJava´úÂ룬¼´ÎÒÃÇÓ¦µ±¾¡¿ÉÄܵذÑJava´úÂë·ÅÈëJavaÀà¡£²»¹ý±¾ÀýÖÐÎÒÃDz»×ñ´ÓÕâÒ»¹æÔò£¬°Ñnew Thread(task).start()Ö±½Ó·ÅÈëstart.jspÍ»³ö±íÃ÷JSPÏ̴߳´½¨²¢Æô¶¯ÁËÈÎÎñÏ̡߳£ ¡¡¡¡ÔÚJSPÒ³ÃæÖвÙ×÷¶àÏ̱߳ØÐë½÷É÷£¬×¢ÒâJSPÏ̺߳ÍÆäËüÏß³Ìʵ¼ÊÉÏÊDz¢·¢Ö´Ðеģ¬¾ÍÏóÔÚ×ÀÃæÓ¦ÓóÌÐòÖУ¬ÎÒÃÇÓÃÒ»¸öÏß³ÌÀ´´¦ÀíGUIʼþ£¬ÁíÍâÔÙÓÃÒ»¸ö»ò¶à¸öÏß³ÌÀ´´¦Àíºǫ́ÈÎÎñ¡£²»¹ýÔÚJSP»·¾³ÖУ¬¿¼Âǵ½¶à¸öÓû§Í¬Ê±ÇëÇóijһ¸öÒ³ÃæµÄÇé¿ö£¬Í¬Ò»¸öJSPÒ³Ãæ¿ÉÄÜ»áÔÚ¶à¸öÏß³ÌÖÐͬʱÔËÐУ»ÁíÍ⣬ÓÐʱͬһ¸öÓû§¿ÉÄÜ»áÏòͬһ¸öÒ³Ãæ·¢³ö¶à¸öÇëÇó£¬ËäÈ»ÕâЩÇëÇóÀ´×Ôͬһ¸öÓû§£¬ËüÃÇÒ²»áµ¼Ö·þÎñÆ÷ͬʱÔËÐÐÒ»¸öJSPÒ³ÃæµÄ¶à¸öÏ̡߳£ ¡¡¡¡Èý¡¢ÈÎÎñ½ø¶È ¡¡¡¡status.jspÒ³ÃæÀûÓÃÒ»¸öHTML½ø¶ÈÌõÏòÓû§ÏÔʾÈÎÎñµÄÖ´ÐÐÇé¿ö¡£Ê×ÏÈ£¬status.jspÀûÓÃ<jsp:useBean>±ê¼Ç»ñµÃstart.jspÒ³Ãæ´´½¨µÄBean¶ÔÏó£º <jsp:useBean id="task" scope="session" class="test.barBean.TaskBean"/> ¡¡¡¡ÎªÁ˼°Ê±·´Ó³ÈÎÎñÖ´Ðнø¶È£¬status.jsp»á×Ô¶¯Ë¢Ð¡£JavaScript´úÂësetTimeout("location='status.jsp'", 1000)½«Ã¿¸ô1000ºÁÃëË¢ÐÂÒ³Ã棬ÖØÐÂÇëÇóstatus.jsp£¬²»ÐèÒªÓû§¸ÉÔ¤¡£ <HTML> <HEAD> <TITLE>JSP½ø¶ÈÌõ</TITLE> <% if (task.isRunning()) { %> <SCRIPT LANGUAGE="JavaScript"> setTimeout("location='status.jsp'", 1000); </SCRIPT> <% } %> </HEAD> <ODY> ¡¡¡¡½ø¶ÈÌõʵ¼ÊÉÏÊÇÒ»¸öHTML±í¸ñ£¬°üº¬10¸öµ¥Ôª¡ª¡ª¼´Ã¿¸öµ¥Ôª´ú±íÈÎÎñ×ÜÌåµÄ10%½ø¶È¡£ <H1 ALIGN="CENTER">JSP½ø¶ÈÌõ</H1> <H2 ALIGN="CENTER"> ½á¹û: <%= task.getResult() %><BR> <% int percent = task.getPercent(); %> <%= percent %>% </H2> <TABLE WIDTH="60%" ALIGN="CENTER" BORDER=1 CELLPADDING=0 CELLSPACING=2> <TR> <% for (int i = 10; i <= percent; i += 10) { %> <TD WIDTH="10%" BGCOLOR="#000080"> </TD> <% } %> <% for (int i = 100; i > percent; i -= 10) { %> <TD WIDTH="10%"> </TD> <% } %> </TR> </TABLE> ¡¡¡¡ÈÎÎñÖ´ÐÐÇé¿ö·ÖÏÂÃ漸ÖÖ״̬£ºÕýÔÚÖ´ÐУ¬ÒÑÍê³É£¬ÉÐδ¿ªÊ¼£¬ÒÑÍ£Ö¹£º <TABLE WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0> <TR> <TD ALIGN="CENTER"> <% if (task.isRunning()) { %> ÕýÔÚÖ´ÐÐ <% } else { %> <% if (task.isCompleted()) { %> Íê³É <% } else if (!task.isStarted()) { %> ÉÐδ¿ªÊ¼ <% } else { %> ÒÑÍ£Ö¹ <% } %> <% } %> </TD> </TR> ¡¡¡¡Ò³Ãæµ×²¿ÌṩÁËÒ»¸ö°´Å¥£¬Óû§¿ÉÒÔÓÃËüÀ´Í£Ö¹»òÖØÐÂÆô¶¯ÈÎÎñ£º <TR> <TD ALIGN="CENTER"> <BR> <% if (task.isRunning()) { %> <FORM METHOD="GET" ACTION="stop.jsp"> <INPUT TYPE="SUBMIT" VALUE="Í£Ö¹"> </FORM> <% } else { %> <FORM METHOD="GET" ACTION="start.jsp"> <INPUT TYPE="SUBMIT" VALUE="¿ªÊ¼"> </FORM> <% } %> </TD> </TR> </TABLE> </BODY></HTML> ¡¡¡¡Ö»Òª²»Í£Ö¹ÈÎÎñ£¬Ô¼10Ãëºóä¯ÀÀÆ÷½«ÏÔʾ³ö¼ÆËã½á¹û5050£º ¡¡¡¡ËÄ¡¢Í£Ö¹ÈÎÎñ ¡¡¡¡stop.jspÒ³Ãæ°Ñrunning±ê¼ÇÉèÖóÉfalse£¬´Ó¶øÍ£Ö¹µ±Ç°µÄ¼ÆËãÈÎÎñ£º <jsp:useBean id="task" scope="session" class="test.barBean.TaskBean"/> <% task.setRunning(false); %> <jsp:forward page="status.jsp"/> ¡¡¡¡×¢Òâ×îÔçµÄJava°æ±¾ÌṩÁËThread.stop·½·¨£¬µ«JDK´Ó1.2°æ¿ªÊ¼ÒѾ²»ÔÞ³ÉʹÓÃThread.stop·½·¨£¬ËùÒÔÎÒÃDz»ÄÜÖ±½Óµ÷ÓÃThread.stop()¡£ ¡¡¡¡µÚÒ»´ÎÔËÐб¾ÎijÌÐòµÄʱºò£¬Äã»á¿´µ½ÈÎÎñµÄÆô¶¯ÓеãÑÓ³Ù£»Í¬ÑùµØ£¬µÚÒ»´Îµã»÷¡°Í£Ö¹¡±°´Å¥Ê±Ò²¿ÉÒÔ¿´µ½ÈÎÎñ²¢Ã»ÓÐÁ¢¼´Í£Ö¹ÔËÐУ¨ÌرðÊÇÈç¹û»úÆ÷ÅäÖýϵ͵Ļ°£¬Ñӳٵĸоõ¸ü¼ÓÃ÷ÏÔ£©£¬ÕâЩÑÓ³Ù¶¼ÊÇÓÉÓÚ±àÒëJSPÒ³Ãæµ¼Öµġ£±àÒëºÃJSPÒ³ÃæÖ®ºó£¬Ó¦´ðËٶȾÍÒª¿ì¶àÁË¡£ ¡¡¡¡Î塢ʵ¼ÊÓ¦Óà ¡¡¡¡½ø¶ÈÌõ²»½öʹµÃÓû§½çÃæ¸ü¼ÓÓѺ㬶øÇÒ¶Ô·þÎñÆ÷µÄÐÔÄÜÒ²Óкô¦£¬ÒòΪ½ø¶ÈÌõ»á²»¶ÏµØ¸æËßÓû§µ±Ç°µÄÖ´Ðнø¶È£¬Óû§²»»áÔÙƵ·±µØÍ£Ö¹²¢ÖØÐÂÆô¶¯£¨Ë¢Ð£©µ±Ç°µÄÈÎÎñ¡£ÁíÒ»·½Ã棬´´½¨µ¥¶ÀµÄÏß³ÌÀ´Ö´Ðкǫ́ÈÎÎñÒ²»áÏûºÄ²»ÉÙ×ÊÔ´£¬±ØҪʱ¿É¿¼ÂÇͨ¹ýÒ»¸öÏ̳߳ØÀ´ÊµÏÖThread¶ÔÏóµÄÖØÓá£ÁíÍ⣬Ƶ·±µØˢнø¶ÈÒ³ÃæÒ²Ôö¼ÓÁËÍøÂçͨÐÅ¿ªÏú£¬ËùÒÔÎñ±Ø±£³Ö½ø¶ÈÒ³Ãæ¼ò½à¶ÌС¡£ ¡¡¡¡ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ºǫִ́Ðеķ±ÖØÈÎÎñ¿ÉÄܲ»ÔÊÐíÍ£Ö¹£¬»òÕßËü²»ÄÜÌṩÏêϸµÄÖ´Ðнø¶ÈÊý¾Ý¡£ÀýÈ磬²éÕÒ»ò¸üйØϵÊý¾Ý¿âʱ£¬SQLÃüÁîÖ´ÐÐÆڼ䲻ÔÊÐíÖÐ;ֹͣ¡ª¡ª²»¹ýÈç¹ûÓû§±íʾËûÏëҪֹͣ»òÖÐÖ¹ÈÎÎñ£¬³ÌÐò¿ÉÒÔÔÚSQLÃüÁîÖ´ÐÐÍê±Ïºó»ØÍËÊÂÎñ¡£ ¡¡¡¡½âÎöXMLÎĵµµÄʱºò£¬ÎÒÃÇûÓа취»ñÖªÒѽâÎöÄÚÈݾ«È·µÄ°Ù·Ö±È¡£Èç¹ûÓÃDOM½âÎöXMLÎĵµ£¬Ö±µ½½âÎöÍê³Éºó²ÅµÃµ½Õû¸öÎĵµÊ÷£»Èç¹ûÓÃSAX£¬ËäÈ»¿ÉÒÔÖªµÀµ±Ç°½âÎöµÄÄÚÈÝ£¬µ«Í¨³£²»ÄÜÈ·¶¨»¹ÓжàÉÙÄÚÈÝÐèÒª½âÎö¡£ÔÚÕâЩ³¡ºÏ£¬ÈÎÎñµÄÖ´Ðнø¶ÈÖ»ÄÜ¿¿¹À¼ÆµÃµ½¡£ ¡¡¡¡¹À¼ÆÒ»¸öÈÎÎñÐèÒª¶àÉÙÖ´ÐÐʱ¼äͨ³£ÊǺÜÀ§Äѵģ¬ÒòΪËüÉæ¼°µ½Ðí¶àÒòËØ£¬¼´Ê¹ÓÃʵ¼Ê²âÊԵİ취ҲÎÞ·¨µÃµ½¿É¿¿µÄ½áÂÛ£¬ÒòΪ·þÎñÆ÷µÄ¸ºÔØËæʱ¶¼Ôڱ仯֮ÖС£Ò»ÖÖ¼òµ¥µÄ°ì·¨ÊDzâÁ¿ÈÎÎñÿ´ÎÖ´ÐÐËùÐèʱ¼ä£¬È»ºó¸ù¾Ý×îºó¼¸´ÎÖ´ÐеÄƽ¾ùʱ¼ä¹ÀËã¡£Èç¹ûÒªÌá¸ß¹À¼Æʱ¼äµÄ¾«È·¶È£¬Ó¦µ±¿¼ÂÇʵÏÖÒ»ÖÖÕë¶ÔÓ¦ÓÃÌصãµÄËã·¨£¬×ۺϿ¼ÂǶàÖÖÒòËØ£¬ÀýÈçÒªÖ´ÐеÄSQLÓï¾äÀàÐÍ¡¢Òª½âÎöµÄXMLģʽµÄ¸´Ôӳ̶ȣ¬µÈµÈ¡£ ¡¡¡¡½áÊøÓ±¾ÎÄÀý×ÓÏÔʾ³öÓÃJSP¡¢Java¡¢HTMLºÍJavaScript¹¹Ôì½ø¶ÈÌõÊÇÏ൱ÈÝÒ׵ģ¬ÕæÕýÀ§ÄѵÄÊÇÈçºÎ½«ËüÓõ½Êµ¼ÊÓ¦ÓÃÖ®ÖУ¬ÌرðÊÇ»ñµÃºǫ́ÈÎÎñµÄ½ø¶ÈÐÅÏ¢£¬µ«Õâ¸öÎÊÌâûÓÐͨÓõĴ𰸣¬Ã¿Ò»ÖÖºǫִ́ÐеÄÈÎÎñ¶¼ÓÐËü×Ô¼ºµÄÌص㣬±ØÐë°´ÕÕ¾ßÌåÇé¿ö¾ßÌå·ÖÎö¡£ |