¿ø¹® : http://www.onjava.com/pub/a/onjava/2003/11/05/jsp.html
by Hans Bergsten, JavaServer Pages, 3ÆÇÀÇ ÀúÀÚ
¹ø¿ª ¼Õ±Ç³²(kwon37xi_aT_yahoo dOt co DoT kr)
2004/07/06
±â´Ù¸²ÀÌ °ÅÀÇ ³¡³ª°£´Ù(¹ø¿ª½ÃÁ¡¿¡¼´Â ÀÌ¹Ì ³¡³µ´Ù). ÃֽŠJavaServer Pages(JSP)½ºÆåÀÎ JSP 2.0ÀÌ ´Ù¸¥ J2EE 1.4½ºÆå°ú ÇÔ²² ¹ßÇ¥µÉ ¶§°¡ °¡±î¿ö¿Ô´Ù. ¼Ò¼öÁ¡ ¾ÕºÎºÐÀÇ ¹öÀü ¹øÈ£°¡ ¹Ù²ï°ÍÀ¸·Î º¸¾Æ JSP¸¦ »ç¿ëÇÏ´Â ¸¹Àº ¹æ½ÄµéÀÌ ¹Ù²î¾úÀ½À» ¾Ë ¼ö ÀÖ´Ù. ´õÀÌ»ó JSPÆäÀÌÁö¿¡ JAVA ÄÚµå´Â ÇÊ¿ä¾ø´Ù. »õ·Î¿î Ç¥Çö½Ä(EL:Expression Language)°ú JSP Standard Tag Library(JSTL)´öºÐÀÌ´Ù. ¶ÇÇÑ Ä¿½ºÅÒ ¾×¼ÇÀ» °³¹ßÇÏ´Â »õ·Î¿î ¹æ½Ä´öºÐ¿¡ ÄÚµå Àç»ç¿ëÀÌ ÈξÀ ½¬¿öÁ³´Ù. º¸´Ù ¸íÈ®ÇÏ°Ô ¸»ÇØ, JSP 2.0Àº ´ÙÀ½°ú °°Àº ÀÌÁ¡µéÀ» °¡Áö°í ÀÖ´Ù.
ÀÌ ±â»ç´Â JSP 2.0 ÀÇ »õ·Î¿î ±â´ÉÀ» ¼³¸íÇÏ´Â ±â»ç ½Ã¸®ÁîÀÇ Ã¹¹ø° ÀÌ´Ù. À̹ø Àå¿¡¼´Â EL°ú °ü·ÃµÈ »çÇ׸¸ º¼ °ÍÀ̸ç, ´Ù¸¥ »çÇ×µéÀº ´ÙÀ½ ȸ¿¡ º¸±â·Î ÇÑ´Ù. ³ª´Â ´ç½ÅÀÌ JSP 1.2¿¡ Àͼ÷ÇÏ°í JSP Standard Tag Library(JSTL)¿¡ ´ëÇØ µé¾îº¸±â´Â Çß´Ù°í °¡Á¤ÇÏ°í ±ÛÀ» ½è´Ù.
´ç½ÅÀº ¶ÇÇÑ ³ªÀÇ JavaServer Pages Ã¥ 3ÆÇ¿¡ °ü½ÉÀÌ ÀÖÀ» Áöµµ ¸ð¸¥´Ù. ÀÌ Ã¥Àº ÀÌÁ¦ ¼³¸íÇÒ ¸ðµç °ÍÀ» ´õ ÀÚ¼¼È÷ ¼³¸íÇÏ°í, ´ç½ÅÀÌ JSP¿Í JSTLÀ» ¸ð¸¦ ¼öµµ ÀÖ´Ù°í »ý°¢ÇÏ°í ¾´ °ÍÀÌ´Ù. ÀÌ Ã¥Àº 2003³â 12¿ù¿¡ Ãâ°£µÉ ¿¹Á¤ÀÌ´Ù. ÇÏÁö¸¸ Amazon.com µîÀÇ ¼Á¡¿¡¼ ¹Ì¸® ÁÖ¹®ÇÒ ¼öµµ ÀÖ´Ù.
´ç½ÅÀÌ JSTLÀ» »ç¿ëÇغôٸé, ÀÌ¹Ì JSP Expression Lnaguage¸¦ Àß ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ELÀº JSTL 1.0 ½ºÆå¿¡¼ ¼Ò°³µÈ °ÍÀ¸·Î JAVAÄڵ带 ´ë½ÅÇØ ½ÇÇà½Ã°£¿¡ ¾×¼Ç(ű×) ¿¤¸®¸ÕÆ®ÀÇ ¼Ó¼º¿¡ °ªÀ» ÁöÁ¤ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. JSTLÀÇ ELÀº ¸Å¿ì »¡¸® Àα⸦ ²ø¾ú´Ù. ÇÏÁö¸¸ ¹®Á¦°¡ Çϳª Àִµ¥ JSTL ELÀº ¿ÀÁ÷ JSTL ¾×¼Ç¿¡¼¸¸ ÀÛµ¿Çß°í, Ä¿½ºÅÒ ¾×¼ÇÀº Ç¥ÁØÀÌ ¾Æ´Ñ API¸¦ »ç¿ëÇؼ ELÀ» ¼öÇàÇϵµ·Ï Ưº°È÷ ÀÛ¼ºµÇ¾î¾ß¸¸ ELÀ» »ç¿ëÇÒ ¼ö ÀÖ¾ú´Ù.
JSP 2.0À» ½ÃÀÛÇϸç, JSP ÄÁÅ×ÀÌ³Ê ÀÚ½ÅÀÌ EL Ç¥Çö½ÄÀ» Çؼ®ÇÒ ¼ö ÀÖ°Ô µÇ¾ú°í, Ç¥ÁØ°ú Ä¿½ºÅÒ ¾×¼Ç ±×¸®°í, ÅÛÇø´ ÅؽºÆ®(HTML°°Àº)¿Í °°ÀÌ JAVA Äڵ带 »ç¿ëÇØ¾ß Çß´ø ¸ðµç °÷¿¡¼ ELÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù.
±¸Ã¼ÀûÀÎ ¿¹Á¦¸¦ º¸±âÀü¿¡, ELÀÌ ¹ºÁö ´õ ÀÚ¼¼È÷ »ìÆ캸ÀÚ. ELÀº JavaScript¿¡¼ Á¶±Ý È®ÀåÇÏ°í XPath(XML ¹®¼ÀÇ Á¤º¸¿¡ Á¢±ÙÇϱâ À§ÇØ »ç¿ëµÇ´Â ¾ð¾î)¿¡¼ ÈùÆ®¸¦ ¾ò¾î ¸¸µé¾îÁø ¾ð¾îÀÌ´Ù. ±×·¯³ª ELÀº °ªÀÌ ¾ø´Â º¯¼ö(null)¿¡ ´ëÇØ Á»´õ °ü´ëÇÏ°í, µ¥ÀÌŸÇü º¯È¯À» Á»´õ ÀÚµ¿ÀûÀ¸·Î ÇØÁØ´Ù. ÀÌ·¯ÇÑ Æ¯Â¡µéÀº ÆĶó¹ÌÅ͵éÀ» Æû¿¡¼ ¾ò¾î¿À´Â À¥ ¾îÇø®ÄÉÀ̼ǿ¡ Áß¿äÇÏ´Ù. ÆĶó¹ÌÅ͵éÀÌ ¸î¸î ¿äû¿¡¼´Â Á¸ÀçÇÏ°í ¾î¶² °æ¿ì¿¡´Â °ªÀÌ ¾øÀ» ¼ö ÀÖÀ¸¸ç, ºê¶ó¿ìÀú°¡ ÆĶó¹ÌÅÍ°ªÀ» Ç×»ó ¹®ÀÚ¿(text)·Î º¸³»´Âµ¥ ¹ÝÇØ, À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼´Â ¼ýÀÚ³ª ºÒ¸°(true/false)·Î »ç¿ëÇØ¾ß ÇÒ °æ¿ìµµ »ý±ä´Ù. ELÀÌ ¼³°èµÈ ¹æ½Ä¿¡ µû¸£¸é, °ªÀÌ ¾øÀ» °æ¿ì(null)³ª, Çü º¯È¯ °°Àº °Í¿¡ ÀüÇô ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø´Ù.
EL Ç¥Çö½ÄÀº º¯¼ö¿Í ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÑ´Ù. JSP ½ºÄÚÇÁ(page, request, session, application)¿¡ ÀúÀåµÈ ¾î¶² ºóÀÌ¶óµµ EL º¯¼ö·Î¼ »ç¿ëµÉ ¼ö ÀÖ´Ù. °Ô´Ù°¡ ELÀº ´ÙÀ½°ú °°Àº ³»Àå º¯¼öµéµµ Áö¿øÇÑ´Ù:
º¯¼ö À̸§ | ¼³¸í |
---|---|
pageScope | ¸ðµç page ½ºÄÚÇÁ º¯¼ö¿¡ ´ëÇÑ Ä÷º¼Ç(java.util.Map). |
requestScope | ¸ðµç request ½ºÄÚÇÁ º¯¼ö¿¡ ´ëÇÑ Ä÷º¼Ç(java.util.Map). |
sessionScope | ¸ðµç session ½ºÄÚÇÁ º¯¼ö¿¡ ´ëÇÑ Ä÷º¼Ç( java.util.Map). |
applicationScope | ¸ðµç application ½ºÄÚÇÁ º¯¼ö¿¡ ´ëÇÑ Ä÷º¼Ç(java.util.Map) |
param | ¸ðµç request ÆĶó¹ÌÅÍ °ªµéÀ» ÇÑ°³ÀÇ ¹®ÀÚ¿·Î °¡Áø Ä÷º¼Ç(java.util.Map). |
paramValues | ¸ðµç request ÆĶó¹ÌÅÍÀÇ °ªµéÀ» ÆĶó¹ÌÅÍ´ç ¹®ÀÚ¿ ¹è¿·Î °¡Áø Ä÷º¼Ç(java.util.Map). |
header | ¸ðµç Çì´õÀÇ °ªµéÀ» Çì´õ´ç ÇϳªÀÇ ¹®ÀÚ¿·Î °¡Áø Ä÷º¼Ç(java.util.Map). |
headerValues | ¸ðµç Çì´õÀÇ °ªµéÀ» Çì´õ´ç ¹®ÀÚ¿ ¹è¿·Î °¡Áø Ä÷º¼Ç(java.util.Map). |
cookie | ¸ðµç ÄíÅ°ÀÇ °ªµéÀ» ÄíÅ°´ç ÇÑ°³ÀÇ javax.servlet.http.CookieÀÇ °ªÀ¸·Î °¡Áø Ä÷º¼Ç(java.util.Map). |
initParam | ¸ðµç ¾îÇø®ÄÉÀ̼ÇÀÇ ÃʱâÈ ÆĶó¹ÌÅ͸¦ ÆĶó¹ÌÅÍ´ç ÇÑ°³ÀÇ ¹®ÀÚ¿·Î °¡Áø Ä÷º¼Ç(java.util.Map). |
pageContext | javax.servlet.jsp.PageContext Ŭ·¡½º·Î¼, ´Ù¾çÇÑ request µ¥ÀÌŸ¿¡ ´ëÇÑ ¾×¼¼½º¸¦ °¡´ÉÄÉ ÇÑ´Ù. |
¿¬»êÀÚµéÀº º¯¼öµé·Î ¹» ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. EL¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¬»êÀÚµéÀº ÇÁ·Î±×·¡¹ÖÀ» ÇØºÃ´Ù¸é ¸¹ÀÌ ´«¿¡ ÀÍÀ» °ÍÀÌ´Ù. ¿Ö³Ä¸é, °ÅÀÇ ¸ðµç ¾ð¾î¿¡¼ Áö¿øµÇ´Â ¿¬»êÀÚµé°ú °°±â ¶§¹®ÀÌ´Ù.
¿¬»êÀÚ | ¼³¸í |
---|---|
. | ºóÀÇ ÇÁ¶óÆÛƼ³ª MapÀÇ ¿£Æ®¸® Á¢±Ù |
[] | ¹è¿À̳ª ¸®½ºÆ® ¿¤¸®¸ÕÆ® Á¢±Ù |
() | ºÎ°¡ÀûÀΠǥÇö½ÄÀ» ¿¬»ê ¼ø¼¸¦ ¹Ù²ã¼ ¿¬»êÇÏ°Ô ÇÒ ¶§. 3 * (1+2) |
? : | Á¶°Ç Å×½ºÆ® - Á¶°Ç ? trueÀ϶§¸®ÅÏ°ª : falseÀ϶§¸®ÅÏ°ª |
+ | ´õÇϱâ |
- | »©±â ȤÀº À½¼ö |
* | °öÇϱâ |
/ ȤÀº div | ³ª´©±â |
% ȤÀº mod | ³ª¸ÓÁö |
== ȤÀº eq | °°´Ù |
!= ȤÀº ne | ´Ù¸£´Ù |
< ȤÀº lt | º¸´Ù ÀÛ´Ù |
> ȤÀº gt | º¸´Ù Å©´Ù |
<= ȤÀº le | À۰ųª °°´Ù |
>= ȤÀº ge | Å©°Å³ª °°´Ù |
&& ȤÀº and | ³í¸® AND |
|| ('|'°¡ ¿¬¼ÓÀ¸·Î µÎ°³) ȤÀº or | ³í¸® OR |
! ȤÀº not | ´ÜÇ× not (true¸¦ false·Î false¸¦ true·Î) |
empty | ºó º¯¼ö °ª(null, ºó ¹®ÀÚ¿, ºó ¹è¿, ¿£Æ®¸®°¡ ¾ø´Â ¸ÊÀ̳ª Ä÷º¼Ç)Àΰ¡ Å×½ºÆ® |
func(args) | ÇÔ¼ö È£Ãâ. func´Â ÇÔ¼ö À̸§ÀÌ°í args´Â ¾ø°Å³ª, ÇÑ°³ ȤÀº ½°Ç¥(,)·Î ºÐ¸®µÈ ¿©·¯°³ÀÇ ÇÔ¼ö ÀÎÀÚÀÌ´Ù |
EL Ç¥Çö½ÄÀº ¼ýÀÚ, ¹®ÀÚ¿(Ȭµû¿ÈÇ¥ ȤÀº ½Ö µû¿ÈÇ¥¿Í ÇÔ²²), ºÒ¸° °ª°ú null°°Àº ¸®ÅÍ·²(»ó¼ö °ª)µéµµ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.
EL Ç¥Çö½ÄÀÌ ÅÛÇø´ ¹®ÀÚ¿(HTMLµî)ÀÌ ¿À´Â °ð¿¡µµ ¿Ã ¼ö Àֱ⠶§¹®¿¡, JSP ÄÁÅ×À̳ʿ¡°Ô ±×°ÍÀÌ ELÇ¥Çö½ÄÀ̶ó°í ¾Ë·ÁÁà¾ß¸¸ ÇÑ´Ù. ±¸È¹¹®ÀÚ(delimiter)¸¦ ÀÌ¿ëÇؼ ÇÏ¸é µÈ´Ù. ELÀº Ç×»ó ${ ±¸È¹¹®ÀÚ·Î ½ÃÀÛÇؼ }·Î ³¡³´Ù. ¿©±â 5¸¦ amount¶ó´Â º¯¼ö¿¡ ´õÇÏ´Â EL Ç¥Çö½ÄÀÌ ÀÖ´Ù.
${amount + 5}
ºó ÇÁ¶óÆÛƼ¿¡ 5¸¦ ´õÇÏ°íÀÚÇÑ´Ù¸é, ÇÁ¶óÆÛƼ Á¢±Ù ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù:
${order.amount + 5}
ÇÁ¶óÆÛƼ Á¢±Ù ¿¬»êÀÚ(.)Àº EL¿¡°Ô ºóÀ̳ª Ä÷º¼Ç(¿©±â¼´Â order, ºóÀ̳ª java.util.Map ÀÏ ¼ö ÀÖ´Ù)¿¡¼ ±× ´ÙÀ½¿¡ ¿À´Â À̸§°ú °°Àº ÇÁ¶óÆÛƼ(¿©±â¼´Â amount)¸¦ ã°ÔÇÑ´Ù.
´ë½Å, ¹è¿ Á¢±Ù ¿¬»êÀÚ¸¦ »ç¿ëÇصµ µÈ´Ù.
${order['amount'] + 5}
[] ¾ÈÀÇ °ªÀº ÇÁ¶óÆÛƼÀÇ À̸§À» ³ªÅ¸³»´Â ¹®ÀÚ¿(ÀÌ ¿¹Á¦¿¡¼ ¾²Àδë·Î)À̰ųª ¾Æ´Ï¸é ÇÁ¶óÆÛƼ À̸§À» °ªÀ¸·Î °¡Áø º¯¼ö (ȤÀº ´Ù¸¥ EL Ç¥Çö½Ä)ÀÌ¸é µÈ´Ù.
ELÀº µ¿ÀûÀ¸·Î °ªÀ» ¹Þµµ·Ï(dynamic value ȤÀº request-time attribute) ÁöÁ¤µÈ Ç¥ÁØ(JSTL)À̳ª Ä¿½ºÅÒ JSP ¾×¼ÇÀÇ ¼Ó¼º¿¡ °ªÀ» ÁöÁ¤ÇÒ ¶§µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù :
<c:out value="${order.amount + 5}"/>
JSP 2.0 ÀÌÀü¿¡´Â ¼Ó¼º¿¡ µ¿ÀûÀ¸·Î °ªÀ» ÁÖ±â À§ÇØ JAVA Ç¥Çö½ÄÀ» ½á¾ß¸¸ Çß´Ù. ÀÌ·ÎÀÎÇØ ¿ì¸®´Â Áö³ ¸î³â°£ ¼ö¸¹Àº ¹®¹ý ¿À·ù¿¡ ½Ã´Þ·Á¾ß¸¸ Çß´Ù.
¸¶Ä§³» EL Ç¥Çö½ÄÀÌ ÆäÀÌÁö ³»¿¡¼ ÅÛÇø´ ÅؽºÆ®¿Í Á÷Á¢ÀûÀ¸·Î ÇÔ²² ¾²ÀÏ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ÀÌ°ÍÀº HTML ¿¤¸®¸ÕÆ®¿Í ¼Ó¼ºÀ» µ¿ÀûÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÒ ¶§ ¸Å¿ì Æí¸®ÇÏ´Ù.
<input name="firstName" value="${customer.firstName}">
JSP 1.2 ¿¡¼´Â, °°Àº ÀÛ¾÷À» Çϱâ À§ÇØ JSTLÀÇ <c:out> ¾×¼ÇÀ» »ç¿ëÇؾ߸¸ Çß´Ù. ÀÌ°ÍÀº ¼·Î ´Ù¸¥ ÇüÀÇ µÎ ¿¤¸®¸ÕÆ®¸¦ ¼¯¾î½á¼ ÀÌÇØÇÏ±â ¸Å¿ì ¾î·Æ´Ù :
<input name="firstName"
value="<c:out value="${customer.firstName}"/>" >
JSTL 1.1Àº JSTLÀ» JSP 2.0¿¡ ÅëÇÕÇϱâ À§ÇÑ ¸¶ÀÌ³Ê ½ºÆå ¸±¸®ÁîÀÌ´Ù. ´«¿¡ ¶ç´Â º¯È´Â JSTL 1.0ÀÇ µÎ°³·Î ºÐ¸®µÇÀÖ´ø ¶óÀ̺귯¸®(ÇÑ°¡Áö´Â EL¸¦ »ç¿ëÇÏ°í ÇÑ°¡Áö´Â JAVA Ç¥Çö½ÄÀ» »ç¿ëÇÏ´Â)°¡ EL°ú JAVA Ç¥Çö½Ä ¸ðµÎ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÑ°¡Áö ¶óÀ̺귯¸®·Î ÅëÇÕµÈ °ÍÀÌ´Ù.
JSTL 1.1ÀÇ ¶óÀ̺귯¸®µéÀº ´ÙÀ½°ú °°Àº ÁöÁ¤ÀÚ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. 1.0°ú ´Ù¸£´Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù.
Library | URI | Prefix |
---|---|---|
Core | http://java.sun.com/jsp/jstl/core | c |
XML processing | http://java.sun.com/jsp/jstl/xml | x |
I18N formatting | http://java.sun.com/jsp/jstl/fmt | fmt |
Database access | http://java.sun.com/jsp/jstl/sql | sql |
Functions | http://java.sun.com/jsp/jstl/functions | fn |
JSTL 1.0À» »ç¿ëÇß¾ú´Ù¸é, ¸ðµç ¶óÀ̺귯¸®ÀÇ URIÀÇ Áß°£¿¡ '/jsp' Æнº°¡ µé¾î°£ °ÍÀ» Á¦¿ÜÇÏ°í, ±âÁ¸ÀÇ ¶óÀ̺귯¸® ÁöÁ¤ÀÚ¿Í µ¿ÀÏÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ¶ÇÇÑ, JSTL 1.1ÀÌ EL Function À̶ó´Â »õ·Î¿î ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏ°í ÀÖÀ½µµ º¼ ¼ö ÀÖ´Ù. ÀÌ°ÍÀ» ª°Ô »ìÆ캼 °ÍÀÌ´Ù.
JSP ÆäÀÌÁö¿¡¼ ¸Å¿ì ÀÚÁÖ ÇÊ¿äÇÑ ±â´É ÁßÀÇ Çϳª´Â ¾î¶² Á¶°ÇÀÌ true ÀÏ ¶§ ÅÛÇø´ ÅؽºÆ®¸¦ Æ÷ÇÔ½ÃÅ°´Â ±â´ÉÀÌ´Ù. JSP 1.2¿Í JSTL 1.1À» ÀÌ¿ëÇϸé, ÀÌ°ÍÀ» <c:if> ºí·ÏÀ» ÀÌ¿ëÇؼ ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸, ±×°Ç ¹«Ã´ º¹ÀâÇÑ ÇØ°áÃ¥ÀÌ´Ù. JSP 2.0Àº EL¿¡ »õ·Î¿î Á¶°Ç ¿¬»êÀÚ¸¦ Ãß°¡ÇÏ¿© ´õ¿í °í»óÇÏ°Ô ÀÌ·± ¹®Á¦¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù.
Á¶°Ç ¿¬»çÀÚ´Â ¸¹Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ Á¸ÀçÇϹǷÎ(¿¹¸¦ µé¾î JAVA, C, JavaScript µî). ÀÌ¹Ì º»ÀûÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ¿¬»êÀÚ´Â ºÒ¸° Á¶°Ç°ú Á¶°ÇÀÌ ÂüÀ϶§ »ç¿ëÇÒ °ª°ú Á¶°ÇÀÌ °ÅÁþÀÏ ¶§ »ç¿ëÇÒ ¶Ç ´Ù¸¥ °ªÀ» ÃëÇÑ´Ù. ¿¹Á¦¸¦ º¸¸é ¾î¶»°Ô µ¹¾Æ°¡´ÂÁö È®½ÇÈ÷ ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù:
<select name="artist">
<option value="1" ${param.artist == 1 ? 'selected' : ''}>
Vesica Pisces
<option value="2" ${param.artist == 2 ? 'selected' : ''}>
Cortical Control
<option value="3" ${param.artist == 3 ? 'selected' : ''}>
Vida Vierra
</select>
¿©±â¼ ³ª´Â select ¸ñ·Ï¿¡¼ ÀÔ·ÂµÈ °ª¿¡ ÀÏÄ¡ÇÏ´Â °ªÀ» °¡Áö´Â option¿¡ selected ¼Ó¼ºÀ» ÁöÁ¤Çϱâ À§ÇØ Á¶°Ç ¿¬»êÀÚ¸¦ »ç¿ëÇß´Ù. ¸¸¾à Á¶°Ç (param.artist == 1)ÀÌ trueÀ̸é, ù¹ø° °á°ú ('selected')°¡ ÆäÀÌÁö¿¡ Ãß°¡µÈ´Ù. ±×·¸Áö¾ÊÀ¸¸é µÎ¹ø° °ª(ºó ¹®ÀÚ¿)ÀÌ Ãß°¡µÈ´Ù.
ELÀÌ JSTL½ºÆå¿¡¼ JSP ½ºÆåÀ¸·Î ³Ñ¾î°¡¸é¼, »õ·Î¿î ¹¦±â¸¦ Ãß°¡Çß´Ù. ´Ù½Ã¸»ÇØ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀÌ´Ù. EL ÇÔ¼ö ¹®¹ýÀº ´Ü¼øÇÏ´Ù. ÀÎÀÚµéÀ» °ýÈ£¾È¿¡ °¡Áö°í ÀÖ´Â ÇÔ¼öÀÇ À̸§:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
${fn:length(myCollection)}
ÇÔ¼ö´Â ÅÂ±× ¶óÀ̺귯¸®¿¡ ¼ÓÇÏ´Â °ÍÀÌ°í, ÇÔ¼ö À̸§Àº °¢ ÆäÀÌÁöÀÇ ÅÂ±× ¶óÀ̺귯¸® Áö½ÃÀÚ¸¦ ÅëÇØ ¶óÀ̺귯¸®¿¡ ÁöÁ¤µÈ prefix¸¦ Æ÷ÇÔÇÑ´Ù.
ÅÂ±× ¶óÀ̺귯¸® ±â¼úÀÚ(TLD; Tag Library Descriptor)´Â ÇÔ¼ö À̸§À» ÇÔ¼öÀÇ ±â´ÉÀ» ±¸ÇöÇÑ Àڹ٠Ŭ·¡½ºÀÇ static ¸Þ¼Òµå·Î ¸ÅÇÎÇÑ´Ù.
<function>
<description>
Ä÷º¼ÇÀÇ ¾ÆÀÌÅÛ °¹¼ö³ª ¹®ÀÚ¿ÀÇ ¹®ÀÚ °¹¼ö¸¦ ¸®ÅÏÇÑ´Ù.
</description>
<name>length</name>
<function-class>
org.apache.taglibs.standard.functions.Functions
</function-class>
<function-signature>
int length(java.lang.Object)
</function-signature>
</function>
¿©±â¼ °¡Àå ÁÖÀÇÇؼ º¼ °ÍÀº <function-signature> ¿¤¸®¸ÕÆ®ÀÌ´Ù. ¿©±â¿¡ ÇÔ¼ö°¡ ¸®ÅÏÇÒ °ªÀÇ Çü¿¡ ´ëÇÑ ¼±¾ð, staticÀ¸·Î ±¸ÇöÇÑ ¸Þ¼ÒµåÀÇ À̸§, ±×¸®°í °ýÈ£¾È¿¡ ¸ðµç Àμö(¾ø°Å³ª 1°³ ÀÌ»ó, ½°Ç¥·Î ºÐ¸®)ÀÇ Çü ¼±¾ðÇÑ °ÍÀÌ Æ÷ÇԵȴÙ. ¸®ÅÏ Çü°ú ÀμöÀÇ ÇüÀº JAVA ¿ø½ÃÇüÀ̰ųª ¿ÏÀüÇÑ(ÆÐÅ°Áö±îÁö Æ÷ÇÔÇÑ) Çü À̸§À̾î¾ß ÇÑ´Ù.
length() ÇÔ¼ö¿¡ ´ëÇÑ static ¸Þ¼Òµå´Â Jakarta Taglibs Standard library¿¡¼´Â ¾Æ·¡¿Í °°ÀÌ ±¸ÇöµÇ¾îÀÖ´Ù:
public static int length(Object obj) throws JspTagException {
if (obj == null)
return 0;
if (obj instanceof String)
return ((String)obj).length();
if (obj instanceof Collection)
return ((Collection)obj).size();
if (obj instanceof Map)
return ((Map)obj).size();
int count = 0;
if (obj instanceof Iterator) {
Iterator iter = (Iterator) obj;
count = 0;
while (iter.hasNext()) {
count++;
iter.next();
}
return count;
}
if (obj instanceof Enumeration) {
Enumeration enum = (Enumeration) obj;
count = 0;
while (enum.hasMoreElements()) {
count++;
enum.nextElement();
}
return count;
}
try {
count = Array.getLength(obj);
return count;
} catch (IllegalArgumentException ex) {}
throw new JspTagException("Unsupported type");
}
¿©±â º¸µíÀÌ, º°·Î ³¸¼³°ÍÀÌ ¾ø´Ù. ÀÌ°Ç ±×³É Æò¹üÇÑ static ¸Þ¼Òµå·Î ÀμöÀÇ Æ¯Á¤ÇÑ ·±Å¸ÀÓ Çü¿¡ µû¶ó length¸¦ ±¸ÇÏ´Â °ÍÀÌ´Ù.
¿©±â¼ ¿¹·Îµç length() ¸Þ¼Òµå ¿Ü¿¡µµ, JSTL 1.1 ÇÔ¼ö ÅÂ±× ¶óÀ̺귯¸®´Â ÀÚÁÖ »ç¿ëµÇ´Â ¸¹Àº ÇÔ¼öµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù:
ÇÔ¼ö | ¼³¸í |
---|---|
fn:contains(string, substring) | stringÀÌ substringÀ» Æ÷ÇÔÇϸé true ¸®ÅÏ. |
fn:containsIgnoreCase(string, substring) | ´ë¼Ò¹®ÀÚ¿¡ °ü°è¾øÀÌ, stringÀÌ substringÀ» Æ÷ÇÔÇϸé true ¸®ÅÏ. |
fn:endsWith(string, suffix) | stringÀÌ suffix·Î ³¡³ª¸é true ¸®ÅÏ. |
fn:escapeXml(string) | string¿¡ XML°ú HTML¿¡¼ Ưº°ÇÑ Àǹ̸¦ °¡Áø ¹®ÀÚµéÀÌ ÀÖÀ¸¸é, XML ¿£Æ¼Æ¼ ÄÚµå·Î ¹Ù²ãÁØ µÚ ¹®ÀÚ¿ ¸®ÅÏ. |
fn:indexOf(string, substring) | string¿¡¼ substringÀÌ Ã³À½À¸·Î ³ªÅ¸³ª´Â À妽º ¸®ÅÏ. |
fn:join(array, separator) | array(¹è¿) ¿ä¼ÒµéÀ» separator¸¦ ±¸ºÐÀÚ·Î ÇÏ¿© ¿¬°áÇؼ ¸®ÅÏ |
fn:length(item) | item ÀÌ ¹è¿À̳ª Ä÷º¼ÇÀÌ¸é ¿ä¼ÒÀÇ °¹¼ö¸¦, ¹®ÀÚ¿ÀÌ¸é ¹®ÀÚÀÇ °¹¼ö¸¦ ¸®ÅÏ. |
fn:replace(string, before, after) | string ³»¿¡ ÀÖ´Â before ¹®ÀÚ¿À» after ¹®ÀÚ¿·Î ¸ðµÎ ¹Ù²ã¼ ¸®ÅÏ. |
fn:split(string, separator) | string ³»ÀÇ ¹®ÀÚ¿À» separator¿¡ µû¶ó ³ª´©¾î¼ ¹è¿·Î ±¸¼ºÇØ ¸®ÅÏ. |
fn:startsWith(string, prefix) | stringÀÌ prefix·Î ½ÃÀÛÇϸé true ¸®ÅÏ. |
fn:substring(string, begin, end) | string¿¡¼ begin À妽º¿¡¼ ½ÃÀÛÇؼ end À妽º¿¡ ³¡³ª´Â ºÎºÐ(end À妽º¿¡ Àִ¹®ÀÚ Æ÷ÇÔ)ÀÇ ¹®ÀÚ¿À» ¸®ÅÏ. |
fn:substringAfter(string, substring) | string¿¡¼ substringÀÌ ³ªÅ¸³ª´Â ÀÌÈÄÀÇ ºÎºÐ¿¡ ÀÖ´Â ¹®ÀÚ¿À» ¸®ÅÏ. |
fn:substringBefore(string, substring) | string¿¡¼ substringÀÌ ³ªÅ¸³ª±â ÀÌÀüÀÇ ºÎºÐ¿¡ ÀÖ´Â ¹®ÀÚ¿À» ¸®ÅÏ. |
fn:toLowerCase(string) | stringÀ» ¸ðµÎ ¼Ò¹®ÀÚ·Î ¹Ù²ã ¸®ÅÏ. |
fn:toUpperCase(string) | stringÀ» ¸ðµÎ ´ë¹®ÀÚ·Î ¹Ù²ã ¸®ÅÏ. |
fn:trim(string) | string ¾ÕµÚÀÇ °ø¹é(whitespace)À» ¸ðµÎ Á¦°ÅÇÏ¿© ¸®ÅÏ. |
ÀÌ ±Û¿¡¼, »õ·Î¿î ELÀÇ Æ¯Â¡°ú JSTL 1.1 ÇÔ¼ö ¶óÀ̺귯¸® µî JSP ½ºÆå¿¡ µµÀÔµÈ ELÀ» ´Ù·ç¾ú´Ù. ´ÙÀ½ ȸ¿¡¼´Â JSPÀÇ ¿À·ù ÆäÀÌÁö(error-page)ÀÇ Çâ»ó°ú jsp:id ¼Ó¼ºÀÇ ÀÌÁ¡, »õ·Î¿î ¹èÄ¡ ±â¼úÀÚ(deployment descriptor)ÀÇ Çü½Ä, JSP 2.0 ÀÌ JSP¿Í XML »ç¿ëÀ» ¾î¶»°Ô ½±°Ô ¸¸µé¾îÁִ°¡, ±×¸®°í Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¿¡ °üÇÑ »çÇ×µéÀ» ´Ù·ê °ÍÀÌ´Ù.
JSP 2.0ÀÇ »õ·Î¿î ±â´ÉµéÀ» Á¢Çغ¸°í ½Í´Ù¸é, Apache Tomcat 5¸¦ »ç¿ëÇغ¸¶ó°í ±ÇÇÏ°í ½Í´Ù. ÅèĹÀº »õ·Î¿î JSP ½ºÆåÀ» ÃÖÃÊ·Î ±¸ÇöÇÑ JSP ÄÁÅ×À̳ÊÀÌ´Ù. Jakarta Project »çÀÌÆ®¿¡¼ ±¸ÇÒ ¼ö ÀÖ´Ù.