ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÓÃJava³ÌÐòÉú³ÉÎı¾µÄ½Ý¾¶

·¢²¼Ê±¼ä:2006-05-03 19:41:59À´Ô´:ºìÁª×÷Õß:ÌìɽÀÏͯ
´ó¶àÊý³ÌÐò¶¼ÐèÒªÊä³öһЩÎı¾£¬±ÈÈçÓʼþÏûÏ¢¡¢HTMLÎļþ»ò¿ØÖÆ̨Êä³ö¡£µ«ÊÇ£¬¼ÆËã»ú±¾ÖÊÉÏÖ»ÄÜ´¦Àí¶þ½øÖÆÊý¾Ý£¬³ÌÐòÔ±±ØÐëÈÃÈí¼þÀ´Éú³É¿ÉÀí½âµÄÎı¾¡£ÔÚÕâƪÎÄÕÂÖУ¬ÎÒÒª½éÉܵÄÊÇÔÚÉú³ÉºÍÊä³öÎı¾Ê±£¬ÎªºÎʹÓÃÄ£°åÒýÇæÄܹ»½Úʡʱ¼ä¡£Ä㽫Á˽âÄ£°åµÄÓŵ㣬ÈçºÎÕë¶Ô²»Í¬µÄÇéÐδ´½¨¸ßЧµÄÄ£°å¡£ºÍ System.println˵ÔÙ¼û£¡

ËäÈ»³ÌÐòÔ±¿ÉÒÔºÜÇáËɵرàд³öÊä³öÎÄ×ÖÐÅÏ¢µÄ´úÂ루ÒòΪÕâ±Ï¾¹ÊÇ´ÓHello World·¶Àýѧµ½µÄµÚÒ»¼þÊÂÇ飩£¬µ«Í¨³£¶øÑÔ£¬³ÌÐòÔ±²»ÊÇд×÷»ò×éÖ¯ÎÄ×ÖÐÅÏ¢£¨ÈçÓʼþ£©µÄ×î¼ÑÈËÑ¡¡£Òò´Ë£¬ÎÒÃdz£³£ÈÃÊг¡²¿ÃÅ»ò¹«¹Ø²¿ÃÅÈ¥×öÄÇЩÊÂÇé¡£µ«Òź¶µÄÊÇ£¬¼´Ê¹¶ÔÓÚ×îÆÕͨµÄÓʼþ£¬±àдÕßÒ²³£³£ÒÀÀµ³ÌÐòÊä³öÀ´Íê³ÉÈÎÎñ¡£ÎÞÂÛÊǶÔÓÚÓʼþ±àдÕß»¹ÊdzÌÐòÔ±£¬ÕâÖÖºÏ×÷·½Ê½¶¼ºÜÈÝÒ×´øÀ´Îó½âºÍÔì³ÉʧÎó¡£

Çë¿´Ò»¸öÀý×Ó£ºÒ»¸öJava³ÌÐò´Óij¸öÊý¾ÝÔ´ÊÕ¼¯Ò»Ð©¿Í»§ÐÅÏ¢£¬Í¨¹ýemail¸ø¹«Ë¾µÄÿһ¸ö¿Í»§·¢ËÍÕÊ»§Óà¶îÐÅÏ¢¡£ÏÂÃæÊÇÍê³ÉÕâ¸öÈÎÎñµÄJava³ÌÐò£¨ÍêÕûµÄʾÀý³ÌÐò´úÂë¿ÉÒÔ´Ó±¾ÎÄ×îºóÏÂÔØ£©£º

for (int i=0; i { Customer customer = (Customer)customers.get(i); StringBuffer message = new StringBuffer(); message.append ("×ð¾´µÄÏÈÉú/Ůʿ£º "); message.append (customer.getCustName()); message.append ("\n"); message.append ("\n"); message.append ("ÄúµÄÕÊ»§Óà¶îÊÇ "); message.append (customer.getAccountTotal()); message.append ("\n"); message.append ("\n"); message.append ("ÖÂÀñ£¡"); message.append ("\n"); message.append ("ijijװÊÎÆ·¹«Ë¾"); // ·¢ËÍemail mm.sendMail (customer.getFirstName(), customer.getEmail(), "Account", message.toString()); }


ÉÏÃæµÄÀý×Ó¿Éν·¢ËÍÏûÏ¢×î²î¾¢µÄ·½·¨Ö®Ò»¡£ÓÉÓÚÏûϢǶÈëµ½Á˳ÌÐò´úÂëÖ®ÖУ¬Èç¹ûûÓгÌÐòÔ±µÄ°ïÖú£¬ÆäËûÈ˼¸ºõ²»¿ÉÄܶÔÏûÏ¢½øÐб༭¡£Í¬Ê±£¬¼´Ê¹¶ÔÓÚרҵµÄ³ÌÐòÔ±£¬Èç¹ûËû²»Á˽â´úÂ룬Ҫ½øÐб༭ҲºÜÀ§ÄÑ¡£Èç¹ûÄãÔ¤¼ûÁËÕâЩÂé·³£¬°Ñ´úÂëд³ÉÏÂÃæÕâÖÖÐÎʽ£º

static public final String STR_HELLO="×ð¾´µÄÏÈÉú/Ůʿ£º "; static public final String STR_MESSAGE="ÄúµÄÕÊ»§Óà¶îÊÇ "; static public final String STR_BEY="ÖÂÀñ£¡\nijijװÊÎÆ·¹«Ë¾";


Èç¹û˵ÉÏÊö´úÂëʹµÃÏûÏ¢±à¼­¸üÈÝÒ×£¬ÄÇôÕâÖÖ°ïÖúÒ²²»»áºÜ¶à¡£ºÜÄÑÒªÇóÒ»¸ö²»¸ã³ÌÐòÉè¼ÆµÄÈËÀí½âstaticºÍfinalµÄº¬Òå¡£´ËÍ⣬Èç¹ûÒª¸Ä±äÏûÏ¢µÄ½á¹¹£¬ÉÏÃæÕâÖÖ´úÂëÒ²²»¹»Áé»î¡£ÀýÈ磬ÈËÃÇ¿ÉÄÜÒªÇóÄãÔÚÓʼþÏûÏ¢ÖмÓÈë¸ü¶àÀ´×ÔÊý¾ÝÔ´µÄÐÅÏ¢£¬Õâʱ£¬Äã¾ÍµÃÐ޸Ĺ¹ÔìÓʼþµÄ´úÂ룬»òÐí»¹ÒªÌí¼Ó¸ü¶àµÄstatic final String¶ÔÏó¡£

Ä£°å¼ò½é
´ÓÎı¾Îļþ×°ÈëÏûÏ¢Îı¾¿ÉÒÔ½â¾ö²¿·ÖÎÊÌâ??µ«²»ÄÜÌṩ¶¯Ì¬ÄÚÈÝ£¬¶øÕâ¶ÔÓÚϵͳÀ´ËµÊǺÜÖØÒªµÄ¡£ÄãÐèÒªÓÐÒ»ÖÖ·½·¨°Ñ¶¯Ì¬ÄÚÈݲåÈëµ½Ô¤ÏȱàдºÃµÄÎı¾ÏûÏ¢¡£µ«ÊÇ£¬Èç¹ûʹÓÃijÖÖÎı¾Ä£°åÒýÇ棬Ëü¾ÍÄܹ»°ïÖúÄãÍê³ÉËùÓи´ÔӵŤ×÷¡£

Ä£°åÒýÇæ½â¾öÁ˰Ѷ¯Ì¬ÄÚÈݲåÈëÎı¾ÏûÏ¢µÄÎÊÌ⡣ʹÓÃÄ£°åÒýÇæʱ£¬ÎÒÃDz»ÔÙ°ÑÏûÏ¢Ö±½ÓǶÈë³ÌÐò£¬¶øÊÇ´´½¨Ò»¸ö°üº¬Îı¾ÄÚÈݵļòµ¥Îı¾Îļþ£¬³ÆΪ¡°Îı¾Ä£°å¡±¡£Ä£°åÒýÇæ½âÎöÎı¾Ä£°å£¬½èÖúһЩ¼òµ¥µÄÄ£°åÖ¸Á°Ñ¶¯Ì¬ÄÚÈݲåÈëÄ£°åÊä³ö½á¹û¡£

ÎÒÑ¡ÔñµÄÄ£°åÒýÇæÊÇJakarta ProjectµÄVelocity£¬µ«Äã¿ÉÒÔÈÎÒâÑ¡ÔñÆäËûÐí¶àÄ£°åÒýÇæÖ®Ò»¡£VelocityºÍWebMacro»òÐíÊǵ±Ç°¹¦ÄÜ×î·á¸»¡¢×îÊÜ»¶Ó­µÄÁ½¸öÒýÇ棬¶øÇÒÁ½Õ߶¼°´ÕÕÔ´´úÂ뿪·ÅЭÒéÃâ·ÑÌṩ¡£ËäÈ»ÎÒÔÚ±¾ÎÄÀý×ÓÖÐʹÓÃVelocity£¬Äã¿ÉÒÔ·½±ãµØ°ÑÕâЩÀý×ÓÒÆÖ²µ½²»Í¬µÄÄ£°åÒýÇ棬ֻÐè×ñÕÕÄ¿±êÒýÇæµÄÓï·¨¼´¿É¡£
ÎÒÃÇÀ´¿´¿´ÓÃVelocityÍê³ÉµÄemail³ÌÐòÀý×Ó¡£Òª±àÒëºÍÔËÐÐÐ޸ĺóµÄ³ÌÐò£¬Äã±ØÐëÏÂÔØVelocity²¢°ÑËü¼ÓÈëµ½classpath¡£Èç¹ûÒªÈÃemail²¿·ÖÒ²ÄÜÕý³£ÔËÐУ¬Ä㻹ÐèÒªJavaMail¡£
for (int i=0; i

Ê×ÏÈ£¬ÄãÓ¦¸ÃÀí½âÉÏÃæµÄJavaÔ´´úÂë¡£ÕâÀïÎÒÃDz»ÔÙÏóµÚÒ»¸öÀý×ÓÄÇÑùÉú³ÉÎı¾£¬ÉÏÃæµÄ´úÂëÒýÓÃÒ»¸ö³ÆΪ¡°VelocityÄ£°å¡±µÄÎı¾Îļþ£¬È»ºó°Ñ½á¹û·¢Ë͸øÊÕ¼þÈË¡£VelocityÄ£°å¿ÉÒÔÊÇÈκÎÎı¾Îļþ£¬µ«Ò»°ãËü°üº¬Ò»Ð©ÓÃÀ´²åÈ붯̬ÄÚÈݵÄÖ¸Áî¡£

ºÍVelocityContextÏà¹ØµÄ²¿·ÖÊÇÉÏÊö´úÂëÖÐ×îÖµµÃ×¢ÒâµÄµØ·½¡£VelocityContextÌṩÁËJava³ÌÐòºÍ VelocityÎı¾Ä£°åÖ®¼äµÄÁ¬½Ó£¬¶øVelocityÎı¾Ä£°å¿ÉÒÔÓÉÆäËûÈËÀ´±àд¡£ÔÚÄ£°åÖУ¬ËùÓмÓÈëµ½VelocityContextµÄ¶ÔÏ󶼿ÉÒÔͨ¹ýput()·½·¨µÚÒ»¸ö²ÎÊýÖ¸¶¨µÄÃû×Ö·ÃÎÊ¡£ÎªÁ˽âÆ乤×÷¹ý³Ì£¬Çë¿´ÏÂÃæµÄÄ£°åÎļþ£º

×ð¾´µÄÏÈÉú/Ůʿ£º $CustNameÄúµÄÕÊ»§Óà¶îÊÇ $totalÖÂÀñ£¡Ä³Ä³×°ÊÎÆ·¹«Ë¾


VelocityÒýÇæ¶ÁÈ¡Ä£°åÎļþʱ£¬ËüÖ±½ÓÊä³öÎļþÖÐËùÓеÄÎı¾£¬µ«ÒÔ$×Ö·û¿ªÍ·µÄ³ýÍâ¡£$·ûºÅ±êʶ×ÅÒ»¸öλÖã¬ÔÚÄ£°åµÄÊä³ö½á¹ûÖУ¬¶ÔÏóµÄÖµÓ¦¸Ã²åÈëµ½$·ûºÅËùָʾµÄλÖá£ÀýÈ磬Java´úÂëÖÐÓÐÒ»¸öcontext.put ("CustName",customer.getCustName())Óï¾ä£¬µ±VelocityÄ£°åÒýÇæ½âÎö²¢Êä³öÄ£°åµÄ½á¹ûʱ£¬Ä£°åÖÐËùÓгöÏÖ$ CustNameµÄµØ·½¶¼½«²åÈë¿Í»§µÄÃû×Ö£»¼´£¬±»¼ÓÈëµ½VelocityContextµÄ¶ÔÏóµÄtoString()·½·¨·µ»ØÖµ½«Ìæ´úVelocity ±äÁ¿£¨Ä£°åÖÐÒÔ$¿ªÍ·µÄ±äÁ¿£©¡£

Ä£°åÒýÇæÖÐ×îÇ¿´ó¡¢Ê¹ÓÃ×îƵ·±µÄ¹¦ÄÜÖ®Ò»ÊÇËüͨ¹ýÄÚ½¨µÄÓ³Ïñ£¨Reflection£©ÒýÇæ²éÕÒ¶ÔÏóÐÅÏ¢µÄÄÜÁ¦¡£Õâ¸öÓ³ÏñÒýÇæÔÊÐíÓÃÒ»ÖÖ·½±ãµÄ Java¡°.¡±ÀàËƵIJÙ×÷·û£¬ÌáÈ¡ÈÎÒâ¼ÓÈëµ½VelocityContextµÄ¶ÔÏóµÄÈκι«Ó÷½·¨µÄÖµ£¬»ò¶ÔÏóµÄÈÎÒâÊý¾Ý³ÉÔ±¡£Ó³ÏñÒýÇ滹´øÀ´ÁËÁíÍâÒ»¸ö¸Ä½ø£º¿ìËÙÒýÓÃJavaBeanµÄÊôÐÔ¡£Ê¹ÓÃJavaBeanÊôÐÔµÄʱºò£¬ÎÒÃÇ¿ÉÒÔºöÂÔget·½·¨ºÍÀ¨ºÅ£¨ÓûÖªÏêϸÐÅÏ¢£¬Çë²Î¿¼Ä£°åÒýÇæµÄ˵Ã÷Îĵµ£©¡£Çë¿´ÏÂÃæÕâ¸öÄ£°åµÄÀý×Ó¡£ÓÉÓÚÔÚÇ°ÃæµÄJava´úÂëʾÀýÖУ¬ÎÒ°ÑCustomer¶ÔÏó¼ÓÈëµ½ÁËVelocityContext£¬ËùÒÔÎÒ¿ÉÒÔ°ÑÄ£°å¸Äд³ÉÏÂÃæÕâÖÖÐÎʽ£º

×ð¾´µÄÏÈÉú/Ůʿ£º $customer.CustNameÄúµÄÕÊ»§Óà¶îÊÇ $customer.AccountTotalÖÂÀñ£¡Ä³Ä³×°ÊÎÆ·¹«Ë¾


³ýÁËÌæ»»±äÁ¿Ö®Í⣬ÏóVelocityºÍWebMacroÕâÀà¸ß¼¶ÒýÇ滹ÄÜ×öÆäËûÐí¶àÊÂÇé¡£ËüÃÇÓÐÓÃÀ´±È½ÏºÍµü´úµÄÄÚ½¨Ö¸Á¾¡¹Ü±È½ÏºÍµü´ú¹¦ÄÜÊÇÁ½¸öÄ£°åÒýÇæÖ®¼äµÄ¹²Í¬µã£¬µ«ËüÃǵÄÓï·¨²îÒìºÜ´ó£¬²»ÄÜÍêÈ«¼æÈÝ¡£ÔÚÑ¡ÔñÄ£°åÒýÇæ»òÕ߸ü»»Ä£°åÒýÇæʱ£¬Îñ±Ø×¢ÒâÕâÒ»µã£©¡£

¾ÙÒ»¸öÀý×Ó¡£Ê®¶þÔ·ݣ¬ÄãµÄÀÏ°åÏëÒªÏòËùÓеĿͻ§·¢Ò»¸öÊ¥µ®½ÚÎʺòµÄemail¡£Äã¿ÉÒÔ°ÑÕâ¸öÏûÏ¢¼ÓÈ뵽ģ°å£¬ÒÔºóÔÙɾ³ýËü¡£µ«ÕâÑùµÄ»°£¬ÄãµÃÔÚÐÂÄêÄÇÒ»ÌìÉϰ๤×÷£¬ÒÔ±ãɾ³ýÊ¥µ®ÎʺòÏûÏ¢¡£

Ò»ÖÖ¸üºÃµÄ°ì·¨ÊÇָʾģ°åºÎʱÏÔʾʥµ®ÎʺòÏûÏ¢¡£Îª´Ë£¬ÄãÊ×ÏÈÒª°Ñµ±Ç°µÄÔ·ݼÓÈëµ½VelocityContext£º

int month = (new GregorianCalendar()).get(Calendar.MONTH); // °ÑmonthÖµ¼Ó1£¬ÒòΪËü´Ó0¿ªÊ¼¼ÆËã context.put ("month", new Integer(month+1) );


ÏÖÔÚ£¬ÄãÖ»ÐèÔÚÄ£°åÖнøÐбȽϣº

×ð¾´µÄÏÈÉú/Ůʿ£º $customer.CustNameÄúµÄÕÊ»§Óà¶îÊÇ $customer.AccountTotalÖÂÀñ£¡Ä³Ä³×°ÊÎÆ·¹«Ë¾#if ($month == 12)×£ÄúºÍÄúµÄ¼ÒÈËÊ¥µ®½Ú¿ìÀÖ£¡#end


#ifÖ¸ÁîµÄ×÷ÓúÜÇå³þ£º¶ÔÒ»¸öÂß¼­±í´ïʽ½øÐвâÊÔ£¬´Ó¶ø¾ö¶¨ÊÇ·ñÔÚÄ£°åÊä³ö½á¹ûÖаüº¬¸ÃÖ¸Áî¿éÄÚµÄÄÚÈÝ¡£³ýÁ˼òµ¥µÄµÈÓڱȽÏÖ®Í⣬Ä㻹¿ÉÒÔÖ´Ðиü¸´ÔӵıȽϣ¬µ«Õâ·½ÃæµÄ¹¦Äܶ¼ÓëÌض¨µÄÄ£°åÒýÇæÃÜÇйØÁª£¬ËùÒÔÕâÀïÎÒ²»ÔÙ½éÉÜ¡£

µü´úÖ¸ÁîºÍ#ifÖ¸ÁîÒ»Ñù¼òµ¥¡£Ä£°åÒýÇæÖ§³Öµü´úJava Collections FrameworkµÄÈÎÒâʵÏÖ£¬°üÀ¨Array¡¢ListºÍIterator¡£¶ÔÓÚJDK 1.2»òÕ߸ü¸ß°æ±¾£¬JavaµÄVectorºÍArrayList¶¼ÊµÏÖÁËList½Ó¿Ú£¬Òò´ËËüÃÇÒ²ÊʺÏÔÚÄ£°åÒýÇæµÄµü´úÖ¸ÁîÖÐʹÓá£

¼ÙÉèÎÒÃÇÏÖÔÚ²»ÏëÊä³öÕÊ»§Óà¶î£¬¶øÊÇÏëͨ¹ýµü´ú±éÀúÕÊ»§µÄ½»Ò׼Ǽ£¬Êä³öÏêϸµÄ±¨±í¡£Customer¶ÔÏóµÄgetTransactions() ·½·¨£¨²Î¼ûÏÂÔØ°üÖÐÍêÕûµÄʾÀý´úÂ룩·µ»ØÒ»¸öList¶ÔÏó£¬List¶ÔÏó°üº¬Áã¸ö»òÕ߶à¸öTransaction¶ÔÏó¡£ÓÉÓÚListÊôÓÚJava Collections FrameworkµÄÒ»²¿·Ö£¬ÎÒÃÇ¿ÉÒÔÓÃ#foreachÖ¸Áîµü´úÆäÄÚÈÝ¡£ÎÒÃDz»Óõ£ÐÄÈçºÎ¶¨ÐͶÔÏóµÄÀàÐÍ??Ó³ÏñÒýÇæ»áΪÎÒÃÇÍê³ÉÕâ¸öÈÎÎñ¡£´ÓÏÂÃæÕâ¸öÀý×ÓÖУ¬ÎÒÃÇ¿ÉÒÔ¿´³öµü´úµÄ¹¤×÷¹ý³Ì£º

×ð¾´µÄÏÈÉú/Ůʿ£º $customer.CustName#foreach ($transaction in $customer.Transactions)$transaction.Description $transaction.Amount#endÄúµÄÕÊ»§Óà¶îÊÇ $customer.AccountTotalÖÂÀñ£¡Ä³Ä³×°ÊÎÆ·¹«Ë¾


#foreachÖ¸ÁîµÄÒ»°ã¸ñʽÊÇ¡°#foreach in ¡±¡£#foreachÖ¸Áîµü´úlist£¬°ÑlistÖеÄÿ¸öÔªËØ·ÅÈëitem²ÎÊý£¬È»ºó½âÎö#foreach¿éÄÚµÄÄÚÈÝ¡£¶ÔÓÚ listÄÚµÄÿ¸öÔªËØ£¬#foreach¿éµÄÄÚÈݶ¼»áÖظ´½âÎöÒ»´Î¡£´ÓЧ¹ûÉÏ¿´£¬ËüÏ൱ÓÚ¸æËßÄ£°åÒýÇæ˵£º¡°°ÑlistÖеÄÿһ¸öÔªËØÒÀ´Î·ÅÈëitem±äÁ¿£¬Ã¿´Î·ÅÈëÒ»¸öÔªËØ£¬Êä³öÒ»´Î#foreach¿éµÄÄÚÈÝ¡±¡£

MVCÉè¼ÆÄ£ÐÍ
ÔÚ¿´ÏÂÒ»¸öÀý×Ó֮ǰ£¬Çë»Ø¹ËÒ»ÏÂÇ°ÃæÎÒÃÇËùÌÖÂÛµÄÄÚÈÝ¡£Ê¹ÓÃÄ£°åÒýÇæ×î´óµÄºÃ´¦ÔÚÓÚ£¬Ëü·ÖÀëÁË´úÂ루»ò³ÌÐòÂß¼­£©ºÍ±íÏÖ£¨Êä³ö£©¡£ÓÉÓÚÕâÖÖ·ÖÀ룬Äã¿ÉÒÔÐ޸ijÌÐòÂß¼­¶ø²»±Øµ£ÐÄÓʼþÏûÏ¢±¾Éí£»ÀàËƵأ¬Ä㣨»ò¹«¹Ø²¿ÃŵÄÖ°Ô±£©¿ÉÒÔÔÚ²»ÖØбàÒë³ÌÐòµÄÇé¿öÏ£¬ÖØбàдÓʼþÏûÏ¢¡£

ʵ¼ÊÉÏ£¬ÎÒÃÇ·ÖÀëÁËϵͳµÄÊý¾Ýģʽ£¨Data Model£¬¼´ÌṩÊý¾ÝµÄÀࣩ¡¢¿ØÖÆÆ÷£¨Controller£¬¼´Óʼþ³ÌÐò£©ÒÔ¼°ÊÓͼ£¨View£¬¼´Ä£°å£©¡£ÕâÖÖÈý²ãÌåϵ³ÆΪModel-View- ControllerÄ£ÐÍ£¨MVC£©¡£Èç¹û×ñ´ÓMVCÄ£ÐÍ£¬´úÂë·Ö³ÉÈý¸ö½ØÈ»²»Í¬µÄ²ã£¬¼ò»¯ÁËÈí¼þ¿ª·¢¹ý³ÌÖÐËùÓÐÏà¹ØÈËÔ±µÄ¹¤×÷£¨MVCµÄ³öÏÖÒѾ­ÓÐÒ»¶Îʱ¼ä£¬²Î¼û±¾ÎÄ×îºóµÄ¡°²Î¿¼×ÊÔ´¡±Á˽â¸ü¶àÐÅÏ¢£©¡£

½áºÏÄ£°åÒýÇæʹÓõÄÊý¾Ýģʽ¿ÉÒÔÊÇÈκÎJava¶ÔÏó£¬×îºÃÊÇʹÓÃJava Collection FrameworkµÄ¶ÔÏ󡣿ØÖÆÆ÷Ö»ÒªÁ˽âÄ£°åµÄ»·¾³£¨ÈçVelocityContext£©£¬Ò»°ãÕâÖÖ»·¾³¶¼ºÜÈÝÒ×ʹÓá£Ò»Ð©¹ØϵÊý¾Ý¿âµÄ¡°¶ÔÏó-¹Øϵ¡± Ó³É乤¾ßÄܹ»ºÍÄ£°åÒýÇæºÜºÃµØЭͬ£¬¼ò»¯JDBC²Ù×÷£»¶ÔÓÚEJB£¬ÇéÐÎÒ²ÀàËÆ¡£

Ä£°åÒýÇæÓëMVCÖÐÊÓͼÕâÒ»²¿·ÖµÄ¹Øϵ¸üΪÃÜÇС£Ä£°åÓïÑԵŦÄܷܺḻ¡¢Ç¿´ó£¬×ãÒÔ´¦ÀíËùÓбØÐèµÄÊÓͼ¹¦ÄÜ£¬Í¬Ê±ËüÍùÍùºÜ¼òµ¥£¬²»ÊìϤ±à³ÌµÄÈËÒ²¿ÉÒÔʹÓÃËü¡£Ä£°åÓïÑÔ²»½öʹµÃÉè¼ÆÕß´Ó¹ýÓÚ¸´Ôӵıà³Ì»·¾³ÖнâÍѳöÀ´£¬¶øÇÒËü±£»¤ÁËϵͳ£¬±ÜÃâÁËÓÐÒâ»òÎÞÒâ´øÀ´Î£ÏյĴúÂë¡£ÀýÈ磬ģ°åµÄ±àдÕß²»¿ÉÄܱàд³öµ¼ÖÂÎÞÏÞÑ­»·µÄ´úÂ룬»òÇÖÕ¼´óÁ¿ÄÚ´æµÄ´úÂë¡£²»ÒªÇá¹ÀÕâЩ°²È«»úÖƵļÛÖµ£»´ó¶àÊýÄ£°å±àдÕß²»¶®µÃ±à³Ì£¬´Ó³¤Ô¶À´¿´£¬±ÜÃâËûÃǽӴ¥¸´Ôӵıà³Ì»·¾³Ï൱ÓÚ½ÚÊ¡ÁËÄã×Ô¼ºµÄʱ¼ä¡£

Ðí¶àÄ£°åÒýÇæµÄÓû§ÏàÐÅ£¬ÔÚ²ÉÓÃÄ£°åÒýÇæµÄ·½°¸ÖУ¬¿ØÖÆÆ÷²¿·ÖºÍÊÓͼ²¿·ÖµÄÃ÷È··ÖÀ룬ÔÙ¼ÓÉÏÄ£°åÒýÇæ¹ÌÓеݲȫ»úÖÆ£¬Ê¹µÃÄ£°åÒýÇæ×ãÒÔ³ÉΪÆäËûÄÚÈÝ·¢²¼ÏµÍ³£¨±ÈÈçJSP£©µÄÌæ´ú·½°¸¡£Òò´Ë£¬JavaÄ£°åÒýÇæ×î³£¼ûµÄÓÃ;ÊÇÌæ´úJSPÒ²¾Í²»×ãΪÆæÁË¡£

HTML´¦Àí
ÓÉÓÚÈËÃÇ×ÜÊÇ¿´ÖØÄ£°åÒýÇæÓÃÀ´Ìæ»»JSPµÄ×÷Óã¬ÓÐʱËûÃÇ»áÍü¼ÇÄ£°å»¹Óиü¹ã·ºµÄÓÃ;¡£µ½Ä¿Ç°ÎªÖ¹£¬Ä£°åÒýÇæ×î³£¼ûµÄÓÃ;ÊÇ´¦ÀíHTML WebÄÚÈÝ¡£µ«ÎÒ»¹ÓÃÄ£°åÒýÇæÉú³É¹ýSQL¡¢email¡¢XMLÉõÖÁJavaÔ´´úÂë¡£ÔÚÕâÀïÎÒÖ»ÄÜÉæ¼°Ä£°åµÄ²¿·ÖÓ¦Ó㬵«Äã¿ÉÒÔ´Ó±¾ÎÄ×îºóµÄ²Î¿¼×ÊÔ´ÕÒµ½¸ü¶àµÄÀý×Ó¡£

ÎÒ½«ÔÚÏÂÃæµÄHTMLÀý×ÓÖÐʹÓÃÇ°ÃæemailÀý×ÓµÄÊý¾Ýģʽ¡£Õâ¸öHTMLÒ³ÃæÊÇÒ»¸ö¼ÙÏëµÄÆóÒµIntranetÒ³Ã棬ËüÏÔʾ³ö¿Í»§ÕÊ»§µÄÏêϸÐÅÏ¢¡£±¾ÀýÖеĿØÖÆÆ÷ÀàÊÇÒ»¸öJava Servlet£¬ÊÓͼ²¿·ÖÔò°üº¬Ò»¸öHTMLÄ£°å¡£ÏÂÃæµÄ´úÂëÏÔʾÁËServletÀàÖÐ×îÖ÷ÒªµÄ´úÂ롣ΪʹÕâ¸öÀý×Ó¸ü¾ßÓдú±íÐÔ£¬ÎÒ´ÓÍ·¿ªÊ¼ÊÖ¹¤±àдÕâ¸ö Servlet¡£È»¶ø£¬Ò»°ãÇé¿öÏ£¬Ä£°å»áÌṩһЩServlet¹¤¾ß£¬°ïÖúÓû§¼õÇáһЩ±àд´úÂëµÄ¸ºµ£¡£

// ×°ÈëÄ£°å Template template = Velocity.getTemplate("html.vm"); // ´´½¨»·¾³ VelocityContext context = new VelocityContext(); context.put ("customers",Customer.getCustomers());// ½âÎöÄ£°å£¬Êä³öÓ¦´ðServletOutputStream output = response.getOutputStream();Writer writer = new OutputStreamWriter (output);template.merge(context, writer);writer.flush();


Õâ¸öÀý×ÓҲûÓÐʲôÁîÈ˾ªÒìµÄµØ·½¡£ºÍÇ°ÃæµÄÀý×ÓÒ»Ñù£¬ÎÒÖ»ÊǰѱØÐèµÄ¶ÔÏó¼ÓÈëµ½VelocityContext£¬È»ºóÊä³ö½âÎöÄ£°åµÄ½á¹û¡£µ«ÊÇÇë×¢Ò⣬ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ÎÒÖ»°ÑÒ»¸öCustomer¼ÓÈëµ½VelocityContext£¬ÕâÀï¼ÓÈëµ½VelocityContextµÄÈ´ÊÇÒ»×é Customer¶ÔÏó¡£ÎÒ¿ÉÒÔÓÃ#foreachÖ¸Áîµü´ú·ÃÎÊËùÓеÄCustomer¶ÔÏó¡£ÏÂÃæÊÇÏàÓ¦µÄHTMLÄ£°å£º

¿Í»§±¨¸æ

#foreach ($customer in $customers)

$customer.CustName

#foreach ($transaction in $customer.Transactions)#end
$transaction.Date$transaction.Description$transaction.Amount
$customer.AccountTotal
#end


Èç¹ûÄãÕýÔڹ滮һ¸ö¹¤³Ì£¬Õâ¸ö¹¤³ÌµÄÐèÇóÔ¶Ô¶³¬¹ý¼¸¸öHTMLÄ£°å£¬Ç뿼ÂÇÖÚ¶àÒÔÄ£°åΪ»ù´¡µÄ¿ò¼ÜÖ®Ò»¡£ÕâЩ¿ò¼Ü²»½öΪÉú³ÉHTMLÌṩÁËÄ£°åÒýÇæËù´øÀ´µÄ±ãÀû£¬¶øÇÒÌṩÐí¶àʵÓù¤¾ß£¬±ÈÈçÊý¾Ý¿âÁ¬½Ó³ØºÍ°²È«¡£Á½¸ö³£¼ûµÄÀý×ÓÊÇTurbineºÍMelati£¬ËüÃǶ¼ºÍVelocityÒÔ¼° WebMacro¼æÈÝ£¬¶¼ÊÇÃâ·ÑÇÒÔ´´úÂ뿪·ÅµÄ²úÆ·¡£
ÐÔÄܺÍÅäÖÃ
¶ÔÓÚ´ó¶àÊý³ÌÐòÀ´Ëµ£¬Ä£°åµÄËٶȿ´À´ÒѾ­×ã¹»¿ì£»µ«¶ÔÓÚ´óÈÝÁ¿µÄWebÍøÕ¾£¬Äã¿ÉÄÜÒªÈÏÕæµØ¿¼ÂÇÒ»ÏÂÐÔÄÜÎÊÌâ¡£ÔÚÐÔÄÜ·½Ã棬ģ°åÒýÇæ×î´óµÄÌصãÔÚÓÚÄ£°å»º³å¡£ÔÚÄ£°å»º³å»úÖƵÄ×÷ÓÃÏ£¬Ä£°å²»ÔÙÊÇÿ´Î³öÏÖÇëÇóµÄʱºò´Ó´ÅÅ̶ÁÈ¡£¬¶øÊÇÒÔ×îÀíÏëµÄ·½Ê½ÔÚÄÚ´æÖб£´æºÍ½âÎö¡£ÔÚ¿ª·¢Æڼ䣬ģ°å»º³åͨ³£´¦ÓÚ½ûÓÃ״̬£¬ÒòΪÕâʱÇëÇóÊýÁ¿½ÏÉÙ£¬¶øÇÒÒªÇó¶ÔÒ³ÃæµÄÐÞ¸ÄÁ¢¼´²úÉúЧ¹û¡£²¿ÊðÍê±ÏÖ®ºó£¬Ä£°åÒ»°ã²»Ôٸı䣬ÐÔÄܾͳÉÁËÓÅÏÈ¿¼ÂǵÄÎÊÌâ¡£Òò´Ë£¬ÕâʱÄãÓ¦¸ÃÆôÓÃÄ£°å»º³å¹¦ÄÜ¡£

¶ÔÓÚ´ó¶àÊýÄ£°åÒýÇ棬Äã¿ÉÒÔͨ¹ýÓ¦ÓÃÒ»¸öÉèÖÃÑ¡Ïî»ò±à¼­JavaÊôÐÔÎļþ·½±ãµØÆôÓÃÄ£°å»º³å¹¦ÄÜ¡£ÔÚVelocityÖУ¬Äã¿ÉÒÔͨ¹ý Properties¶ÔÏó³õʼ»¯Ä£°å¡£ÖÁÓÚProperties¶ÔÏóµÄ´´½¨·½·¨£¬Äã¼È¿ÉÒÔÊÖ¹¤´´½¨£¬¾ÍÏóÎÒÇ°ÃæËù×öµÄÄÇÑù£»»òÕßÒ²¿ÉÒÔ´ÓÊôÐÔÎļþ×°Èë¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ºóÕßÒ²ÐíÊǽÏΪÀíÏëµÄ·½·¨¡£

Properties props = new Properties(); props.setProperty( "file.resource.loader.cache", "true" ); props.setProperty( "file.resource.loader.modificationCheckInterval", "3600" ); Velocity.init (props);


ͨ¹ýfile.resource.loader.cacheÊôÐÔ¿ÉÒÔ°Ñ»º³åÉèÖóÉtrue»òfalse£¬¶ø file.resource.loader.modificationCheckIntervalÊôÐÔÉèÖõÄÊǼì²éÎļþÊÇ·ñ¸Ä±äµÄ¼ä¸ôÃëÊý¡£ÔÚÕâÀïÎÒÎÞ·¨Ïêϸ½éÉÜËùÓеÄÊôÐÔ£¬Çë²Î¿¼Ä£°åÒýÇæµÄÎĵµÁ˽â¸ü¶àÐÅÏ¢¡£

¡ö ½áÊøÓï
Ãâ·ÑµÄ¸ß¼¶Ä£°åÒýÇæʹÎÒÃÇÄܹ»°ÑÄ£°å¹¦ÄܼÓÈëµ½¼¸ºõËùÓеÄJavaÓ¦Óá£ÕâЩģ°åÒýÇæΪ³ÌÐòÔ±ÌṩÁËÒ×ÓõŤ¾ß£¬ÎªÄ£°å±àдÕßÌṩÁ˼òµ¥µÄÄ£°åÓïÑÔ£¬Ê¹µÃ¿ª·¢Õ߸üÓÐÐÅÐıàд³ö¸ßÖÊÁ¿µÄ´úÂë¡£

Ä£°å·ÖÀëÁ˳ÌÐò´úÂëºÍÓ¦ÓõıíÏÖ²¿·Ö£¬¼«´óµØ·½±ãÁ˳ÌÐòÔ±ºÍÄÚÈÝÖÆ×÷ÕߵŤ×÷¡£Ä£°å°Ñ³ÌÐòÔ±´Ó»ìºÏÁË´óÁ¿Îı¾ÐÅÏ¢µÄÔÓÂÒ´úÂëÖнâ·Å³öÀ´£»Ê¹µÃÖÆ×÷Îı¾ÄÚÈݵÄÈËÎÞÐèÃæ¶Ô³ÌÐòÂß¼­£¬¾Í¿ÉÒÔÇáËɵرàдºÍÐÞ¸ÄÄÚÈÝ¡£

Ä£°åÇå³þµØ·ÖÀëÁ˳ÌÐòÂß¼­ºÍÎı¾±íÏÖ´úÂ룬´Ó¶øҲΪÉè¼Æ¸üºÃµÄMVCϵͳÌṩÁË·½±ã¡£Òò´Ë£¬Ä£°åΪÌæ»»ÆäËûÄÚÈÝ·¢²¼ÏµÍ³£¨±ÈÈçJSP£©ÌṩÁËÒ»ÖÖÓÐÎüÒýÁ¦µÄ·½°¸£¬ÒòΪËüÄܹ»ÔÚ²»Ôö¼Ó¸´ÔÓÐÔµÄÇé¿öÏ£¬¸Ä½øÓ¦ÓõÄÕûÌåÉè¼Æ¡£

ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ