Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú ¿ª·¢Ḭ̈߳²È«µÄSpring WebÓ¦ÓÃ

¿ª·¢Ḭ̈߳²È«µÄSpring WebÓ¦ÓÃ

ÕªÒª: Èç¹û¿ª·¢ÕßÕý¿ª·¢»òά»¤»ùÓÚServletµÄWebÓ¦Óã¬ÔòServlet¹æ·¶½¨Òé×îºÃÄܹ»¿´¿´
¡¡¡¡Ç°ÑÔ

¡¡¡¡Èç¹û¿ª·¢ÕßÕý¿ª·¢»òά»¤»ùÓÚServletµÄWebÓ¦Óã¬ÔòServlet¹æ·¶½¨Òé×îºÃÄܹ»¿´¿´¡£ÒòΪËüº¬ÓеÄÄÚÈݶÔÓÚWebÓ¦Óÿª·¢ÕßÀí½âServletÈÝÆ÷µÄ¹¤×÷»úÀíºÜÓаïÖú¡£

¡¡¡¡ÆäÖУ¬¹æ·¶¸ø³öÁËServletÈÝÆ÷ÊÇÈçºÎ´¦Àí¿Í»§ÇëÇóµÄ¡£ServletÈÝÆ÷½«»á¸ù¾Ýweb.xmlÅäÖÃÎļþÖж¨ÒåµÄ¸÷¸öServet¶ø´´½¨ÏàÓ¦µÄµ¥Àý¡£Òò´Ë£¬¶à¸ö¿Í»§ÇëÇó¿ÉÄÜͬʱ·ÃÎÊÕâЩµ¥Àý£¬¼´¶à¸öÏß³Ìͬʱ·ÃÎÊËüÃÇ¡£ÔÚWebÓ¦ÓÃÖб£Ö¤Ḭ̈߳²È«ÊǺÜÖØÒªµÄ¡£¿ª·¢ÕßÓ¦¸Ã¶ÔÕâ¸öÎÊÌâ±£³Ö¾¯Ì裬¶øÇÒ±ØÐëÈ·±£¸÷×ԵĴúÂë±ØÐëÒÔḬ̈߳²È«µÄ·½Ê½ÔËÐС£

¡¡¡¡ÎÂÏ°Ḭ̈߳²È«

¡¡¡¡´ó²¿·ÖJava¿ª·¢Õ߶¼Ó¦¸ÃÌý¹ýsynchronized¹Ø¼ü×Ö¡£ÔÚ²»²ÉÓÃÈκεÚÈý·½¿âµÄÇ°ÌáÏ£¬Java±¾Éí¶ÔÏß³ÌÌṩÁËÔ­ÉúÖ§³Ö£¬¶øÇÒsynchronized¹Ø¼ü×ÖÍùÍùÊÇJavaÓ¦ÓÃÖÐʵÏÖḬ̈߳²È«×îÖØÒªµÄÒòËØ¡£JavaÖеÄͬ²½ÌṩÁË»¥³âÖ§³Ö¡£Í¨¹ýͬ²½Ò»¿é´úÂë»òÕû¸ö·½·¨Äܹ»±£Ö¤Í¬Ê±×î¶àÖ»Óе¥¸öÏß³ÌÖ´ÐÐËü£¬´Ó¶øʵÏÖÁËḬ̈߳²È«¡£ÒýÈëͬ²½¾ßÓи±×÷Ó㬼´×èÈû¡£±ÈÈ磬´ó¹«Ë¾»òÂÉʦ°ì¹«ÊÒµÄǰ̨С½ãͬʱÐèÒª´¦Àíµç»°¡¢Óʼþ¡¢Êܷÿͻ§µÈµÈ¡£ÕâʹµÃËýµÄ¹¤×÷ºÜ·±Ã¦£¬¶øÇÒµ¼ÖÂһЩÊÂÇé²»Äܹ»¼°Ê±´¦Àí¡£

¡¡¡¡ÔÚWebÓ¦ÓÃÖÐÐèÒª¾¯Ìè×èÈû¡£ÊÜͬ²½±£»¤µÄ´úÂë¿éʹµÃÆäͬʱ´¦Àí¿Í»§ÇëÇóµÄÍÌÍÂÁ¿½µµÍ£¬¶øÇҺܶà¿Í»§´¦ÓÚ×èÈû״̬£¬³ý·Çij¿Í»§´¦ÀíÍê³É¡£¶øÇÒ»¥³â²»½ö»á´øÀ´×èÈû£¬»¹»á´øÀ´ËÀËø¡£Í¨³££¬ËÀËøÊDz»¿É»Ö¸´µÄ¡£ÈçÏÂÌõ¼þ½«´¥·¢ËÀËøµÄ·¢Éú£ºÏß³ÌAËøסÁËÏß³ÌBµÈ´ýµÄ×ÊÔ´£¬¶øÇÒÏß³ÌBËøסÁËÏß³ÌAµÈ´ýµÄ×ÊÔ´£¬¼´Ïß³ÌBÒ»Ö±ÔڵȴýÏß³ÌAÊÍ·ÅËø£¬Ïß³ÌAÒ²ÊÇÈç´Ë¡£Òò´Ë£¬¶ÔÓÚ¶àÏ̵߳ÄÓ¦ÓöøÑÔ£¬ËÀËøµÄÔ¤·ÀºÍ´¦Àíͨ³£¶¼ÊǺÜÍ·Ì۵ġ£

¡¡¡¡ÁíÍ⣬synchronized¹Ø¼ü×Ö»¹Ê¹µÃ´óÁ¿µÄͬ²½¶ÔÏóµ½´¦Ê¹Ó㬴ӶøÒýÈëÁËËÀËøµÄ¿ÉÄÜÐÔ¡£±ÈÈ磬java.util.HashtableºÍjava.util.VectorÖÐÌṩµÄ·½·¨¶¼ÊÇÊÜ»¥³â±£»¤µÄ£¬Òò´Ë³ý·ÇȷʵÐèҪʹÓÃËüÃÇ£¬·ñÔò¾¡Á¿²»Ó᣿ª·¢ÕßÖ»ÐèҪʹÓÃjava.util.HashMapºÍjava.util.ArrayList¼´¿É¡£µ±È»£¬java.util.CollectionsÖеÄͬ²½·½·¨Ò²Ê¹ÓÃÁËsynchronized¹Ø¼ü×Ö¡£

¡¡¡¡¾¡¹Ü¿ÉÖØÈë¸üÒ×ÓÚ¹ÜÀí£¬µ«ËüÒýÈëÁËÆäËûÎÊÌâ¡£¿ÉÖØÈë´úÂë±ÜÃâÁËÏ̼߳äÊý¾ÝµÄ¹²Ïí¡£¿¼ÂÇÈçÏ´úÂ루¹ÃÇÒÈÏΪJavaÖеķ½·¨ÊÇḬ̈߳²È«µÄ£©£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>public Double pi() {
¡¡int a = 22;
¡¡int b = 7;
¡¡return new Double(a / b);
}</td></tr></table>
¡¡¡¡²»¹Üͬʱ½øÈë¸Ã·½·¨µÄÏß³ÌÓжàÉÙ£¬Ëü×ÜÊÇḬ̈߳²È«µÄ¡£¸÷¸öÏ̶߳¼Î¬»¤ÁËÊôÓÚ¸÷¸öÏ̵߳ÄÕ»£¬²¢²»Í¬ÆäËûÏ̹߳²Ïí¡£ÆäÖУ¬¸÷¸öÏß³ÌÔÚµ±Ç°·½·¨£¨°üÀ¨¾²Ì¬·½·¨£©Öд´½¨µÄ·½·¨±äÁ¿½öÊôÓÚµ±Ç°Ị̈߳¬¼´´æ´¢ÔÚµ±Ç°Ï̵߳ÄÕ»ÖС£Òò´Ë£¬µ±Ïß³ÌAºÍBͬʱ½øÈëÉÏÊö·½·¨Ê±£¬ËüÃǶ¼½«´´½¨aºÍb¡£ÓÉÓÚÉÏÊö·½·¨²»´æÔÚÊý¾Ý¹²Ïí£¬Òò´ËÉÏÊö·½·¨ÊÇḬ̈߳²È«µÄ¡£Çë×¢Ò⣺22/7ֵͬPIÖµ½Ï½Ó½ü£¬µ«ËüÃDz»ÏàµÈ¡£

¡¡¡¡½ÓÏÂÀ´£¬¿´¿´ÈçºÎÓÅ»¯ÉÏÊö´úÂë°É¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>private Double pi = null;

public Double pi() {
¡¡if (pi == null) {
¡¡¡¡pi = new Double(22 / 7);
¡¡}

¡¡return pi;
}</td></tr></table>
¡¡¡¡¾¡¹Ü¸Ä½øºóµÄ·½·¨Äܹ»Ìá¸ßÐÔÄÜ£¬µ«²¢²»ÊÇḬ̈߳²È«µÄ¡£±ÈÈ磺Èç¹ûpiΪnull£¬¶øÇÒÏß³ÌAºÍBͬʱ½øÈëµÚ4ÐС£Òò´Ë£¬Ïß³ÌAºÍB»áͬʱ²âÊÔpiÊÇ·ñΪ¿Õ£¬ËüÃǶ¼½«·µ»Øtrue¡£½ÓÏÂÀ´£¬Èç¹ûÏß³ÌA¼ÌÐøÖ´ÐУ¨Ïß³ÌBÓÉÓÚijÖÖÔ­Òò±»Ôݹң©£¬È»ºó·µ»Ø¶ÔÄÚ´æµØÖ·µÄÒýÓá£ÆäÖУ¬¸ÃÄÚ´æµØÖ·º¬ÓÐ22/7µÄ½á¹û£¬¼´piÖµ¡£×îºó£¬Ïß³ÌAÍ˳ö·½·¨¡£µ±Ïß³ÌBÔٴνøÈëµÚ5ÐÐʱ£¬ÐµÄÄÚ´æµØÖ·½«¸²¸ÇÔ­ÏȵÄÄÚ´æµØÖ·£¨Ïß³ÌAÌṩµÄ£©¡£Õâ̫ΣÏÕÁË£¬¶øÇÒÕâÖÖÎÊÌâÍùÍùÄÑÓÚµ÷ÊÔ¡£

¡¡¡¡Èç¹ûʹÓÃThreadLocal£¬Ôò²»½öÄܹ»±£Ö¤pi()·½·¨ÊÇḬ̈߳²È«£¬¶øÇÒÄܹ»ÌṩÐÔÄܵĸÄÉÆ¡£ private static ThreadLocal pi = new ThreadLocal();

<table borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <tr> <td>public Double pi() {
¡¡if (pi.get() == null) {
¡¡¡¡pi.set(new Double(22 / 7));
¡¡}
¡¡return (Double)pi.get();
}</td></tr></table>
¡¡¡¡ThreadLocalÀàÄܹ»°ü¹üÈκζÔÏ󣬶øÇÒÄܹ»½«¶ÔÏó°ó¶¨µ½µ±Ç°Ị̈߳¬Ê¹µÃËü½ö½ö¹©µ±Ç°Ïß³ÌʹÓᣵ±Ï̳߳õ´ÎÖ´ÐÐpi()·½·¨Ê±£¬ÓÉÓÚûÓжÔÏó°ó¶¨µ½ThreadLocalʵÀýpiÉÏ£¬Òò´Ëget()·½·¨·µ»Ønull¡£½èÖúÓÚset()·½·¨Äܹ»½«¶ÔÏó°ó¶¨µ½µ±Ç°Ị̈߳¬¶øÇÒ²»¹©ÆäËüÏß³ÌʹÓá£Òò´Ë£¬Èç¹û²»Í¬Ïß³ÌÐèÒª¾­³£·ÃÎÊpi()·½·¨£¬Ôò½èÖúÓÚThreadLocal²»½öÄܹ»±£Ö¤Ḭ̈߳²È«£¬¶øÇÒÄܹ»Ìá¸ßÐÔÄÜ¡£

¡¡¡¡Ä¿Ç°£¬´æÔںܶà¹ØÓÚÈçºÎʹÓÃThreadLocalµÄ×ÊÔ´¡£ÔÚJava 1.4֮ǰ£¬ThreadLocalµÄÐÔÄÜȷʵºÜ²î£¬µ«ÊÇÏÖÒѽâ¾öÁËÕâ¸öÎÊÌâ¡£ÁíÍ⣬ÓÉÓÚ¶ÔThreadLocalµÄ´íÎóÀí½â£¬Ê¹µÃºÜ¶à¿ª·¢Õ߶ÔËüµÄÎóÓá£×¢Ò⣬ÉÏÊöʵÀýʹÓÃThreadLocalµÄ·½Ê½ÊǾø¶ÔûÎÊÌâµÄ¡£ÔÚÒýÈëThreadLocalºó£¬ÉÏÊö·½·¨µÄÐÐΪ²¢Î´·¢Éú¸Ä±ä£¬µ«ÊÇ·½·¨ÒѾ­ÊÇḬ̈߳²È«µÄÁË¡£

¡¡¡¡Í¨¹ý¿ÉÖØÈëµÄ·½Ê½¿ª·¢Ḭ̈߳²È«µÄ´úÂëÒªÇ󿪷¢Õß½÷É÷ʹÓÃʵÀý±äÁ¿»ò¾²Ì¬±äÁ¿£¬ÓÈÆä¶ÔÓÚÐÞ¸ÄÄÇЩÆäËûÏß³ÌÐèҪʹÓõĶÔÏó¶øÑÔ¡£Ä³Ð©³¡ºÏ£¬Ê¹ÓÃͬ²½¿ÉÄܸüΪºÏÊÊ¡£È»¶ø£¬ÎªÊ¶±ðÓÉÓÚͬ²½¶øÒýÆðµÄÓ¦ÓÃÐÔÄÜÆ¿¾±ÍùÍùÖ»ÄܽèÖúÓÚרҵµÄÐÔÄÜÆÀ²â¹¤¾ß»ò¸ºÔزâÊÔÍê³É¡£

¡¡¡¡WebÓ¦ÓÃÖеÄḬ̈߳²È«

¡¡¡¡ÔÚÎÂÏ°Ḭ̈߳²È«µÄ֪ʶºó£¬À´Ñо¿WebÓ¦ÓÃÖÐÊÇÈçºÎḬ̈߳²È«µÄ°É£¡¿ª·¢Õßͨ¹ý´´½¨WebÒ³ÃæÀ´²Ù×÷Êý¾Ý¿â¡£±ÈÈ磬ÔÚWeb²ãºÍÒµÎñÂß¼­²ã¶¼Äܹ»²Ù×÷RDBMS¡£±¾ÎÄʹÓÃHibernate½«ÒµÎñÄ£Ðͳ־û¯µ½Êý¾Ý¿âÖС£ÔÚWeb²ã£¬¿ª·¢Õß¿ÉÒÔʹÓÃTapestry¡¢Wicket¡¢Struts¡¢WebWork¡¢JSF¡¢Spring MVC£¬»òÕßÆäËûÔËÐÐÔÚWebÈÝÆ÷ÖеÄWeb¿ò¼Ü¡£

¡¡¡¡ÖÁÓÚWeb²ãµÄ¾ßÌåʵÏÖ²¢²»ÊDZ¾ÎĵÄÖص㡣±¾ÎĽ«¹Ø×¢ÈçºÎ¹ÜÀíÊý¾Ý¿âÁ¬½Ó£¬ÕâÒ²ÊÇWebÓ¦ÓÃÖд¦ÀíḬ̈߳²È«ÎÊÌâÊǾ­³£Òª¿¼ÂǵÄ×ÊÔ´¡£Êý¾Ý¿âÁ¬½Ó¶ÔÏ󣬱ÈÈçÁ¬½Ó¡¢½á¹û¼¯¡¢Statement¡¢Hibernate Session£¬ÊÇÓÐ״̬¶ÔÏó¡£µ±È»£¬ËüÃDz»ÊÇḬ̈߳²È«µÄ£¬Òò´Ë²»Äܹ»Í¬Ê±¹©¶à¸öÏ̷߳ÃÎÊ¡£ÔÚ±¾ÎÄÇ°ÃæÒѾ­Ìáµ½£¬¿ª·¢ÕßÓ¦¾¡Á¿±ÜÃâʹÓÃͬ²½¡£ÎÞÂÛÊÇsynchronized¹Ø¼ü×Ö£¬»¹ÊÇÄÇЩͬ²½ÀࣨHashtable»òVector£©£¬Ó¦¾¡Á¿±ÜÃâʹÓá£Òò´Ë£¬Èç¹ûʹÓÿÉÖØÈ룬Ôò²»Óô¦Àí×èÈû»òËÀËø¡£

¡¡¡¡µ±È»£¬Í¨¹ý¿ÉÖØÈëʵÏÖḬ̈߳²È«ÒÔ·ÃÎÊÊý¾Ý¿â²¢²»ÊǼþ¼òµ¥µÄ¹¤×÷¡£±ÈÈ磬ÓÐЩ¿ª·¢Õß¿ÉÄÜ»áÔÚServletÈÝÆ÷ÅäÖÃÖÐÌí¼Ó¹ýÂËÆ÷¡£Òò´Ë£¬ÔÚ¿Í»§ÇëÇóµ½À´Ê±£¬¹ýÂËÆ÷½«´´½¨JDBCÁ¬½Ó»òHibernate Session£¬²¢½èÖúÓÚThreadLocalÀའ«ËüÃǰ󶨵½µ±Ç°Ïß³ÌÖУ¬´Ó¶ø¹©ÒµÎñÂß¼­Ê¹Óá£Èç¹ûÖ±½ÓʹÓÃJ2EE API£¬Ôò¿ª·¢Õß³ýÁËÐèÒª×öºÜ¶àͬҵÎñÂß¼­Î޹صIJÙ×÷Í⣬»¹ÐèÒª¹ÜÀíÊÂÎñ¡¢DB´íÎóµÈµÈ¿ª·¢ÄÚÈÝ¡£Çë×¢Ò⣬ÕâЩͬҵÎñÂß¼­Î޹صIJÙ×÷µÄά»¤¹¤×÷ÍùÍùºÜ·Ñʱ¼ä¡£




¡ü·µ»ØĿ¼
ǰһƪ: JavaBeanʵÏÖ¶àÎļþÉÏ´«µÄÁ½ÖÖ·½·¨
ºóһƪ: ÉîÈëdz³ö»ùÓÚJavaµÄ½âÊÍÆ÷Éè¼Æģʽ