Img #1 : |
½ºÆ®·µÃ÷2 ¾ÆÅ°ÅØó °³³äµµ |
´õ Æí¸®ÇÑ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ÇÁ·¹ÀÓ¿öÅ© ½ºÆ®·µÃ÷2
È¥ÀâÇÑ À¥ °³¹ß ¹æ¹ýÀÌ ³¹«ÇÏ´ø À¥ °³¹ß Ãʱ⿡ ½ºÆ®·µÃ÷´Â ÇϳªÀÇ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ±âÁØÀ» ¸¶·ÃÇÏ´Â ¼º°ú¸¦ °Åµ×°í, ±×¿¡ µû¶ó ÇöÀç±îÁöµµ ³Î¸® »ç¿ëµÇ°í ÀÖ´Ù. ½ºÆ®·µÃ÷°¡ ¿ÀǼҽºÀÇ Àû¿ë °¡´É¼ºÀ» ÇÑÃþ ³ôÀÎ ´öºÐ¿¡ À¯¿ëÇÑ ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©µéÀÌ ´Ù¼ö ź»ýÇß°í, Áö¼ÓÀûÀÎ °ü½É°ú ÇÔ²² ¿¬±¸µÇ°í ÀÖ´Ù. °³¹ßÀÚ´Â ¾÷¹« ¿µ¿ª¿¡ µû¶ó ´Ù¾çÇÑ ±â¼úÀ» È¥ÇÕÇؼ »ç¿ëÇØ¾ß ÇÏ´Â ¾î·Á¿òÀ» °Þ°Ô µÈ´Ù. ÀÌ·± °³¹ßÀÚÀÇ °í¹ÎÀ» ÇØ°áÇϱâ À§ÇØ »õ·Ó°Ô ź»ýÇÑ ½ºÆ®·µÃ÷2´Â ±â¼ú°ú ±â¼úÀ» ½±°Ô ¿¬°áÇÏ°í °³¹ß ÀÚü¸¦ ´Ü¼øÈÇÏ·Á´Â ÃÖ±Ù Æ®·»µå°¡ ÃæºÐÈ÷ ¹Ý¿µµÈ ¸ð½ÀÀ» ³ªÅ¸³»°í ÀÖ´Ù.
ÇööÁÖ nockarm@gmail.com
½ºÆ®·µÃ÷2¿¡ ´ëÇØ À̾߱âÇϱâ Àü¿¡ ¸ÕÀú À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¶§ º¸ÆíÀûÀ¸·Î Áß¿ä½ÃÇÏ´Â ºÎºÐÀÌ ¹«¾ùÀÎÁö¸¦ ¸ÕÀú ÆľÇÇÏ´Â °ÍÀÌ ¿ì¸®°¡ ¿øÇÏ´Â ¸ð½ÀÀÇ ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌÇØÇÏ´Â µ¥ µµ¿òÀÌ µÉ °ÍÀ¸·Î »ý°¢ÇÑ´Ù. ´ÙÀ½Àº ÀÌ·¯ÇÑ ³»¿ëÀ» °£·«ÇÏ°Ô Àû¾îº» °ÍÀÌ´Ù.
- È¸é µðÀÚÀÎÀÌ ½¬¿ö¾ß ÇÑ´Ù. - ȯ°æ ¼³Á¤ÀÌ Ã¼°èÀûÀÌ°í °£ÆíÇØ¾ß ÇÑ´Ù. - ¹°¸®ÀûÀÎ µ¥ÀÌÅÍ¿Í ¸ðµ¨ µ¥ÀÌÅÍÀÇ º¯È¯ÀÌ ½¬¿ö¾ß ÇÑ´Ù. - ºñÁî´Ï½º ·ÎÁ÷À» ±¸¼ºÇÏ´Â ´Ù¾çÇÑ ±â¼úµéÀÌ ¿øÇÏ´Â °÷¿¡ ½±°Ô »ç¿ëµÉ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. - °³¹ß ÀÚü°¡ ´Ü¼øÇØ¾ß ÇÑ´Ù. - ´Ù¸¥ ±â¼ú·Î º¯È¯ÇÏ·Á ÇÒ ¶§ ½±°í Æí¸®ÇÏ°Ô ÀÛ¾÷ÀÌ ÀÌ·ïÁ®¾ß ÇÑ´Ù. - ½¬¿î µð¹ö±ë°ú Å×½ºÆ® ȯ°æÀ» Á¦°øÇØ¾ß ÇÑ´Ù. - ¸¸¾à °¢°¢ÀÇ ³»¿ë Áß Á¦°øµÇÁö ¾Ê´Â °ÍÀÌ ÀÖ´Ù¸é, À̸¦ Á¦°øÇÏ´Â ´Ù¸¥ ±â¼ú°ú ½±°Ô Á¢¸ñÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
ÀÚ¹Ù ¾ð¾î·Î À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â °úÁ¤¿¡¼´Â ¸Å¿ì ´Ù¾çÇÑ ±â¼úÀ» ¿©·¯ °¡Áö Çü½ÄÀ¸·Î »ç¿ëÇϱ⠶§¹®¿¡, À§¿¡¼ ³ª¿ÇÑ °ü½É »çÇ×µéÀ» ¸¸Á·½ÃÅ°±â À§ÇØ ±â¼úÀ» Àß »ç¿ëÇÏ´Â °ÍÀÌ ¾ó¸¶³ª ¾î·Á¿î ÀÛ¾÷ÀÎÁö¸¦ Àß ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ÇÁ·¹ÀÓ¿öÅ©¶õ À§¿Í °°Àº ÀÛ¾÷ÀÇ ¿øÈ°ÇÑ ¼öÇàÀ» À§ÇØ ´Ù¾çÇÑ ±â¼úÀ» Ãß»óÈ ¹× ÆÐÅÏÈÇÔÀ¸·Î½á ¿©·¯ ȯ°æ¿¡¼µµ ¾ÈÁ¤¼º°ú ¼öÇà ´É·ÂÀ» È®º¸ÇÏ°í, ±¸Çö ÀÚü¿¡ ´õ ÁýÁßÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ÇϳªÀÇ ¶óÀ̺귯¸®ÀÌÀÚ ¾ÖÇø®ÄÉÀ̼ÇÀÌ°í ¶ÇÇÑ È¯°æÀÌ´Ù.
¼¼¿ùÀÌ Áö³ª¸é¼ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ±â¼úÀº ¹Ù²îÁö¸¸ ÀÌ·¯ÇÑ ¿ä±¸»çÇ×Àº º¯ÇÔ¾øÀ» °ÍÀÌ´Ù. ÇÁ·¹ÀÓ¿öÅ©´Â ÀÌ·¯ÇÑ ¸ñÀûÀ» ÀÌ·ç±â À§ÇØ ½Ã´ë°¡ ¿øÇÏ´Â ¸ð½ÀÀ¸·Î ²÷ÀÓ¾øÀÌ º¯¸ðÇØ °¥ °ÍÀ̶ó »ý°¢ÇÑ´Ù.
ÀÌ ±Û¿¡¼ ´Ù·ê ½ºÆ®·µÃ÷2´Â ¿ÀǽÉÆ÷´Ï(OpenSymphony) À¥¿öÅ©(WebWork)ÀÇ ¶Ù¾î³ ¾ÆÅ°ÅØó¿Í ¾ÆÆÄÄ¡(Apache) ½ºÆ®·µÃ÷(Struts) Ä¿¹Â´ÏƼ°¡ ¸¸³ª ź»ýÇÑ »õ·Î¿î ÇÁ·¹ÀÓ¿öÅ©ÀÌ´Ù. ½ºÆ®·µÃ÷2´Â °£°áÇÑ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀ» ¸ñÀûÀ¸·Î ÇÏ°í ÀÖ´Ù. ¾÷¹«¸¦ ±¸ÇöÇÏ´Â °ÍÀº ¼Ò½º Äڵ带 »ý¼ºÇÏ´Â °Í ¿Ü¿¡µµ µð¹ö±ë°ú Å×½ºÆ® ÀÛ¾÷À» Æ÷ÇÔÇÏ°í ÀÖ´Ù. °³¹ßÀÌ °£°áÇÏ°í ½±´Ù´Â °ÍÀº ÄÚµùÀÌ ½±´Ù´Â °Í»Ó¸¸ ¾Æ´Ï¶ó, µð¹ö±ë°ú Å×½ºÆ® ¿ª½Ã ½±´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ·¯ÇÑ È¯°æÀ» °³¹ßÀÚ¿¡°Ô Á¦°øÇϱâ À§ÇØ ÇÁ·¹ÀÓ¿öÅ©°¡ ¸Ã¾Æ¾ß ÇÒ Ã¥ÀÓÀº ´õ¿í Ä¿Áö°Ô µÈ´Ù.
½ºÆ®·µÃ÷2ÀÇ ÇÙ½É ±â´É
ÀÚ¹Ù À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇØ Ã³À½ ¹è¿ì´Â ³»¿ëÀº ÀÚ¹Ù, ¼ºí¸´, JSP, JDBC µîÀÌ´Ù. ÀÌ ±â¼úµéÀº °ü·Ã ¼ÀûÀÇ ¿¹Á¦¸¦ ÅëÇØ ÇнÀÇÏ°Ô µÇ´Âµ¥, ÀϹÝÀûÀ¸·Î ±× ¶§¿¡ ÇнÀÇÑ ³»¿ëÀ» ±âÁØÀ¸·Î °³¹ß¿¡ ÀÓÇϹǷΠÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» »õ·Ó°Ô ¹è¿ì°í Àû¿ëÇϱⰡ ½±Áö ¾Ê´Ù°í ´À³¥ ¼ö ÀÖ´Ù. ±×·¯³ª ½ÇÁ¦·Î´Â ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇØ ÀÚ¹Ù À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â °ÍÀÌ ¸Å¿ì Èï¹Ì·Î¿î ÀÛ¾÷ÀÓÀ» ¾Ë°Ô µÈ´Ù. ±×·¸´Ù¸é ½ºÆ®·µÃ÷2ÀÇ ÇÙ½É ±â´ÉÀº ¹«¾ùÀϱî? ¿ä¾àµÈ ³»¿ëÀ» ¸ÕÀú »ìÆ캸ÀÚ.
¡Ü MVC(Model-View-Controller) ÇÁ·¹ÀÓ¿öÅ© - ½ºÆ®·µÃ÷2´Â ½ºÆ®·µÃ÷1°ú´Â ¿ÏÀüÈ÷ ´Ù¸¥ MVC ¾ÆÅ°ÅØó¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. 2005³â ÀÚ¹Ù¿ø(JavaOne)¿¡¼ ½ºÆ®·µÃ÷Ti(Titanium) ÃʾÈÀ» ±¸¼ºÇØ º»°ÝÀûÀÎ ½ºÆ®·µÃ÷2 °³¹ßÀÌ ½ÃÀ۵Ǿú´Ù.
¡Ü À¥¿öÅ©2(WebWork2)ÀÇ ¾ÆÅ°ÅØó ä¿ë - ½ºÆ®·µÃ÷2´Â °£°áÇÔ°ú ¼¼·Ã¹Ì, Åø ģȼº°ú ÆäÀÌÁö Ç÷οìÀÇ ÀåÁ¡À» ½ºÆ®·µÃ÷1°ú °áÇÕÇß´Ù. ½ºÆ®·µÃ÷2ÀÇ ¾ÆÅ°ÅØó´Â À¥¿öÅ©2ÀÇ ¾ÆÅ°ÅØó¸¦ ±×´ë·Î Àû¿ëÇÏ°í ÀÖ´Ù.
¡Ü POJO ±â¹ÝÀÇ ÀÛ¾÷°ú Á¦·Î ÄÁÇDZԷ¹ÀÌ¼Ç ÁöÇâÀ¸·Î Á÷°üÀûÀÎ °³¹ß °¡´É - ½ºÆ®·µÃ÷2´Â Á÷°üÀûÀ¸·Î °³¹ßÇÒ ¼ö ÀÖµµ·Ï µðÀÚÀεǾú´Ù. POJO(Plain Old Java Object) ±â¹ÝÀ¸·Î ½±°í À¯¿¬ÇÏ°Ô °³¹ßÇÒ ¼ö ÀÖÀ¸¸ç ¹«¾ùº¸´Ù ȯ°æ¼³Á¤ÀÇ ³»¿ëÀÌ °£´ÜÇØÁø °ÍÀÌ Å« ÀåÁ¡ÀÌ´Ù. ½ºÆ®·µÃ÷2´Â Á¦·Î ÄÁÇDZԷ¹À̼Ç(Zero Configuration)À» ÁöÇâÇÑ´Ù. ±âº» °ªÀ» »ç¿ëÇØ ¸¹Àº ¼³Á¤À» »ý·«ÇÒ ¼ö ÀÖÀ¸¸ç ¼Ò½º »ó¿¡ ¾î³ëÅ×À̼Ç(Annotation)À» »ðÀÔÇØ ¼³Á¤ ÆÄÀÏ¿¡¼ Á¤ÀÇÇØ¾ß ÇÒ ³»¿ëÀ» »ý·«Çϰųª À¯È¿¼º °Ë»ç, ÀÎÅͼÁÅÍÀÇ ±â´ÉÀ» ¾î³ëÅ×À̼ÇÀ¸·Î Á¦°øÇÑ´Ù. ½ºÆ®·µÃ÷2´Â ¿ÍÀϵåÄ«µå ¸ÅÇÎÀ» »ç¿ëÇØ ÆÐÅÏÀ» °¡Áø ¿©·¯ ¾×¼ÇÀ» ÇϳªÀÇ Á¤ÀÇ·Î ÇÔÃàÇÒ ¼ö ÀÖ´Â ±â´Éµµ Á¦°øÇÑ´Ù.
¡Ü À¥ ÄÁÅ×ÀÌ³Ê Àç½ÃÀÛ ¾øÀÌ ½Å¼ÓÇÑ ¸®·Îµù Á¦°ø - ½ºÆ®·µÃ÷2´Â ½Å¼ÓÇÑ ¸®·Îµù ±â´ÉÀ» Á¦°øÇÑ´Ù. º¯°æµÈ ȯ°æ¼³Á¤ ³»¿ëÀÌ À¥ ÄÁÅ×À̳ʸ¦ ´Ù½Ã ½ÃÀÛÇÏÁö ¾Ê¾Æµµ ¸®·ÎµåµÇ¹Ç·Î °³¹ß ½Ã¿¡ ¸Å¿ì À¯¿ëÇÏ´Ù.
¡Ü POJO ±â¹ÝÀ¸·Î ÇÁ·¹ÀÓ¿öÅ©¿¡ Á¾¼ÓÀûÀÌÁö ¾ÊÀ¸¸ç Å×½ºÆ®°¡ ½±´Ù - ½ºÆ®·µÃ÷2ÀÇ °¡Àå ÇÙ½É ±â´ÉÀ¸·Î º¼ ¼ö ÀÖ´Â ¾×¼Ç Ŭ·¡½º¸¦ POJO·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µðÀÚÀÎÇÏ¿© ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇϸ鼵µ ÇÁ·¹ÀÓ¿öÅ©¿¡ Á¾¼ÓµÇÁö ¾Ê´Â´Ù. ¾×¼Ç Ŭ·¡½º´Â HTTP¿¡ µ¶¸³ÀûÀ̹ǷΠMock °´Ã¼¿¡ ÀÇÁ¸ÇÏÁö ¾Ê°í ¼Õ½±°Ô Å×½ºÆ®ÇÒ ¼ö ÀÖ´Â ÀÌÁ¡À» °¡Áø´Ù.
¡Ü ÀÎÅͼÁÅÍÀÇ Áö¿øÀ¸·Î ¾×¼Ç¿¡ ´ëÇÑ AOP(Aspect-Oriented Pro gramming) ±â´É Áö¿ø - ½ºÆ®·µÃ÷2´Â HTTP ¿äûÀ» Áß°£¿¡ °¡·Îä¼ ¾×¼Ç ½ÇÇà Àü°ú ÈÄ¿¡ ½ÇÇàÇÒ Äڵ带 º°µµÀÇ °èÃþÀ¸·Î ±¸¼ºÇÒ ¼ö ÀÖ´Â ÀÎÅͼÁÅ͸¦ »ç¿ëÇÑ´Ù. ÀÌ´Â AOP¿Í °°Àº °³³äÀ¸·Î ´Ù¾çÇÑ ÀÎÅͼÁÅ͸¦ Á¦°øÇÏ°í ÀÖÀ¸¸ç, ¾ÆÁÖ °£´ÜÇÑ ¼³Á¤À¸·Î ¿øÇÏ´Â ÀÎÅͼÁÅ͸¸À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é, ¿äûÀÇ ÆĶó¹ÌÅ͸¦ ¸ðµ¨ µ¥ÀÌÅÍ·Î º¯È¯ÇÏ´Â ´Ü¼øÇÏ°í Áö·çÇÑ ÀÛ¾÷À» ÀÚµ¿ÈÇÒ ¼ö ÀÖ´Ù.
¡Ü °·ÂÇÑ ÅÂ±× ¶óÀ̺귯¸® Á¦°ø - ½ºÆ®·µÃ÷2´Â ´Ù¾çÇÑ ÅÂ±× ¶óÀ̺귯¸®¸¦ Á¦°øÇÑ´Ù. Å׸¶¿Í ÅÛÇø´À» »ç¿ëÇØ ÄÄÆ÷³ÍÆ® ±â¹ÝÀÇ ÀÛ¾÷À» ÇÒ ¼ö ÀÖµµ·Ï Àç»ç¿ë¼ºÀÌ ³ôÀº ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù.
¡Ü ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Â Ajax ±â´É Á¦°ø - ½ºÆ®·µÃ÷2´Â Dojo ÇÁ·¹ÀÓ¿öÅ©¸¦ Æ÷ÇÔÇÏ°í ÀÖ°í, Ajax Å׸¶¸¦ Áö¿øÇϴ ű׸¦ »ç¿ëÇØ Æ¯º°ÇÑ ÀÛ¾÷ ¾øÀÌ Ajax ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ÄÄÆ÷³ÍÆ® ±â¹ÝÀÇ °³³äÀ» Àû¿ëÇϱⰡ ÁÁ°í ´õ dzºÎÇÑ ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé ¼ö ÀÖ´Ù.
¡Ü ´Ù¸¥ ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÀÎÅÍÆäÀ̽º Á¦°øÀ¸·Î ½¬¿î ¿¬µ¿ - ½ºÆ®·µÃ÷2´Â ÀڽŠ¿Ü¿¡µµ À¯¿ëÇÑ ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©¸¦ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Ç÷¯±×ÀÎÀ» Á¦°øÇÑ´Ù. ºñÁî´Ï½º µ¥ÀÌÅ͸¦ Â÷Æ®·Î Ãâ·ÂÇÏ´Â JFreeChart, ¸®Æ÷Æ® Ãâ·ÂÀ» À§ÇÑ JasperReport, ÆäÀÌÁö ·¹À̾ƿôÀ» ±¸¼ºÇÒ ¶§ µµ¿òÀ» ÁÙ ¼ö ÀÖ´Â Sitemesh, DI(Dependency Injection) ¹× OR Mapper¿Í ÇÔ²² »ç¿ëÇϱâ À§ÇÑ Æ®·£Àè¼Ç °ü¸® µîÀ» À§ÇÑ Spring, Ajax ÇÁ·Î±×·¡¹ÖÀÇ µ¥ÀÌÅÍ Àü¼ÛÀ» À§ÇÑ JSon°ú °°Àº ´Ù¾çÇÑ Ç÷¯±×ÀÎÀ» Á¦°øÇÑ´Ù. Ç÷¯±×ÀÎÀº Áö±Ýµµ °è¼Ó ¸¸µé¾îÁö°í ÀÖ´Ù.
¡Ü ÀÇÁ¸¼º ÁÖÀÔ ÄÁÅ×À̳ʸ¦ »ç¿ëÇØ ÀÇÁ¸¼º °áÇÕµµ¸¦ ³·Ãã - °´Ã¼ °£ÀÇ ÀÇÁ¸¼º °áÇÕµµ¸¦ ³·Ãß±â À§ÇØ ÀÇÁ¸¼º ÁÖÀÔ ÄÁÅ×À̳ʸ¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ½ºÆ®·µÃ÷2 ³»ºÎÀÇ ÁÖ¿ä °´Ã¼¸¦ ´Ù·ç±â À§ÇØ ±¸±Û Guice ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏ°í ÀÖÀ¸¸ç ½ºÇÁ¸µ°ú °°Àº ¶Ù¾î³ ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¡Ü ´Ù¾çÇÑ ºä Á¦°ø - ½ºÆ®·µÃ÷2´Â JSP ¿Ü¿¡µµ FreeMarker, Velocity¿Í °°Àº ´Ù¾çÇÑ ºä ±â¼úÀ» Áö¿øÇÑ´Ù. ÃÖ±Ù ÀÚ¹Ù½ºÅ©¸³Æ® ±â¹ÝÀÇ UI ÇÁ·¹ÀÓ¿öÅ©¿Íµµ ¿¬µ¿Çϱ⠽±´Ù.
¡Ü À¯¿ëÇÑ Ç¥Çö½Ä ¾ð¾î Á¦°ø - ½ºÆ®·µÃ÷2´Â OGNL(Object Graph Navigation Language)À» Á¦°øÇÏ¿©, ½ºÆ®·µÃ÷2ÀÇ Å±׸¦ »ç¿ëÇÒ ¶§ µ¥ÀÌÅÍÀÇ Ç¥ÇöÀ» ¸Å¿ì ÀÚÀ¯·Ó°Ô Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ½ºÆ®·µÃ÷2 ÅÂ±× ´ë½Å JSTL°ú °°Àº Ç¥Çö½Ä ¾ð¾î¸¦ ´ë½Å »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
¾ÆÅ°ÅØó ºÐ¼®
Áö±Ý±îÁö »ìÆ캻 °Íó·³ ½ºÆ®·µÃ÷2´Â ´Ù¾çÇÑ ±â´ÉÀ» Á¦°øÇÏÁö¸¸ À¥ °³¹ßÀÇ ±âº»¿¡ Ãæ½ÇÇÏ°Ô µðÀÚÀεǾî À¥ °³¹ßÀ» óÀ½ ½ÃÀÛÇÏ´Â °³¹ßÀڵ鵵 ¾î·Á¿ò ¾øÀÌ Á¢±Ù °¡´ÉÇÑ ¼º¼÷ÇÑ ÇÁ·¹ÀÓ¿öÅ©¶ó ÇÒ ¼ö ÀÖ´Ù. <Img#1>Àº ½ºÆ®·µÃ÷2¸¦ ±¸¼ºÇÏ°í ÀÖ´Â ÇÙ½É ¾ÆÅ°ÅØóÀÇ ¸ð½ÀÀÌ´Ù.
½ºÆ®·µÃ÷2ÀÇ ¾ÆÅ°ÅØó´Â ½ºÆ®·µÃ÷1º¸´Ù º¹ÀâÇØÁ³´Ù. ÀÌ´Â °³¹ßÀÚ°¡ ´õ ½±°í °£´ÜÇÑ ÀÛ¾÷À¸·Î °í±Þ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖµµ·Ï ¸¹Àº ºÎºÐÀ» ÇÁ·¹ÀÓ¿öÅ©°¡ Ã¥ÀÓÁö°í Àֱ⠶§¹®ÀÌ´Ù. <±×¸² 1>ÀÇ ÇÙ½É °³³ä Áß¿¡¼ °³¹ßÀÚÀÇ ¼ÕÀ» °ÅÃÄ¾ß ÇÏ´Â ºÎºÐÀº º¸Åë struts.xml, Action, TemplateÀ¸·Î, ¡®User created¡¯¶ó°í Á¤ÀÇµÈ °÷¿¡ ÇØ´çÇÑ´Ù. ½ºÆ®·µÃ÷2¸¦ ÀÌ¿ëÇØ °³¹ßÇÒ ¶§ °³¹ßÀÚ°¡ ÀÛ¾÷ÇÏ´Â ºÎºÐÀº ¾×¼Ç°ú ºä(JSP µî), ±×¸®°í À̵éÀÇ °ü°è¸¦ Á¤ÀÇÇÒ struts.xmlÀÌ´Ù.
±×·³ ½ÇÁ¦·Î ½ºÆ®·µÃ÷2¸¦ ÀÌ¿ëÇØ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÑ´Ù¸é ¾î¶² ¸ð½ÀÀÌ µÇ´ÂÁö¸¦ ¾ÆÁÖ °£´ÜÇÑ ¿¹·Î ¼³¸íÇÑ´Ù. ´ÙÀ½Àº ¾ÆÁÖ Àͼ÷ÇÑ ¿¹Á¦·Î, ȸ鿡 ¡°Hello World¡±¸¦ Ãâ·ÂÇÏ´Â ½ºÆ®·µÃ÷2 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ´Ù.
<¸®½ºÆ®1> HelloWorld ¾×¼Ç Ŭ·¡½º (HelloWorldAction.java)
package example;
public class HelloWorldAction {
private String message;
public String execute() throws Exception { message = "Hello World"; return "success"; }
public String getMessage() { return this.message; }
public void setMessage(String message) { this.message = message; } }
<¸®½ºÆ®2> °á°ú ÆäÀÌÁö (HelloWorld.jsp)
<%@ page contentType="text/html; charset=utf-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head><title>Struts2 Example</title></head> <body> <s:property value="message" /> </body> </html>
<¸®½ºÆ®3> ½ºÆ®·µÃ÷2ÀÇ È¯°æ¼³Á¤ ÆÄÀÏ (struts.xml)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default" namespace=""> <action name="helloWorld" class="example. HelloWorldAction"> <result>/HelloWorld.jsp</result> </action> </package> </struts>
ÀÌ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÁÅؽºÆ®¸íÀÌ [struts2] ¶ó°í °¡Á¤ÇßÀ» °æ¿ì, ÀÌ·¸°Ô ¸¸µé¾îÁø ¾×¼Ç Ŭ·¡½º¸¦ À¥¿¡¼ ½ÇÇàÇÏ·Á¸é À¥ ºê¶ó¿ìÀúÀÇ URL â¿¡ http://localhost:8080/struts2/helloWorld.action À» ÀÔ·ÂÇÑ´Ù. struts.xml ¿¡¼ <action> ¿ä¼ÒÀÇ name ¼Ó¼º¿¡ Á¤ÀÇÇÑ [helloWorld] ¿¡ ½ºÆ®·µÃ÷2ÀÇ ±âº» È®Àå¸íÀÎ [.action] À» ºÙÀÎ °ªÀÌ ¾×¼ÇÀ» È£ÃâÇÒ urlÀÌ µÈ´Ù. À̸¦ ½ÇÇàÇϸé ȸ鿡´Â [Hello World] °ªÀÌ Ãâ·ÂµÈ´Ù.
½Å±âÇÏ°Ôµµ ½ºÆ®·µÃ÷2ÀÇ ¾×¼Ç Ŭ·¡½º´Â ¾î¶°ÇÑ ´Ù¸¥ Ŭ·¡½º¸¦ »ó¼Ó¹ÞÀº ÀûÀÌ ¾ø°í, ÇÁ·¹ÀÓ¿öÅ©¿¡ Á¾¼ÓµÈ ´Ù¸¥ Ŭ·¡½º ŸÀÔÀÇ ÆĶó¹ÌÅÍ¿Í ¹Ýȯ °ªµµ »ç¿ëÇÏÁö ¾ÊÀº ä ¿øÇÏ´Â ÀÛ¾÷ÀÌ ÀÌ·ïÁ³´Ù. ¹Ù·Î ÀÌ°ÍÀÌ ½ºÆ®·µÃ÷2°¡ ÁöÇâÇÏ´Â POJO ±â¹ÝÀÇ °£°áÇÑ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÇ ÇÑ ¸ð½ÀÀÌ´Ù.
±×·¸´Ù¸é À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀº Ãâ·Â À§ÁÖ°¡ ¾Æ´Ï¶ó ȸ鿡¼ ÀÔ·ÂÇÑ °ªÀ» ÆĶó¹ÌÅÍ·Î ³Ñ°Ü ºñÁî´Ï½º ·ÎÁ÷À» ó¸®ÇØ¾ß Çϴµ¥, request °´Ã¼¿¡ ÀúÀåµÇ¾î ÀÖ´Â ÆĶó¹ÌÅÍ´Â ¾î¶»°Ô »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ±Ã±ÝÇØÁú °ÍÀÌ´Ù. JSP¿¡¼ »ç¿ëÀÚ ¾ÆÀ̵𸦠ÀԷ¹ÞÀ» ÅؽºÆ® Çʵ尡 ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.
<s:textfield name="userId" />
ÀÌ´Â HTMLÀÇ <input type="text" name="userId" />¿Í µ¿ÀÏÇÑ ³»¿ëÀ̸ç, ½ÇÁ¦·Î ÀÌ¿Í °°ÀÌ »ç¿ëÇصµ ÀÔ·Â ½Ã¿¡´Â ¶È°°ÀÌ ÀÛµ¿ÇÑ´Ù. ±×·¯³ª Ãâ·Â ½Ã¿¡µµ ¾×¼Ç Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼ °ªÀ» ÄÁÆ®·Ñ¿¡ Ãâ·ÂÇÏ·Á¸é ½ºÆ®·µÃ÷2 ű׸¦ »ç¿ëÇÏ´Â °ÍÀÌ À¯¸®ÇÏ´Ù. ÀÌ·¸°Ô ÀÔ·ÂµÈ "userId" ÆĶó¹ÌÅÍ °ªÀ» ½ºÆ®·µÃ÷2ÀÇ ¾×¼Ç Ŭ·¡½º¿¡¼ »ç¿ëÇÏ·Á¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ÀÌ¿ëÇÑ´Ù.
ÀÔ·Â ÆĶó¹ÌÅÍ¿Í µ¿ÀÏÇÑ À̸§ÀÇ ¾×¼Ç Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼ¸¦ Á¤ÀÇÇØ ³õÀ¸¸é, ÀÌ ÇÁ·ÎÆÛƼ¿¡ ÆĶó¹ÌÅÍ °ªÀÌ ÀÚµ¿À¸·Î ÀúÀåµÈ´Ù. ½ÇÁ¦·Î ½ºÆ®·µÃ÷2¸¦ »ç¿ëÇØ ÆĶó¹ÌÅ͸¦ ´Ù·ê °æ¿ì¿¡´Â ÀÌ¿Í °°Àº ¹æ¹ýÀ» »ç¿ëÇÏÁö ¾ÊÁö¸¸, ºñ±³¸¦ À§ÇÑ ´Ù¸¥ ¹æ¹ýÀ¸·Î ±âÁ¸ ¹æ½Äó·³ request °´Ã¼¸¦ ¾ò¾î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ¿äû Á¤º¸°¡ ¾×¼Ç ÄÁÅؽºÆ®¿¡ ÀúÀåµÇ´Â °ÍÀ» º¸¿©ÁÖ±â À§ÇÑ °ÍÀÌ´Ù.
½ºÆ®·µÃ÷2´Â application, session, request, parameter µîÀÇ Á¤º¸¸¦ ½º·¹µå ·ÎÄÃÀÎ ActionContext ¿¡ ÀúÀå °ü¸®ÇÔÀ¸·Î½á ¾×¼Ç Ŭ·¡½º¸¦ POJO·Î ¸¸µé ¼ö ÀÖ´Â ±â¹ÝÀ» Á¦°øÇßÀ¸¸ç, ¿äû ÆĶó¹ÌÅ͸¦ ¾×¼Ç Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼ¿¡ ÀÚµ¿À¸·Î ÀúÀåÇÏ´Â ±â´ÉÀº ½ºÆ®·µÃ÷2ÀÇ ÀÎÅͼÁÅÍ Áß "ÆĶó¹ÌÅÍ ÀÎÅͼÁÅÍ" ¸¦ ÀÌ¿ëÇÑ °ÍÀÌ´Ù. ÀÌ ¿Ü¿¡µµ ´Ù¾çÇÑ ÀÎÅͼÁÅ͸¦ ÅëÇØ °³¹ßÀÚ°¡ ½±°Ô °³¹ßÇÒ ¼ö ÀÖ´Â ±â¹Ý ȯ°æÀÌ Á¦°øµÇ°í ÀÖ´Ù. ÀÌó·³ ½ºÆ®·µÃ÷2 °¡ ÇÁ·¹ÀÓ¿öÅ© ·¹º§¿¡¼ Á¦°øÇÏ´Â ±â´É ´öºÐ¿¡ ½ÇÁ¦ °³¹ßÀÌ ¸Å¿ì ½±°Ô ÀÌ·ïÁüÀ» ¾Ë ¼ö ÀÖ´Ù.
¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ© ¿Àü
<¸®½ºÆ®4> ÆĶó¹ÌÅÍ°¡ ¾×¼Ç Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼ¿¡ ÀÚµ¿ ÀúÀå
public class MyAction { private String userId; public String execute() throws Exception { System.out.println( userId ); return "success"; } //getter & setter methods... }
<¸®½ºÆ®5> request °´Ã¼·ÎºÎÅÍ ÆĶó¹ÌÅ͸¦ ¾ò´Â ¹æ¹ý
public class MyAction { public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); System.out.println( request.getParameter("userId") ); return "success"; } }
ÇöÀç Ant, Log4J, ½ºÆ®·µÃ÷, ½ºÆ®·µÃ÷2, WebWork2, ·çºñ¿Â·¹ÀÏÁî, ½ºÇÁ¸µ, ÇÏÀ̹ö³×ÀÌÆ®, iBatis, JSF, Acegi µîÀÇ ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©°¡ ¸¹Àº °ü½ÉÀ» ¹Þ°í ÀÖ´Ù. ¶ÇÇÑ È¸é UI ºÎºÐ¿¡ ´ëÇÑ °ü½É ¿ª½Ã ³ô¾Æ¼ ÃÖ±Ù¿¡´Â À¥ Ç¥ÁØÀ» Áö¿øÇÏ¸é¼ Ç³ºÎÇÑ È¿°ú¸¦ ÀÚ¶ûÇÏ´Â UI¸¦ À§ÇØ Prototype.js, Dojo, Google GWT, Yahoo UI, Extjs µî°ú °°Àº ´Ù¾çÇÑ ÇÁ·¹ÀÓ¿öÅ©µéÀÌ Ãâ½ÃµÇ°í ÀÖ´Ù.
ÀϹÝÀûÀ¸·Î À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼±Á¤ÇÏ°í È¸é °³¹ßÀ» À§ÇØ JSP¿Í °°Àº ±âº» ±â¼úÀ» »ç¿ëÇϰųª, Á» ´õ dzºÎÇÑ ÀÎÅÍÆäÀ̽º¸¦ °³¹ßÇϱâ À§ÇØ º°µµÀÇ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼±Á¤ÇØ ÀÛ¾÷ÇÑ´Ù. ºñÁî´Ï½º ·ÎÁ÷À» ¼öÇàÇÏ´Â ÇÁ·¹ÀÓ¿öÅ©¿Í ȸé ó¸® ÇÁ·¹ÀÓ¿öÅ© °£ÀÇ µ¥ÀÌÅÍ Àü¼ÛÀ» À§ÇØ °´Ã¼ ¶Ç´Â xml, json µîÀÇ µ¥ÀÌÅ͸¦ »ç¿ëÇϴµ¥, ÀÌ·± ȸé ÄÁÆ®·Ñ°ú µ¥ÀÌÅÍÀÇ ¹ÙÀεùÀ» À§ÇÑ ÄÚµùÀÌ ½±°Ô¸¸ ´À²¸Áö´Â °ÍÀº ¾Æ´Ï´Ù.
¾ÕÀ¸·Î´Â ÀÌ·¯ÇÑ ºÎºÐµéÀ» ´õ ½±°Ô °³¹ßÇϱâ À§ÇØ È¸éÀ» Æí¸®ÇÏ°Ô µðÀÚÀÎÇÏ°í ±× µðÀÚÀο¡ µ¥ÀÌÅ͸¦ ½±°Ô ¹ÙÀεùÇϱâ À§ÇÑ ¹æÇâÀ¸·Î ÇÁ·¹ÀÓ¿öÅ©°¡ ¹ßÀüÇÒ °ÍÀ¸·Î »ý°¢µÈ´Ù. ÀÌ·¯ÇÑ ¸ð½ÀÀº ´Ù¸¥ ÇÁ·¹ÀÓ¿öÅ©³ª ´Ù¸¥ ¾ð¾î¿¡¼µµ ¿³º¼ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î À©µµ¿ì ÇÁ·Î±×·¡¹Ö Ãʱ⿡´Â È¸é µðÀÚÀÎÀ» À§ÇÑ ¸®¼Ò½º¸¦ °³¹ßÀÚ°¡ ÆÄÀÏ¿¡ Á÷Á¢ ÆíÁýÇß´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ºÒÆíÇÔÀ» ¾ø¾Ö±â À§ÇØ WYSIWYG (What you see is what you get) ¸®¼Ò½º ¿¡µðÅ͸¦ Á¦°øÇÏ°í, ÀÌ ¸®¼Ò½º ¿¡µðÅ͸¦ »ç¿ëÇØ »ý¼ºÇÑ ¸®¼Ò½º¸¦ ÄÄÆÄÀÏ ½Ã ÂüÁ¶ÇØ ÃÖÁ¾ ½ÇÇà ÆÄÀÏÀ» ¸¸µéµµ·Ï ±â´ÉÀ» °³¼±Çß´Ù.
¿ì¸®´Â ÀÌ·¯ÇÑ ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀÇ °³¹ß ¹æ¹ýÀ¸·ÎºÎÅÍ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¹ßÀü ¹æÇâ¿¡ ´ëÇÑ ÈùÆ®¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÄÄÆ÷³ÍÆ® ±â¹Ý°ú ÇÁ·¹ÀÓ¿öÅ© ±â¹ÝÀÇ ÇÁ·Î±×·¡¹ÖÀÌ °øÁ¸ÇÏ¸ç ±× ¼Ó¿¡¼ ´õ ½¬¿î ÇعýÀ» ã´Â ³ë·ÂÀÌ °è¼ÓµÉ °ÍÀÌ°í, ½ºÆ®·µÃ÷2 ¿ª½Ã ±×·± È帧¿¡¼ ÇÔ²² ÁøÈÇØ°¡´Â ¸ð½ÀÀ» º¸¿©ÁÙ °ÍÀÌ´Ù.
Ãâó : http://blog.naver.com/crint?Redirect=Log&logNo=90047831860
|
|
|
|
°Ô½ÃÆÇ ±Û ¸ñ·Ï |
|
No |
Subject |
Poster |
Hits |
Posted |
|
2476 |
|
helix |
6765 |
2010-08-02 20:19:02 |
|
|
|
helix |
3259 |
2009-10-26 12:33:59 |
|
2146 |
|
helix |
3335 |
2009-09-08 11:02:51 |
|
1899 |
|
helix |
3267 |
2009-05-07 20:55:24 |
|
1898 |
|
helix |
7657 |
2009-05-07 20:26:08 |
|
1887 |
|
helix |
7021 |
2009-04-28 19:37:56 |
|
|
|
ÄÚ¸àÆ® |
|
|
|
|
|
|