Ä¿½ºÅÒ Å±׸¦ ÀÌ¿ëÇÑ Ç÷οì Á¦¾î¿Í URL °ü¸®
Mark
A. Kolb ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î 2003³â 3¿ù 18ÀÏ
JSP Standard Tag Library (JSTL)
core ¶óÀ̺귯¸®´Â À̸§ÀÌ ¸»ÇØÁÖµíÀÌ, ¹üÀ§(scoped) º¯¼ö¸¦ °ü¸®ÇÏ°í URL°ú
ÀÎÅÍ·¢ÆÃÇÏ´Â µîÀÇ ±âº» ±â´É°ú, ¹Ýº¹°ú Á¶°ÇÈ °°Àº ±Ùº»ÀûÀÎ ÀÛµ¿¿¡ ÇÊ¿äÇÑ Ä¿½ºÅÒ Å±׸¦ Á¦°øÇÑ´Ù. ÀÌ·¯ÇÑ
ű׵éÀº ÆäÀÌÁö ÀÛ¼ºÀÚ°¡ Á÷Á¢ »ç¿ëÇϱ⵵ ÇÏÁö¸¸ ´Ù¸¥ JSTL ¶óÀ̺귯¸®¿Í ÇÔ²² º¹ÀâÇÑ Ç¥Çö ·ÎÁ÷¿¡ ´ëÇÑ
Åä´ë¸¦ Á¦°øÇÑ´Ù.
ÀÌ ½Ã¸®ÁîÀÇ Ã¹
¹ø° ±Û¿¡¼ JSTLÀ» óÀ½ º¸¾ÒÀ» °ÍÀÌ´Ù. °Å±â¿¡¼ µ¥ÀÌÅÍ¿¡ ¾×¼¼½º ÇÏ°í ÀÛµ¿Çϱâ À§ÇØ expression
language (EL)ÀÇ »ç¿ë¹ýÀ» ¼³¸íÇß´Ù. ¿©·¯ºÐÀÌ ¹è¿î °Í ó·³ ELÀº JSTL Ä¿½ºÅÒ Å±×ÀÇ
¾ÖÆ®¸®ºäÆ®¿¡ µ¿Àû °ªÀ» ÇÒ´çÇϴµ¥ »ç¿ëµÈ´Ù. µû¶ó¼ ºôÆ®ÀÎ ¾×¼Ç°ú ±âŸ Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¿ë ¿äû ½Ã°£
¾ÖÆ®¸®ºäÆ® °ªÀ» ÁöÁ¤ÇÏ´Â JSP ½Ä°ú °°Àº ¿ªÇÒÀ» ÇÑ´Ù.
ELÀÇ »ç¿ë¹ýÀ» ¼³¸íÇϱâ À§ÇØ, core ¶óÀ̺귯¸®¿¡¼ ¼¼ °³ÀÇ Å±×
(<c:set> , <c:remove> ,
<c:out> )¸¦ ¼Ò°³Çß¾ú´Ù.
<c:set> ¿Í <c:remove> ´Â ¹üÀ§
º¯¼ö¸¦ °ü¸®Çϴµ¥ »ç¿ëµÈ´Ù. <c:out> Àº Ưº°È÷ ELÀ» »ç¿ëÇÏ¿© °è»êµÈ
°ªÀÎ µ¥ÀÌÅÍ µð½ºÇ÷¹ÀÌ¿¡ »ç¿ëµÈ´Ù. ±âÃÊ ÇнÀÀ» Åä´ë·Î ÀÌÁ¦´Â core ¶óÀ̺귯¸®ÀÇ
³ª¸ÓÁö ű׸¦ º¼ °ÍÀÌ´Ù. µÎ °¡Áö ÁÖ¿ä Ä«Å×°í¸®·Î ³ª´¶´Ù: Ç÷οì Á¦¾î(Ç÷οì Á¦¾î)¿Í URL °ü¸®.
¿¹Á¦
¾ÖÇø®ÄÉÀÌ¼Ç JSTL ű׸¦ ¼³¸íÇϱâ À§Çؼ ½ÇÁ¦ ¾ÖÇø®ÄÉÀÌ¼Ç ¿¹Á¦¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù.
´ëÁß¼º°ú ÀÎÁöµµ°¡ ³ô¾ÆÁ³±â ¶§¹®¿¡ °£´ÜÇÑ ÀÚ¹Ù ±â¹ÝÀÇ Weblog¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. (Âü°íÀÚ·á¿¡¼
JSP ÆäÀÌÁö¿Í ¼Ò½º Äڵ带 ´Ù¿î·Îµå ÇÑ´Ù.) Weblog (blog)Àº À¥ ±â¹Ý Àú³Î·Î¼ WeblogÀÇ
ÀÛ¼ºÀÚ°¡ Èï¹Ì¸¦ °¡Áú¸¸ÇÑ ÁÖÁ¦µé¿¡ ´ëÇÑ ÂªÀº ÁÖ¼®ÀÌ´Ù. ÀϹÝÀûÀ¸·Î À¥ »óÀÇ ¾ÆƼŬÀ̳ª ÅäÀÇ°¡ ÀÖ´Â °÷ ¾îµðµç
¿¬°áµÈ´Ù. ±×¸² 1Àº ½ÇÇà ÁßÀÎ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸ð½ÀÀÌ´Ù.
±×¸² 1. Weblog ¾ÖÇø®ÄÉÀ̼Ç
½º¹« °³ Á¤µµÀÇ Àڹ٠Ŭ·¡½º°¡ Àüü ±¸Çö¿¡ ÇÊ¿äÇÏÁö¸¸ Weblog ¾ÖÇø®ÄÉÀÌ¼Ç Å¬·¡½º¿¡¼´Â ´Ü
µÎ°³(Entry ¿Í UserBean )¸¸ÀÌ ÇÁ¸®Á¨Å×ÀÌ¼Ç ·¹À̾
»ç¿ëµÈ´Ù. JSTL ¿¹Á¦¸¦ ÀÌÇØÇÏ·Á¸é ÀÌµé µÎ °³ÀÇ Å¬·¡½º°¡ ÇÊ¿äÇÏ´Ù. ±×¸² 2´Â
Entry ¿Í UserBean ÀÇ Å¬·¡½º ´ÙÀ̾î±×·¥ÀÌ´Ù.
±×¸² 2. Weblog ¾ÖÇø®ÄÉÀ̼Ç(Ŭ·¡½º
´ÙÀ̾î±×·¥)
Entry Ŭ·¡½º´Â Weblog ³»ÀÇ ³¯Â¥°¡ ³ª¿ÍÀÖ´Â ¿£Æ®¸®¸¦ ³ªÅ¸³½´Ù. ÀÌ°ÍÀÇ
id ¾ÖÆ®¸®ºäÆ®´Â µ¥ÀÌÅͺ£À̽º ³»ÀÇ ¿£Æ®¸®¸¦ ÀúÀåÇÏ°í °Ë»öÇϴµ¥ »ç¿ëµÈ´Ù. ¹Ý¸é
title °ú text ¾ÖÆ®¸®ºäÆ®´Â ¿£Æ®¸®ÀÇ ½ÇÁ¦ ÄÜÅÙÆ®¸¦
³ªÅ¸³½´Ù. ÀÚ¹Ù Date Ŭ·¡½º Áß µÎ °³ÀÇ ÀνºÅϽº´Â
created ¿Í lastModified ¾ÖÆ®¸®ºäÆ®¿¡ ÀÇÇØ
·¹ÆÛ·±½ºµÇ¸ç ¿£Æ®¸®°¡ óÀ½À¸·Î ¸¸µé¾îÁö°í ¸¶Áö¸·À¸·Î ÆíÁý µÉ ¶§ ³ªÅ¸³´Ù. author
¾ÖÆ®¸®ºäÆ®´Â UserBean ÀνºÅϽº¸¦ ÂüÁ¶ÇÏ¸é¼ ¿£Æ®¸®¸¦ ¸¸µç »ç¶÷À» ³ªÅ¸³½´Ù.
The UserBean Ŭ·¡½º´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±ÇÇÑÀÌ ÀÖ´Â »ç¿ëÀÚ Á¤º¸(»ç¿ëÀÚ
À̸§, ¼º¸í, À̸ÞÀÏ ÁÖ¼Ò)¸¦ ÀúÀåÇÑ´Ù. ÀÌ Å¬·¡½º¿¡´Â °ü·Ã µ¥ÀÌÅͺ£À̽º¿Í ÀÎÅÍ·¢ÆÃÇϱâ À§ÇÑ
id ¾ÖÆ®¸®ºäÆ®µµ Æ÷ÇԵǾî ÀÖ´Ù. ¸¶Áö¸· ¾ÖÆ®¸®ºäÆ®ÀÎ roles ´Â
String °ª ¸®½ºÆ®¸¦ ÂüÁ¶ÇÏ¸é¼ ¾ÖÇø®ÄÉÀÌ¼Ç ¿ªÇÒ°ú ÀÌ¿¡ »óÀÀÇÏ´Â »ç¿ëÀÚ¸¦ ±¸ºÐÇÑ´Ù.
Weblog ¾ÖÇø®ÄÉÀ̼ÇÀÇ °æ¿ì ÀϹÝÀûÀÎ ¿ªÇÒÀº "User" (¸ðµç ÀϹÝÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç »ç¿ëÀÚ ¿ªÇÒ)¿Í
"Author" (Weblog ¿£Æ®¸®¸¦ ¸¸µé°í ÆíÁýÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ¸¦ ÁöÁ¤ÇÏ´Â ¿ªÇÒ) ÀÌ´Ù.
Ç÷οì Á¦¾î(Flow
control) µ¿Àû ¾ÖÆ®¸®ºäÆ® °ªÀ» ÁöÁ¤Çϴµ¥ JSP ½Ä ´ë¿ëÀ¸·Î ELÀÌ »ç¿ëµÉ ¼ö
Àֱ⠶§¹®¿¡ ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÁÙ¾îµé¾ú´Ù. ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®´Â JSP ÆäÀÌÁö¿¡¼ Áß¿äÇÑ ¼Ò½º°¡
µÉ ¼ö Àֱ⠶§¹®¿¡ °£´ÜÇÑ ´ë¾ÈÀ» Á¦°øÇÑ´Ù´Â °ÍÀº JSTL¿¡ ÀÖ¾î¼ Å« ÀÌÁ¡ÀÌ´Ù.
ELÀº JSP ÄÁÅ×À̳ʿ¡¼ µ¥ÀÌÅ͸¦ °Ë»öÇÏ°í °´Ã¼ °èÃþÀ» ¿À°¡¸ç °£´ÜÇÑ ÀÛµ¿À» ¼öÇàÇÑ´Ù. µ¥ÀÌÅÍ¿¡ Á¢±ÙÇÏ¿©
Á¶ÀÛÇÏ´Â °Í ¿Ü¿¡µµ JSP ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®ÀÇ ¶Ç ´Ù¸¥ »ç¿ë Ãø¸éÀº Ç÷οì Á¦¾îÀÌ´Ù. ƯÈ÷, ÆäÀÌÁö ÀÛ¼ºÀÚ°¡
¹Ýº¹µÇ°Å³ª Á¶°ÇÀûÀÎ ÄÜÅÙÆ®¸¦ ±¸ÇöÇϱâ À§Çؼ ½ºÅ©¸³Æ²¸´À» ÀÇÁ¸ÇÑ´Ù´Â °ÍÀº ÀϹÝÀûÀÎ ÀÏÀÌ´Ù. ÇÏÁö¸¸ ±×¿Í °°Àº
ÀÛµ¿Àº ELÀÇ ±â´ÉÀ» ³Ñ¾î¼±â ¶§¹®¿¡, core ¶óÀ̺귯¸®´Â ¹Ýº¹,
Á¶°ÇÈ,
¿¹¿Ü
ó¸® µîÀÇ ÇüÅ·ΠÇ÷οì Á¦¾î¸¦ °ü¸® ÇÒ ´Ù¾çÇÑ »ç¿ëÀÚ ¾×¼ÇÀ» Á¦°øÇÑ´Ù.
¹Ýº¹ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ
Ãø¸é¿¡¼, ¹Ýº¹(iteration)Àº µ¥ÀÌÅÍÀÇ ¸ðÀ½À» °¡Á®´Ù°¡ µð½ºÇ÷¹ÀÌ Çϴµ¥ ÁÖ·Î »ç¿ëµÈ´Ù. ÁÖ·Î Å×ÀÌºí¿¡
¸®½ºÆ®³ª ¿(row) ½ÃÄö½ºÀÇ ÇüÅ·Π³ªÅ¸³´Ù. ¹Ýº¹ ÄÜÅÙÆ®¸¦ ±¸ÇöÇÏ´Â JSTLÀÇ ±âº» ¾×¼ÇÀº
<c:forEach> Ä¿½ºÅÒ Å±×ÀÌ´Ù. ÀÌ Å±״ µÎ °³ÀÇ ´Ù¸¥ À¯ÇüÀÇ ¹Ýº¹À»
Áö¿øÇÑ´Ù: Á¤¼ö ¹üÀ§³»ÀÇ ¹Ýº¹(À̸¦ Å׸é, ÀÚ¹ÙÀÇ for ¹®)°ú Ä÷º¼Ç ³»ÀÇ ¹Ýº¹(ÀÚ¹ÙÀÇ
Iterator ¿Í Enumeration Ŭ·¡½º).
Á¤¼ö ¹üÀ§ ³»¿¡¼ ¹Ýº¹ÇÏ·Á¸é <c:forEach> (Listing 1)ÀÇ
Ä¿½ºÅÒ Å±×ÀÇ ½ÅÅýº°¡ »ç¿ëµÈ´Ù. begin °ú end ¾ÖÆ®¸®ºäÆ®´Â
Á¤Àû Á¤¼ö °ª ¶Ç´Â Á¤¼ö °ªÀ» °è»êÇÏ´Â ¼ö½ÄÀÌ µÇ¾î¾ßÇÑ´Ù. À̵éÀº °¢°¢ ¹Ýº¹À» À§ÇÑ À妽ºÀÇ Ãʱ⠰ª°ú ¹Ýº¹ÀÌ
¸ØÃß´Â ÁöÁ¡ÀÇ À妽º °ªÀ» ÁöÁ¤ÇÑ´Ù. <c:forEach> ¸¦ »ç¿ëÇÏ¿© Á¤¼ö
¹üÀ§¿¡¼ ¹Ýº¹ÇÒ ¶§, ÀÌ µÎ°³ÀÇ ¾ÖÆ®¸®ºäÆ®°¡ ÇÊ¿äÇÏ¸ç ´Ù¸¥ ¸ðµç °ÍµéÀº ¼±ÅûçÇ×ÀÌ´Ù. Listing 1. <c:forEach> ¾×¼ÇÀ» ÅëÇÑ ¹Ýº¹
½ÅÅýº
<c:forEach var="name" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
|
step ¾ÖÆ®¸®ºäÆ® ¶ÇÇÑ Á¤¼ö °ªÀ» °®°í ÀÖ¾î¾ßÇÑ´Ù. ¸Å¹ø ¹Ýº¹ÇÑ ÈÄ¿¡ À妽º¿¡
Ãß°¡µÉ ¾ç(amount)À» Á¤ÇÑ´Ù. µû¶ó¼ ¹Ýº¹ À妽º´Â begin ¾ÖÆ®¸®ºäÆ® °ª¿¡¼
½ÃÀÛÇÏ°í step ¾ÖÆ®¸®ºäÆ®ÀÇ °ª¿¡ ÀÇÇØ Áõ°¡Çϸç end
¾ÖÆ®¸®ºäÆ®ÀÇ °ªÀ» ÃÊ°úÇÒ ¶§ Á¤ÁöÇÑ´Ù. step ¾ÖÆ®¸®ºäÆ®°¡ »ý·«µÇ¸é
step Å©±â´Â 1·Î ÃʱâȵȴÙ.
var ¾ÖÆ®¸®ºäÆ®°¡ ÁöÁ¤µÇ¸é ÁöÁ¤µÈ À̸§À» °¡Áø ¹üÀ§ º¯¼ö°¡ ¸¸µé¾îÁö°í À妽ºÀÇ
ÇöÀç °ªÀ¸·Î ÇÒ´çµÈ´Ù. ÀÌ ¹üÀ§ º¯¼ö´Â <c:forEach> ű×ÀÇ ¹Ùµð
³»¿¡¼ ¾×¼¼½º µÉ ¼ö ÀÖ´Ù. Listing 2´Â <c:forEach> ¾×¼ÇÀÇ
¿¹Á¦ÀÌ´Ù. Listing 2. <c:forEach>
ű×
<table>
<tr><th>Value</th>
<th>Square</th></tr>
<c:forEach var="x" begin="0" end="10" step="2">
<tr><td><c:out value="${x}"/></td>
<td><c:out value="${x * x}"/></td></tr>
</c:forEach>
</table>
|
ÀÌ ¿¹Á¦ ÄÚµå´Â ´Ù¼¸ °³ ¦¼öÀÇ Á¦°öÀ» Å×À̺í·Î ¸¸µé¾ú´Ù. ±×¸² 3ÀÌ ±× °á°úÀÌ´Ù .
±×¸² 3. Listing 2ÀÇ °á°ú
Ä÷º¼ÇÀÇ ¸â¹öµé »çÀ̸¦ ¹Ýº¹ÇÒ ¶§ <c:forEach> ű×ÀÇ Ãß°¡
¾ÖÆ®¸®ºäÆ®ÀÎ items ¾ÖÆ®¸®ºäÆ®°¡ »ç¿ëµÈ´Ù. (Listing 3). ÀÌ·¯ÇÑ Çü½ÄÀÇ
<c:forEach> ű׸¦ »ç¿ëÇÒ ¶§, items
¾ÖÆ®¸®ºäÆ®´Â À¯ÀÏÇÏ°Ô ÇÊ¿äÇÑ ¾ÖÆ®¸®ºäÆ®ÀÌ´Ù. Listing 3.
<c:forEach> ¾×¼ÇÀ» ÅëÇÑ ¹Ýº¹ ½ÅÅýº
<c:forEach var="name" items="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
|
ÀÚ¹Ù Ç÷§Æû¿¡¼ Á¦°øµÇ´Â Ç¥ÁØ Ä÷º¼Ç ŸÀÔÀº <c:forEach> ű׿¡
ÀÇÇØ Áö¿øµÈ´Ù. ¾î·¹ÀÌ ¿¤¸®¸ÕÆ®¸¦ ÅëÇØ ¹Ýº¹ÇÒ ¶§ ÀÌ ¾×¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. Ç¥ 1Àº
items ¾ÖÆ®¸®ºäÆ®¿¡ ÀÇÇØ Áö¿øµÇ´Â °ªµéÀÇ ¸®½ºÆ®ÀÌ´Ù. Å×À̺íÀÇ ¸¶Áö¸· ¿ÀÌ Ç¥½ÃµÉ
¶§, JSTLÀº ÀÌ°ÍÀÇ
ÀÎÅÍÆäÀ̽º(javax.servlet.jsp.jstl.sql.Result )¸¦
Á¤ÀÇÇÑ´Ù.
Ç¥
1. <c:forEach> ű×ÀÇ items ¾ÖÆ®¸®ºäÆ®¿¡¼ Áö¿øµÇ´Â
Ä÷º¼Ç
items |
item
°ªÀÇ °á°ú |
java.util.Collection |
È£Ãâ¿¡¼ iterator() ±îÁöÀÇ ¿¤¸®¸ÕÆ® |
java.util.Map |
java.util.Map.Entry ÀÇ ÀνºÅϽº |
java.util.Iterator |
Iterator ¿¤¸®¸ÕÆ® |
java.util.Enumeration |
Enumeration ¿¤¸®¸ÕÆ® |
Object ÀνºÅϽº ¾î·¹ÀÌ |
Array ¿¤¸®¸ÕÆ® |
Ãʱ⠰ªµéÀÇ ¾î·¹ÀÌ |
·¡ÇÎµÈ ¾î·¹ÀÌ ¿¤¸®¸ÕÆ® |
ÄÞ¸¶·Î ³ª´µ¾îÁø String |
¼ºê½ºÆ®¸µ |
javax.servlet.jsp.jstl.sql.Result |
SQL Äõ¸®ÀÇ ¿(row) |
Listing 4´Â Ä÷º¼ÇÀ» ÅëÇÑ ¹Ýº¹¿¡ »ç¿ëµÇ´Â <c:forEach>
ű×ÀÌ´Ù. entryList ¶ó´Â ¹üÀ§ º¯¼ö°¡ Entry °´Ã¼ÀÇ
¸®½ºÆ®·Î ¼³Á¤µÇ¾ú´Ù. <c:forEach> űװ¡ ÀÌ ¸®½ºÆ®ÀÇ °¢ ¿¤¸®¸ÕÆ®¸¦
ó¸®ÇÑ´Ù. blogEntry ¶ó´Â ¹üÀ§ º¯¼ö·Î ÀÌ°ÍÀ» ÇÒ´çÇÏ°í µÎ °³ÀÇ Å×ÀÌºí ¿À»
¸¸µç´Ù. Çϳª´Â Weblog ¿£Æ®¸®ÀÇ title ÀÌ°í ´Ù¸¥ Çϳª´Â ÀÌ°ÍÀÇ
text ÀÌ´Ù. ÀÌ ¼Ó¼ºµéÀº ÇÑ ½ÖÀÇ <c:out>
¾×¼Ç°ú ÀÌ¿¡ »óÀÀÇÏ´Â EL ½ÄÀ» ÅëÇØ blogEntry º¯¼ö¿¡¼ °Ë»öµÈ´Ù. Weblog
¿£Æ®¸®ÀÇ Å¸ÀÌƲ°ú ÅؽºÆ®¿¡ HTMLÀÌ Æ÷ÇԵǾîÀֱ⠶§¹®¿¡ <c:out> ÀÇ
escapeXml ¾ÖÆ®¸®ºäÆ®´Â false·Î ¼³Á¤µÈ´Ù. (±×¸² 4). Listing 4. <c:forEach> ű׸¦ »ç¿ëÇÏ¿© Weblog
¿£Æ®¸® µð½ºÇ÷¹ÀÌ Çϱâ
<table>
<c:forEach items="${entryList}" var="blogEntry">
<tr><td align="left" class="blogTitle">
<c:out value="${blogEntry.title}" escapeXml="false"/>
</td></tr>
<tr><td align="left" class="blogText">
<c:out value="${blogEntry.text}" escapeXml="false"/>
</td></tr>
</c:forEach>
</table>
|
±×¸² 4. Listing 4ÀÇ °á°ú
³²¾ÆÀÖ´Â <c:forEach> ¾ÖÆ®¸®ºäÆ®ÀÎ
varStatus ´Â Á¤¼ö ¹üÀ§ÀÇ ¹Ýº¹À̳ª Ä÷º¼Ç ¹üÀ§ÀÇ ¹Ýº¹¿¡¼ ¶È°°Àº ¿ªÇÒÀ» ÇÑ´Ù.
var ¾ÖÆ®¸®ºäÆ®¿Í ¸¶Âù°¡Áö·Î, varStatus ´Â ¹üÀ§ º¯¼ö¸¦
¸¸µå´Âµ¥ »ç¿ëµÈ´Ù. ÇöÀç À妽º °ªÀ̳ª ÇöÀç ¿¤¸®¸ÕÆ®¸¦ ÀúÀåÇÏ´Â ´ë½Å¿¡ ÀÌ º¯¼ö´Â
javax.servlet.jsp.jstl.core.LoopTagStatus ÀÇ ÀνºÅϽº·Î
ÇÒ´çµÈ´Ù. ÀÌ Å¬·¡½º´Â ÀÏ·ÃÀÇ ¼Ó¼ºÀ» Á¤ÀÇÇÑ´Ù. (Ç¥ 2).
Ç¥
2. LoopTagStatus °´Ã¼ÀÇ ¼Ó¼º
¼Ó¼º |
Getter |
Description |
current |
getCurrent() |
ÇöÀç ¹Ýº¹ ¶ó¿îµå ¾ÆÀÌÅÛ |
index |
getIndex() |
ÇöÀç ¹Ýº¹ ¶ó¿îµåÀÇ Á¦·Î ±â¹Ý(zero-based) À妽º |
count |
getCount() |
ÇöÀç ¹Ýº¹ ¶ó¿îµåÀÇ 1 ±â¹Ý(one-based) À妽º |
first |
isFirst() |
ÇöÀç ¶ó¿îµå°¡ ¹Ýº¹À» ÅëÇÑ Ã¹ ¹ø° ÆнºÀÓÀ» ³ªÅ¸³»´Â Ç÷¡±× |
last |
isLast() |
¹Ýº¹ÇöÀç ¶ó¿îµå°¡ ¹Ýº¹À» ÅëÇÑ ¸¶Áö¸· ÆнºÀÓÀ» ³ªÅ¸³»´Â Ç÷¡±× |
begin |
getBegin() |
begin ¾ÖÆ®¸®ºäÆ®ÀÇ °ª |
end |
getEnd() |
end ¾ÖÆ®¸®ºäÆ®ÀÇ °ª |
step |
getStep() |
step ¾ÖÆ®¸®ºäÆ®ÀÇ °ª |
Listing 5´Â varStatus ¾ÖÆ®¸®ºäÆ®°¡ »ç¿ëµÇ´Â ¹æ¹ýÀ» ³ªÅ¸³½ ¿¹Á¦ÀÌ´Ù.
Listing 4ÀÇ Äڵ带 ¼öÁ¤ÇÏ¿© Weblog ¿£Æ®¸®ÀÇ ¼ýÀÚ¼¼±â¸¦ ŸÀÌƲÀ» µð½ºÇ÷¹ÀÌÇÏ´Â Å×ÀÌºí ¿¿¡
Ãß°¡ÇÑ´Ù. ÀÌ°ÍÀº varStatus ¾ÖÆ®¸®ºäÆ®ÀÇ °ªÀ» ÁöÁ¤ÇÏ°í °á°ú ¹üÀ§ º¯¼öÀÇ Ä«¿îÆ®
¼Ó¼º¿¡ ¾×¼¼½º ÇÏ¸é µÈ´Ù. °á°ú´Â ±×¸² 5 ÀÌ´Ù. Listing 5.
varStatus ¾ÖÆ®¸®ºäÆ®¸¦ »ç¿ëÇÏ¿© Weblog ¿£Æ®¸®ÀÇ Ä«¿îÆ® µð½ºÇ÷¹ÀÌÇϱâ
<table>
<c:forEach items=
"${entryList}" var="blogEntry" varStatus="status">
<tr><td align="left" class="blogTitle">
<c:out value="${status.count}"/>.
<c:out value="${blogEntry.title}" escapeXml="false"/>
</td></tr>
<tr><td align="left" class="blogText">
<c:out value="${blogEntry.text}" escapeXml="false"/>
</td></tr>
</c:forEach>
</table>
|
±×¸² 5. Listing 5ÀÇ °á°ú
<c:forEach> ÀÌ¿Ü¿¡µµ, core
¶óÀ̺귯¸®´Â µÎ ¹ø° ¹Ýº¹ ű×ÀÎ <c:forTokens> ¸¦ Á¦°øÇÑ´Ù. ÀÌ°ÍÀÇ
¾×¼ÇÀº ÀÚ¹ÙÀÇ StringTokenizer Ŭ·¡½ºÀÇ JSTL ÀÌ´Ù.
<c:forTokens> ű×(Listing 6)´Â Ä÷º¼Ç ÁöÇâ ¹öÀüÀÇ
<c:forEach> ¿Í °°Àº ¾ÖÆ®¸®ºäÆ®¸¦ °®°í ÀÖ´Ù.
<c:forTokens> ÀÇ °æ¿ì ÅäÅ«È µÉ ½ºÆ®¸µÀº
items ¾ÖÆ®¸®ºäÆ®¸¦ ÅëÇØ ÁöÁ¤µÇ´Â ¹Ý¸é ÅäÅ«À» ¸¸µå´Âµ¥ »ç¿ëµÇ´Â
ÁöÁ¤ÀÚ(deliniter)´Â delims ¾ÖÆ®¸®ºäÆ®¸¦ ÅëÇØ Á¦°øµÈ´Ù.
<c:forEach> °æ¿ì¿Í ¸¶Âù°¡Áö·Î, begin ,
end , step ¾ÖÆ®¸®ºäÆ®¸¦ »ç¿ëÇÏ¿© ÅäÅ«ÀÌ »óÀÀÇÏ´Â À妽º
°ªµé°ú ¸ÅĪµÇ´Â °Í¿¡ ÇÁ·Î¼¼½º µÇµµ·Ï Á¦ÇÑ ÇÒ ¼ö ÀÖ´Ù. Listing
6. <c:forTokens> ¾×¼Ç
<c:forTokens var="name" items="expression"
delims="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forTokens>
|
Á¶°ÇÈ µ¿Àû ÄÜÅÙÆ®¸¦
Æ÷ÇÔÇÏ°í ÀÖ´Â À¥ ÆäÀÌÁö¶ó¸é ´Ù¾çÇÑ Çü½ÄÀÇ ÄÜÅÙÆ®¸¦ º¼ ¼ö ÀÖ´Â ´Ù¾çÇÑ »ç¿ëÀÚ Ä«Å×°í¸®°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù.
Weblog¿¡¼ ¹æ¹®ÀÚµéÀº ¿£Æ®¸®¸¦ Àаí Çǵå¹éÀ» Á¦Ãâ ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ±ÇÇÑÀ» ¹ÞÀº »ç¿ëÀÚ´Â »õ·Î¿î ¿£Æ®¸®¸¦
°Ô½ÃÇϰųª ±âÁ¸ ÄÜÅÙÆ®¸¦ ÆíÁýÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
JSP ÆäÀÌÁö ³»¿¡ ±×·¯ÇÑ ±â´ÉÀ» ±¸ÇöÇÏ°í ¸®Äù½ºÆ® ±â¹ÝÀ¸·Î µð½ºÇ÷¹ÀÌ ÇÏ°íÀÚÇÏ´Â °ÍÀ» Á¦¾îÇϵµ·Ï Á¶°Ç
·ÎÁ÷À» »ç¿ëÇÔÀ¸·Î¼ °¡¿ë¼º°ú ¼ÒÇÁÆ®¿þ¾î °ü¸®´Â Çâ»óµÈ´Ù. core ¶óÀ̺귯¸®´Â µÎ °³ÀÇ
´Ù¸¥ Á¶°ÇÈ Å±×ÀÎ <c:if> ¿Í
<c:choose> ¸¦ Á¦°øÇϴµ¥ ´ÙÀ½ÀÇ ±â´ÉµéÀ» ±¸ÇöÇÑ´Ù.
ÀÌ µÎ °¡Áö ¾×¼Ç Áß Á»´õ ´Ü¼øÇÑ <c:if> ´Â °£´ÜÇÑ Å×½ºÆ® ½ÄÀ»
°è»êÇÑ ´ÙÀ½ ½ÄÀÌ true ·Î µÇ¾úÀ» ¶§¸¸ ¹Ùµð ÄÜÅÙÆ®¸¦ ó¸®ÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸é ű×ÀÇ
¹Ùµð ÄÜÅÙÆ®´Â ¹«½ÃµÈ´Ù. Listing 7¿¡¼ º¸µí, <c:if> ´Â Å×½ºÆ®ÀÇ
°á°ú¸¦ var ¿Í scope ¾ÖÆ®¸®ºäÆ®¸¦ ÅëÇØ ¹üÀ§ º¯¼ö·Î ÇÒ´çÇÒ
¼ö ÀÖ´Ù. ÀÌ ±â´ÉÀº Å×½ºÆ® ºñ¿ëÀÌ ºñ½Ò °æ¿ì À¯¿ëÇÏ´Ù. °á°ú´Â ¹üÀ§ º¯¼ö¿¡ ij½ÃµÇ°í
<c:if> ³ª ´Ù¸¥ JSTL ű׷ÎÀÇ ¿¬¼Ó È£Ãâ½Ã¿¡ °Ë»öµÈ´Ù. Listing 7. <c:if> Á¶°Ç ¾×¼Ç ½ÅÅýº
<c:if test="expression" var="name" scope="scope">
body content
</c:if>
|
Listing 8Àº <c:forEach> ű×ÀÇ
LoopTagStatus °´Ã¼ÀÇ first ¼Ó¼ºÀ¸·Î »ç¿ëµÈ
<c:if> ¸¦ º¸¿©ÁØ´Ù. ÀÌ °æ¿ì, ±×¸² 6 ¿¡¼ º¸µí, Weblog
¿£Æ®¸®ÀÇ ±¸Çö ³¯Â¥´Â ù ¹ø° ¿£Æ®¸® À§¿¡ µð½ºÇ÷¹ÀÌ µÈ´Ù. ÇÏÁö¸¸ ´Ù¸¥ ¿£Æ®¸® ¾Õ¿¡ ¹Ýº¹µÇÁö ¾Ê´Â´Ù.
Listing 8. <c:if>¸¦ »ç¿ëÇÏ¿© Weblog
¿£Æ®¸® ³¯Â¥ µð½ºÇ÷¹ÀÌ Çϱâ
<table>
<c:forEach items=
"${entryList}" var="blogEntry" varStatus="status">
<c:if test="${status.first}">
<tr><td align="left" class="blogDate">
<c:out value="${blogEntry.created}"/>
</td></tr>
</c:if>
<tr><td align="left" class="blogTitle">
<c:out value="${blogEntry.title}" escapeXml="false"/>
</td></tr>
<tr><td align="left" class="blogText">
<c:out value="${blogEntry.text}" escapeXml="false"/>
</td></tr>
</c:forEach>
</table>
|
±×¸² 6. Listing 8ÀÇ °á°ú
Listing 8 ó·³, <c:if> ű״ Á¶°ÇÈµÈ ÄÜÅÙÆ®¿¡ ´ëÇØ ¸Å¿ì
°£·«ÇÑ ³ëÆ®¸¦ Á¦°øÇÑ´Ù. µð½ºÇ÷¹ÀÌ µÇ¾î¾ßÇÏ´Â ÄÜÅÙÆ®°¡ ¹«¾ùÀÎÁö¸¦ °áÁ¤ÇؾßÇÏ´Â Á߸³ÀûÀÎ Å×½ºÆ®°¡ ÇÊ¿äÇÒ °æ¿ì,
JSTL core ¶óÀ̺귯¸®´Â <c:choose>
¾×¼ÇÀ» Á¦°øÇÑ´Ù. <c:choose> ½ÅÅýº´Â Listing 9¿Í °°´Ù.
Listing 9. <c:choose> ¾×¼Ç
½ÅÅýº
<c:choose>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>
|
Å×½ºÆ® µÇ´Â °¢ Á¶°ÇÀº »óÀÀÇÏ´Â <c:when> ű׿¡ ÀÇÇØ ³ªÅ¸³´Ù.
test °¡ true ·Î Æò°¡µÈ ù ¹ø°
<c:when> ű×ÀÇ ÄÜÅÙÆ®¸¸ ÇÁ·Î¼¼½ºµÈ´Ù. ¾î¶²
<c:when> Å×½ºÆ®µµ true ·Î ¸®ÅϵÇÁö ¾ÊÀ¸¸é
<c:otherwise> ű×ÀÇ ¹Ùµð ÄÜÅÙÆ®°¡ ÇÁ·Î¼¼½º µÈ´Ù.
<c:otherwise> űװ¡ ¼±ÅÃÀûÀ̶ó´Â °ÍÀ» ÁÖ¸ñÇ϶ó.
<c:choose> ű״ ÃÖ´ë ÇÑ °³ÀÇ Áßø
<c:otherwise> ű׸¦ °¡Áú ¼ö ÀÖ´Ù. ¸ðµç
<c:when> Å×½ºÆ®°¡ false °¡ µÇ°í ¾î¶²
<c:otherwise> ¾×¼Çµµ ³ªÅ¸³ªÁö ¾ÊÀ¸¸é
<c:choose> ¹Ùµð ÄÜÅÙÆ®´Â ÇÁ·Î¼¼½º µÇÁö ¾Ê´Â´Ù.
Listing 10Àº <c:choose> ű×ÀÇ ½ÇÇà ¿¹Á¦ÀÌ´Ù. ¿©±â¿¡¼
ÇÁ·ÎÅäÄÝ Á¤º¸´Â ¸®Äù½ºÆ® °´Ã¼¿¡¼ °Ë»öµÇ°í °£´ÜÇÑ ½ºÆ®¸µ ºñ±³¸¦ »ç¿ëÇÏ¿© Å×½ºÆ®µÈ´Ù. Å×½ºÆ® °á°ú¿¡ µû¶ó
»óÀÀÇÏ´Â ÅؽºÆ® ¸Þ½ÃÁö°¡ µð½ºÇ÷¹À̵ȴÙ. Listing 10.
<c:choose>¸¦ ÀÌ¿ëÇÑ ÄÜÅÙÆ® Á¶°ÇÈ
<c:choose>
<c:when test="${pageContext.request.scheme eq 'http'}">
This is an insecure Web session.
</c:when>
<c:when test="${pageContext.request.scheme eq 'https'}">
This is a secure Web session.
</c:when>
<c:otherwise>
You are using an unrecognized Web protocol. How did this happen?!
</c:otherwise>
</c:choose>
|
¿¹¿Ü ó¸® ¸¶Áö¸· Ç÷οì
Á¦¾î ű״ <c:catch> ÀÌ´Ù. ÀÌ°ÍÀº JSP ÆäÀÌÁö ³»¿¡¼ ±âº»ÀûÀÎ
¿¹¿Ü󸮸¦ ´ã´çÇÑ´Ù. Á»´õ ±¸Ã¼ÀûÀ¸·Î ¸»Çϸé ÀÌ Å±×ÀÇ ¹Ùµð ÄÜÅÙÆ® ³»¿¡¼ ¹ß»ýÇÏ´Â ¸ðµç ¿¹¿Ü°¡ ÀâÈ÷¸é
¹«½ÃµÈ´Ù. ÇÏÁö¸¸ ¿¹¿Ü°¡ ¹ß»ýÇÏ°í <c:catch> ű×ÀÇ ¼±ÅÃÀûÀÎ
var ¾ÖÆ®¸®ºäÆ®°¡ ÁöÁ¤µÇ¸é ¿¹¿Ü´Â ÁöÁ¤µÈ º¯¼ö·Î ÇÒ´çµÇ¾î ÆäÀÌÁö ÀÚü ³»¿¡¼ ¿¡·¯
󸮸¦ ÇÒ ¼ö ÀÖ´Ù. Listing 11Àº <c:catch> ÀÇ ½ÅÅýºÀÌ´Ù.
(¿¹Á¦´Â Listing
18ÀÌ´Ù). Listing 11. <c:catch>
½ÇÇà ½ÅÅýº
<c:catch var="name">
body content
</c:catch>
|
URL
ÀÛµ¿ JSTL core ¶óÀ̺귯¸®ÀÇ ³ª¸ÓÁö ű״ URL¿¡
ÃÊÁ¡À» ¸ÂÃá´Ù. ÀÌ Áß Ã¹ ¹ø°´Â <c:url> ű×Àε¥ URL »ý¼º¿¡
»ç¿ëµÈ´Ù. ƯÈ÷, <c:url> Àº J2EE À¥ ¾ÖÇø®ÄÉÀ̼ǿë URLÀ» ±¸ÇöÇÒ
¶§ Áß¿äÇÏ°Ô ¾²ÀÌ´Â ¼¼ °¡Áö ¿¤¸®¸ÕÆ®¸¦ Á¦°øÇÑ´Ù:
- ÇöÀç ¼ºí¸´ ÄÜÅؽºÆ® À̸§ÀÌ µÊ
- ¼¼¼Ç °ü¸®¸¦ À§ÇÑ URL ÀçÀÛ¼º
- ¿äû ¸Å°³º¯¼ö À̸§°ú °ªÀÇ URL ÀÎÄÚµù
value ¾ÖÆ®¸®ºäÆ®°¡ »ç¿ëµÇ¾ú´Ù. ±âº» URLÀ» ÁöÁ¤Çϱâ À§Çؼ. ű״ ÇÊ¿äÇÒ
°æ¿ì º¯ÇüÇÑ´Ù. ÀÌ ±âº» URLÀÌ Æ÷¿öµå ½½·¡½Ã·Î ½ÃÀÛÇÏ¸é ¼ºí¸´ ÄÜÅؽºÆ® À̸§ÀÌ ¸¸µé¾îÁø´Ù. ±¸Ã¼ÀûÀÎ ÄÜÅؽºÆ®
À̸§Àº context ¾ÖÆ®¸®ºäÆ®¸¦ »ç¿ëÇÏ¿© Á¦°øµÉ ¼ö ÀÖ´Ù. ÀÌ ¾ÖÆ®¸®ºäÆ®°¡ »ý·«µÇ¸é
ÇöÀç ¼ºí¸´ ÄÜÅؽºÆ® À̸§ÀÌ »ç¿ëµÈ´Ù. ¼ºí¸´ ÄÜÅؽºÆ® À̸§ÀÌ °³¹ß º¸´Ù´Â Àü°³ ½Ã¿¡ °áÁ¤µÉ ¶§
À¯¿ëÇÏ´Ù. Listing 12. <c:url> ÀÛµ¿
½ÅÅýº
<c:url value="expression" context="expression"
var="name" scope="scope">
<c:param name="expression" value="expression"/>
...
</c:url>
|
URL ÀçÀÛ¼ºÀº <c:url> ÀÛµ¿¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î ¼öÇàµÈ´Ù. JSP
ÄÁÅ×À̳ʰ¡ »ç¿ëÀÚÀÇ ÇöÀç ¼¼¼Ç ¾ÆÀ̵𸦠ÀúÀåÇÏ°í ÀÖ´Â ÄíÅ°¸¦ °Ë»çÇϸé ÀçÀÛ¼ºÀº ÇÊ¿ä¾ø´Ù. ÄíÅ°°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é
<c:url> ·Î ¸¸µé¾îÁø ¸ðµç URLÀº ÀçÀÛ¼ºµÇ¾î ¼¼¼Ç ¾ÆÀ̵𸦠ÀÎÄÚµùÇÑ´Ù.
°è¼ÓµÇ´Â ¿äû¿¡µµ ÀûÀýÇÑ ÄíÅ°°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é <c:url> Àº ÀÌ ¾ÆÀ̵ð¸¦
Æ÷ÇÔÇϱâ À§ÇÑ URL ÀçÀÛ¼ºÀ» ¸ØÃá´Ù.
var ¾ÖÆ®¸®ºäÆ®¸¦ À§ÇØ °ªÀÌ Á¦°øµÇ¸é »ý¼ºµÈ URLÀº ƯÁ¤ ¹üÀ§ º¯¼öÀÇ °ªÀ¸·Î
ÇÒ´çµÈ´Ù. ±×·¸Áö ¾Ê´Ù¸é °á°ú URLÀº ÇöÁ¦ JspWriter ¸¦ »ç¿ëÇÏ¿© ¾Æ¿ôDzÀÌ µÈ´Ù.
°á°ú¸¦ Á÷Á¢ »êÃâÇÏ´Â ±â´ÉÀº <c:url> űװ¡ °ªÀ¸·Î¼ ³ªÅ¸³¯ ¼ö ÀÖµµ·Ï
ÇÑ´Ù. ¿¹¸¦µé¾î HTMLÀÇ <a> ű×ÀÇ href
¾ÖÆ®¸®ºäÆ®¿Í °°´Ù. Listing 13. HTML ÅÂ±×¿ë ¾ÖÆ®¸®ºäÆ®
°ªÀ¸·Î URL »ý¼ºÇϱâ
<a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>
|
¸¶Áö¸·À¸·Î ¸ðµç ¿äû ¸Å°³º¯¼ö°¡ ÁßøµÈ <c:param> ű׸¦ ÅëÇØ
ÁöÁ¤µÇ¸é ±×µéÀÇ À̸§°ú °ªÀº HTTP GET ¿äû¿ë Ç¥ÁØ Ç¥±â¹ýÀ» »ç¿ëÇÏ¿© »ý¼ºµÈ URL¿¡ ºÙ¿©Áø´Ù. ¶ÇÇÑ
URL ÀÎÄÚµùÀÌ ¼öÇàµÈ´Ù. À¯È¿ URLÀ» ¸¸µé¾î³»±â À§ÇØ º¯ÇüµÇ¾î¾ßÇÏ´Â ¸Å°³º¯¼öÀÇ À̸§ ¶Ç´Â °ª¿¡ ³ªÅ¸³ª´Â ¸ðµç
¹®ÀÚ´Â ÀûÀýÈ÷ º¯È¯µÈ´Ù. Listing 14. ¿äû ¸Å°³º¯¼ö¸¦ °¡Áø
URL ¸¸µé±â
<c:url value="/content/search.jsp">
<c:param name="keyword" value="${searchTerm}"/>
<c:param name="month" value="02/2003"/>
</c:url>
|
Listing 14ÀÇ JSP ÄÚµå´Â blog À̶ó´Â À̸§ÀÇ ¼ºí¸´ ÄÜÅؽºÆ®¿¡
Àü°³µÇ¾ú´Ù. ¹üÀ§ º¯¼ö searchTerm ÀÇ °ªÀº "core
library" ·Î ¼³Á¤µÇ¾ú´Ù. ¼¼¼Ç ÄíÅ°°¡ ŽÁöµÇ¸é Listing 14¿¡¼ ¸¸µé¾îÁø URLÀº
Listing 15¿Í °°´Ù. Listing 15. ¼¼¼Ç ÄíÅ°°¡ ÀÖ´Â
»óÅ¿¡¼ ¸¸µé¾îÁø URL
/blog/content/search.jsp?keyword=foo+bar&month=02%2F2003
|
¾î¶² ¼¼¼Ç ÄíÅ°µµ ¾øÀ¸¸é Listing 16ÀÇ URLÀÌ ±× °á°úÀÌ´Ù. ¼ºí¸´ ÄÜÅؽºÆ®°¡ ÇÁ¸®Ææµå µÇ¾ú°í
URL ÀÎÄÚµùÀÌµÈ ¿äû ¸Å°³º¯¼ö°¡ ºÙ¾ú´Ù. Listing 16. ¼¼¼Ç
ÄíÅ° ¾øÀÌ ¸¸µé¾îÁø URL
/blog/content/search.jsp;jsessionid=233379C7CD2D0ED2E9F3963906DB4290
?keyword=foo+bar&month=02%2F2003
|
Áß¿äÇÑ
ÄÜÅÙÆ® JSP´Â µÎ °³ÀÇ ºôÆ®ÀÎ ¸ÞÄ¿´ÏÁòÀ» °®°í ÀÖ¾î ´Ù¸¥ URL¿¡¼ ¿Â ÄÜÅÙÆ®¸¦
JSP ÆäÀÌÁö·Î ¸¸µç´Ù. ±×°ÍÀÌ ¹Ù·Î include Áö½Ã¹®°ú
<jsp:include> ÀÛµ¿ÀÌ´Ù. µÎ °æ¿ì ¸ðµÎ, Æ÷ÇԵǾî¾ß ÇÏ´Â ÄÜÅÙÆ®°¡
ÆäÀÌÁö·Î¼ °°Àº À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ºÎºÐÀÌ µÇ¾î¾ß ÇÑ´Ù. µÎ °¡Áö ű×ÀÇ ÁÖ¿ä Â÷ÀÌÁ¡Àº
include Áö½Ã¹®Àº ÆäÀÌÁö°¡ ÄÄÆÄÀÏÇÏ´Â µ¿¾È Æ÷ÇÔµÈ ÄÜÅÙÆ®¸¦ °áÇÕÇÏ°í
<jsp:include> ¾×¼ÇÀº JSP ÆäÀÌÁöÀÇ ¿äû ÇÁ·Î¼¼½º µ¿¾È ÀÛµ¿ÇÑ´Ù´Â
°ÍÀÌ´Ù.
core ¶óÀ̺귯¸®ÀÇ <c:import> ¾×¼ÇÀº
´õ¿í ÀϹÝÀûÀÌ¸é¼ °·ÂÇÑ ¹öÀüÀÇ <jsp:include> ¶ó ÇÒ ¼ö ÀÖ´Ù.
<jsp:include> ó·³,
<c:import> ´Â ¿äû ½Ã°£ ÀÛµ¿ÀÌ°í ±âº» ŽºÅ©´Â ´Ù¸¥ À¥ ¸®¼Ò½ºÀÇ
ÄÜÅÙÆ®¸¦ JSP ÆäÀÌÁö¿¡ »ðÀÔÇÏ´Â °ÍÀÌ´Ù. Listing 17.
<c:import>ÀÛµ¿ ½ÅÅýº
<c:import url="expression" context="expression"
charEncoding="expression" var="name" scope="scope">
<c:param name="expression" value="expression"/>
...
</c:import>
|
ÀÓÆ÷Æ® µÇ¾î¾ßÇÏ´Â ÄÜÅÙÆ®¿ë URLÀº url ¾ÖÆ®¸®ºäÆ®¸¦ ÅëÇØ ÁöÁ¤µÈ´Ù. °ü·Ã
URLÀÌ Çã¿ëµÇ°í ÇöÀç ÆäÀÌÁöÀÇ URL¿¡ ´ëºñÇÏ¿© ºÐÇصȴÙ. url ¾ÖÆ®¸®ºäÆ®ÀÇ °ªÀº
Æ÷¿öµå ½½·¡½Ã·Î ½ÃÀÛÇÑ´Ù. ÇÏÁö¸¸ ·ÎÄà JSP ÄÁÅ×ÀÌ³Ê ³»¿¡¼´Â Àý´ë URL·Î¼ ÀÎÅÍÇÁ¸®ÆõȴÙ.
context ¾ÖÆ®¸®ºäÆ® °ª ¾øÀÌ´Â ±×¿Í °°Àº Àý´ë URLÀº ÇöÀç ¼ºí¸´ ÄÜÅؽºÆ®¿¡¼
¸®¼Ò½º¸¦ ÂüÁ¶ÇÏ´Â °ÍÀ¸·Î °£ÁֵȴÙ. ¸íÈ®ÇÑ ÄÜÅؽºÆ®°¡ context ¾ÖÆ®¸®ºäÆ®¸¦ ÅëÇØ
ÁöÁ¤µÇ¸é Àý´ë(·ÎÄÃ) URLÀº À̸§À» °¡Áø ¼ºí¸´ ÄÜÅؽºÆ®¿¡ ´ëÇØ ºÐÇصȴÙ.
<c:import> ¾×¼ÇÀº ·ÎÄà ÄÜÅÙÆ® Á¢±Ù¿¡¸¸ Á¦ÇѵÇÁö ¾Ê´Â´Ù.
ÇÁ·ÎÅäÄÝ°ú È£½ºÆ® À̸§À» Æ÷ÇÔÇÑ Àüü URI´Â url ¾ÖÆ®¸®ºäÆ®ÀÇ °ªÀ¸·Î ÁöÁ¤µÉ ¼ö
ÀÖ´Ù. »ç½Ç ÇÁ·ÎÅäÄÝÀº HTTP·Î Á¦ÇѵÇÁö ¾Ê´Â´Ù. java.net.URL Ŭ·¡½º·Î
Áö¿øµÇ´Â ¸ðµç ÇÁ·ÎÅäÄÝÀº <c:import> ÀÇ url
¾ÖÆ®¸®ºäÆ®¿ë °ª¿¡¼ »ç¿ëµÈ´Ù. (Listing 18).
<c:import> ¾×¼ÇÀº FTP ÇÁ·ÎÅäÄÝÀ» ÅëÇØ ¾×¼¼½º µÇ´Â ¹®¼ÀÇ
ÄÜÅÙÆ®¸¦ Æ÷ÇÔÇϴµ¥ »ç¿ëµÈ´Ù. <c:catch> ¾×¼ÇÀº FTP ÆÄÀÏ Àü¼Û µ¿¾È
¹ß»ýÇÏ´Â ¸ðµç ¿¡·¯¸¦ ó¸®Çϱâ À§ÇØ »ç¿ëµÈ´Ù. <c:catch> ÀÇ
var º¯¼ö¸¦ »ç¿ëÇÏ¿© ¿¹¿Ü¿ë ¹üÀ§ º¯¼ö¸¦ ÁöÁ¤ÇÏ°í
<c:if> ¸¦ »ç¿ëÇÏ¿© °ªÀ» °Ë»çÇÏ¸é µÈ´Ù. ¿¹¿Ü°¡ ¹ß»ýÇÏ¸é ¹üÀ§ º¯¼ö·ÎÀÇ
ÇÒ´çÀÌ ¹ß»ýÇÑ´Ù. Listing 18.
<c:import>¿Í <c:catch>ÀÇ °áÇÕ ¿¹Á¦
<c:catch var="exception">
<c:import url="ftp://ftp.example.com/package/README"/>
</c:catch>
<c:if test="${not empty exception}">
Sorry, the remote content is not currently available.
</c:if>
|
<c:import> ¾×¼ÇÀÇ ¸¶Áö¸· µÎ °³ÀÇ ¾ÖÆ®¸®ºäÆ®´Â
var ¿Í scope ÀÌ´Ù. var
¾ÖÆ®¸®ºäÆ®´Â ÁöÁ¤µÈ À¯¾Ë¿¤¿¡¼ °¡Á®¿Â ÄÜÅÙÆ®°¡ ÇöÀçÀÇ JSP ÆäÀÌÁö¿¡ Æ÷ÇԵǵµ·Ï ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó º¯¼ö¿¡
ÀúÀåµÇµµ·Ï ÇÑ´Ù. scope ¾ÖÆ®¸®ºäÆ®´Â ÀÌ º¯¼öÀÇ ¹üÀ§ ÁöÁ¤À» Á¦¾îÇÏ°í ÆäÀÌÁö ¹üÀ§¸¦
ÃʱâÈÇÑ´Ù.
¿äû
¸®´ÙÀÌ·º¼Ç(redirection) ¸¶Áö¸· core ¶óÀ̺귯¸®
ű״ <c:redirect> ÀÌ´Ù. ÀÌ ¾×¼ÇÀº HTTP ¸®´ÙÀÌ·ºÆ® ÀÀ´äÀ»
»ç¿ëÀÚ ºê¶ó¿ìÀú·Î º¸³»´Âµ¥ »ç¿ëµÇ¸ç, JSTLÀÇ
javax.servlet.http.HttpServletResponse ÀÇ
sendRedirect() ¸Þ¼Òµå¿Í °°´Ù. ÀÌ Å±×ÀÇ url °ú
context ¾ÖÆ®¸®ºäÆ® (Listing 19) ÀÛµ¿Àº
<c:import> ÀÇ url °ú
context ¾ÖÆ®¸®ºäÆ®¿Í °°´Ù. Listing 19.
<c:redirect>action
<c:redirect url="expression" context="expression">
<c:param name="expression" value="expression"/>
...
</c:redirect>
|
Listing 20Àº <c:redirect> ÀÛµ¿ ¸ð½ÀÀÌ´Ù.
Listing 18ÀÇ ¿¡·¯ ¸Þ½ÃÁö¸¦ ÁöÁ¤µÈ ¿¡·¯ ÆäÀÌÁö ¸®´ÙÀÌ·ºÆ®·Î ´ëüÇÑ´Ù. ÀÌ ¿¹Á¦¿¡¼
<c:redirect> ű״ ǥÁØ
<jsp:forward> ÀÛµ¿°ú ºñ½ÁÇÑ ¹æ½ÄÀ¸·Î »ç¿ëµÈ´Ù. ¿äû µð½ºÆÐÃĸ¦
ÅëÇÑ Æ÷¿öµùÀº ¼¹öÂÊ¿¡¼ ±¸ÇöµÇÁö¸¸ ¸®´ÙÀÌ·ºÆ®´Â ºê¶ó¿ìÀú¿¡¼ ¼öÇàµÈ´Ù. °³¹ßÀÚÀÇ °üÁ¡¿¡¼ º¸¸é Æ÷¿öµùÀº
¸®´ÙÀÌ·ºÆú¸´Ù È¿À²ÀûÀÌ´Ù. ÇÏÁö¸¸ <c:redirect> ¾×¼ÇÀÌ Á»´õ
À¯¿¬ÇÏ´Ù. <jsp:forward> ´Â ÇöÀç ¼ºí¸´ ÄÜÅؽºÆ® ³»¿¡¼ ´Ù¸¥ JSP
ÆäÀÌÁö·Î¸¸ µð½ºÆÐÄ¡ ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. Listing 20.
¿¹¿Ü¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ¸®´ÙÀÌ·ºÆÃ
<c:catch var="exception">
<c:import url="ftp://ftp.example.com/package/README"/>
</c:catch>
<c:if test="${not empty exception}">
<c:redirect url="/errors/remote.jsp"/>
</c:if>
|
»ç¿ëÀÚ °üÁ¡°úÀÇ ÁÖ¿ä Â÷ÀÌÁ¡Àº ¸®´ÙÀÌ·ºÆ®°¡ ºê¶ó¿ìÀú·Î µð½ºÇ÷¹ÀÌµÈ URLÀ» ¾÷µ¥ÀÌÆ®ÇÏ°í ºÏ¸¶Å© ¼³Á¤¿¡
¿µÇâÀ» ¹ÌÄ£´Ù´Â °ÍÀÌ´Ù. ¹Ý¸é Æ÷¿öµùÀº ¿£µåÀ¯Àú¿¡°Ô Åõ¸íÇÏ´Ù.
<c:redirect> ¿Í
<jsp:forward> ÁßÀÇ ¼±ÅÃÀº »ç¿ëÀÚ °æÇè¿¡ µû¶ó ´Þ¶óÁø´Ù.
Âü°íÀÚ·á
|