IBM Korea Skip to main content
       IBM Ȩ    |  Á¦Ç° & ¼­ºñ½º  |  °í°´Áö¿ø & ´Ù¿î·Îµå  |  È¸¿ø°¡ÀÔ  

JSP ÄÚµå·Î À̹ÌÁö °ü¸®Çϱâ
µ¿Àû ¼­ºí¸´ À̹ÌÁö ¸ÞÀÌÅ·À» ¸¶À½´ë·Î!

Level: Introductory

Dan Becker
¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ, IBM Software Group
2002³â 11¿ù

À¥ »çÀÌÆ®¸¦ ÄÚµùÇÏ°í Áö¿øÇϰųª ÀÎÅͳݿ¡ ÆäÀÌÁö¸¦ °®°í ÀÖ´Ù¸é µ¶ÀÚµéÀÇ Çʿ並 ÃæÁ·½ÃÅ°´Â À̹ÌÁö¸¦ Á¦°øÇÏ´Â °ÍÀÌ ¾ó¸¶³ª ¾î·Á¿î ÀÏÀÎÁö ¾Ë °ÍÀÌ´Ù. JavaServer Pages (JSP) ű׸¦ ÀÌ¿ëÇÏ¿© À̹ÌÁö °ü¸®¸¦ ½ÃµµÇغ¸ÀÚ.

ÀÌ ±ÛÀº IBM developerWorks Àú³Î¿¡ 2002³â 11¿ù À̽´ ºÎºÐ¿¡ ±âÀçµÇ¾úÀ½À» ¹àÇôµÐ´Ù.

¼¼»óÀ» Áö¹èÇ϶ó! ±×·¸Áö ¾Ê´Ù¸é, Àû¾îµµ À̹ÌÁö¶óµµ Áö¹èÇ϶ó!
»çÀÌÆ® °³¹ßÀÚ ¶Ç´Â ÆäÀÌÁö ÀÛ¼ºÀڷμ­ ´Ù¾çÇÑ ¼±È£¸¦ ¸¸Á·½ÃÅ°´Â °ÍÀº ¾î·Á¿î ÀÏÀ̶ó´Â °ÍÀ» ¾È´Ù. À̸¦ ¼öÀÛ¾÷À¸·Î ¼öÇàÇϱâ À§Çؼ­´Â »çÀÌÆ®ÀÇ À̹ÌÁö ÇϳªÇϳª¸¦ À¥ »çÀÌÆ®°¡ Áö¿øÇÏ´Â À̹ÌÁö »çÀÌÁî·Î º¯È¯ÇؾßÇÑ´Ù. ±×·±´ÙÀ½ »çÀÌÆ®ÀÇ °¢ ÆäÀÌÁö¿¡ À̹ÌÁö ű׸¦ Á¶Á¤ÇÏ¿© °¢°¢ÀÇ Å±װ¡ À̹ÌÁö »çÀÌÁ ÀûÀýÇÏ°Ô ¹Ý¿µÇÒ ¼ö ÀÖµµ·Ï ÇؾßÇÑ´Ù. À̹ÌÁö¸¦ º¯°æÇÏÁö ¾Ê°í¼­´Â HTML img ű×ÀÇ ³ÐÀÌ¿Í ³ôÀ̸¦ °£´ÜÈ÷ º¯°æ½Ãų ¼ö ¾ø´Ù. ÀÌ´Â Àú´ë¿ª »ç¿ëÀÚµéÀº Å« À̹ÌÁö¸¦ ´Ù¿î·ÎµåÇÏ¿© Ŭ¶óÀ̾ðÆ® Ãø¿¡¼­ ¸®»çÀÌ¡À» ÇؾßÇÑ´Ù´Â °ÍÀ» ¶æÇÑ´Ù. ÀÌ·¯ÇÑ Á¾·ùÀÇ À̹ÌÁö °ü¸®´Â ¼º°¡½Ç »Ó ¾Æ´Ï¶ó ¿¡·¯¸¦ ¾ç»êÇس½´Ù. ±×¸®°í ´ëºÎºÐÀÇ À¥ »çÀÌÆ®°¡ ´Ù¾çÇÑ À̹ÌÁö »çÀÌÁ Á¦°øÇÏÁö ¾Ê´Â ÀÌÀ¯¸¦ ½±°Ô ¾Ë ¼ö ÀÖ´Ù.

¹®Á¦´Â ±â¼úÀÇ ¹®Á¦°¡ ¾Æ´Ï´Ù. ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ¸·Î À̹ÌÁö¸¦ ´Ù¾çÇÑ »çÀÌÁ Æ÷¸ËÀ¸·Î º¯È¯Çϱâ´Â ½±´Ù. ¼­ºñ½º¸¸ÀÇ ¹®Á¦ ¶ÇÇÑ ¾Æ´Ï´Ù. À¥ ¼­ºñ½º¸¦ »ç¿ëÇÏ¿© °¢ÀÚÀÇ ÇÊ¿ä¿¡ ¸ÂÃç ÆäÀÌÁö¸¦ Ä¿½ºÅ͸¶ÀÌ¡ÇÏ´Â °ÍÀÌ ÀϹÝÀûÀ̱⠶§¹®ÀÌ´Ù. ¹®Á¦´Â Àü°³¿Í °ü¸®°¡ ½±µµ·Ï ±â¼ú°ú ¼­ºñ½º¸¦ Á¶ÇÕÇÏ´Â ÀÏÀÌ´Ù.

ÀÌ ±ÛÀº JavaServer Pages (JSP) ű׸¦ »ç¿ëÇÏ´Â ¼Ö·ç¼ÇÀ¸·Î À̹ÌÁö¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù. ¿¹¸¦µé¾î HTML¿¡¼­ À̹ÌÁö ű׸¦ ÄÚµùÇÏ°í ´Ù¾çÇÑ ¹öÀüÀÇ À̹ÌÁö »çÀÌÁ °®Ãß´Â ´ë½Å ´ÙÀ½°ú °°ÀÌ Çϴ°ÍÀÌ´Ù:


<img src="images/LazyDog.jpg" width="800" height="600" >

»ç¿ëÀÚÀÇ ¼±È£¿¡ ¸ÂÃç À̹ÌÁö¸¦ ÀÚµ¿À¸·Î »çÀÌ¡Çϴ ű׸¦ °®Ãß´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù:


<util:imagesizer src="images/LazyDog.jpg"/>

»ç¿ëÀÚ°¡ ´Ù¾çÇÑ »çÀÌÁî Áß¿¡¼­ ¼±ÅÃÇÏ°í ¼±È£µµ¿¡ µû¶ó »çÀÌÆ®»óÀÇ ¸ðµç À̹ÌÁö°¡ ¹Ù²îµµ·Ï ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ±×¸² 1ÀÇ »ùÇà À̹ÌÁö¸¦ º¸ÀÚ. ¶ÇÇÑ ³ÐÀÌ¿Í ³ôÀÌ ¼Ó¼ºÀ» »ðÀÔÇÏ°í ű׸¦ ¼öµ¿À¸·Î ÆíÁýÇÏ´Â ÀÏ µûÀ§´Â ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

±×¸² 1. À̹ÌÁö ¼±ÅÃÀÌ ÀÖ´Â JSP ÆäÀÌÁö
Figure 1. Example JSP page with image preferences (give us a smile)

Çѹøµµ JSP Ä¿½ºÅÒ Å±׸¦ º» ÀûÀÌ ¾ø´Ù¸é ¿¹Á¦¿¡¼­ ½ÅÅýº¸¦ ¿¬±¸Çغ¸ÀÚ. JSP Ä¿½ºÅÒ Å±׸¦ HTML ÅÂ±×¿Í ºñ±³Çغ¸ÀÚ:

  • ÅÂ±× °³¹ßÀÚ°¡ ¸¸µç imagesizer°¡ ÀÖ´Ù.

  • ÀÌ Å±״ ÇÁ¸®ÇȽº utilÀÌ Àִµ¥ ÅÂ±× ¼¼Æ®µéÀ» ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀÇ ÆÐÅ°Áö À̸§°ú Èí»çÇÑ ¶óÀ̺귯¸®µé·Î ±×·ìÇÎÇÑ´Ù. »õ·Î¿î ÇÁ¸®ÇȽº¸¦ ¸¸µé°Å³ª ¶óÀ̺귯¸®¿¡ ÀÖ´Â µðÆúÆ® À̸§À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

  • ÀÌ Å±״ »õ·Î¿î XML ¹æ½ÄÀÇ ³¡³»´Â(ending) ű׸¦ °¡Áö°í ÀÖ´Ù: "/>".

HTML ű×ó·³, JSP ű׵µ ¸¹Àº ¼Ó¼ºÀÌ ÀÖ´Ù. ¿©±â¿¡¼­´Â src°¡ Á¦½ÃµÇ¾ú´Ù. ¶ÇÇÑ ¹Ùµð°¡ ÀÖÀ¸¸ç ¹Ùµð ¾È¿¡´Â ´Ù¸¥ ű׵鵵 °¡Áú ¼ö ÀÖ´Ù. HTML img ű׸¦ ¸ð¹æÇÏ´Â °ÍÀ̱⠶§¹®¿¡ JSP À̹ÌÁö »çÀÌ¡ ÅÂ±×¿ë ¹Ùµð´Â ¾ø´Ù.

JSP ÆäÀÌÁö°¡ Ä¿½ºÅÒ image-sizer ű׸¦ »ç¿ëÇÒ ¶§, ű×ÀÇ ÀÚ¹Ù ±¸ÇöÀº À̹ÌÁö ÆÄÀÏÀ» ã¾Æ ÀûÀýÇÑ »çÀÌÁî·Î º¯È¯ÇÏ°í ÀÌ À̹ÌÁö¸¦ µ¶ÀÚ¿¡°Ô Á¦°øÇÑ´Ù. ű״ ÆÛºí¸®½ÌÇϱâ Àü¿¡ À̹ÌÁö º¯È¯ ºÎÅÍ »çÀÌÆ® ¸Å´ÏÀú¸¦ ÀúÀåÇÑ´Ù. ¶ÇÇÑ À¥ ÆäÀÌÁö ÀÛ¼º ÀÛ¾÷À» ´Ü¼øÈ­ÇÑ´Ù. ´ÜÁö ÇϳªÀÇ ÆäÀÌÁö°¡ ¸¹Àº À̹ÌÁö »çÀÌÁî ¼±ÅÃÀ» ÇÚµéÇϴµ¥ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. ¹«¾ùº¸´Ùµµ, Áß¿äÇÑ °ÍÀº °¢ÀÚÀÇ »çÀÌÆ® À̹ÌÁö¿¡ ÀÌ·¯ÇÑ À¯¿¬¼ºÀ» Á¦°øÇÑ´Ù¸é ÀαâÀÖ´Â »çÀÌÆ®°¡ µÉ °ÍÀÌ´Ù.

À¥ ¼­¹ö
ÀÌÁ¦´Â, Ŭ¶óÀ̾ðÆ®(À¥ ºê¶ó¿ìÀú¸¦ ÀÌ¿ëÇÏ´Â µ¶ÀÚ)°¡ JSP ÆäÀÌÁö¸¦ Á¦°øÇÏ´Â »çÀÌÆ®¸¦ ¹æ¹®ÇÒ ¶§ ±× ¹èÈÄ¿¡ ¾î¶²ÀÏÀÌ ¹ú¾îÁö´ÂÁö ¾Ë¾Æº¸ÀÚ. ¼¼ °³ÀÇ ÀÎÅÍ·¢¼ÇÀÌ ÀÌ·ç¾îÁø´Ù. (±×¸² 2):

±×¸² 2. À¥ Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö °£ ÀÎÅÍ·¢¼Ç
Figure 2. Interaction between a Web client and server

ù ¹ø° °æ¿ì, ºê¶ó¿ìÀú°¡ HTML ÆÄÀÏÀ̳ª À̹ÌÁö ÆÄÀÏ °°Àº Á¤Àû ¹®¼­¸¦ ¿äûÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ. ¼­¹ö´Â ÆÄÀÏ °ø°£¿¡ ¸®¼Ò½º¸¦ À§Ä¡½ÃÅ°°í ºê¶ó¿ìÀú¿¡ ÆÄÀÏÀ» Á¦°øÇÑ´Ù. ¹®¼­¸¦ ¿äûÇÏ°í ¿äû¿¡ ÀÀ´äÇÏ´Â °ÍÀº HTTP¿¡ Á¤ÀǵǾî Àִµ¥ ÀÌ°ÍÀº ÀÎÅÍ³Ý »ó¿¡¼­ Ŭ¶óÀ̾ðÆ®-¼­¹ö ÀÎÅÍ·¢¼ÇÀÇ ±âÃÊ°¡ µÈ´Ù. À¥ ¼­¹ö´Â ¿äûÀ» ¿Ïº®ÇÏ°Ô ÇÚµéÇÏ°í À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö³ª ¼­ºí¸´ ÄÜÅ×ÀÌ³Ê¿Í ÀÎÅÍ·¢¼Ç ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

µÎ ¹ø° °æ¿ì ºê¶ó¿ìÀú°¡ ÀÚ¹Ù ¼­ºí¸´À» Æ÷ÇÔÇÏ´Â À¥ ¸®¼Ò½º¸¦ ¿äûÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ. ÀÚ¹Ù ¼­ºí¸´Àº À¥ ¼­¹ö°¡ ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ¿© ¼­¹ö»ó¿¡¼­ ŽºÅ©¸¦ ¼öÇàÇϵµ·Ï ÇÑ´Ù. ¼­ºí¸´µéÀº È¿À²ÀûÀ̾ CGI¿Í ¼­¹öÃø JavaScript °°Àº ¿À·¡µÈ ±â¼úº¸´Ù ¸Þ¸ð¸®¿Í ÇÁ·Î¼¼½Ì ÆÄ¿ö¸¦ ´ú »ç¿ëÇÑ´Ù. ¼­ºí¸´Àº IBM WebSphere Application Server°ú Apache Tomcat °°Àº À¥ ¼­¹ö¿¡¼­ ´Ù¸¥ ±â¼úµé¿¡ ºñÇØ À̵¿¼ºÀÌ °­ÇÏ°í, ´Ù¾çÇÑ Ç÷§Æû »ó¿¡¼­ °°Àº ¼­ºí¸´À» ±¸µ¿ÇÒ ¼ö ÀÖ´Â ¼­ºí¸´ Äܵ¥À̳ʸ¦ Áö¿øÇÑ´Ù. ¸¶Áö¸·À¸·Î, ÀÚ¹Ù¾ð¾î °íÀ¯ÀÇ ¾ÈÁ¤¼ºÀ¸·Î ÀÎÇØ À߸øµÈ ¼­ºí¸´ÀÌ À¥ ¼­¹ö¿¡ ¿µÇâÀ» ÁÖ´Â °æ¿ìµµ µå¹°´Ù. À¥ ¼­¹ö´Â ÀûÀýÇÑ ¼­ºí¸´À» ã¾Æ ÇÊ¿äÇÒ °æ¿ì ¼­ºí¸´ ¼Ò½º Äڵ带 ÄÄÆÄÀÏÇÏ°í ¼­ºí¸´ ÇÁ·Î¼¼½Ì °á°ú¸¦ ¿äûÀÚ¿¡°Ô ¸®ÅÏÇÑ´Ù. ÀÚÁÖ ¿äûµÇ´Â ¼­ºí¸´Àº ¼­¹ö ¸Þ¸ð¸®¿¡ ij½ÌµÈ´Ù. (±×¸² 2).

¼¼ ¹ø° °æ¿ì, ºê¶ó¿ìÀú°¡ JSP ÆäÀÌÁö¸¦ Æ÷ÇÔÇÏ´Â À¥ ÆäÀÌÁö¸¦ ¿äûÇÑ´Ù´Â °ÍÀ» °¡Á¤Çغ¸ÀÚ. JSP ÆäÀÌÁö´Â Á¤º¸¸¦ µð½ºÇ÷¹ÀÌ ÇÏ´Â ÀÛ¾÷À» ½±°Ô ÇÏ°í µ¿Àû ÄÜÅÙÆ®¸¦ Á¤Àû ÆäÀÌÁö¿Í ºÐ¸®ÇÏ´Â °ÍÀ» µ½´Â´Ù. À¥ ÆäÀÌÁö µðÀÚÀ̳ʴ HTML ¶óÀ̺귯¸®¿¡ ÀÖ´Â ´Ù¸¥ ű×ÀÎ °Í ó·³ ÇÏ¿© JSP ű׸¦ »ç¿ëÇÑ´Ù. JSP ÇÁ·Î±×·¡¸Ó´Â JSP ÇÁ·Î±×·¡¹Ö ½ºÆÑ¿¡ µû¶ó ű׸¦ ±¸ÇöÇÑ´Ù.

À̹ø¿¡´Â À̹ÌÁö-»çÀÌ¡ JSP ű׸¦ ±¸ÇöÇÏ°í JSP Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ. À¥ ÄÜÅ×À̳ÊÀÇ °üÁ¡¿¡¼­ º¼ ¶§ JSP ÆäÀÌÁö´Â ÀÚ¹Ù ¼­ºí¸´°ú ¹ÐÁ¢ÇÏ°Ô °ü·ÃµÇ¾î ÀÖ´Ù. ÅؽºÆ® ±â¹Ý JSP ÆäÀÌÁö´Â À¥ ÄÜÅ×À̳ʿ¡ ÀÇÇØ ÀÚ¹Ù ±¸ÇöÀ¸·Î º¯È¯µÈ´Ù. À¥ ÄÜÅ×À̳ʴ ÀÚ¹Ù ±¸ÇöÀ» ã¾Æ ÀÚ¹Ù ¼­ºí¸´ °°Àº ±¸ÇöÀ» ó¸®ÇÏ°í Äڵ带 ±¸µ¿ÇÏ¿© ÇÁ·Î¼¼½Ì °á°ú¸¦ Ŭ¶óÀ̾ðÆ®¿¡ ¸®ÅÏÇÑ´Ù. ¸¹Àº ·¹À̾î¿Í ¸®´ÙÀÌ·ºÆ®°¡ ÀÖ´Â µíÀÌ º¸ÀÌÁö¸¸ µð½ºÆÐĪÀº ºü¸£°í »ç¿ëÀÚ¿¡°Ôµµ Åõ¸íÇÏ´Ù. ¼­ºí¸´°ú ¸¶Âù°¡Áö·Î ÀÚÁÖ ¿äûµÇ´Â JSP ÆäÀÌÁö´Â ¼­¹ö ¸Þ¸ð¸®¿¡ ij½ÌµÈ´Ù.

JSP Ä¿½ºÅÒ ÅÂ±× ÀÛ¼ºÇϱâ
À¥ ¼­ºñ½º°¡ JSP ÆäÀÌÁö ¿äûÀ» ¾î¶»°Ô ó¸®ÇÏ´ÂÁö º¸¾Ò´Ù. ÀÌÁ¦´Â JSP Ä¿½ºÅÒ Å±׸¦ ¾î¶»°Ô ±¸ÇöÇÏ´ÂÁö º¸ÀÚ. JSP ű״ Java Standard Template Library(JSTL) °°Àº Ç¥ÁØ ¶óÀ̺귯¸®¿Í Àϸí Ä¿½ºÅÒ Å±׶ó°í ÇÏ´Â ½º½º·Î ÀÛ¼ºÇÑ ¶óÀ̺귯¸®¿¡µµ ÇØ´çµÈ´Ù´Â °ÍÀ» ¸í½ÉÇ϶ó. ÀϹÝÀûÀ¸·Î Ä¿½ºÅÒ Å±״ ƯÁ¤ ¹®Á¦ µµ¸ÞÀÎÀ» ´Ù·é´Ù. ÀÌ ±Û¿¡¼­´Â À̹ÌÁö¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀ» ´Ù·ç°Ú´Ù. ÇöÀç Java 2 Extended Edition (J2EE) Versions 1.2¿Í 1.3Àº JSP Version 1.2¸¦ »ç¿ëÇÑ´Ù. ÇöÀç SunÀº JSP ½ºÆÑ 2.0 ¹öÀüÀ» ¹ßÇ¥Çß´Ù. ÀÌ »õ·Î¿î ½ºÆÑÀº Ä¿½ºÅÒ Å±׸¦ ±¸ÇöÇÏ´Â ¹æ½Ä¿¡ À־ Å« º¯È­°¡ ¾ø´Ù.

Ç¥ÁØ°ú Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¸¦ taglib µð·ºÆ¼ºê¸¦ ÅëÇØ JSP ÆäÀÌÁö·Î ¹ÝÀÔÇÒ ¼ö ÀÖ´Ù:


<%@ taglib uri='imagesizer.tld' prefix='util' %>

ÀÌ µð·ºÆ¼ºê´Â ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ ÆÄÀÏÀÇ À§Ä¡¸¦ ¸í¸íÇÑ´Ù. ¿©±â¼­´Â imagesizer.tld·Î ¸í¸íµÇ¾ú´Ù. ±×¸®°í »ç¿ëµÈ ÇÁ¸®ÇȽº´Â util·Î ¸í¸íµÇ¾ú´Ù. ÅÂ±× ¿¹Á¦¿¡¼­ º¸¾ÒµíÀÌ ÇÁ¸®ÇȽº¿Í À̸§À¸·Î ű׸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:


<util:imagesizer src="images/LazyDog.jpg"/>

ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ´Â À¥ Äܵ¥À̳ʿ¡°Ô »ç¿ë°¡´ÉÇÑ Å±װ¡ ¹«¾ùÀÎÁö ±×µéÀÌ ¾î¶»°Ô ÀÛ¿ëÇÏ´ÂÁö¸¦ ¼³¸íÇÑ´Ù. Listing 1Àº ±× ¿¹Á¦ÀÌ´Ù. ÀÌ ÆÄÀÏÀº XML Æ÷¸ËÀ¸·Î µÇ¾îÀÖ°í Àб⠽±´Ù. ÇÏÁö¸¸ IBM WebSphere Studio Application Developer °°Àº ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß Ç÷§ÆûÀº Çʵ带 ä¿ì°í ÆÄÀÏÀ» °Ë»çÇÏ´Â °ÍÀ» µ½´Â´Ù. °¡Àå Áß¿äÇÑ Á¤º¸´Â ÅÂ±× ¿¤¸®¸ÕÆ®ÀÌ´Ù. ÀÌ°ÍÀº JSP Ä¿½ºÅÒ Å±×ÀÇ À̸§°ú ű׸¦ ±¸ÇöÇÏ´Â Àڹ٠Ŭ·¡½º¸¦ Á¤ÀÇÇÑ´Ù. ¶ÇÇÑ Å±װ¡ ¹Þ¾ÆµéÀÌ´Â ¸ðµç ¼Ó¼º°ú ¹Ùµð ÄÜÅÙÆ®¸¦ º¸¿©ÁØ´Ù.

Listing 1. Tag Library Descriptor (TLD) ¹ßÃé

<taglib >
  <tlibversion> 1.0 </tlibversion>
  <jspversion> 1.1 </jspversion>
  <tag>
    <name>imagesizer</name>
    <tagclass>tags.ImageSizerTag</tagclass>
    <bodycontent>empty</bodycontent>
    <attribute>
      <name>src</name>
      <required>required</required>
    </attribute>
    <attribute>
      <name>alt</name>
    </attribute>
    <attribute>
      <name>quality</name>
    </attribute>
  </tag>
</taglib>

ÀÌ ¿¹Á¦¿¡¼­ ű״ src ¼Ó¼ºÀÌ ¿ä±¸ÇÏ´Â ¼¼ °³ÀÇ ¼Ó¼ºÀ» °®°í ÀÖ´Ù. alt ¼Ó¼ºÀº HTML img alt ¼Ó¼ºÀ» ¸ð¹æÇÑ °ÍÀÌ´Ù. ÀÌ JSP ű׸¦ È®ÀåÇÏ¿© ´Ù¸¥ À̹ÌÁö ¼Ó¼ºÀ» Æ÷ÇÔ½ÃÄѵµ µÈ´Ù.

JSP Ä¿½ºÅÒ Å±׸¦ ÀÛ¼ºÇÏ´Â ´ÙÀ½ ´Ü°è´Â ÅÂ±× ¿ë ÀÚ¹Ù Äڵ带 ±¸ÇöÇÏ´Â °ÍÀÌ´Ù. ÀÌ ±Û¿¡¼­ imagesizer ű״ tags.ImageSizerTag Àڹ٠Ŭ·¡½º¿¡¼­ ±¸ÇöµÈ´Ù. J2EE Ä¿½ºÅÒ ÅÂ±× Áö¿ø ´ëºÎºÐÀº javax.servlet.jsp.tagext ÆÐÅ°Áö¿¡ À§Ä¡ÇØÀÖ´Ù. imagesizer Ŭ·¡½º´Â Ç¥ÁØ TagSupport¸¦ È®ÀåÇÑ´Ù. ÀÌ°ÍÀº ¹Ùµð ¾øÀÌ Å±׸¦ ±¸ÇöÇÑ´Ù. ÀÌ°ÍÀÇ ÀÚ¼Õ Å¬·¡½º´Â BodyTagSupportÀε¥ ÀÌ°ÍÀº ¹Ùµð°¡ Àִ ű׸¦ ±¸ÇöÇÑ´Ù. µÎ Ŭ·¡½º ¸ðµÎ Tag ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ´Ù. doStartTag°ú doEndTag ¸Þ¼Òµå´Â űװ¡ óÀ½ ÀÐÇôÁö°í űװ¡ À¥ ÄÁÅ×À̳ʿ¡ ÀÇÇØ ¿ÏÀüÈ÷ ÀÐÇôÁø ÈÄ¿¡ È£ÃâµÈ´Ù. ImageSizer ű״ doEndTag ¸¸ ±¸ÇöÇÑ´Ù.

TagSupport Ŭ·¡½º¿¡¼­ PageContext Ŭ·¡½º´Â JSP ÆäÀÌÁö¿Í °ü·ÃµÈ Áß¿äÇÑ Á¤º¸¿¡ ¾×¼¼½º Çϵµ·Ï ÇÑ´Ù. ¿¹¸¦µé¾î, PageContext´Â HttpRequest¿Í HttpResponse °´Ã¼¿¡ ¾×¼¼½º¸¦ °¡´ÉÇÏ°Ô ÇÑ´Ù. ÀÌ·¯ÇÑ °´Ã¼µéÀº °ªÀ» Àаí ÀÀ´äÀ» ÀÛ¼ºÇϴµ¥ ÇʼöÀûÀÌ´Ù. ¿äûÀº, »ç¿ëÀÚ ¼±ÅÃÀ» Æ®·¡Å·ÇÏ°í ÆäÀÌÁö¿¡¼­ ÆäÀÌÁö·Î °ªÀ» ¼öÇàÇÒ °æ¿ì HttpSession·Î ¾×¼¼½º¸¦ Çã¿ëÇÑ´Ù. PageContext´Â ServletContext·Î ¾×¼¼½º¸¦ Çã¿ëÇϴµ¥ ÀÌ°ÍÀº ¼­ºí¸´ °æ·Î, À̸§, ±âŸÁ¤º¸¸¦ À§Ä¡½ÃÅ°´Âµ¥ µµ¿òÀÌ µÈ´Ù. ImageSizer ÄÚµå(Listing 2)¿¡¼­, PageContext °´Ã¼¿¡ ´ëÇÑ ·¹ÆÛ·±½º¿Í Á¤º¸°¡ ÀÖ´Ù. ±×¸² 3Àº À̵é Ŭ·¡½ºµéÀÇ °ü°èÀÌ´Ù. ´Ù¸¥ Ç¥ÁØ Å¬·¡½º ´ÙÀ̾î±×·¥ ó·³ ½Ç¼±À¸·Î µÈ ¹Ú½º´Â Ŭ·¡½º¸¦ ³ªÅ¸³»°í Á¡¼± ¹Ú½º´Â ÀÎÅÍÆäÀ̽º¸¦ ³ªÅ¸³½´Ù. »ó¼ÓÀº ÆÄ»ýµÈ Ŭ·¡½º³ª ÀÎÅÍÆäÀ̽ººÎÅÍ ºÎ¸ð±îÁö ¼±À¸·Î À̾îÁ®ÀÖ´Ù.

Listing 2. ImageSizerTag doEndTag ±¸Çö

// Implement the tag once the complete tag has been read.
public int doEndTag() throws JspException {

  // Move request data to session.
  int outputSize = 0;
  String sizeVal = request.getParameter( REQUESTSIZEKEY );
  if ( sizeVal != null ) {
    session.setAttribute( REQUESTSIZEKEY, sizeVal );
    sizeVal = (String) session.getAttribute( REQUESTSIZEKEY );
    if ( sizeVal != null ) {
      outputSize = Integer.parseInt( sizeVal );
    }
  }
  
  // Get specified image locally.
  String contextPath = getContextPath( request );
  Image image = Toolkit.getDefaultToolkit().getImage(contextPath + src );
  ImageSizer.waitForImage( image );
  int imageWidth = image.getWidth( null );
  int imageHeight = image.getHeight( null );

  if (( imageWidth > 0 ) && ( imageHeight > 0 )) {
    if (( outputSize > 0 ) && ( outputSize != imageWidth )) {
      // Convert image to new size.
      Image outputImage = ImageSizer.setSize( image, outputSize, -1 );
      ImageSizer.waitForImage( outputImage );
      int outputWidth = outputImage.getWidth( null );
      int outputHeight = outputImage.getHeight( null );
 
      if ( outputWidth > 0 && outputHeight > 0 ) {
        // Change image file name to xxxx.size.jpg
        String originalSrc = src;
        int lastDot = src.lastIndexOf( '.' );
        if ( lastDot > -1 ) {
          src = src.substring( 0, lastDot + 1 );
        }
        setSrc( src + outputSize + ".jpg" );

        // Write new size image to JPEG file.
        File file = new File( contextPath + src );
        if ( !file.exists() ) {
          out.println( "" );
          FileOutputStream fos = new FileOutputStream( contextPath + src );
          ImageSizer.encodeJPEG( fos, outputImage, quality );
          fos.close( ) ;
        }
        
        imageWidth = outputWidth;
        imageHeight = outputHeight;
      }
    } // if outputSize
  } // if image found

  // Produce output tag.
  out.print( "<img src=\"" + src + "\"" );
  // Add alt text, if any
  if ((alt != null ) && ( alt.length() > 0 )) {
    out.print( " alt=\"" + alt + "\"" );
  }
  
  // Add proper width, height.
  out.print( " width=\"" + imageWidth + "\" height=\"" + 
    imageHeight + "\"" );
  out.println( ">" );

  return EVAL_PAGE;
} // doEndTag

±×¸² 3. javax.servlet.jsp.tagext Ŭ·¡½º
Figure 3. Important javax.servlet.jsp.tagext classes

ImageSizerTag Ŭ·¡½ºÀÇ doEndTag ¸Þ¼Òµå´Â Listing 2¿¡ ³ª¿ÍÀÖ´Ù. ÀÌ°ÍÀº JSP Ä¿½ºÅÒ Å±׸¦ ±¸ÇöÇϴµ¥ ÇÊ¿äÇÑ °ÅÀÇ ¸ðµç ÀÚ¹Ù ÄÚµå¶ó°í º¼ ¼ö ÀÖ´Ù. Å« ºí·ÏÀÌÁö¸¸ ¸Þ¼Òµå¸¦ ¿Ïº®ÇÏ°Ô º¸´Âµ¥ µµ¿òÀÌ µÈ´Ù. ¿ì¼± ¸ðµç HTTP ¿äû ¸Å°³º¯¼ö´Â HTTP ¼¼¼Ç¿¡ ÀúÀåµÈ´Ù. ÀÌ°ÍÀº À̹ÌÁö »çÀÌÁî¿¡ ´ëÇÑ »ç¿ëÀÚ ¼±Åà °°Àº ¼Ó¼ºÀ» °¡Á®´Ù°¡ ¼¼¼Ç¿¡ ÀúÀåÇÏ¿© ÆäÀÌÁö¿¡ µû¶ó »ç¿ëÀÚ°¡ À̸¦ µû¸£µµ·Ï ÇÑ´Ù. ÀÌ Å±×ÀÇ ±â´ÉÀ» È®ÀåÇϱâ À§Çؼ­ ÀÌ°ÍÀ» È®ÀåÇÏ¿© ÄíÅ°¿¡ ¼±ÅÃÀ» ÀúÀåÇÏ¿© »ç¿ëÀÚ°¡ ´ÙÀ½¿¡ ÀÌ »çÀÌÆ®¸¦ ¹æ¹®ÇÒ ¶§ ¼±ÅÃÀ» »ç¿ëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½ ´Ü°è´Â µðÆúÆ® À̹ÌÁö¸¦ ·ÎµùÇÏ´Â °ÍÀÌ´Ù. java.awt.ToolkitÀº À̹ÌÁö¸¦ ¿äûÇϴµ¥ ÀÌ°ÍÀº ImageSizer.waitForImage¿Í ÇÔ²² ·ÎµåµÇ°í ÀûÀýÇÑ »çÀÌ¡ÀÌ °ËÅäµÈ´Ù. ·ÎµùÀ» À§ÇØ ÀϽÃÁ¤Áö°¡ ÇÊ¿äÇÏ´Ù. ¿Ö³ÄÇϸé ÀÚ¹Ù À̹ÌÁö´Â ºñµ¿±â½ÄÀ¸·Î ·ÎµùµÇ°í ¿äûÇÒ ¶§¸¶´Ù Ç×»ó »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ImageSizer º¸Á¶ Ŭ·¡½º´Â ÀÌ ¿¹Á¦¿¡¼­ Àüü À̹ÌÁö ÇÁ·Î¼¼½ÌÀ» ¼öÇàÇÏ°í ´ÙÀ½ ¼½¼Ç¿¡¼­´Â ´õ ÀÚ¼¼ÇÏ°Ô ´Ù·ç°Ú´Ù. ³ÐÀÌ¿Í ³ôÀÌ°¡ ¸ÂÀ¸¸é À̹ÌÁö´Â ¸®»çÀÌ¡ÀÌ ÇÊ¿ä¾ø´Ù. HTML À̹ÌÁö ű״ À̹ÌÁö À̸§°ú ÇöÀç »çÀÌÁ »ç¿ëÇÏ¿© ÀÛ¼ºµÈ´Ù. ÀÌ°ÍÀº HTML À̹ÌÁö ű׸¦ ¸ð¹æÇϱâÀ§ÇØ ÇÊ¿äÇÑ JSP ±¸ÇöÀÇ ¸ðµç°ÍÀÌ´Ù.

ImageSizer º¸Á¶ Ŭ·¡½º´Â »ç¿ëÀÚ°¡ »õ·Î¿î À̹ÌÁö »çÀÌÁ ¿äûÇϸé À̹ÌÁö¸¦ ¸®»çÀÌ¡ÇÑ´Ù. À̹ÌÁö ÆÄÀÏÀº ÆÄÀÏ Å©±â¿¡ µû¶ó »õ·Î¿î À̸§ÀÌ µÈ´Ù. ÀÌ ÆÄÀÏÀº JPEG ÀÎÄÚµùÀÌ°í ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÛ¼ºµÈ´Ù. °á°úÀûÀ¸·Î »õ·Ó°Ô ¸®»çÀÌ¡µÈ ÆÄÀÏÀº HTML À̹ÌÁö ÅÂ±× ¾Æ¿ôDz¿¡ »ç¿ëµÈ´Ù. ÀÌ Å±×ÀÇ ´ë¾È ±¸ÇöÀº ÆÄÀÏÀ» GIF³ª PNG Æ÷¸ËÀ¸·Î ÀúÀåÇϰųª µð½ºÅ© °ø°£À» ÀúÀåÇϱâÀ§ÇØ ¸Þ¸ð¸®¿¡¼­ À̹ÌÁö¸¦ Á¦°øÇÏ´Â °ÍÀÌ´Ù. Listing 2´Â ¸®»çÀÌ¡µÈ ÆÄÀÏÀ» ¾ÕÀ¸·Î »ç¿ëÇÒ °æ¿ì¿¡ ´ëºñÇÏ¿© µð½ºÅ©¿¡ ij½ÌÇÑ´Ù. µû¶ó¼­ óÀ½ÀÇ ¸®»çÀÌ¡Àº ¾à°£ÀÇ ¼­¹ö ÇÁ·Î¼¼½Ì ½Ã°£ÀÌ ÇÊ¿äÇÏÁö¸¸ ¿¬¼ÓÀûÀÎ À̹ÌÁö »çÀÌÁî ¿äûÀº ÇÁ·Î¼¼½ÌÀÌ ÀüÇô ÇÊ¿äÇÏÁö ¾Ê´Ù. »ç¿ë°¡´ÉÇÑ µð½ºÅ© °ø°£À» üũÇÏ¿© Á¦ÇÑµÈ ÆÄÀÏ °ø°£°ú Ŭ¶óÀ̾ðÆ®¿¡°Ô Á¦°øÇÏ´Â Á¤º¸ÀÇ ±ä±Þ¼º °£¿¡ ±ÕÇüÀ» ¸ÂÃßµµ·Ï ÇÒ ¼ö ÀÖ´Ù.

À̹ÌÁö »çÀÌ¡
Áö±Ý±îÁö JSP ű׸¦ ÀÛ¼ºÇÏ´Â ´Ü°è¸¦ °ËÅäÇß´Ù. ImageSizerTag Ŭ·¡½º´Â À̹ÌÁö¸¦ ÀÚµ¿À¸·Î ¸®»çÀÌ¡ÇÏ¿© »ç¿ëÀÚ ¼±Åÿ¡ ¸ÂÃá´Ù. À̹ø¿¡´Â ImageSizer Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© JPEG ÆÄÀϷμ­ À̹ÌÁö¸¦ ¸®»çÀÌ¡ÇÏ°í ÀúÀåÇÏ´Â ±¸Ã¼ÀûÀÎ ¹æ¹ýÀ» ¼³¸íÇÏ°Ú´Ù. ÀÚ¹Ù ÄÚµå·Î À̹ÌÁö¸¦ ¸®»çÀÌ¡ ÇÒ ¶§ java.awt.Image Ŭ·¡½ºÀÇ getScaledInstance ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§ ½¬¿öÁø´Ù. ÀÌ ¸Þ¼Òµå¸¦ »õ·Î¿î ³ÐÀÌ¿Í ³ôÀÌ·Î Çϰųª ÇüÅ ºñÀ²À» º¸Á¸ÇϱâÀ§ÇØ -1¿¡¼­ 1±îÁöÀÇ ¸Å°³º¯¼ö °ªÀ» Á¦°øÇÑ´Ù. ±×¸®°í ³ª¼­ »õ·Ó°Ô ¸®»çÀÌ¡µÈ À̹ÌÁö¸¦ ¾ò´Â´Ù. ÇÏÁö¸¸ ¸ðµç ÀÚ¹Ù À̹ÌÁö´Â Áï½Ã »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. µû¶ó¼­ java.awt.MediaTracker ¸¦ »ç¿ëÇÏ¿© À̹ÌÁö°¡ ¿ÏÀüÈ÷ ·ÎµùµÉ ¶§±îÁö ±â´Ù·Á¾ßÇÑ´Ù. ImageSizerÀÇ waitForImage ¸Þ¼Òµå´Â ÀÌ Äڵ带 ĸ½¶È­ÇÑ´Ù.

ÀÌ ¿¹Á¦¿¡¼­ °¡Àå ¾î·Á¿î µðÀÚÀÎ Æ÷ÀÎÆ®´Â À̹ÌÁö ÀúÀå ¹æ¹ýÀ» °áÁ¤ÇÏ´Â ÀÏÀÌ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö¿¡´Â À̹ÌÁö ÀÎÄÚµù°ú ÀúÀå¿¡ ¸¹Àº ¼±ÅñÇÀÌ ÀÖ¾î ºñ±³¸¦ ÇؾßÇÑ´Ù.

  • com.sun.image.codec. ÀÌ ÆÐÅ°Áö´Â Java 2 SDK 1.2¿Í 1.3 ±¸Çö¿¡ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ °³ÀÎ ÆÐÅ°Áö¾î¼­ Java 2 ¹öÀü±îÁö ±â´Ù·Á¾ßÇÑ´Ù. ÀÌ ÆÐÅ°Áö´Â JPEG ÀÎÄÚµù¿¡ Á¦ÇÑÀÌ ÀÖ´Ù.

  • Java Image I/O API. ÀÌ ÆÐÅ°Áö´Â Java 2 SDK 1.4ÀÇ Ç¥ÁØÀÌ´Ù. ÇÏÁö¸¸ ÀÛ¼º ´ç½Ã ¾î¶² J2EE ¹öÀüµµ SDK 1.4¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ÀÌ ÆÐÅ°Áö´Â ¶Ù¾î³­ À̹ÌÁö Á¶ÀÛ ±â´É°ú ÀÎÄÚµù ¿É¼ÇÀ» °®Ãß°í ÀÖ´Ù.

  • Java Advanced Imaging API. ÀÌ API´Â Ç¥ÁØ È®ÀåÀÌÁö¸¸ ÀÌ°ÍÀ» »ç¿ëÇÏ·Á¸é À¥ ¸¶½ºÅÍ°¡ Áö¿øÇÏÁöµµ ¾Ê´Â ÆÐÅ°Áö¸¦ ¼³Ä¡ÇؾßÇÑ´Ù.

  • ACME GIF Encoder. ÀÌ ÆÐÅ°Áö´Â À¯¿ëÇÏ¸ç ¿¹Á¦ ÄÚµå¿Í °áÇÕÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ºñ¿ë°ú À¯Áö ¹®Á¦°¡ ³²¾ÆÀÖ´Ù. ´Ù¸¥ ¿É¼Çµé°ú´Â ´Ù¸£°Ô ÀÌ ¼ÒÇÁÆ®¿þ¾î´Â À¯·áÀ̸ç GIF Ç¥ÁØÀ» ¿ÏÀüÈ÷ Áö¿øÇÏÁö ¾Ê´Â´Ù.

Listing 3ÀÇ °æ¿ì com.sun.image.codec ÆÐÅ°Áö¸¦ »ç¿ëÇߴµ¥ IBM WebSphere¿Í Apache Tomcat °°Àº J2EE 1.2 ¿Í 1.3 À¥ ¼­¹ö ÄÜÅ×À̳ʿ¡¼­ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀÎÄÚ´õ´Â ´Ü¼øÇϸç 100% ¼ø¼öÇÑ ÀÚ¹Ù ÄÚµåÀÌÁö¸¸ com.sun ÆÐÅ°Áö¿¡ ÀÖ´Ù. Àå±âÀûÀÎ ½Ã°¢À¸·Î º¼ ¶§ Java Image I/O ÆÐÅ°Áö´Â º¸¿ÏÇØ¾ß ÇÒ »çÇ×ÀÌ ¸¹ÀÌÀÖ´Ù. À̹ÌÁö º¯Çü ±â´É°ú ¸¹Àº ÆÄÀÏ Æ÷¸ËÀ» ÀúÀåÇÏ´Â ±â´ÉÀÌ ÈǸ¢ÇÏ´Ù. Java Image I/O ÆÐÅ°Áö´Â Java 2 version 1.4 ÀÌÀü±îÁö´Â Ç¥ÁØÀÌ ¾Æ´Ï´Ù.

¾î¶² À̹Ì¡ ÆÐÅ°Áö¸¦ »ç¿ëÇÒ °ÍÀΰ¡¿¡ ´ëÇØ °áÁ¤ÀÌ ³¡³µ´Ù¸é JPEG ÆÄÀÏÀ» ÀúÀåÇÏ´Â ÄÚµå´Â °£´ÜÇÏ´Ù. ImageSizerÀÇ encodeJPEG ¸Þ¼Òµå´Â ´ÙÀ½ ÀýÂ÷¸¦ ĸ½¶È­ÇÑ´Ù:

  1. java.awt.image.BufferedImage °´Ã¼-ÀÚ¹Ù Image ÀÚ¼Õ-´Â ¸®»çÀÌ¡µÈ ¾Æ¿ôDz À̹ÌÁö¿¡¼­ ¸¸µé¾îÁø´Ù. ÁÖ¼®Àº ·Î°í, watermark, ŸÀÓ½ºÅÆÇÁ, À̹ÌÁö ÀúÀÛ±Ç Á¤º¸¸¦ Ãß°¡ÇÒ ¶§ Äڵ忡 ÁÖ¼®ÀÌ ´Þ¸°´Ù.

  2. Image¿¡¼­ BufferedImage·Î º¯È¯ÇÑ ÈÄ¿¡, ¾Æ¿ôDz ½ºÆ®¸²¿¡ JPEGImageEncoder °´Ã¼¸¦ ¸¸µé¾î¶ó. ¾Æ¿ôDz ÀÎÄÚµù Æò°¡´Â 0.0 (ÃÖ¾Ç)ºÎÅÍ 1.0 (ÃÖ°í) ±îÁö ÀÌ´Ù. 0.75´Â µðÆúÆ®ÀÌÁö¸¸ 0.95´Â Á»´õ ÀÚ¼¼ÇÑ À̹ÌÁö¿Í ÇÔ²² Å« ÆÄÀÏ »çÀÌÁî·Î ¸¸µé¾îÁø´Ù.

  3. À̹ÌÁö´Â ¾Æ¿ôDz ½ºÆ®¸²À¸·Î ÀÎÄÚµùµÇ°í ½ºÆ®¸²Àº ¸ðµç Á¤º¸°¡ À̹ÌÁö ÆÄÀÏ¿¡ ³ªÅ¸³ªµµ·Ï Ç÷¯½¬µÈ´Ù.

Listing 3. ImageSizer encodeJPEG ±¸Çö

// Encodes the given image at the given
// quality to the output stream.
public static void encodeJPEG
  ( OutputStream outputStream,
  Image outputImage, float outputQuality )
  throws java.io.IOException {

  // Get a buffered image from the image.
  BufferedImage bi = new BufferedImage
    ( outputWidth, outputHeight,
      BufferedImage.TYPE_INT_RGB );
  Graphics2D biContext =
    bi.createGraphics( );
  biContext.drawImage
    ( outputImage, 0, 0, null );
  // Additional drawing code, such as
  // watermarks or logos can be placed here.

  // com.sun.image.codec.jpeg package
  // is included in Sun and IBM sdk 1.3.
  JPEGImageEncoder encoder =
    JPEGCodec.createJPEGEncoder
    ( outputStream );
  // The default quality is 0.75.
  JPEGEncodeParam jep =
    JPEGCodec.getDefaultJPEGEncodeParam
    ( bi );
  jep.setQuality( outputQuality, true );
  encoder.encode( bi, jep );
  outputStream.flush();
} // encodeImage

¿©±â±îÁö´Â À̹ÌÁö¸¦ ¸®»çÀÌ¡ÇÏ°í ÀúÀåÇϴµ¥ ÇÊ¿äÇÑ ¸ðµç ´Ü°èÀÌ´Ù.

WebSphere¶Ç´Â Tomcat¿¡¼­ ÆÐŰ¡ ¹× Àü°³
À̹ø¿¡´Â Application Server version 4.0À̳ª Apache Tomcat version 4.0¿¡¼­ ImageSizer JSP ű×ÀÇ ÆÐÅ°Áö ¹× Àü°³ ¹æ¹ýÀ» ¼³¸íÇÏ°Ú´Ù. ±×¸² 4´Â Application Developer ÀÌ´Ù. ¿ÞÂÊ Ä®·³ÀÇ »ó´Ü¿¡ ÀÖ´Â Navigator´Â À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ µð·ºÅ丮 ±¸Á¶¸¦ ³ªÅ¸³»°í JSP űװ¡ J2EE ½ºÆÑ¿¡ µû¶ó ¾î¶»°Ô ÆÐÅ°ÁöµÇ¾î¾ß ÇÏ´ÂÁö¸¦ º¸¿©ÁØ´Ù. J2EE ½ºÆÑ¿¡ ÇÊ¿äÇϱ⠶§¹®ÀÌ ÀÌ µð·ºÅ丮 ±¸Á¶´Â ¸ðµç À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀϹÝÀûÀÌ´Ù. ÀÏ´Ü ±¸Á¶°¡ ÀúÀåµÇ¸é Web Archive (WAR) ÆÄÀÏÀÌ µÇ°í WebSphere, Tomcat, ±âŸ À¥ ÄÜÅ×À̳ʿ¡ ½±°Ô Àü¼ÛµÈ´Ù. Application Developer °°Àº ÁÁÀº °³¹ß ȯ°æÀº ´ÙÀ½ÀÇ ½ºÆÑÀ» µû¸£°í ÈǸ¢ÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾î³½´Ù.

±×¸² 4. WebSphere Studio Application Developer¿¡¼­ ImageSizer ÆÐŰ¡
Figure 4. Package the ImageSizer in WebSphere Studio Application Developer

ImageSizer ÇÁ·ÎÁ§Æ®¿¡´Â ¼Ò½º ÄÚµå¿ë µð·ºÅ丮°¡ ÀÖ´Ù. ÃÖÁ¾ WAR ÆÄÀÏ¿¡ ÀÌ µð·ºÅ丮¸¦ Ãß°¡ÇÒ °ÍÀÎÁöÀÇ ¿©ºÎ´Â °³¹ßÀÚ°¡ ¼±ÅÃÇϱ⠳ª¸§ÀÌ´Ù. webApplication µð·ºÅ丮¿¡´Â ½ÇÁ¦ ÇÁ·Î±×·¥ Äڵ尡 Æ÷ÇԵǾî ÀÖ´Ù. ¿¹Á¦ ÇÁ·ÎÁ§Æ®¿¡´Â PickASize.jspÀ̶ó°í ÇÏ´Â Å×½ºÆ® JSP ÆäÀÌÁö¿Í LazyDog.jpg À̶ó°í ÇÏ´Â Å×½ºÆ® À̹ÌÁö°¡ Æ÷ÇԵǾî ÀÖ´Ù. ÀϹÝÀûÀ¸·Î À̵éÀº ImageSizer Ä¿½ºÅÒ Å±×ÀÇ ¶óÀ̺귯¸® ¹öÀü¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù. ÀÌ Å±×ÀÇ ±¸ÇöÀº WEB-INF µð·ºÅ丮¿¡ ÀÖ´Ù. Àڹ٠Ŭ·¡½º´Â WEB-INF/classes¿¡ ÀÖ°í Tag Library Descriptor ÆÄÀÏÀº WEB-INF/tlds¿¡ ÀÖ´Ù. À̵éÀº ¸ðµç À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ Àû¿ëµÇ´Â Ç¥ÁØ µð·ºÅ丮 À§Ä¡ÀÌ´Ù. ÀÌ Æ®¸®¿¡ ÀÖ´Â ´Ù¸¥ ÆÄÀϵéÀº ¼­¹ö ¿É¼Ç ¼³Á¤¿¡ µµ¿òÀ» ÁÖÁö¸¸ ±×·¸Áö ¾Ê´õ¶óµµ WAR ÆÄÀÏ¿¡ ÇʼöÀûÀÎ °ÍÀº ¾Æ´Ï´Ù. Application Developer³ª Java SDK¸¦ »ç¿ëÇÏ¿© ÀÌ ¾ÖÇø®ÄÉÀÌ¼Ç ¿ë WAR ÆÄÀÏÀ» ¸¸µé¾îº¸¶ó.

To m c a t ¿¡ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³Ä¡ÇÏ·Á¸é ROOT/webapps µð·ºÅ丮¿¡ ÆÄÀÏÀ» ³õ°í ¼­¹ö°¡ WAR ÆÄÀÏÀ» µð·ºÅ丮 ±¸Á¶·Î È®ÀåÇϵµ·Ï ÇؾßÇÑ´Ù. Application ServerÀÇ °æ¿ì, Administrators ConsoleÀÇ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¸¶¹ý»ç(Web Application wizard)¸¦ »ç¿ëÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. Àü°³ÇÑ ÈÄ¿¡, http://yourhostname:port/ImageSizer/PickASize.jsp¸¦ ¹æ¹®ÇÏ¿© JSP ÆäÀÌÁö¸¦ ±¸µ¿Çغ¸¶ó.

°á·Ð
Áö±Ý±îÁö À̹ÌÁö »çÀÌ¡À» ÀÚµ¿À¸·Î °ü¸®ÇÏ´Â JSP Ä¿½ºÅÒ Å±׸¦ ¸¸µé¾ú´Ù. Ä¿½ºÅÒ Å±״ À̹ÌÁö ¸®»çÀÌ¡ ÀÛ¾÷¿¡ µµ¿òÀÌ µÇ°í À¥ »çÀÌÆ®¸¦ ¹æ¹®ÇÏ´Â »ç¿ëÀÚµéÀÌ ¼±ÅÃÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¿¹Á¦ ű׸¦ È®ÀåÇÏ¿© ¸ðµç Á¾·ùÀÇ À̹ÌÁö Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ´Ù. ÀúÀÛ±Ç ÅؽºÆ®, ŸÀÓ½ºÅÆÇÁ, ·Î°í, ¿öÅÍ ¸¶Å© µîÀÌ ±×°ÍÀÌ´Ù. Application Server³ª Apache Tomcat¿¡ À̸¦ Àü°³ÇÏ°í À̹ÌÁö ±â¹Ý JSP ÆäÀÌÁö¸¦ ÀÛ¼ºÇϰųª ¿¹Á¦¸¦ »ç¿ëÇÏ¿© Äڵ带 ½ÇÇèÇÒ ¼ö ÀÖ´Ù. ÀÌ ±ÛÀÌ JSP ű׿¡ ´ëÇØ ½ÇÁúÀûÀÎ ÆÁÀ» ÁÖ¾ú±â¸¦ ¹Ù¶ó¸ç °¢ÀÚÀÇ ÇÊ¿ä¿¡ ¸ÂÃç ±â´ÉÀ» È®ÀåÇغ¸±â¸¦ ¹Ù¶õ´Ù.

Âü°íÀÚ·á

¸ñ Â÷:
¼¼»óÀ» Áö¹èÇ϶ó! ±×·¸Áö ¾Ê´Ù¸é, Àû¾îµµ À̹ÌÁö¶óµµ Áö¹èÇ϶ó!
À¥ ¼­¹ö
JSP Ä¿½ºÅÒ ÅÂ±× ÀÛ¼ºÇϱâ
À̹ÌÁö »çÀÌ¡
WebSphere¶Ç´Â Tomcat¿¡¼­ ÆÐŰ¡ ¹× Àü°³
°á·Ð
Âü°í ÀÚ·á
ÇÊÀÚ ¼Ò°³
±â»ç¿¡ ´ëÇÑ Æò°¡
°ü·Ã dW ¸µÅ©:
Subscribe to the developerWorks newsletter
US ¿ø¹® Àбâ
Also in the Java zone:
Tutorials
Tools and products
Code and components
Articles
ÇÊÀÚ¼Ò°³
Dan Becker´Â IBM(Austin, Texas)ÀÇ ¼ÒÇÁÆ®¿þ¾î ±×·ì¿¡¼­ ÀÏÇÏ°í ÀÖ´Ù. ÇöÀç´Â Interactive Financial Services ÇÁ·ÎÁ§Æ®¿¡¼­ ¿Â¶óÀÎ À¥ ¹ðÅ· ½Ã½ºÅÛ ÀÛ¾÷À» ¼öÇàÇÏ°í ÀÖ´Ù.
ÀÌ ±â»ç¿¡ ´ëÇÏ¿© ¾î¶»°Ô »ý°¢ÇϽʴϱî?

Á¤¸» ÁÁ´Ù (5) ÁÁ´Ù (4) ±×Àú±×·¸´Ù (3) ¼öÁ¤º¸¿ÏÀÌ ÇÊ¿äÇÏ´Ù(2) ÇüÆí¾ø´Ù (1)

  È¸»ç¼Ò°³  |  °³ÀÎÁ¤º¸ º¸È£Á¤Ã¥  |  ¹ý·ü  |  ¹®ÀÇ