Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸® Åë½ÅÀÇ ¸ðµç °Í
Jeff
K. Wilson E-ºñÁî´Ï½º ¼³°èÀÚ, IBM 2002³â 1¿ù
JavaServer Pages ±â¼úÀº À¥ °³¹ßÀڵ鿡°Ô Áß¿äÇÑ ±â´ÉÀ» Á¦°øÇÏÁö¸¸, ¸¹Àº
°³¹ßÀÚµéÀÌ ÀÌ ±â¼úÀÇ Àü ´É·ÂÀ» È°¿ëÇÏÁö ¸øÇÏ°í ÀÖ´Ù. e-ºñÁî´Ï½º ¼³°èÀÚÀÎ Jeff Wilson (IBMÀÇ
Á¸°æ¹Þ´Â DragonSlayers ÆÀÀÇ ¸â¹öÀ̱⵵ ÇÔ)Àº ÀÌ ±â¼ú¿¡¼ ´õ ¸¹Àº °ÍÀ» ¾ò¾î ³»±â À§ÇÏ¿© JSP
ű׸¦ Ä¿½ºÅ͸¶ÀÌÁîÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. ÀÌ ±Û¿¡¼ ±×°¡ »ó¼¼È÷ ¼³¸íÇÑ ±â¹ýÀ» ÀÌ¿ëÇؼ ¿©·¯ºÐÀº JSP¿¡
º¸´Ù º¹ÀâÇÑ ·ÎÁ÷À» Ãß°¡ÇÏ°í µ¥ÀÌÅÍ È¸é Ãâ·ÂÀ» ´õ ¾ö°ÝÇÏ°Ô Á¦¾îÇÏ°í ÅÂ±× °£¿¡ µ¥ÀÌÅ͸¦ °øÀ¯½Ãų ¼ö
Àִµ¥, Àϼ± À¥ °³¹ßÀڵ鿡°Ô ÀÚ¹Ù ÄÚµå ÀÛ¼º¹ýÀ» °¡¸£Ä¡Áö ¾Ê°íµµ ÀÌ ¸ðµç °ÍÀ» ÇÒ ¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ À¥ °³¹ß¿¡ °ü¿©ÇÏ°í ÀÖ´Ù¸é ¿©·¯ºÐÀº ¿À´Ã³¯ÀÇ À¥ ±â¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀÌ º¸´Ù µ¿ÀûÀ¸·Î »ý¼ºµÇ´Â
ÄÁÅÙÃ÷¿Í °³ÀÎÈµÈ µ¥ÀÌÅ͸¦ ±× ¾î´À ¶§º¸´Ù ´õ ¸¹ÀÌ ¿ä±¸ÇÑ´Ù´Â »ç½ÇÀ» Àß ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. »ç¿ëÀÚ¿¡°Ô Ä£±ÙÇÑ
ÀÎÅÍÆäÀ̽º¸¦ ¼³°èÇÑ´Ù´Â °ÍÀº Àϼ± °³¹ßÀÚµéÀÌ ¼÷·ÃµÈ ½Ã°¢Àû ¼³°è ½ºÅ³À» °¡Áö°í ÀÖ¾î¾ß ÇÒ »Ó ¾Æ´Ï¶ó ÄÁÅÙÃ÷ÀÇ
È帧À» °ü¸®ÇÏ°í È°¿ëÇϴµ¥µµ ´É¼÷ÇØ¾ß ÇÔÀ» ÀǹÌÇÑ´Ù.
»ç¿ëÀÚ Á¤ÀÇ (Ä¿½ºÅÒ) JSP ű״ ÀÌ·¯ÇÑ Àϼ± °³¹ßÀڵ鿡°Ô JSP ÆäÀÌÁö¿¡ ¾Æ¹«·± ÀÚ¹Ù Äڵ带 ÀÛ¼ºÇÏÁö
¾Ê°íµµ ¹é¿£µå ÀÚ¹Ù ÄÄÆ÷³ÍÆ®¿¡¼ µ¥ÀÌÅÍ°¡ 󸮵Ǵ ¹æ½ÄÀ» Á¦¾îÇÒ ¼ö ÀÖ´Â ¼ö´ÜÀ» Á¦°øÇÑ´Ù.
ÀÌ ±Û¿¡¼ ¿ì¸®´Â Ä¿½ºÅÒ Å±װ¡ ¼·Î ¾î¶»°Ô Åë½ÅÇÏ°í À̵éÀ» °áÇÕ½ÃÅ°¸é Àç»ç¿ë¼º°ú À¯¿¬¼ºÀÌ ¾î¶»°Ô
³ô¾ÆÁö´ÂÁö¿¡ Æ÷Ä¿½º¸¦ ¸ÂÃâ °ÍÀÌ´Ù. ¶ÇÇÑ ¸î °¡Áö ¿¹µµ »ìÆì º¸°Ú´Ù.
Ä¿½ºÅÒ ÅÂ±× °³¿ä
Ä¿½ºÅÒ Å±״ <jsp:useBean .../> ¿Í
<jsp:getProperty .../> °°Àº ÀϹÝÀûÀÎ JSP ű׺¸´Ù ´õ
Áøº¸µÇ°í À¯¿¬ÇÏ´Ù. Ä¿½ºÅÒ Å±װ¡ ÀÏ¹Ý JSP ű׿¡ ºñÇØ °¡Áö´Â ÁÖ¿ä ÀåÁ¡ Áß Çϳª´Â Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇϸé
JSP °³¹ßÀÚ°¡ µ¥ÀÌÅ͸¦ ÅÂ±× ¼Ó¼ºÀ̳ª ½ÃÀÛ°ú ³¡ ÅÂ±× ÅÂ±× »çÀÌ¿¡ À§Ä¡½ÃÅ´À¸·Î½á ÀÔ·Â »çÇ×À» Àü´ÞÇÒ ¼ö ÀÖ´Ù´Â
Á¡ÀÌ´Ù.
Ä¿½ºÅÒ JSP ű״ ´ÙÀ½ ¼¼ ºÎºÐÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.:
- űװ¡ »ç¿ëµÇ´Â JSP ÆäÀÌÁö
- ű׸¦ ó¸®ÇÏ´Â Àڹ٠Ŭ·¡½ºÀÎ ÅÂ±× Çڵ鷯 (tag handler)
- ű׵éÀ» ÇϳªÀÇ "¶óÀ̺귯¸®"·Î ¹°í, ¼Ó¼º, ÅÂ±× Ã³¸®¸í, ´ÜÃà¸í µî °¢ ű×ÀÇ ¼¼¸ñÀ» ±â¼úÇÏ´Â
XML ÆÄÀÏÀÎ ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ (tag library
descriptor) .
Ä¿½ºÅÒ Å±״ Å±×ÀÇ ¼Ó¼ºÀ¸·Î ÀÔ·ÂµÈ »çÇ׿¡ ±â¹ÝÇÏ¿© ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃÅ°µµ·Ï ±¸¼ºµÉ ¼ö ÀÖ°í, JSP
ÆäÀÌÁö ³»¿¡ ÀÓº£µðµåµÈ ÀÚ¹Ù Äڵ带 µÑ ÇÊ¿ä°¡ ¾ø´Ù.
¿¹Á¦¸¦ »ìÆì º¸ÀÚ. Listing 1Àº »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¸ðµç Á¦Ç°¿¡ ´ëÇØ Å×À̺íÀÇ ÇÑ ÇàÀ» ¸¸µå´Â ¼îÇÎ
Ä«Æ® ű×ÀÌ´Ù.:
Listing 1. ¼îÇÎ Ä«Æ® ű×
<table width="100%" border="0">
<user:getUserShoppingList userId="13">
<tr>
<td>
<a href="/servlet/productDataServlet?prodID=$_productId">$_productName</a>
</td>
<td>$_productDescription</td>
</tr>
</user:getUserShoppingList>
</table>
|
ÀÌ °æ¿ì, ÅÂ±× Ã³¸®ÀÚ Å¬·¡½º´Â HTML°ú »ç¿ëÀÚ ID°¡ °á°ú·Î ³ª¿À´Â Ãâ·Â (ÀÌ °æ¿ì¿¡´Â Å×À̺íÀÇ ÇÑ
Çà)¿¡ ´ëÇÑ ÅÛÇø´À¸·Î Àü´ÞµÇ±â¸¦ ±â´ëÇÑ´Ù. ´Ù¾çÇÑ $_product... ÂüÁ¶´Â ű×
Çڵ鷯¿¡¼ ¹Ýº¹ ¼öÇàµÇ´Â Á¦Ç°µéÀÇ ½ÇÁ¦ °ªÀ¸·Î ±³Ã¼µÉ °ÍÀ̸ç, ÀÌ°ÍÀÌ Å±׸¦ ±¸ÇöÇÏ´Â Àڹ٠Ŭ·¡½ºÀÌ´Ù.
ÀÌ°ÍÀº Ä¿½ºÅÒ Å±×ÀÇ ¶Ç ´Ù¸¥ ÁÖ¿ä ÀåÁ¡À» º¸¿© ÁØ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¡¸ÓµéÀº µ¥ÀÌÅ͸¦ Ŭ¶óÀ̾ðÆ®¿¡°Ô
ÀçÀü¼ÛÇϱâ Àü±îÁö µ¥ÀÌÅÍ Æ÷¸ËÀ» ¾î¶»°Ô ÇÒÁö ¾Ë ÇÊ¿ä°¡ ¾ø´Ù. ¶ÇÇÑ ³»¿ëÀº À¯»çÇѵ¥ Æ÷¸ËÀÌ ´Ù¸¥ µ¥ÀÌÅ͸¦
¿ä±¸ÇÏ´Â »õ·Î¿î ÆäÀÌÁö°¡ °³¹ßµÇ°Å³ª ÇöÀç ÆäÀÌÁöÀÇ ¸ð½ÀÀÌ ¹Ù²ð ¶§ ÀÚ¹Ù ÄÄÆ÷³ÍÆ®¸¦ ¾÷µ¥ÀÌÆ®ÇÒ ÇÊ¿ä°¡ ¾øÀ»
°ÍÀÌ´Ù.
À¯Çü »Ó ¾Æ´Ï¶ó È¸é ·ÎÁ÷µµ Á¦¾îÇϱâ
Ä¿½ºÅÒ Å±×ÀÇ ¶Ç ´Ù¸¥ ¾ÆÁÖ Áß¿äÇÑ ÀåÁ¡Àº °°Àº ÆäÀÌÁö »óÀÇ ´Ù¸¥ ÅÂ±×¿Í Åë½ÅÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ±âÁ¸ÀÇ
JSP ű׿¡¼´Â °³¹ßÀÚµéÀÌ JavaBean ÄÄÆ÷³ÍÆ®ÀÇ ÇൿÀ» Á¦¾îÇϱâ À§ÇØ Æ¯¼ºÀ» ¼³Á¤ÇÒ ¼ö ÀÖ¾úÁö¸¸, ºóÀº
±× ÀÚ½ÅÀÌ ÇÒ ¼ö ÀÖ´Â °Í¸¸ ÇÒ »ÓÀÌ´Ù.
ÇÁ·Î¼¼½º¸¦ º¸´Ù ÀÛÀº ÄÄÆ÷³ÍÆ®µé·Î ³ª´®À¸·Î½á JSP °³¹ßÀÚµéÀº Ä¿½ºÅÒ Å±׵éÀ» ¼¯°í ¸ÂÃâ ¼ö ÀÖÀ¸¸ç, À̸¦
ÅëÇØ µ¿ÀûÀÎ ÄÁÅÙÃ÷¿¡ ´ëÇÑ Á¦¾î·ÂÀ» ³ôÀÏ ¼ö ÀÖµµ·Ï º¸´Ù º¹ÀâÇÑ ÇÁ·Î¼¼½º¸¦ ±¸ÃàÇÒ ¼ö ÀÖ´Ù.
ÇÑ Ä¿½ºÅÒ Å±×ÀÇ Ãâ·ÂÀ» ´Ù¸¥ ű׿¡ ´ëÇÑ ÀÔ·ÂÀ¸·Î »ç¿ëÇϸé ű×ÀÇ Àç»ç¿ë¼ºÀÌ ³ô¾ÆÁø´Ù. ¿¹¸¦ µé¾î, À§ÀÇ
¿¹¿¡¼ »ç¿ëÀÚ ¼îÇÎ Ä«Æ® ű״ ±¸¸ÅÇÑ Á¦Ç°¿¡ ´ëÇÑ ¸ðµç Á¤º¸¸¦ º¸À¯ÇÏ°í ÀÖ´Ù. »ç¿ëÀÚ Å±״ Á¦Ç° ID¸¸À»
°¡Áö°í ´Ù¸¥ ÅÂ±× (Á¦Ç° ű×)°¡ Á¦Ç° µ¥ÀÌÅ͸¦ ÇÊ¿ä¿¡ µû¶ó °ü¸®Çϵµ·Ï ÇÏ¸é ´õ ÈḢÇÑ ¼³°è°¡ µÉ °ÍÀÌ´Ù. ÀÏ´Ü
Á¦Ç° »ó¼¼ »çÇ×À» ¸ðÀ¸´Â ÇÁ·Î¼¼½º¸¦ ºÐ¸®½ÃÅ°¸é ¿©·¯ºÐÀº ÀÌ·± ¸ñÀûÀ¸·Î ´Ù¸¥ ÅÂ±×¿Í ÇÔ²² »ç¿ëµÉ ¼ö ÀÖ´Â Á¦Ç°
ű׸¦ °¡Áö°Ô µÈ´Ù.
ÀÌ´Â °Ë»öµÈ µ¿ÀûÀÎ µ¥ÀÌÅ͸¦ Á¦¾îÇϱâ À§ÇÑ °´Ã¼ÁöÇâÀû ¹æ½ÄÀ» ¸¸µé¾î³»°í, Àϼ± °³¹ßÀÚµéÀº ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ
¾ËÁö ¸øÇصµ ÀÌ ¹æ½ÄÀ» µû¶ó°¥ ¼ö ÀÖ´Ù.
Listing 2ÀÇ ÄÚµå´Â ½ÇÇà ÁßÀÎ ÀÌ ¹æ½ÄÀ» º¸¿©ÁØ´Ù. ¶ÇÇÑ »ç¿ëÀÚÀÇ ¼îÇÎ ¸ñ·Ï ű״Â
error:setErrorTemplate À̶ó´Â ´Ù¸¥ ű׸¦ ±¸ÇöÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇÑ´Ù. ÀÌ
¿¹¿¡¼ ¾î¶² Á¦Ç°µµ ¹ß°ßµÇÁö ¾ÊÀ» °æ¿ì ¿ì¸®´Â ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³ª±â¸¦ ¿øÇÑ´Ù. ¿ì¸®ÀÇ Á¦Ç° ¸ñ·Ï¿¡ ÇÊ¿äÇÑ
2¿·Î µÈ Å×À̺íÀÌ ¿¡·¯ ¸Þ½ÃÁö¿¡ ±×¸® ÀûÀýÇÏÁö ¾ÊÀ» °ÍÀÓÀ» ½±°Ô ¾Ë ¼ö ÀÖ´Ù.
Listing 2. °´Ã¼ ÁöÇâÀû ¹æ½Ä
<table width="100%" border="0">
<tr class="headerRow">
<td>Product Name</td>
<td>Product Description</td><tr>
</tr>
<user:getUserShoppingList userId="13">
<products:getProductData productId="$_productId"/>
<tr>
<td>
<a href="/servlet/productDataServlet?$_productId">$_productName</a>
</td>
<td>$_productDescription</td>
</tr>
<error:setErrorTemplate>
<tr class="errorRow">
<td colspan="2">You have nothing in your shopping cart...</td>
</tr>
</error:setErrorTemplate>
</user:getUserShoppingList>
</table>
|
ÅÂ±× Çڵ鷯 Ŭ·¡½º´Â »çÀü Á¤ÀÇµÈ Æ¯Á¤ ȯ°æ ÇÏ¿¡¼ º¯°æµÈ Æ÷¸ËÀ» ó¸®Çϵµ·Ï ¼³°èµÉ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº
JSP °³¹ßÀÚ°¡ JSP ÆäÀÌÁö ³»¿¡ if ÀýÀ̳ª ´Ù¸¥ ÀÚ¹Ù Äڵ带 »ç¿ëÇÏÁö ¾Ê°íµµ ¾î¶»°Ô µ¥ÀÌÅÍÀÇ ³í¸®Àû È帧À»
Á¦¾îÇÒ ¼ö ÀÖ´ÂÁö¸¦ º¸¿©ÁÖ´Â ÁÁÀº ¿¹ÀÌ´Ù. Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇØ JSP °³¹ßÀÚµéÀº ¾î¶»°Ô Ç¥½ÃµÇ´ÂÁö »Ó ¾Æ´Ï¶ó
¹«¾ùÀÌ Ç¥½ÃµÇ´ÂÁö¸¦ ÆǺ°ÇÏ´Â ¹æ¹ýµµ Á¤ÇÒ ¼ö ÀÖ´Ù.
´Ù¸¥ »óȲ¿¡¼, µ¿ÀÏÇÑ Á¦Ç° µ¥ÀÌÅÍ Å±װ¡ Á¦Ç° ¸ñ·ÏÀ» °¡Áø ´Ù¸¥
ű׿¡ Àç»ç¿ëµÉ ¼ö ÀÖ´Ù. Listing 3¿¡¼ ´Ù¸¥ HTMLÀÌ Å±׷ΠÀü´Þ
Listing 3. Á¦Ç° ¸ñ·Ï°ú »ç¿ëµÇ´Â Á¦Ç° µ¥ÀÌÅÍ Å±×
<table width="100%" border="0">
<products:getProductList category="fitness">
<products:getProductData productId="$_productId"/>
<tr>
<td rowspan="2">
<a href="/servlet/productDataServlet?$_productId"><img
src="$_productImage" border="0"></a></td>
<td>
<a href="/servlet/productDataServlet?$_productId">$_productName</a>
</td>
</tr>
<tr>
<td>$_productDescription: $_productPrice</td>
</tr>
<error:setErrorTemplate>
<tr>
<td colspan="2" class="errorRow">Sorry, no products in this category...</td>
</tr>
</error:setErrorTemplate>
</user:getUserShoppingList>
</table>
|
ÅÂ±× Åë½Å ¸Þ¼Òµå : ÀåÁ¡ ¹×
¿¹Á¦
Ä¿½ºÅÒ Å±װ¡ ¼·Î¸¦ ÂüÁ¶ÇÏ°í µ¥ÀÌÅ͸¦ °øÀ¯ÇÏ´Â ¸î °¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ÀûÀýÇÑ ¸Þ¼Òµå°¡ ¹«¾ùÀ̳Ĵ ¹°·Ð
»óȲ¿¡ ´Þ·Á ÀÖÀ» °ÍÀÌ´Ù.
Áßø ÅÂ±× ÇÑ Å±װ¡
´Ù¸¥ ű׿¡ ÀÇÇØ ¿ÏÀüÈ÷ µÑ·¯½Î¿©Á® ÀÖÀ» ¶§ űװ¡ ÁßøµÇ¾î ÀÖ´Ù°í ¸»ÇÑ´Ù. :
<outer:tag><inner:tag/></outer:tag>
|
ÇÑ Å±׸¦ ´Ù¸¥ ÅÂ±× ³»¿¡ µÎ±â À§ÇØ Æ¯º°ÇÑ ¼³Á¤À̳ª ÄÚµùÀÌ ÇÊ¿äÇÏÁö´Â ¾Ê´Ù. ÇÑ Å±װ¡ ÇÑ °÷¿¡ ÁßøµÉ
¼ö ÀÖ°í ±× ÀÚü·Î ´Ù¸¥ °÷¿¡ ÁßøµÉ ¼ö ÀÖ´Ù. ¹°·Ð ÀϺΠű״ ´Ù¸¥ ÅÂ±×µé ³»¿¡ ÁßøµÇµµ·Ï ¼³°èµÇ°ÚÁö¸¸,
űװ¡ Áßø °¡´ÉÇÏ´Ù°í ¼±¾ðÇϱâ À§ÇØ Æ¯º°È÷ ÇÊ¿äÇÑ °ÍÀº ¾ø´Ù.
¿©·¯ºÐÀº HTML Å×À̺í, Å×À̺íÀÇ Çà°ú Å×À̺íÀÇ ¼¿ ű׸¦ Áßø ű׷Π»ý°¢ÇÒ ¼ö ÀÖ´Ù. Å×À̺í ű׿¡
°øÀ¯µÈ µ¥ÀÌÅÍÀÇ ¿¹·Î Å×À̺íÀÇ ¹è°æ »ö (bgcolor ¼Ó¼º)À» µé ¼ö ÀÖ´Ù. ¹è°æÀÌ
Å×À̺í ÅÂ±× ³»¿¡ <table
bgcolor="blue">...</table> À̶ó°í ¼³Á¤µÇ¸é,
bgcolor ¼Ó¼ºÀÌ °³º°ÀûÀÎ ÅÂ±× (¿¹ : <table
bgcolor="blue">...<td
bgcolor="red">...</td>...</table> )¿¡ ÀÇÇØ
¿À¹ö¶óÀ̵åµÇÁö ¾Ê´Â ÀÌ»ó ¸ðµç Çà°ú ¼¿ÀÌ ÆĶõ»öÀ¸·Î ¼³Á¤µÉ °ÍÀÌ´Ù.
°¡Àå ±âº»ÀûÀÎ ±¸Çö¿¡¼, Æò°¡µÈ ³»ºÎ ű״ °£´ÜÈ÷ ¿ÜºÎ ű×ÀÇ body ÀÔ·ÂÀÌ µÉ ¼ö ÀÖ´Ù. ±×·¯³ª
ÁßøµÈ ű״ ¶ÇÇÑ ÀÚ½ÅÀ» µÑ·¯½Î°í Àִ ű׸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ°í (ºÎ¸ð ÅÂ±× È¤Àº Á¶ºÎ¸ð ÅÂ±× µî) ¿¬°áµÈ
Ŭ·¡½º°¡ ¼·ÎÀÇ ¸Þ¼Òµå¿Í Ư¼ºÀ» È£ÃâÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ÀÚ½Ä ÅÂ±×¿Í ºÎ¸ð űװ¡ µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ
¼ö ÀÖ´Ù.
Áßø ű״ ´ÙÀ½ µÎ ¸Þ¼Òµå Áß Çϳª¸¦ »ç¿ëÇÏ¿© Á¶»ó ű׸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.:
TagSupport.getParent() : ºÎ¸ð ÅÂ±× (Áï ű׸¦ ¹Ù·Î
µÑ·¯½Î°í Àִ ű×)¸¦ ¹ÝȯÇÑ´Ù.
TagSupport.findAncestorWithClass(from,class) :
ű×ÀÇ Æ¯Á¤ °èÃþÀÌ ¾Ë·ÁÁöÁö ¾Ê°Å³ª ¹Ýµå½Ã »çÀü ¼³Á¤µÈ °ÍÀº ¾Æ´Ò ¶§ »ç¿ëµÈ´Ù.
findAncestorWithClass(from,class) ÀÇ ÀÎÀÚ´Â ¾î¶²
Ŭ·¡½º·ÎºÎÅÍ ½ÃÀÛÇØ¾ß ÇÏ´ÂÁö¿Í ¾î¶² Ŭ·¡½º¸¦ ã¾Æ¾ß ÇÏ´ÂÁö¸¦ °¢°¢ ¾Ë·ÁÁØ´Ù. ¿¹¸¦ µé¾î, HTML Å×À̺í
ÅÂ±× °èÃþ¿¡¼ Å×À̺í ű׿¡ Á¢±ÙÇÏ´Â ÇÑ Å×ÀÌºí ¼¿ ű״ ´ÙÀ½°ú °°Àº ¸ð½ÀÀÏ ¼ö ÀÖ´Ù.:
TableTag table = (TableTag)findAncestorWithClass(this, TableTag.class);
|
ÇöÀçÀÇ Å±װ¡ ÁöÁ¤µÈ Ŭ·¡½º(TableTag.class , in this case)¸¦
ÅÂ±× Çڵ鷯·Î °¡Áø ű׿¡ ÁßøµÇÁö ¾Ê¾Ò°Å³ª getParent() °¡ È£ÃâµÇ¾ú´Âµ¥ ºÎ¸ð
űװ¡ ¾ø´Â °æ¿ì, µÎ ¸Þ¼Òµå ¸ðµÎ null °ªÀ» ¹ÝȯÇÒ °ÍÀÌ´Ù.
ű׸¦ ID·Î
ÂüÁ¶Çϱâ
µ¥ÀÌÅ͸¦ °øÀ¯ÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº Ŭ·¡½º¸¦ ID·Î µî·ÏÇÏ¿© ´Ù¸¥ ű×ÀÇ Çڵ鷯 Ŭ·¡½º¿¡ ÀÇÇØ °Ë»öµÉ ¼ö
ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇϸé JSP °³¹ßÀڴ űװ¡ À̸¦ ¹Þ¾ÆµéÀ̵µ·Ï Ư¼öÇÏ°Ô ÇÁ·Î±×·¡¹ÖµÇÁö ¾ÊÀº
°æ¿ì ID¸¦ ¾î¶² Ä¿½ºÅÒ Å±׿¡µµ ¼³Á¤ÇÒ ¼ö ¾ø´Ù.
ID Ư¼ºÀº ÀÌ·± ¸ñÀûÀ¸·Î ÀÌ¹Ì TagSupport ³»¿¡ ¼±¾ðµÇ¾ú°í, ¾î¶² ű×
Çڵ鷯 Ŭ·¡½º¿¡¼µµ »ç¿ë °¡´ÉÇÏ´Ù. ±×·¯³ª ´Ù¸¥ űװ¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ID Ư¼ºÀ» »ç¿ëÇÏ¿© °´Ã¼¸¦ ÀúÀåÇÏ·Á¸é
µÎ ´Ü°è¸¦ °ÅÃÄ¾ß ÇÑ´Ù.:
- ID Ư¼ºÀÌ ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ¿¡ ÁöÁ¤µÇ¾î¾ß ÇÑ´Ù. (ÇÊ¿äÇÑ ³ëµå´Â ÂüÀ̳ª °ÅÁþ Áß Çϳª·Î
¼³Á¤µÉ ¼ö ÀÖ´Ù.)
- ÅÂ±× Çڵ鷯´Â
pageContext ÀÇ ¼Ó¼ºÀ¸·Î ÀÚ½ÅÀ» ¸íÈ®ÇÏ°Ô ¼³Á¤ÇØ¾ß ÇÑ´Ù.
űװ¡ ½±°Ô ÁßøµÇÁö ¾Ê´Â °æ¿ì ÅÂ±× °´Ã¼¸¦ µî·ÏµÈ ID¿Í °øÀ¯ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ´Ù.
¿ì¸®ÀÇ ¿¹Á¦ÀÎ »ç¿ëÀÚ ¼îÇÎ Ä«Æ®¸¦ ´Ù½Ã ¾ð±ÞÇØ º¸ÀÚ. ¾Æ·¡ Listing 4ÀÇ
<user:getUserShoppingList .../> °¡
getProductIds() ¶ó´Â Á¦Ç° ID ¸ñ·ÏÀ» ¹ÝȯÇÏ´Â ¸Þ¼Òµå¸¦ Æ÷ÇÔÇØ ¼îÇÎ ¸ñ·Ï¿¡
´ëÇÑ ´Ù¾çÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù°í »ý°¢Çغ¸ÀÚ. JSP ÆäÀÌÁöÀÇ ´Ù¸¥ ¾îµò°¡¿¡¼
<products:getProductData> ...
</products:getProductData> űװ¡ Á¦Ç° ID ¸ñ·ÏÀ» ÃëÇØ °¢ Á¦Ç°¿¡
´ëÇÑ »ó¼¼ »çÇ×À» °Ë»öÇÑ ÈÄ À̵éÀÇ Æ÷¸ËÀ» Á¤ÇÏ¿© Ŭ¶óÀ̾ðÆ®¿¡°Ô ÀçÀü¼Û ÇÒ °ÍÀÌ´Ù.
user:getUserShoppingList űװ¡ ½ÇÇàµÇ¾î
userShoppingList ¶ó´Â À̸§ÀÇ pageContext ÀÇ
ÇÑ ¼Ó¼ºÀ¸·Î ÀÚ½ÅÀ» ÀúÀåÇÒ °ÍÀÌ´Ù. product:getProductData ű״Â
¼Ó¼ºÀÇ °ªÀ» °Ë»öÇÏ°í getUserShoppingList °´Ã¼·ÎºÎÅÍ
getProductIds() ¸Þ¼Òµå¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.
Listing 4. getUserShoppingList
<user:getUserShoppingList userId="13" id="userShoppingList"/>
...
<products:getProductData productData="userShoppingList">
<!-- Some formatting template -->
...
</products:getProductData>
|
getUserShoppingList ű׿¡ ´ëÇÑ ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ´Â
Listing 5¿Í °°Àº ¸ð½ÀÀÏ °ÍÀÌ´Ù.:
Listing 5. getUserShoppingList¿¡ ´ëÇÑ ¶óÀ̺귯¸®
µð½ºÅ©¸³ÅÍ
<tag>
<name>getUserShoppingList</name>
<tagclass>com.taglib.UserShoppingListTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>userId</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
|
űװ¡ ÀÚ½ÅÀÇ ¸ðµç 󸮸¦ ¿Ï·áÇÏ°í ³ª¸é (¾Æ¸¶µµ doEndTag() ¸Þ¼Òµå·Î)
getShoppingList ÅÂ±× Çڵ鷯´Â ´ÙÀ½ ÇàÀ» Æ÷ÇÔÇÒ °ÍÀÌ´Ù.:
pageContext.setAttribute(getId(),this);
|
getId() ´Â ÅÂ±× (userShoppingList ) ³»ÀÇ
ID ¼¼Æ®¸¦ °Ë»öÇÏ°í, this ´Â Àüü Ŭ·¡½º ÀÚü¸¦ ÂüÁ¶ÇÑ´Ù.
ÀÏ´Ü userShoppingList űװ¡
pageContext ¿¡ ÀúÀåµÇ°í ³ª¸é getProductData
ÅÂ±× Çڵ鷯 Ŭ·¡½º°¡ productData ¼Ó¼º°ú ÇÔ²² Àڽſ¡°Ô Àü´ÞµÈ ID¸¦ »ç¿ëÇÏ¿©
¿©±â¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. getProductData ű×ÀÇ Çڵ鷯 Ŭ·¡½º´Â ±× ID
(getProductData() ¸Þ¼Òµå·Î °Ë»öµÈ)¸¦ »ç¿ëÇÏ¿©
pageContext ¿¡¼ ¼Ó¼ºÀ» ¹ß°ßÇÏ°í À̸¦
UserShoppingListTag °´Ã¼·Î µÇµ¹·ÁÁÙ °ÍÀÌ´Ù. Listing 6ÀÇ ÄÚµå´Â
productList ¶ó´Â List ¸¦ ¼±¾ðÇÏ°í Á¦Ç° ¸ñ·ÏÀ» ÃßÃâÇϱâ
À§ÇØ getProductIds() ¶ó´Â »ç¿ëÀÚ Å¬·¡½º ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.
Listing 6. Á¦Ç° ¸ñ·Ï ÃßÃâÇϱâ
UserShoppingListTag userShoppingList =
(UserShoppingListTag)pageContext.getAttribute(getProductData());
List productList = (List)userShoppingList.getProductIds();
|
ÆäÀÌÁö¿Í ¼¼¼Ç context¿¡¼ ÅÂ±× ÂüÁ¶Çϱâ
Àüü ÅÂ±× °´Ã¼¸¦ ÀúÀåÇÏ¸é ±× ¾ÈÀÇ Æ¯¼º°ú ¸Þ¼Òµå¸¦ ´Ù¸¥ űװ¡ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϴµ¥
À¯¿ëÇÏ´Ù. ±×·¯³ª ¿©·¯ºÐÀº ¶ÇÇÑ °´Ã¼ÀÇ ÀϺθ¸À» °ø°³Çϱâ·Î °áÁ¤ÇÒ ¼öµµ ÀÖ´Ù. »ç½Ç À§ ¿¹Á¦ÀÇ ÇÑ°è´Â Á¦Ç°
űװ¡ Á¦Ç° ¸ñ·ÏÀÌUserShoppingListTag °´Ã¼¿¡¼ ¿Ã °ÍÀ¸·Î ¿¹»óÇÏ°í ÀÖ´Ù´Â
°ÍÀÌ´Ù.
¾Æ¸¶µµ »ç¿ëÀÚ Å±×ÀÎ getShoppingList °¡ Á¦Ç° ¸ñ·ÏÀ» ´Ù¸¥ űװ¡ »ç¿ëÇÒ
¼ö ÀÖµµ·Ï pageContext ¿¡ "¹ÝÃâ"ÇÏ´Â °ÍÀÌ ´õ ³ªÀº ¹æ½ÄÀÏ °ÍÀÌ´Ù. ÀÌ ¹æ½ÄÀÇ
ÀåÁ¡Àº ´Ù¸¥ űװ¡ Á¦Ç° ¸ñ·ÏÀ» ¹ÝȯÇÏ´Â ¸Þ¼Òµå¿¡ °üÇØ, ±×¸®°í ½ÉÁö¾î´Â ¸ñ·ÏÀ» óÀ½ ¸¸µç °´Ã¼¿¡ ´ëÇؼµµ ¹Ì¸®
¾Ë°í ÀÖÁö ¾Ê¾Æµµ µÈ´Ù´Â °ÍÀÌ´Ù. pageContext¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ¿¡ ´ëÇÑ ¶óº§ÀÌ
productData ¼Ó¼º¿¡ ÀÇÇØ Á¦°øµÇ¸é, Á¦Ç° ű×ÀÇ ÅÂ±× Çڵ鷯´Â ´ÙÀ½°ú °°Àº
¸ð½ÀÀÏ °ÍÀÌ´Ù.:
List productList = (List)pageContext.getAttribute(getProductData());
|
ÀÌ ±â¹ýÀº ¼îÇÎ ¸ñ·Ï ű׸¦ ºñ·ÔÇÑ ´Ù¸¥ ű׵鿡 ´ëÇØ ÀÛµ¿ÇÒ °ÍÀε¥, ¼¼ÀÏ Ç°¸ñÀ̳ª ÁÖ¾îÁø Ä«Å×°í¸® ³»ÀÇ
Á¦Ç°À» È£ÃâÇÏ´Â ÅÂ±× °°Àº °ÍÀ» ¿¹·Î µé ¼ö ÀÖ´Ù.
µ¥ÀÌÅÍ°¡ ¼¼¼Ç¿¡ ÀúÀåµÇ¸é ´ÙÀ½°ú °°Àº ¸ð½ÀÀÏ °ÍÀÌ´Ù. :
HttpSession session = pageContext.getSession();
List productList = (List)session.getAttribute(getProductData());
|
¿¹Á¦ Ä¿½ºÅÒ ÅÂ±× »ìÆ캸±â
¾Æ·¡ÀÇ Âü°í
ÀÚ·á ¼½¼Ç¿¡¼ ¿©·¯ºÐÀº ¿¹Á¦ Ä¿½ºÅÒ ÅÂ±× ¼¼Æ®¿¡ ´ëÇÑ ¸µÅ©¸¦ º¼ ¼ö ÀÖ´Ù. ÄÚµå ÆÐÅ°Áö¸¦ ´Ù¿î·ÎµåÇÏ¿©
»ìÆ캸ÀÚ. ÀÌ ±ÛÀÇ ¸¶Áö¸· ºÎºÐ¿¡¼ ³ª´Â ÀÌ ¿¹Á¦µéÀ» ÀÌ¿ëÇÏ¿© ¿©·¯ºÐ¿¡°Ô Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇØ ¾òÀ» ¼ö ÀÖ´Â
ÀåÁ¡ ¸î °¡Áö¸¦ º¸¿© ÁÙ °ÍÀÌ´Ù.
¿¹Á¦ ÅÂ±× °³¿ä
»ùÇà ÅÂ±× µÚÀÇ ¾ÆÀ̵ð¾î´Â ¸Å¿ì °£´ÜÇÏ°í Á÷Á¢ÀûÀÌ´Ù. ÃÑ 7°³ÀÇ Ä¿½ºÅÒ ÅÂ±×¿Í ÇϳªÀÇ JSP ÆÄÀÏ ¹×
ÇϳªÀÇ ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ (a.tld ÆÄÀÏ)°¡ ÀÖ´Ù.
ű׵éÀº ÇÔ²² ÀÛµ¿ÇÏ¿© ȯ¿µ ȸé, ·Î±×ÀΠȸé, ȤÀº ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì ·Î±×ÀÎ ¿¡·¯ ¸Þ½ÃÁö Áß Çϳª¸¦
Ç¥½ÃÇÑ´Ù. (½ÇÁ¦ ·Î±×ÀÎ ÀýÂ÷´Â ű׿¡ ÀÇÇØ Ã³¸®µÇÁö ¾Ê´Â´Ù. -- °£ÆíÇÔÀ» À§ÇØ ¿ì¸®´Â servletÀ̳ª
JavaBean ÄÄÆ÷³ÍÆ®°¡ ¼³Á¤ÇØ¾ß ÇßÀ» ¼¼¼Ç°ú ¿äû º¯¼ö¸¦ ¼³Á¤ÇÔÀ¸·Î½á ÇÁ·Î¼¼½º¸¦ ¸ð¹æÇغ¸ÀÚ.)
Listing 7¿¡ ³ª¿Í ÀÖµíÀÌ, getUserData ¿Í
nestedLogin À̶ó´Â µÎ °³ÀÇ ÁÖ Å±װ¡ ÀÖ´Ù. ù¹ø°´Â »ç¿ëÀÚ Á¤º¸¸¦ ºÒ·¯¿À°í µÎ¹ø°´Â »ç¿ëÀÚÀÎ John Q. CitizenÀÌ
·Î±×ÀÎÇß´ÂÁö, ¾Æ´ÑÁö¿¡ µû¶ó ÀûÀýÇÑ HTMLÀ» Ç¥½ÃÇÑ´Ù.
ÀÌ µÎ ű״ nestedLogin À̶ó´Â űװ¡
pageContext ¿¡ ÀúÀåµÇ¾î ÀÖ´Â getUserData ű׿¡
Á¢±ÙÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Ç¥½ÃÇÑ´Ù.
nestedLogin ű״ ¶ÇÇÑ ÇÑ ÅÂ±× ³»¿¡ ´Ù¸¥ ű׸¦ Áßø½ÃÅ°´Â ÇÁ·Î¼¼½º¸¦
º¸¿©ÁÖ¸ç, ´Ù¸¥ űװ¡ ÀÚ½ÅÀÇ ¸Þ¼Òµå¿¡ Á¢±ÙÇϵµ·Ï ÇØÁØ´Ù. isLoggedInHTML ,
notLoggedInHTML , ¹×
logInFailureHTML ¶ó´Â ¼¼ °³ÀÇ ´Ù¸¥ ű׿¡ ÀÇÇØ ¼¼ °³ÀÇ È¸éÀÌ Ç¥½ÃµÉ ¼ö
ÀÖ´Ù. ÀÌ ¼¼ ű״ nestedLogin ű×ÀÇ Æ¯¼º¿¡ Á¢±ÙÇϵµ·Ï ÇØÁØ´Ù.;
nestedLogin ¿¡ ÀÇÇØ ÀûÀýÇÑ ÄÚµå ºí·ÏÀÌ °áÁ¤µÇ¾î ȸé Ãâ·ÂµÉ °ÍÀÌ´Ù.
³ª¸ÓÁö µÎ ű×ÀÎ getUserName °ú
getLoginError ´Â ÁßøµÈ ű׸¦ »ç¿ëÇÏ´Â µÎ °¡Áö ¹æ½ÄÀ» º¸¿©ÁØ´Ù. : °£´ÜÇÑ
body ÄÁÅÙÃ÷·Î »ç¿ëÇÏ´Â °Í°ú Á¶»ó ÅÂ±× ³»ÀÇ ¸Þ¼Òµå¿¡ Á¢±ÙÇÏ´Â ¼ö´ÜÀ¸·Î »ç¿ëÇÏ´Â ±×°ÍÀÌ´Ù. ÀÌ µÑ ¸ðµÎ
ÀÚ½ÅÀÇ Á¶»ó ű׸¦ ¿À¹ö¶óÀ̵åÇÏÁö ¾Ê´Â´Ù.; Á¶»ó ű׿¡¼ °£´ÜÈ÷ µ¥ÀÌÅÍ (Áï »ç¿ëÀÚ¸í°ú ·Î±×ÀÎ ¿¡·¯, µÑ ¸ðµÎ
¼³Á¤µÇ¾úÀ» °æ¿ì)¸¦ °¡Á®¿Â´Ù.
Listing 7. ¿¹Á¦ JSP ÄÚµå
<HTML>
<HEAD>
<TITLE>Custom Tag Communication</TITLE>
</HEAD>
<BODY bgcolor="#ffffff">
<!-- LOAD TAG LIBRARY -->
<%@ taglib uri="goforit.tld" prefix="goforit" %>
<!-- SET THE USER -->
<goforit:getUserData id="user"/>
<!-- SET THE LOGIN HTML BASED ON WHETHER OR NOT THE USER IS LOGGED IN -->
<!-- ONE OF THE NESTED NODES WILL BE DISPLAYED ACCORDINGLY -->
<goforit:nestedLogin userDataID="user">
<goforit:isLoggedIn>
<!-- THE HTML IN THIS NODE IS DISPLAYED IF THE USER IS LOGGED IN -->
</goforit:isLoggedIn>
<goforit:notLoggedIn>
<!-- THE HTML IN THIS NODE IS DISPLAYED IF THE USER IS NOT LOGGED IN -->
</goforit:notLoggedIn>
<goforit:loginFailure>
<!-- THE HTML IN THIS NODE IS DISPLAYED IF THERE WAS A LOGIN ERROR -->
</goforit:loginFailure>
</goforit:nestedLogin>
</BODY>
</HTML>
|
ÅÂ±× ¶óÀ̺귯¸®
µð½ºÅ©¸³ÅÍ
Listing 8Àº µÎ°³ÀÇ ÁÖ Å±׿¡ ´ëÇÑ µð½ºÅ©¸³ÅÍÀÌ´Ù. getUserData ¿¡
id ¼Ó¼ºÀÌ, nestedLogin ¿¡
userDataID °¡ ÇÊ¿äÇÔ¿¡ ÁÖÀÇÇÑ´Ù. À̵éÀº »ç¿ëÀÚ °´Ã¼¸¦
pageContext ¿¡ µî·ÏÇÏ°í À̸¦ ´Ù¸¥ Ŭ·¡½º¿¡¼ °Ë»öÇϴµ¥ »ç¿ëµÈ´Ù.
Listing 8. Tag µð½ºÅ©¸³ÅÍ
<tag>
<name>getUserData</name>
<tagclass>com.taglibrarycommunication.taglib.GetUserDataTag</tagclass>
<info></info>
<bodycontent>JSP</bodycontent>
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>nestedLogin</name>
<tagclass>com.taglibrarycommunication.taglib.NestedLoginTag</tagclass>
<info></info>
<bodycontent>JSP</bodycontent>
<attribute>
<name>userDataID</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
|
ÅÂ±× Çڵ鷯
´ÙÀ½ ¼½¼Ç¿¡¼´Â Ŭ·¡½º°£ Åë½ÅÀÇ ¸î °¡Áö Áß¿äÇÑ Ãø¸éÀ» ¼³¸íÇÏ°Ú´Ù.
GetUserData
ÀÌ ÅÂ±× Çڵ鷯 Ŭ·¡½º´Â ´Ù¸¥ űװ¡ »ç¿ëÇÒ »ç¿ëÀÚ µ¥ÀÌÅ͸¦ °Ë»öÇÑ´Ù.
ÁÖÀÇ : ¿ì¸®ÀÇ Å±״ ·Î±×ÀÎ ÇÁ·Î¼¼½º¸¦ ó¸®ÇÏÁö ¾Ê±â ¶§¹®¿¡, ű׵éÀº (·Î±×ÀÎ ÀýÂ÷ ¾øÀÌ)
¼¼¼Ç¿¡ ÀúÀåµÇ¾î ÀÖ´Â ·Î±×ÀÎÇÑ »ç¿ëÀÚ¿Í ÀÛ¾÷ ¼öÇà ¿äû¿¡ ÀúÀåµÇ¾î ÀÖ´Â ¿¡·¯¸¦ ãµµ·Ï ¸¸µé¾îÁ³´Ù. ¿ì¸®´Â ½ÇÁ¦·Î
»ç¶÷µéÀ» ·Î±×ÀνÃÅ°Áö ¾ÊÀ» °ÍÀ̱⠶§¹®¿¡, ÀÌ Å±×ÀÇ ½ÃÀÛ ºÎºÐÀº ´©±º°¡¸¦ ¼¼¼Ç¿¡ ¼³Á¤Çϰųª ȤÀº ÇϳªÀÇ ¿¡·¯¸¦
¿äû¿¡ ¼³Á¤ÇÔÀ¸·Î½á ¼¼ °³ÀÇ °¡´ÉÇÑ ½Ã³ª¸®¿À¸¦ Èä³»³½´Ù. Listing 9¿¡ ³ª¿Í ÀÖ´Â ÄÚµå´Â ¼¼ ½Ã³ª¸®¿À¸¦
Á¦¾îÇÑ´Ù. ¾Æ·¡ÀÇ µÎ ¶óÀÎ ¸ðµÎ ÁÖ¼® 󸮸¦ ¾ø¾ÖÁö ¾ÊÀº ä ³²¾Æ ÀÖ´Ù¸é »ç¿ëÀÚ°¡ ·Î±×ÀÎÇÏÁö ¾ÊÀº °ÍÀ¸·Î
°£ÁֵȴÙ.:
Listing 9. ¿¹Á¦ ½Ã³ª¸®¿À¸¦ Á¦¾îÇÏ´Â ÄÚµå
// UNCOMMENT TO MIMIC A LOGGED IN USER STORED IN SESSION
//session.setAttribute("user","John Q. Citizen");
// UNCOMMENT TO MIMIC LOGIN ERROR STORED IN REQUEST
//pageContext.getRequest().setAttribute("loginError","Password incorrect");
|
»ç¿ëÀÚ µ¥ÀÌÅ͸¦ µî·ÏÇϱâ À§ÇÑ Å°´Â doStartTag() ¸Þ¼Òµå¿¡ ÀÖ´Ù.:
Listing 10. doStartTag()
public int doStartTag() {
session = pageContext.getSession();
... SET VARIOUS PROPERTIES BASED ON THE USER ...
// THIS IS THE LINE THAT SAVES THIS CLASS TO pageContext
pageContext.setAttribute(id,this);
return SKIP_BODY;
}
|
NestedLoginTag
Listing 11¿¡ ³ª¿Í ÀÖ´Â ÀÌ Å¬·¡½º´Â »ç¿ëÀÚ°¡ ·Î±×ÀÎÇß´ÂÁöÀÇ ¿©ºÎ¿Í ¿¡·¯°¡ ÀÖ´ÂÁöÀÇ ¿©ºÎ¿¡ µû¶ó ¼¼
Ư¼º Áß ¾î¶² °ÍÀÌ Å¬¶óÀ̾ðÆ®¿¡°Ô ¹ÝȯµÉÁö¸¦ °áÁ¤ÇÑ´Ù. ÀÌ ¼¼ Ư¼ºÀÇ °ªÀº JSP ÆäÀÌÁö¿¡¼ ÀÌ Å¬·¡½º ³»¿¡
ÁßøµÈ ´Ù¸¥ ű׿¡ ÀÇÇØ °áÁ¤µÈ´Ù. NestedLoginTag ´Â ÀÌÀü ű׿¡¼
pageContext ¿¡ µî·ÏµÈ »ç¿ëÀÚ¸¦ Ãß¼± °¡Á®¿ÈÀ¸·Î½á ¾î¶² űװ¡ ȸé Ãâ·ÂµÉÁö¸¦
°áÁ¤ÇÑ´Ù. ±× ÈÄ »ç¿ëÀÚ ¸í°ú ¹ß»ýÇÑ ¿¡·¯°¡ ÀÖ´ÂÁö °Ë»öÇÑ´Ù. µÑ ´Ù ºñ¾î ÀÖÀ¸¸é »ç¿ëÀÚ°¡ ·Î±×ÀÎÇÏÁö ¾Ê¾Ò´Ù°í
°¡Á¤ÇÑ´Ù. ¿¡·¯ ¸Þ½ÃÁö°¡ ºñ¾î ÀÖÁö ¾ÊÀ¸¸é ºÐ¸íÈ÷ ¿¡·¯°¡ ¹ß»ýÇÑ °ÍÀÌ´Ù. »ç¿ëÀÚ À̸§ÀÌ ¼³Á¤µÇ¾î ÀÖÀ¸¸é,
»ç¿ëÀÚ°¡ ¼º°øÀûÀ¸·Î ·Î±×ÀÎÇÑ °ÍÀÌ´Ù.
Listing 11. NestedLoginTag
// PULL THE userData OUT OF THE pageContext
// WITH THE userDataID SUPPLIED THROUGH THE CUSTOM TAG
GetUserDataTag userData =
(GetUserDataTag) pageContext.getAttribute(getUserDataID());
// SET userName AND loginError FROM VALUES IN userData OBJECT
setUserName(userData.getUserName());
SetLoginError(userData.getLoginError());
...
if (getUserName()!="" &&
getLoginError()==""){
// IF userName IS SET PERSON IS LOGGED IN
pageContext.getOut().print(getIsLoggedInHTML());
} else {
if (getLoginError()=="")
// IF NO userName SET BUT NO loginError SHOW LOGIN
pageContext.getOut().print(getNotLoggedInHTML());
else
// IF loginError SHOW LOGIN AND ERROR
pageContext.getOut().print(getLogInFailureHTML());
}
|
IsLoggedInTag, NotLoggedInTag°ú LogInFailureTag
Listing 12ÀÇ ¼¼ ű״ nestedLogin ³»¿¡ ÁßøµÈ ű׵éÀÌ´Ù.
À̵éÀº ¸ðµÎ ºñ½ÁÇÑ ±â´ÉÀ» ¼öÇàÇÏÁö¸¸, nestedLogin ÀÇ ´Ù¸¥ Ư¼ºµéÀ» ¼³Á¤ÇÑ´Ù.
À̵éÀÇ body ³»¿ëÀº JSP °³¹ßÀÚ°¡ nestedLoginÀÇ
isLoggedInHTML , notLoggedInHTML ¹×
logInFailureHTML Ư¼º¿¡ Á¢±ÙÇÏ°í ¼³Á¤Çϵµ·Ï ÇØÁØ´Ù.
Listing 12. ºÎ¸ð ű׿¡ Á¢±ÙÇϱâ
// THIS LINE ACCESSES THE PARENT CLASS NestedLoginTag
NestedLoginTag parent = (NestedLoginTag) getParent();
if (parent != null){
BodyContent bc = getBodyContent();
String body = bc.getString();
// SET THE isLoggedInHTML PROPERTY OF THE PARENT CLASS
// WITH THE BODY SUPPLIED THROUGH THE CUSTOM TAG
parent.setIsLoggedInHTML(body);
}
|
GetUserNameTag°ú GetLoginErrorTag Listing 13ÀÇ
ű׵éÀº °£´ÜÈ÷ pageContext ¿¡¼ userData °´Ã¼¸¦
°Ë»öÇÏ¿© ÀÌ °´Ã¼ÀÇ Æ¯¼ºÀ» °¡Á®¿Â´Ù.
Listing 13. pageContext¿¡ ÀúÀåµÈ
°´Ã¼¿¡ Á¢±ÙÇϱâ
GetUserDataTag userData =
(GetUserDataTag) pageContext.getAttribute(getUserDataID());
...
if (userData.getUserName() !=null){
pageContext.getOut().print(userData.getUserName());
}
|
°á·Ð
JSP ÆäÀÌÁö´Â ¼¹öÃø ·ÎÁ÷¿¡¼ Ŭ¶óÀ̾ðÆ®Ãø ȸéÀ» ºÐ¸®ÇÏ°í, ÀÚ¹Ù ÇÁ·Î±×·¡¸Ó°¡ ¾Æ´Ñ À¥ °³¹ßÀÚµµ ÀÚ¹Ù
±â¼úÀÇ ÈûÀ» ÀÚÀ¯·Ó°Ô ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇÏ¿© ¿©·¯ºÐÀº À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¾ç °èÃþ ¸ðµÎ¿¡¼ ÀÛ¾÷ÇÏ´Â °³¹ßÀڵ鿡°Ô Á» ´õ ¸¹Àº ¼±ÅñÇÀ» ÁÙ ¼ö ÀÖ°í, ÄÚµå
¸ðµâ°ú ű×ÀÇ Àç»ç¿ëÀ» Àå·ÁÇÒ À¥ °³¹ßÀÚ¿¡°Ô °´Ã¼ ÁöÇâÀû Á¢±Ù ¹æ½ÄÀ» ºÎ°úÇÒ ¼ö ÀÖ´Ù. ÀÏ´Ü ¿©·¯ºÐÀÌ ÀÌ ±Û¿¡
Æ÷ÇÔµÈ »ùÇà ÅÂ±× ¶óÀ̺귯¸®¸¦ °ËÅäÇß´Ù¸é, ¿©·¯ºÐÀÇ ¾ÖÇø®ÄÉÀ̼ǿ¡ Ä¿½ºÅÒ ÅÂ±× »ç¿ëÀ» ½ÃÀÛÇÒ Áغñ°¡
µÈ °ÍÀÌ´Ù.
Âü°íÀÚ·á
|