.
.
Core Java Technologies Technical Tips
.
2004³â 3¿ù 5ÀÏ    

Enterprise Java Technologies Tech Tips¿¡ ¿À½Å ¿©·¯ºÐÀ» ȯ¿µÇÕ´Ï´Ù. Java 2 Platform, Enterprise Edition (J2EE)¿¡ ±â¹ÝÇÑ enterprise Java technologies ¿Í APIsÀÇ »ç¿ë¿¡ °üÇÑ ÃֽŠÁ¤º¸¸¦ ¾ò¾î °¡½Ã±â ¹Ù¶ø´Ï´Ù. ÀÌ ±Û¿¡¼­´Â Java 2 SDK, Standard Edition, v 1.4¿Í Java 2 SDK, Enterprise Edition, v 1.3.1 (Reference Implementation)¸¦ »ç¿ëÇÕ´Ï´Ù.

À̹ø È£¿¡¼­´Â,

.Ä¿½ºÅÒ ÅÂ±× ÆÄÀÏ
.JSP ÆäÀÌÁö¿¡¼­ ¿£ÅÍÇÁ¶óÀÌÁî ºó »ç¿ëÇϱâ

¸¦ ´Ù·ç°Ô µË´Ï´Ù.

ÀúÀÚ Mark Johnson

¿¹Á¦ÀÇ »ùÇà ¾ÆÄ«À̺긦 ´Ù¿î·Îµå ¹ÞÀ¸¼¼¿ä. ÄÁÅØ½ºÆ® ·çÆ®´Â ttfeb2004ÀÌ°í »ùÇÃÄÚµåÀÇ »ç¿ë¹ýÀº index.html welcome file ¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÄÚµåÀÇ »ç¿ë¿¡ °üÇÑ ±ÇÇÑÀ̳ª Á¤º¸´Â license terms¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.

.

Ä¿½ºÅÒ ÅÂ±× ÆÄÀÏ

JavaServer Pages (JSP pages)ÀÇ Ä¿½ºÅÒ Å±״ HTML ÅÂ±×¿Í À¯»çÇÏ´Ù. ÇÏÁö¸¸ Ä¿½ºÅÒ Å±״ ÅÂ±×¿Í °ü·ÃµÈ Çڵ鷯 Ŭ·¡½º¿¡ ÀÇÇØ ·±Å¸Àӽÿ¡ ÅØ½ºÆ® Çü½ÄÀÇ Ãâ·Â°ªÀ¸·Î ´ëüµÈ´Ù. Áö³­ Å×Å©ÆÁÀÎ Using Custom Tags¿¡¼­ ÀÌ¿Í °°Àº Ŭ·¡½ºÀÇ »ý¼º¹æ¹ý¿¡ ´ëÇØ À̾߱âÇß´Ù. À̹ø´ÞÀÇ Ã¹¹øÂ° ÆÁÀº Ä¿½ºÅÒ Å±׸¦ ±¸ÇöÇÏ´Â ´õ »õ·Ó°í ½¬¿î ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.

JSP 2.0ÀÌÀü¿¡´Â Ä¿½ºÅÒ Å±׸¦ »ý¼ºÇÏ·Á¸é ÀÚ¹Ù ÅÂ±× Çڵ鷯 Ŭ·¡½º·Î ±¸ÇöÇÏ´Â °ÍÀÌ À¯ÀÏÇÑ ¹æ¹ýÀ̾ú´Ù. ¶ÇÇÑ Çڵ鷯 Ŭ·¡½º °³¹ßÀڴ ű׸¦ À¥ ÄÁÅ×À̳ʿ¡°Ô ¼³¸íÇÏ´Â ¿ªÇÒÀ» ÇÏ´Â TLDÆÄÀÏÀ» »ý¼ºÇؾ߸¸ Çß´Ù. Ä¿½ºÅÒ Å±×ÀÇ ÈûÀº °­·ÂÇÏÁö¸¸ À̸¦ ÀÌ¿ëÇÏ·Á¸é ÇÁ·Î±×·¡¹Ö ½ºÅ³ÀÌ ¿ä±¸µÇ°í JSP ÆäÀÌÁö°¡ ¾î¶»°Ô HTML·Î º¯È¯ÇÏ´ÂÁö¸¦ È®½ÇÇÏ°Ô ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù.

JSP 2.0 ÅÂ±× ÆÄÀÏÀÇ »õ·Î¿î ±â´ÉÀº ºñ°³¹ßÀÚµµ Àç»ç¿ëÀÌ °¡´ÉÇÑ Ä¿½ºÅÒ Å±׸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ÇÁ·Î±×·¡¸Óµµ ´õ ½±°Ô ÀÛ¾÷ÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁØ´Ù. JavaServer Pages Standard Tag Library (JSTL) °ú expression language (EL)À¸·Î ÀÌ·ç¾îÁø JSP 2.0 ±¸¹®À» ÀÌ¿ëÇϸé, ÀÚ¹Ù Äڵ带 ÀÛ¼ºÇÒ ÇÊ¿ä¾øÀÌ Ä¿½ºÅÒ Å±׸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.

ÅÂ±× ÆÄÀÏÀº JSP ÆäÀÌÁö¿¡¼­ Àç»ç¿ëÀÌ °¡´ÉÇÑ ÄÄÆ÷³ÍÆ®ÀÌ´Ù. À̸¦ »ç¿ëÇÏ¸é ´ÙÀ½°ú °°Àº ÀÌÁ¡ÀÌ ÀÖ´Ù.

  • ScriptletsÀ» ¼û±â°Å³ª Á¦°ÅÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.
  • ÀÚ¸£±â¿Í ºÙÀ̱Ⱑ ¾Æ´Ñ, ·¹ÆÛ·±½º·Î¸¦ ÀÌ¿ëÇÏ¿© Äڵ带 Àç»ç¿ë°¡´ÉÇϵµ·Ï ¸¸µç´Ù.
  • JSP ÆäÀÌÁö¸¦ ÀÛ¼ºÇϱ⠽±°í, ¸Å¿ì ³í¸®ÀûÀ̸ç, À¯ÁöÇϱ⠽±µµ·Ï ¸¸µç´Ù.
  • ºñ°³¹ßÀÚ¿¡ ÀÇÇØ ÀÛ¼ºµÉ ¼ö ÀÖ´Ù.
  • ÅÂ±× ÆÄÀÏÀÇ ±¸¼ºÀº ÀÚ¹Ù°¡ ¾Æ´Ñ HTML¿¡ ´õ °¡±õ´Ù. µû¶ó¼­ JSP ÆäÀÌÁö´Â ´ÜÀÏ ¾ð¾î·Î ÀÛ¼ºµÈ °Íó·³ º¸ÀδÙ.
  • ÅÂ±× ÆÄÀÏÀº ÇÏÀÌ ·¹º§ ÄÄÆ÷³ÍÆ®¸¦ Çü¼ºÇϱ⠶§¹®¿¡ »ý»ê¼ºÀ» ³ôÀÌ°í °³¹ß¼Óµµ¸¦ ºü¸£°Ô ÇÑ´Ù.
  • Ä¿½ºÅÒ Å±׿¡ ÀÇÇØ »ç¿ëµÇ´Â TLDÆÄÀÏÀº ÈçÈ÷ ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÈ´Ù.
  • ÇöÁ¸ÇÏ´Â ÆäÀÌÁö¸¦ ¸®ÆÑÅ丵Çϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÄÚµåÀÇ °øÅë ºÎºÐÀº ¾ÖÇø®ÄÉÀÌ¼Ç ºä°£¿¡ °øÀ¯µÇ´Â ÅÂ±× ÆÄÀÏ·Î ÅëÇÕµÉ ¼ö ÀÖ´Ù.

ÅÂ±× ÆÄÀÏÀÌ Ä¿½ºÅÒ ÅÂ±× Çڵ鷯 Ŭ·¡½º¸¦ ¿Ïº®ÇÏ°Ô ´ëüÇÏÁö´Â ¸øÇÑ´Ù. ÅÂ±× ÆÄÀÏÀº Àç»ç¿ëÀÌ °¡´ÉÇÑ ÄÁÅÙÃ÷¸¦ °ü·ÃµÈ ·¹À̾ƿô°ú ÇÁ¸®Á¨Å×À̼ÇÀ¸·Î ĸ½¶È­ÇÒ ¶§ ÀûÇÕÇÏ´Ù. ¹Ý¸é Ä¿½ºÅÒ Å±״ JSPÆäÀÌÁö¿¡¼­ ¾ÖÇø®ÄÉÀÌ¼Ç ·ÎÁ÷(logic)À» Àç»ç¿ëÇÒ ¶§ ´õ È¿°úÀûÀÌ´Ù. °¡·É, ÆäÀÌÁö Çì´õ¿Í DzÅÍ(²¿¸®¸»)´Â ÅÂ±× ÆÄÀÏÀ» À§ÇÑ ÃÖÀûÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀÌ´Ù. ÀÌ¿Í ºñ±³Çؼ­ JSTLÀÇ Ä¿½ºÅÒ Å±״ ÀÚ¹Ù ¾ð¾î Çڵ鷯 Ŭ·¡½º·Î¼­ ±¸ÇöµÈ´Ù.

ÅÂ±× ÆÄÀÏÀÇ Æ¯Â¡

ÅÂ±× ÆÄÀÏÀº »ç½Ç ÅÂ±× Çڵ鷯 Ŭ·¡½º·Î ¹ø¿ª/ÄÄÆÄÀϵȴÙ. ÅÂ±× Çڵ鷯¿Í ÅÂ±× Çڵ鷯 Ŭ·¡½ºÀÇ ´Ü ÇѰ¡Áö ´Ù¸¥ Á¡Àº ÅÂ±× Çڵ鷯´Â JSP ±¸¹®À¸·Î ¾²¿©Áö°í ÅÂ±× Çڵ鷯 Ŭ·¡½º´Â ÀÚ¹Ù ¾ð¾î·Î ÀÛ¼ºµÈ´Ù´Â Á¡ÀÌ´Ù.

JSP 2.0-compliant ÄÁÅ×À̳ʴ À¥ ¾ÆÄ«ÀÌºê µð·ºÅ丮ÀÎ WEB-INF/tags³»¿¡¼­ ÅÂ±× ÆÄÀÏÀ» ã°Ô µÈ´Ù. ÅÂ±× ÆÄÀÏÀº WEB-INF/libÀÇ JAR ÆÄÀϾȿ¡ ¹­ÀÏ ¼öµµ ÀÖ´Ù. JSP ÆäÀÌÁö¸¦ ±¸ÇöÇÒ ¶§ À¥ ÄÁÅ×À̳ʰ¡ ÅÂ±× ÆÄÀϰú °ü·ÃµÈ ű׸¦ ¸¶ÁÖÄ¡°Ô µÇ¸é, ÅÂ±× ÆÄÀÏÀÇ JSPÄÁÅÙÃ÷ Ãâ·Â°ªÀº °è»êµÇ¾î¼­ ÀÀ´ä ½ºÆ®¸²¿¡ Æ÷ÇÔµÇ°Ô µÈ´Ù. ÅÂ±× ÆÄÀÏÀº ¾ÖÆ®¸®ºäÆ®¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ°í JSP 2.0 expression language (EL)¿¡ ´ëÇÑ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. ¶ÇÇÑ ÅÂ±× ÆÄÀÏÀº ½ÇÇàÀÌ ¿Ï·áµÈ ÈÄ¿¡µµ Á¸ÀçÇÏ´Â EL º¯¼öµéÀ» »ý¼ºÇÒ ¼ö ÀÖ´Ù.

ÅÂ±× ÆÄÀÏÀº ¾ÖÆ®¸®ºäÆ® Áö½Ã¾î¸¦ ÀÌ¿ëÇØ¼­ ¾ÖÆ®¸®ºäÆ®¸¦ ¼±¾ðÇÏ°Ô µÈ´Ù. ´ÙÀ½Àº ÀÌ ÆÁÀÇ »ùÇÃÄÚµå·ÎºÎÅÍ ¹ßÃéÇÑ ¿¹Á¦ÀÌ´Ù. ÅÂ±× ÆÄÀÏÀº ´ÜÀÏ ¾ÖÆ®¸®ºäÆ® Áö½Ã¾î·Î ½ÃÀÛÇÑ´Ù.

   <%@ attribute name="format" required="false" %>

³¯Â¥¸¦ »ý¼ºÇϴ ű״ À§ÀÇ ¶óÀÎÀ» ÀÌ¿ëÇØ¼­ ÄÁÅ×À̳ʿ¡°Ô °¡´ÉÇÑ "format" ¾ÖÆ®¸®ºäÆ®¸¦ ãÀ¸¶ó°í ¸í·ÉÇÑ´Ù. Çʼö ¾ÖÆ®¸®ºäÆ®ÀÏ °æ¿ì¿¡´Â Áö½Ã¾îÀÇ "required" ¾ÖÆ®¸®ºäÆ®°¡ "true"·Î ¼³Á¤µÈ´Ù. ÀÌ Áö½Ã¾îµéÀº Àü°³½Ã¿¡ À¥ ÄÁÅ×À̳ʰ¡ °íÀ¯ÀÇ TLD ÆÄÀÏÀ» »ý¼ºÇϵµ·Ï ÇØÁØ´Ù.

ű״ ¾ÖÆ®¸®ºäÆ®¸¦ ÅëÇØ¼­ ÀԷ°ªÀ» ¹Þ´Â´Ù. ÅÂ±× ÆÄÀÏ¿¡ ÀÇÇØ »ý¼ºµÇ´Â Ãâ·Â ÅØ½ºÆ®À̿ܿ¡µµ ű״ ELº¯¼ö¸¦ »ý¼ºÇÔÀ¸·Î½á µ¥ÀÌÅ͸¦ "output" ÇÒ ¼ö ÀÖ´Ù. ÅÂ±× ÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ °ªÀ» ÅÂ±× ÆÄÀÏÀÌ È£ÃâµÇ¾ú´ø ÆäÀÌÁö¿¡ °ªÀ» ¸®ÅÏÇÒ ¼öµµ ÀÖ´Ù.

   <%@ variable name-given="filesincluded" scope="AT_END" %>

"name-given"Àº űװ¡ ¼öÇàµÈ ÈÄ, ÆäÀÌÁö³»¿¡ ¼³Á¤µÇ´Â º¯¼öÀÇ À̸§À» Á¦°øÇÑ´Ù. "AT_END"´Â ÅÂ±× ÆÄÀÏÀÌ ¿Ï¼ºµÇ¸é º¯¼ö°¡ ¼³Á¤µÈ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù.

ÅÂ±× ÆÄÀÏ ¿¹Á¦

À̹ø »ùÇà ÄÚµå´Â Áö³­ 2002/9¿ùÀÇ Å×Å©ÆÁ "Using Custom Tags"¿¡¼­ ÀÛ¼ºÇß´ø Ä¿½ºÅÒ Å±׸¦ À籸ÇöÇÏ´Â ÅÂ±× ÆÄÀÏÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. ¿À¸®Áö³Î ű״ ´ÙÀ½ ¼¼ °¡Áö Áß ÇѰ¡Áö ¹æ¹ýÀ¸·Î ¼­¹ö¿¡ ³¯Â¥ÀÇ Æ÷¸ËÀ» ÁöÁ¤ÇÑ´Ù.

  • ¸¸¾à Æ÷¸ËÀÌ ¼³Á¤µÇÁö ¾Ê¾Ò°Å³ª ºñ¾îÀÖ´Ù¸é, ű״ µðÆúÆ® Æ÷¸ËÀ¸·Î ³¯Â¥¸¦ ÇÁ¸°Æ®ÇÑ´Ù.
  • Æ÷¸Ë ÆÄ¶ó¹ÌÅͰ¡ $»çÀÎÀ¸·Î ½ÃÀ۵Ǹé, ű״ ½ºÆ®¸µÀÇ ³ª¸ÓÁö ºÎºÐÀ» ȯ°æ ¿£Æ®¸®ÀÇ À̸§À¸·Î »ç¿ëÇÑ´Ù. ű״ Áö¸íµÈ ȯ°æ ¿£Æ®¸®¸¦ ã¾Æ¼­ ±×°ÍÀÇ °ªÀ» Æ÷¸ËÀ¸·Î »ç¿ëÇÏ°Ô µÈ´Ù.
  • java.text.SimpleDateFormat°ú ȣȯµÇ´Â "format" ÆÄ¶ó¹ÌÅͰ¡ Æ÷¸Ë ½ºÆ®¸µÀ» Æ÷ÇÔÇϰí ÀÖ´Ù¸é, ½ºÆ®¸µÀº ³¯Â¥ÀÇ Æ÷¸ËÀ» ÁöÁ¤Çϴµ¥ ¾²ÀÌ°Ô µÈ´Ù.

ÅÂ±× ÆÄÀÏ¿¡ ÀÇÇØ ÁöÁ¤µÈ ű״ ¾à°£ ´Ù¸£°Ô ÀÛµ¿ÇÑ´Ù. Æ÷¸Ë ÆÄ¶ó¹ÌÅͰ¡ $À¸·Î ½ÃÀÛÇϸé, ű״ ȯ°æ ¿£Æ®¸® ´ë½Å ¼­ºí¸´ ÄÁÅØ½ºÆ® ÃʱâÈ­ ÆÄ¶ó¹ÌÅ͸¦ ã´Â´Ù. (JSTL 1.0ÀÇ expression language´Â ȯ°æ ¿£Æ®¸®¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â ºôÆ® ÀÎ ¼­Æ÷Æ®¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´Ù.)

»ùÇà ÅÂ±× ÆÄÀÏÀÎ date.tag´Â ÆÄÀÏÀÌ ¿ä±¸ÇÏ´Â ¾ÖÆ®¸®ºäÆ®¸¦ Á¤ÀÇÇÏ´Â ¸î¸î Áö½Ã¾î·Î ½ÃÀÛÇÑ´Ù. ¶ÇÇÑ ÀÌ Å±װ¡ »ç¿ëÇÏ´Â ´Ù¸¥ ÅÂ±× ¶óÀ̺귯¸®¸¦ À§ÇÑ namespaces¸¦ ½Äº°Çس»±âµµ ÇÑ´Ù.

   <%@ attribute name="format" required="false" %>
   <%@ taglib uri=
     "http://java.sun.com/jsp/jstl/core" prefix="c" %>
   <%@ taglib uri=
     "http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
   <%@ taglib uri=
     "http://java.sun.com/jsp/jstl/functions" 
     prefix="fn" %>

³¯Â¥ ÅÂ±× ÆÄÀÏÀÇ ´ÙÀ½ ºí·ÏÀº Æ÷¸Ë ½ºÆ®¸µÀ» °áÁ¤Çϱâ À§ÇØ <c:choose>ű׸¦ »ç¿ëÇÑ´Ù. <c:choose>´Â JSPÆäÀÌÁö¿¡¼­ if/then/else±â´ÉÀ» ¼±ÅÃÇϱâ À§ÇÑ Å±×ÀÌ´Ù. óÀ½ "when"±¸¹®Àº Æ÷¸ËÀÌ nullÀ̰ųª ºñ¾îÀÖÀ» ¶§ ELº¯¼ö "format"À» µðÆúÆ® °ªÀ¸·Î ¼³Á¤Çϱâ À§ÇÑ °ÍÀÌ´Ù.

   <c:choose>
     <%-- If format is blank, set default --%>
     <c:when test="${format == null or format == ''}">
       <c:set var="format" 
         value="EEEE, d MMMM yyyy 'at' kk:mm:ss z"/>
     </c:when>
   ...

"format"ÀÌ ºñ¾îÀÖ´Â »óŰ¡ ¾Æ´Ï¶ó¸é, ±×°ÍÀº "$"»çÀÎÀ¸·Î ½ÃÀÛÇϰųª ¶Ç´Â "$"À¸·Î ½ÃÀÛÇÏÁö ¾Ê´Â´Ù. ù¹øÂ° °æ¿ì¿¡¼­, <choose> ű×ÀÇ <otherwise>ÀýÀº ù¹øÂ° "$"À» ¾ø¾Ö¹ö¸®°í ÁÖ¾îÁø À̸§À» ÀÌ¿ëÇØ¼­ "format" º¯¼öÀÇ °ªÀ» ÄÁÅØ½ºÆ® ÆÄ¶ó¹ÌÅÍÀÇ ÄÁÅÙÃ÷·Î ´ëüÇÏ°Ô µÈ´Ù.

     <c:otherwise>
       <%-- Else if format starts with "$", 
           look up in context param,
           and set "format" to its value. --%>
       <c:if test="${fn:substring(format,0,1) == '$'}">
         <c:set var="format_name" 
           value="${fn:substringAfter(format,'$')}"/>
         <c:set var="format" 
           value="${initParam[format_name]}"/>
       </c:if>

       <%-- Otherwise leave it as it is --%>
     </c:otherwise>
   </c:choose>

ÄÚ¸àÆ®¿¡ ÀûÇôÀÖµíÀÌ, "format"ÀÌ "$"·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é, ±×°ÍÀÇ °ªÀº º¯ÇÏÁö ¾Ê´Â´Ù.

ÆäÀÌÁöÀÇ ÀÌ ÁöÁ¡¿¡¼­, EL "format"º¯¼öÀÇ °ªÀº ³¯Â¥ÀÇ Æ÷¸ËÀ» ÁöÁ¤Çϱâ À§ÇØ »ç¿ëµÉ ½ºÆ®¸µÀ¸·Î ¼³Á¤µÈ´Ù. useBean¶óÀÎÀº ÇöÀç ½Ã°£À» ³ªÅ¸³»´Â Date°´Ã¼¸¦ »ý¼ºÇϰí fmt:formatDate ¸Þ¼Òµå´Â ÀÌ ³¯Â¥¸¦ ÁÖ¾îÁø "format"¿¡ ¼³Á¤ÇÏ°Ô µÈ´Ù.

   <%-- Now actually create and format the date --%>
   <jsp:useBean id="now" class="java.util.Date"/>
   <fmt:formatDate value="${now}" pattern="${format}"/>

À̰ÍÀ¸·Î ÅÂ±× ÆÄÀÏÀÌ ¿Ï¼ºµÇ¾ú´Ù.

ÅÂ±× ÆÄÀÏÀ» ÀÌ¿ëÇÏ´Â °ÍÀº ´õ¿í °£´ÜÇÏ´Ù. »ùÇà ÆäÀÌÁö DatePage.jsp ÀÇ À­ºÎºÐ¿¡ ÀÖ´Â Áö½Ã¾î´Â /WEB-INF/tags µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç űװ¡ Á¢µÎ»ç "mytags"¸¦ ÀÌ¿ëÇØ¼­ ¾×¼¼½º °¡´ÉÇÏ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù. Áö½Ã¾î´Â ´ÙÀ½°ú °°´Ù.

    <%@ taglib tagdir="/WEB-INF/tags" prefix="mytags" %>

ÀÚ, ÀÌÁ¦ JSP ÅÂ±× ÆÄÀÏÀ» ´Ù¸¥ Ä¿½ºÅÒ Å±×ó·³ °£´ÜÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. »ùÇà ÆäÀÌÁö DatePage.jsp¿¡¼­ ¹ßÃéÇÑ ÄÚµåÀÌ´Ù.

   The time and date at the server in the default format
      are <b><mytags:date/></b>.<br>
   The time zone at the server is 
      <b><mytags:date format="zzzz"/></b>.<br>
   The server date is 
      <b><mytags:date format="M/d/yyyy"/></b>.<br>
   The server time is 
      <b><mytags:date format="hh:mm:ss a"/></b>.<br>

°¢°¢ÀÇ ´Â ÅÂ±× ÆÄÀÏÀ» È£ÃâÇÏ´Â °á°ú¸¦ ³º°í, ű״ ¼­¹ö¿¡ ÇØ´ç ½Ã°£°ú ³¯Â¥¸¦ Ãâ·ÂÇÏ°Ô µÈ´Ù.

ÀÌ ¿¹Á¦´Â JSPÅÂ±× ÆÄÀÏÀ» °£´ÜÈ÷ ¼Ò°³ÇÏ´Â °Í¿¡ ±×Ä£´Ù. »ç½Ç JSPÅÂ±× ÆÄÀÏÀº ¿©±â¼­ ¾ð±ÞÇÑ °Í ÀÌ»óÀÇ ¸¹Àº ¿É¼ÇÀ» °®°í ÀÖ´Ù. JSPÅÂ±× ÆÄÀÏ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â J2EE 1.4 Æ©Å丮¾óÀÇ "Custom Tags in JSP Pages"ÀåÀ» Âü°íÇϱ⠹ٶõ´Ù.

.
.

JSP ÆäÀÌÁö¿¡¼­ ¿£ÅÍÇÁ¶óÀÌÁî ºó »ç¿ëÇϱâ

2004/1/26ÀÏ Å×Å©ÆÁÀº JSP 2.0 Expression Language (EL)¿¡ ´ëÇØ¼­ ´Ù·ð´Ù. ÀÌ ÆÁÀÇ ¿¹Á¦ Áß Çϳª´Â JavaBeanÀÌ ELº¯¼ö¸¦ ÀÌ¿ëÇØ¼­ À̸§À¸·Î ¾×¼¼½º °¡´ÉÇÏ°Ô µÇ´Â ¹æ¹ýÀ» ¼³¸íÇß´Ù. JavaBean ¼Ó¼ºÀº ¶ÇÇÑ ´Ü¼ø EL Ç¥ÇöÀ¸·Îµµ ¾×¼¼½º°¡ °¡´ÉÇѵ¥, ÀÌ ±â´ÉÀº Enterprise JavaBeans components (enterprise beans)À» JSP ÆäÀÌÁö ³»¿¡¼­ ¸Å¿ì ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÀûÀýÇÑ ½ºÄÚÇÁ¿¡¼­ Áö¸íµÈ ¾ÖÆ®¸®ºäÆ®³»ÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ºä¿¡ ÀÇÇØ ¿ä±¸µÇ´Â ¿£ÅÍÇÁ¶óÀÌÁî ºóÁ ´Ü¼øÈ÷ °¡Á®´Ù ³õÀÚ. ±×¸®°í JSP ÆäÀÌÁö°¡ EL expressionsÀ¸·Î ¾²ÀÎ À̸§¿¡ ÀÇÇØ ¾ÖÆ®¸®ºäÆ®¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÏÀÚ. ¿¹Á¦¸¦ ÅëÇØ ÀÌ ±â¹ýÀ» ÀÌÇØÇØ º¸µµ·Ï ÇϰڴÙ.

»ùÇà ÄÚµå

ÀÌ ±ÛÀÇ »ùÇà ÄÚµå´Â Å©·¹µ÷ Ä«µå ÀÎÁõ ¾ÖÇø®ÄÉÀ̼ÇÀÌ´Ù. Å©·¹µ÷ Ä«µå ȸ»ç´Â Å©·¹µ÷ Ä«µå ³Ñ¹öÀÇ À¯È¿ÇÔÀ» üũÇϱâ À§ÇØ ¾²ÀÌ´Â ¿©·¯ °¡Áö ±ÔÄ¢À» °®°í ÀÖ´Ù. Å©·¹µ÷ Ä«µå ³Ñ¹öÀÇ »óÅ´ À¯È¿Çϰųª ÀܰíºÎÁ·À̰ųª, ¸¸·á ȤÀº Ãë¼ÒµÈ »óÅÂÀÏ ¼ö ÀÖ´Ù. À¯È¿ÇÔÀ» üũÇÏ´Â ¸ñÀûÀº ÀÎÁõÀÌ µÇ±â Àü¿¡ µ¥ÀÌÅÍ ¿£Æ®¸® ¿¡·¯¸¦ Àâ´Â °ÍÀÌ´Ù.

´ÙÀ½°ú °°Àº °æ¿ì¿¡ Å©·¹µ÷ Ä«µå ³Ñ¹ö´Â À¯È¿ÇÏ´Ù.

  • Å©·¹µ÷ Ä«µåÀÇ Å¸ÀÔ¿¡ ¸Â´Â Á¢µÎ»ç¸¦ °®´Â´Ù.
  • Å©·¹µ÷ Ä«µå ³Ñ¹ö°¡ ¿Ã¹Ù¸¥ µðÁöÅÐ ³Ñ¹ö¸¦ °®´Â´Ù.
  • Å©·¹µ÷ Ä«µå ³Ñ¹ö°¡ checksum Å×½ºÆ®¸¦ ÆÐ½ºÇß´Ù.
  • Ä«µå°¡ ¸¸·áµÈ »óŰ¡ ¾Æ´Ï´Ù.

»ùÇà ¾ÖÇø®ÄÉÀ̼ÇÀº 3°³ÀÇ ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇÑ´Ù.

  • Å©·¹µ÷ Ä«µå µ¥ÀÌÅ͸¦ ³ªÅ¸³»°í È®ÀÎÇÏ´Â stateful ¼¼¼Ç ºóÀÎCreditCardLocal
  • ¼¼¼Ç ½ºÄÚÇÁ³»¿¡ ÀÖ´Â ºóÀÇ °´Ã¼¸¦ »ý¼ºÇÏ´Â ¼­ºí¸´ÀÎ Feb2004Servlet. µû¶ó¼­ °³°³ÀÇ À¯Àú´Â ÇϳªÀÇ ÀνºÅϽº¸¦ ¾ò°Ô µÈ´Ù.
  • µ¥ÀÌÅ͸¦ ¼öÁýÇϰí ÀÎÁõ °á°ú¸¦ ÇÁ¸°Æ®ÇÏ´Â JSPÆäÀÌÁöÀÎ ValidateCard.jsp

ÄÚµåÀÇ ÀÛµ¿ ¿ø¸®´Â ´ÙÀ½°ú °°´Ù. index.jsp ÀÔ·ÂÆäÀÌÁöÀÇ ¸µÅ©´Â ¼­ºí¸´À» °¡¸£Å°°í ¼­ºí¸´Àº ¼¼¼Ç ºó ÇÚµéÀ» »ý¼ºÇÏ¿© ±×°ÍÀ» ¼¼¼Ç ÄÁÅØ½ºÆ®¿¡ µÐ´Ù. ±×¸®°í³ª¼­ ¼­ºí¸´Àº Ä«µå ³Ñ¹ö ÀԷ°ª°ú ÀÎÁõÀ» ´Ù·ç´Â URL jsp/ValidateCard.jsp·Î ¿äûÀ» º¸³½´Ù. ÀÌ ÀÔ·ÂÆäÀÌÁö´Â »ç¿ëÀÚ°¡ µ¥ÀÌÅÍ ÀÔ·ÂÀ» ¸¶Ä£ ÀÌÈÄ¿¡ ÀçÈ£ÃâµÈ´Ù. »ç½Ç ½ÇÁ¦ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ±¸¸Å °úÁ¤¿¡¼­ Ä«µå°¡ ¿Ã¹Ù¸£°Ô À¯È¿ÀÎÁõÀÌ µÇ¾ú´Ù¸é ÀÚµ¿ÀûÀ¸·Î ´ÙÀ½ ´Ü°è·Î ³Ñ¾î°¡°Ô µÈ´Ù.

¼­ºí¸´ÀÇ ÄÚµå´Â °£´ÜÇÏ´Ù. ÄÚµå´Â CreditCardLocalŸÀÔÀÇ stateful ¼¼¼Ç ºóÀ» »ý¼ºÇϰí À̸¦ "creditCard" ¹ØÀÇ HttpSession¾ÖÆ®¸®ºäÆ®³»¿¡ À§Ä¡½ÃŲ´Ù. ¸¸¾à ¼­ºí¸´ÀÌ È£ÃâµÇ¾úÀ» ¶§ ÀÌ¿Í °°Àº º¯¼ö°¡ ÀÌ¹Ì Á¸ÀçÇϰí ÀÖ´Ù¸é, ¼­ºí¸´Àº Á¸ÀçÇÏ´ø ÀνºÅϽº¸¦ Á¦°ÅÇÏ°Ô µÈ´Ù.

   
   CreditCardLocal creditCard = (CreditCardLocal)
      req.getSession().getAttribute("creditCard");

   // Remove it if it exists--we're starting over.
   if (creditCard != null) {
      try {
         creditCard.remove();
      } catch (Exception e) {
         System.err.println(
           "Exception removing credit card: " + e);
      }
      System.err.println("INFO: Removed previous card.");
   }

   // Create new enterprise bean reference in session scope
   try {
      InitialContext ctx = new InitialContext();
      CreditCardLocalHome cclh =
         (CreditCardLocalHome)ctx.lookup(
            "java:comp/env/ejb/CreditCard");

      String cardName = req.getParameter("cardName");
      String cardType = req.getParameter("cardType");
      String cardNumber = req.getParameter("cardNumber");
      String cardDate = req.getParameter("cardDate");

      creditCard = cclh.create(
         cardName, cardNumber, cardType, cardDate);
      
      req.getSession().setAttribute(
         "creditCard", creditCard);
      
   } catch (Exception e) {
      throw new ServletException(e);
   }
   
   RequestDispatcher rd = req.getRequestDispatcher(
      "/jsp/ValidateCard.jsp");
   rd.forward(req, res);

À§ÀÇ ¸¶Áö¸· 2ÁÙÀ» ÀÚ¼¼È÷ º¸ÀÚ. ¿£ÅÍÇÁ¶óÀÌÁî ºó ·¹ÆÛ·±½º¸¦ »ý¼ºÇÑ ÈÄ¿¡ ¼­ºí¸´Àº ÀԷ°ú À¯È¿ÀÎÁõÀ» ´Ù·ç´Â ValidateCard.jsp ÆäÀÌÁö¿¡ ¿äûÀ» º¸³½´Ù.

ÀÌ ÆäÀÌÁöÀÇ Ã¹¹øÂ° ºÎºÐÀº ÆäÀÌÁö¿¡ º¸³»Áø ÆÄ¶ó¹ÌÅ͵éÀ» ¿£ÅÍÇÁ¶óÀÌÁî ºóÀÇ ÇØ´ç ¼Ó¼º¿¡ Ä«ÇÇÇϰí ÀÖ´Ù. <c:set> űװ¡ ÁÖ¾îÁø À̸§ÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ºó ¼Ó¼º¿¡ ¾×¼¼½ºÇϱâ À§ÇØ ¾î¶»°Ô "target" °ú "property"À» »ç¿ëÇϰí ÀÖ´ÂÁö¸¦ »ìÆìº¸ÀÚ.

   <!-- Copy parameters to creditCard properties -->
   <c:set target="${creditCard}" property="name"
          value="${param['cardName']}"/>
   <c:set target="${creditCard}" property="type"
          value="${param['cardType']}"/>
   <c:if test="${param.cardNumber != null and 
                                param.cardNumber != ''}">
     <c:set target="${creditCard}" property="number"
            value="${param.cardNumber}"/>
   </c:if>
   <c:set target="${creditCard}" 
          property="expirationDateStr"
          value="${param['cardDate']}"/>

¿äûµÈ ÆÄ¶ó¹ÌÅͰ¡ ¼³Á¤µÇÁö ¾Ê¾Ò´Ù¸é ${param['cardName']}°ú °°Àº expressionsÀº null°ªÀ» »êÃâÇÏ°í µû¶ó¼­ ÇØ´ç ºóÀÇ ¼Ó¼ºÀº null·Î ¼³Á¤µÈ´Ù.

ValidateCard.jspÆäÀÌÁöÀÇ ´ÙÀ½ ºÎºÐÀº »ç¿ëÀڷκÎÅÍ µ¥ÀÌÅ͸¦ ¼öÁýÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ÀÌ µ¥ÀÌÅÍ´Â »ç¿ëÀÚ°¡ Á¦Ãâ(submit)¹öưÀ» Ŭ¸¯ÇßÀ» ¶§ µ¿ÀÏÇÑ ÆäÀÌÁö¿¡ ±×´ë·Î ³ªÅ¸³­´Ù. ÀÌ ¼½¼ÇÀÇ ÄÚµå´Â ¸î °¡Áö Àç¹ÌÀÖ´Â ±â´ÉµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. ÀÌ ÀÔ·ÂÆäÀÌÁö´Â Ç×»ó ÀçÈ£ÃâµÇ±â ¶§¹®¿¡ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ °¢°¢ÀÇ ÀԷ°ªÀº Å©·¹µ÷ Ä«µåÀÇ ÀԷ°ªÀ» ÇöÀç°ªÀ¸·Î ¼³Á¤ÇÏ´Â ¾ÖÆ®¸®ºäÆ®¸¦ Æ÷ÇÔÇÑ´Ù.

ÀÔ·Â ÆäÀÌÁöÀÇ Ã¹¹øÂ° ¼½¼ÇÀº ·¹À̾ƿô°ú ·ÎÄà ¹è°æ»öÀ» Á¶ÀýÇϱâ À§ÇØ ÇϳªÀÇ Ç¥¸¦ »ç¿ëÇϸ鼭 ÀÔ·ÂÆäÀÌÁöÀÇ ÆÄ¶ó¹ÌÅÍÀÎ "cardName"À» À§ÇÑ ÀÔ·Â ¿ä¼Ò¸¦ Á¤ÀÇÇϰí ÀÖ´Ù.

   <input type="text" name="cardName" size="32"
          value="${creditCard.name}"><br>

cardNameÀÇ °ªÀº ´ÙÀ½ÀÇ ÄÚµå¿Í °°ÀÌ EL expression ${creditCard.name}À¸·Î ¼³Á¤µÈ´Ù.

   <%= ((CreditCardLocal)request.getSession().
      getAttribute("creditCard")).getName() %>

¸¸¾à ÀÌ¿Í °°Àº ÆûÀÌ Àü¿¡ Á¦ÃâµÈ ÀûÀÌ ÀÖ´Ù¸é cardNameÀÔ·Â ¹Ú½º¾È¿¡ ÀÔ·ÂµÈ ÀûÀÌ ÀÖ´Â À̸§µéÀÌ ³ªÅ¸³ª°Ô µÉ °ÍÀÌ´Ù.

´ÙÀ½À¸·Î ÀÔ·ÂÇØ¾ß ÇÒ °ÍÀº °¢°¢ÀÇ Å©·¹µ÷ Ä«µå ŸÀÔ¿¡ Çϳª¾¿ ÇÒ´çµÈ ¶óµð¿À ¹öư ¼¼Æ®ÀÌ´Ù. Å©·¹µ÷ Ä«µå °´Ã¼´Â CCInfo ŸÀÔÀÇ "info" ¼Ó¼ºÀ» °®´Â´Ù. ÀÌ °´Ã¼´Â ¸ðµç À¯È¿ÇÑ Å©·¹µ÷ Ä«µå ŸÀÔ¿¡ °üÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Â java.util.HashMapÀ̸ç, ÀÌ ¸ÊÀÇ Å°´Â °³°³ÀÇ Å©·¹µ÷ Ä«µå¸¦ ³ªÅ¸³»´Â À̸§µéÀÌ´Ù. °¡·É "mc"´Â MasterCard¸¦ ¸»ÇÑ´Ù. ¿©±â¼­ °ªÀº Ä«µå¸¦ ¼³¸íÇÏ´Â °´Ã¼ÀÎ CCDescŸÀÔÀÌ´Ù. (´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ÄÚµå ¿¹Á¦¿¡ Æ÷¸ËµÈ ¼Ò½º Äڵ带 Âü°íÇϱ⠹ٶõ´Ù.) <c:forEach>·çÇÁ¹®Àº °¢°¢ÀÇ Ä«µå ŸÀÔÀ» À§ÇÑ ¶óµð¿À ¹öưÀ» »ý¼ºÇϸ鼭 À¯È¿ÇÑ Å©·¹µ÷ Ä«µå ŸÀÔÀÇ ¸®½ºÆ®¸¦ ¹Ýº¹¿¬»êÇÏ°Ô µÈ´Ù.

   <p>
   <b>Type of card:</b><br>
   <c:forEach var="item" items="${creditCard.info}">
     <input type="radio" name="cardType" 
            value="${item.key}"
       ${(item.key eq creditCard.type) ? 'checked' : ''}>
       ${item.value.description}<br>
   </c:forEach>

»ý¼ºµÇ´Â ÁßÀÎ ¹öưÀÌ creditCard °´Ã¼¿¡¼­ ¼±ÅõǾú´Ù¸é, ${(item.key eq creditCard.type) ? 'checked' : ''} expressionÀº "checked" ½ºÆ®¸µÀ» »êÃâÇÑ´Ù. ÀÌ ·çÇÁ¹®Àº È®À强ÀÇ ÇüÅ·Π´«¿¡ º¸ÀÌÁö ¾Ê´Â ÀÌÁ¡À» Á¦°øÇÑ´Ù. »õ·Î¿î ŸÀÔÀÇ Å©·¹µ÷ Ä«µå¸¦ Ãß°¡Çϱâ À§Çؼ­´Â CCDesc descriptionÀÇ Å¸ÀÔÀ» CreditCardÀÇ CCInfo·Î¸¸ Ãß°¡ÇØÁÖ¸é µÈ´Ù. ´ÙÀ½¹ø¿¡ ValidatePage.jsp°¡ ½ÇÇàµÉ ¶§, ·çÇÁ¹®Àº »õ·Î¿î ŸÀÔÀÇ Ä«µå¸¦ ã¾Æ³»¾î ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù.

´ÙÀ½ 2°³ÀÇ ÀԷ°ªÀº Å©·¹µ÷ Ä«µå ³Ñ¹ö¿Í ¸¸±â ³¯Â¥¸¦ Æ÷ÇÔÇÑ´Ù.

   <b>Card number:</b>
   <input type="text" name="cardNumber" size="24"
      value="${creditCard.number}"><p>
   <b>Expiration date (mm/yyyy):</b>
   <input type="text" name="cardDate" size="10" 
      value="${creditCard.expirationDateStr}">

À§ÀÇ °ªµéÀÌ ÇØ´çÇÏ´Â ¿£ÅÍÇÁ¶óÀÌÁî ºóÀÇ ¼Ó¼º °ªµé·Î ¼³Á¤µÇ¾ú´Ù´Â °ÍÀ» ´Ù½Ã Çѹø ÁÖ¸ñÇÏÀÚ.

ÆûÀÇ ¼¼¹øÂ° ºÎºÐÀº ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©Áְųª, Á¶°Ç¿¡ ¸Â´Ù¸é Ä«µå°¡ À¯È¿ÇÏ´Ù´Â °ÍÀ» ³ªÅ¸³»´Â ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°Ô µÈ´Ù. ÀÌ ¼½¼ÇÀº µÎ°³ÀÇ ÅÂ±× <c:when> °ú <c:otherwise>¸¦ Æ÷ÇÔÇÑ´Ù. ù¹øÂ° ű״ īµå ³Ñ¹ö°¡ nullÀÌ¸é ¿¡·¯ ¸Þ½ÃÁö°¡ ÇÁ¸°Æ®µÇ´Â °ÍÀ» ¸·´Â´Ù.

   <c:choose>

     <c:when
      test=
       "${creditCard.number == null || creditCard.number == ''}">
       <!-- No number, so no need to complain 
         that it's not valid -->
     </c:when>

µÎ¹øÂ° <c:when>ű״ īµå°¡ À¯È¿ÇÒ °æ¿ì ¼º°ø ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.

   <c:when test="${creditCard.valid}">
      The following card is valid:<br>
      <table border="0">
      <tr><th align="left">Name:</th>
        <td>${creditCard.name}</td>
      </tr>
      <!-- and so on... -->
   </c:when>

ÀÌ ÁöÁ¡¿¡¼­, ½ÇÁ¦ ¾ÖÇø®ÄÉÀ̼ÇÀº ¾Æ¸¶µµ »ç¿ëÀÚÀÇ ºê¶ó¿ìÀú¸¦ ºô¸µ ÁÖ¼Ò Á¤º¸¸¦ ¼öÁýÇÏ´Â ÆûÀ¸·Î Àü¼ÛÇÏ°Ô µÉ °ÍÀÌ´Ù. <c:if> ¸¦ À§ÇÑ Å×½ºÆ®´Â booleanÀ̶ó´Â °ÍÀ» ±â¾ïÇÏÀÚ. µû¶ó¼­ expression ${creditCard.valid}´Â ¹Ýµå½Ã boolean ŸÀÔÀ̾î¾ß ÇÑ´Ù. ÀÌ ¼Ó¼ºÀ» À§ÇØ »ç¿ëµÇ´Â Á¢±Ù ¸Þ¼Òµå´Â CreditCardLocal.isValid()ÀÌ´Ù. ¿Ö³ÄÇϸé booleanŸÀÔÀÇ ¼Ó¼ºÀ» Á¢±ÙÇϱâ À§ÇÑ ¸Þ¼Òµå´Â "get" ´ë½Å¿¡ "is"¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. ¸¶Áö¸· ű×ÀÎ <c:otherwise>´Â Ä«µå°¡ À¯È¿ÇÏÁö ¾ÊÀ» °æ¿ì¸¦ À§ÇÑ °ÍÀÌ´Ù.

   <c:otherwise>
      <hr>
      <font color="red">This number is not valid.</font>
      <br>
      <i>Problem</i>: ${creditCard.validityMessage}<br>
      Please correct the problem and try again.
   </c:otherwise>
  </c:choose>

CreditCardLocal.getValidityMessage ´Â Ä«µå°¡ À¯È¿ÇÏÁö ¾ÊÀº ÀÌÀ¯¸¦ »ç¿ëÀÚ¿¡°Ô Ä£¼÷ÇÑ ¿¡·¯ ¸Þ½ÃÁö·Î ¸®ÅÏÇÑ´Ù.

ÀÌ ¿¹Á¦ÀÇ À¯¿ëÇÑ ÆÁÀº ¿£ÅÍÇÁ¶óÀÌÁî ºó ÀÎÅÍÆäÀ̽º°¡ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼¼¼Ç ȤÀº ´Ù¸¥ ÄÁÅØ½ºÆ®¾È¿¡ ÀúÀåµÉ ¼ö ÀÖ°í, JSP EL expressions·Î ÀÛ¼ºµÈ À̸§À¸·Î °Ë»öµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç ·ÎÁ÷ÀÌ scriptlets¿¡ ±¸ÇöµÇ°í ÀÖÁö ¾Ê±â ¶§¹®¿¡ ÀÌ ±â¹ýÀ» »ç¿ëÇϸé ĸ½¶È­¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Ù. ÀÌ´Â ¶ÇÇÑ JSPÆäÀÌÁö¸¦ »ý¼ºÇϰí ÀÌÇØÇϰí À¯ÁöÇÏ´Â °ÍÀ» ¿ëÀÌÇÏ°Ô ÇØÁØ´Ù.

»ùÇà ÄÚµå ½ÇÇàÇϱâ

»ùÇà ¾ÆÄ«À̺긦 ´Ù¿î·Îµå ¹ÞÀÚ. ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÁÅØ½ºÆ® ·çÆ®´Â ttfeb2004ÀÌ´Ù. ´Ù¿î·ÎµåµÈ ear ÆÄÀÏÀº ¿Ï¼ºµÈ Äڵ嵵 Æ÷ÇÔÇϰí ÀÖ´Ù.

¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÄ«À̺ê(ttfeb2004.ear)¸¦ deploytoolÇÁ·Î±×·¥À̳ª ¾îµå¹Î ÄܼÖÀ» ÀÌ¿ëÇØ¼­ J2EE 1.4 Application Server ¿¡ ¹èÆ÷ÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ´ÙÀ½°ú °°ÀÌ asadminÄ¿¸Çµå¸¦ Á÷Á¢ ÀÔ·ÂÇØ¼­ ¹èÆ÷ÇÒ ¼öµµ ÀÖ´Ù.

   asadmin deploy install_dir/ttfeb2004.ear

install_dir¸¦ warÆÄÀÏÀ» ÀνºÅçÇÑ µð·ºÅ丮·Î ´ëüÇÏÀÚ.

¾ÖÇø®ÄÉÀ̼ÇÀºhttp://localhost:8000/ttfeb2004¿¡¼­ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

J2EE 1.4 Application Serverº¸´Ù J2EE 1.4¿¡ ¸Â´Â ±¸ÇöÀ» ÇϰíÀÚ ÇÑ´Ù¸é Ç÷§Æû¿¡ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷Çϱâ À§ÇØ J2EE ÇÁ·Î´öÆ®ÀÇ ¹èÆ÷ ÅøÀ» »ç¿ëÇÏÀÚ.

ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇϸé, ´ÙÀ½°ú °°Àº ÆäÀÌÁö¸¦ º¸°Ô µÈ´Ù.

scope

.
.
.

Reader Feedback

  ¸Å¿ì ÁÁ´Ù    ÁÁ´Ù    ±×Àú ±×·¸´Ù 

 

ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀÌ ±Ã±ÝÇϼ¼¿ä? Java Online SupportÀ» Âü°íÇϼ¼¿ä.

.
.

º» ¸ÞÀÏÀº ¼ö½ÅÀ» µ¿ÀÇÇÑ È¸¿ø´Ô¿¡°Ô¸¸ ¹ß¼ÛµË´Ï´Ù. °ü·Ã¹®ÀÇ : SunKorea@sun.com
º» ¸ÞÀÏÀÇ ¼ö½ÅÀ» °ÅºÎÇϽ÷Á¸é ¼ö½Å°ÅºÎ¸¦ Ŭ¸¯ÇØ ÁÖ¼¼¿ä.

Copyright 2004 Sun Korea, Inc. All rights reserved.

Sun Microsystems, Inc.
.
.