|
|||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||
°³¿ä: ³»ºÎ Ŭ·¡½º | Çʵå | constructor¡¡ ¡¡ | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor¡¡ ¡¡ | ¸Þ¼Òµå |
ÅÂ±× º»Ã¼¸¦ Á¶ÀÛÇÏÁö ¾Ê´Â °£´ÜÇÑ ÅÂ±× Çڵ鷯ÀÇ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. Tag ÀÎÅÍÆäÀ̽º¿¡´Â, ÅÂ±× Çڵ鷯¿Í JSP ÆäÀÌÁö ½ÇÀå Ŭ·¡½º¿ÍÀÇ »çÀÌÀÇ ±âº»ÀûÀÎ ÇÁ·ÎÅäÄÝÀÌ Á¤Àǵǰí ÀÖ½À´Ï´Ù. ¶Ç, ±× ¶óÀÌÇÁ »çÀÌŬ°ú °³½Ã ÅÂ±×¿Í Á¾·á ű׷ΠºÒ·Á °¡´Â ¸Þ¼Òµå¸¦ Á¤ÀÇÇÕ´Ï´Ù.
ÇÁ·ÓÆÛƼ
Tag ÀÎÅÍÆäÀ̽º´Â, ÄÚ¾î pageContext ¿Í ºÎ¸ðÀÇ ÇÁ·ÓÆÛƼ¿¡ ´ëÇÑ ¼³Á¤ ¸Þ¼Òµå ¹× Ãëµæ ¸Þ¼Òµå¸¦ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù.
JSP ÆäÀÌÁö ½ÇÀå ¿ÀºêÁ§Æ®´Â, doStartTag() ¶Ç´Â doEndTag()¸¦ È£ÃâÇϱâ Àü¿¡, setPageContext ¿Í setParent ¸¦ ÀÌ ¼ø¼·Î È£ÃâÇÕ´Ï´Ù.
¸Þ¼Òµå
doStartTag ¹× doEndTag ¶ó°í ÇÏ´Â 2 °³ÀÇ ¾×¼ÇÀÌ ÁغñµÇ¾î ÀÖ½À´Ï´Ù. ´ëÀÀÇÏ´Â ÇÁ·ÓÆÛƼ°¡ ¸ðµÎ ÃʱâȵǸé(ÀÚ), ÅÂ±× Çڵ鷯»ó¿¡¼ doStartTag ¹× doEndTag ¸Þ¼Òµå°¡ ºÒ·Á °©´Ï´Ù. ÅÂ±× Çڵ鷯´Â, doStartTag ¸Þ¼Òµå°¡ ºÒ·Á °¡°í ³ª¼ doEndTag ¸Þ¼Òµå°¡ ºÒ·Á °¥ ¶§±îÁö, º¸Á¸ÀÌ ÇÊ¿äÇÑ ³»ºÎ »óŸ¦ º¸°ü À¯ÁöÇÕ´Ï´Ù. doEndTag °¡ ºÒ·Á °¡¸é(ÀÚ), ÀÌ ÅÂ±× Çڵ鷯´Â ´ÙÀ½ÀÇ È£Ãâ¿¡ ÀÌ¿ëµË´Ï´Ù. ÀÌ ¶§, ÅÂ±× Çڵ鷯ÀÇ ÇÁ·ÓÆÛƼ´Â º¸°ü À¯ÁöµË´Ï´Ù.
¶óÀÌÇÁ »çÀÌŬ
¶óÀÌÇÁ »çÀÌŬÀÇ ÀÚ¼¼ÇÑ °ÍÀº, ´ÙÀ½ÀÇ ÃµÀ̵µ¿¡ ¼³¸íµÇ°í ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ ÄÚ¸àÆ®¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
ÅÂ±× Çڵ鷯»ó¿¡¼ ¸ðµç È£ÃâÀÌ ¿Ï·áÇϸé(ÀÚ), ÇØ¹æ ¸Þ¼Òµå°¡ ºÒ·Á °©´Ï´Ù. ÇØ¹æ ¸Þ¼Òµå°¡ ºÒ·Á °¡¸é(ÀÚ), ºÎ¸ð ¹× pageContext ¸¦ Æ÷ÇÔÇÑ ¸ðµç ÇÁ·ÓÆÛƼ°¡ ¹ÌÁöÁ¤Ä¡¿¡ ¸®¼ÂÆ® µË´Ï´Ù. ÆäÀÌÁö ÄÄÆÄÀÏ·¯´Â, release()¸¦ ÅÂ±× Çڵ鷯»ó¿¡¼ È£ÃâÇÏ°í ³ª¼, ÅÂ±× Çڵ鷯¸¦ GC ¿¡ ÇØ¹æÇÕ´Ï´Ù.
ÇÏ´ÃÀÇ ¾×¼Ç°ú ÇÏ´ÃÀÌ ¾Æ´Ñ ¾×¼Ç
TagLibraryDescriptor ÆÄÀÏÀÇ <body-content> ¿£Æ®¸®°¡ "empty" ÀÎ °æ¿ì, ±× ¾×¼ÇÀº Ç×»ó ÇÏ´ÃÀÎ °ÍÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, doStartTag() ¸Þ¼Òµå´Â SKIP_BODY ¸¦ µ¹·ÁÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù. ¿£Æ®¸®°¡ "empty" °¡ ¾Æ´Ñ °æ¿ì, doStartTag() ¸Þ¼Òµå´Â SKIP_BODY ¶Ç´Â EVAL_BODY_INCLUDE ¸¦ µ¹·ÁÁÝ´Ï´Ù.
SKIP_BODY °¡ µ¹·ÁÁÖ¾îÁ³À» °æ¿ì´Â, ÅÂ±× º»Ã¼ (Á¸ÀçÇÏ´Â °æ¿ì)´Â Æò°¡µÇÁö ¾Ê½À´Ï´Ù.
EVAL_BODY_INCLUDE °¡ µ¹·ÁÁÖ¾îÁ³À» °æ¿ì´Â, ÅÂ±× º»Ã¼°¡ Æò°¡µÇ¾î ÇöÀçÀÇ Ãâ·Â¿¡°Ô °Ç³×Áý´Ï´Ù.
ÇʵåÀÇ °³¿ä | |
static int |
EVAL_BODY_INCLUDE
ÅÂ±× º»Ã¼¸¦ Æò°¡ÇØ, ±âÁ¸ÀÇ Ãâ·Â ½Ã³Á¹°¿¡ Ãâ·ÂÇÕ´Ï´Ù. |
static int |
EVAL_PAGE
ÆäÀÌÁöÀÇ Æò°¡¸¦ ¼ÓÇàÇÕ´Ï´Ù. |
static int |
SKIP_BODY
ÅÂ±× º»Ã¼ÀÇ Æò°¡¸¦ ½ºÅµ ÇÕ´Ï´Ù. |
static int |
SKIP_PAGE
ÆäÀÌÁöÀÇ ³²Àº ºÎºÐÀ» ½ºÅµ ÇÕ´Ï´Ù. |
¸Þ¼ÒµåÀÇ °³¿ä | |
int |
doEndTag ()
ÀÌ ÀνºÅϽºÀÇ Á¾·á ű׸¦ ó¸®ÇÕ´Ï´Ù. |
int |
doStartTag ()
ÀÌ ÀνºÅϽºÀÇ °³½Ã ű׸¦ ó¸®ÇÕ´Ï´Ù. |
Tag |
getParent ()
ÀÌ ÅÂ±× Çڵ鷯ÀÇ ºÎ¸ð (¹Ù·Î À§¸¦ µÑ·¯½Î´Â ÅÂ±× Çڵ鷯)¸¦ ÃëµæÇÕ´Ï´Ù. |
void |
release ()
»óŸ¦ ÇØ¹æÇϱâ À§Çؼ Tag Çڵ鷯»ó¿¡¼ ºÒ·Á °©´Ï´Ù. |
void |
setPageContext (PageContext pc)
ÇöÀçÀÇ ÆäÀÌÁö ¹®¸ÆÀ» ¼³Á¤ÇÕ´Ï´Ù. |
void |
setParent (Tag t)
ÀÌ ÅÂ±× Çڵ鷯ÀÇ ºÎ¸ð (¹Ù·Î À§¸¦ µÑ·¯½Î´Â ÅÂ±× Çڵ鷯)¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
ÇʵåÀÇ »ó¼¼ |
public static final int SKIP_BODY
public static final int EVAL_BODY_INCLUDE
public static final int SKIP_PAGE
public static final int EVAL_PAGE
¸Þ¼ÒµåÀÇ »ó¼¼ |
public void setPageContext(PageContext pc)
ÀÌ °ªÀº, doEndTag()¿¡ ÀÇÇØ ¸®¼ÂÆ® µÇÁö ¾Ê½À´Ï´Ù. doStartTag()°¡ ´ÙÀ½¿¡ ºÒ·Á °¡±â±îÁö ÀÌ °ªÀÌ º¯°æµÇ¾úÀ» °æ¿ì´Â, ÆäÀÌÁö ½ÇÀå ¿ÀºêÁ§Æ®°¡ ¸í½ÃÀûÀ¸·Î ¸®¼ÂÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
pc
- ÀÌ ÅÂ±× Çڵ鷯ÀÇ ÆäÀÌÁö ¹®¸Æpublic void setParent(Tag t)
ÀÌ °ªÀº, doEndTag()¿¡ ÀÇÇØ ¸®¼ÂÆ® µÇÁö ¾Ê½À´Ï´Ù. ÆäÀÌÁö ½ÇÀå ¿ÀºêÁ§Æ®°¡ ¸í½ÃÀûÀ¸·Î ¸®¼ÂÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
t
- Ä£ÅÂ±× ¶Ç´Â NULLpublic Tag getParent()
getParent() ¸Þ¼Òµå´Â, ½ÇÇà½Ã¿¡ »óÀÚÀÇ ÅÂ±× Çڵ鷯 ±¸Á¶¸¦ ´õµë¾î, º¹¼öÀÇ Ä¿½ºÅÒ ¾×¼ÇÀ» °ü·ÃÁþ±â À§Çؼ(¶§¹®¿¡) »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, TagSupport ÀÇ findAncestorWithClass()´Â, ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÇöÀçÀÇ »ç¾ç¿¡¼´Â, °¨½Ã °¡´ÉÇÑ ÅÂ±× Çڵ鷯¸¦ ÁöÁ¤ÇÏ´Â Á¤½ÄÀû ¹æ¹ýÀº 1 °³ ¹Û¿¡ ÁغñµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. Áï, ÅÂ±× Çڵ鷯 ½ÇÀå Ŭ·¡½º¸¦, tag ¿ä¼Ò¾Æ·¡¿¡ ÀÖ´Â tag-class ¿ä¼Ò¿¡ ±â¼úÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±× ¹Û¿¡ ºñ°ø½ÄÀÎ ¹æ¹ýÀ¸·Î¼ ÅÂ±× ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ÀÛ¼ºÀÚ°¡ tag ¿ä¼Ò¾Æ·¡¿¡ ÀÖ´Â description ¿ä¼Ò¿¡ °¨½Ã °¡´ÉÇÑ ÅÂ±× Çڵ鷯¸¦ ÁöÁ¤ÇÏ´Â ¹æ½ÄÀÌ ÀÖ½À´Ï´Ù. ÀÌ ÅÂ±× Çڵ鷯ÀÇ ÇüÅ´Â, ±× ¾Æ·ùÇü ¶Ç´Â void ·Î ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ¼³Á¤Àº, JSP Ç¥ÁØ ÅÂ±× ÇÁ·Î±×·¥ ¶óÀ̺귯¸® µî, ±× ÅÂ±× ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ ÀνÄÇϴ Ưº°ÇÑ ÄÁÅ×À̳ʷΠÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
TagSupport.findAncestorWithClass().
public int doStartTag() throws JspException
doStartTag ¸Þ¼Òµå´Â, pageContext ¿Í ºÎ¸ðÀÇ ÇÁ·ÓÆÛƼ°¡ ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀ» ÀüÁ¦·Î ÇÕ´Ï´Ù. ¶Ç, ¼Ó¼ºÀ¸·Î¼ °ø°³µÈ ÇÁ·ÓÆÛƼ°¡ ¼³Á¤µÇ¾î ÀÖ´Â Àϵµ ÀüÁ¦·Î ÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ ºÒ·Á °¬À» ¶§¿¡´Â, º»Ã¼´Â ¾ÆÁ÷ Æò°¡µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, ¾×¼ÇÀÇ º»Ã¼¸¦ Æò°¡ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â Tag.EVAL_BODY_INCLUDE ¶Ç´Â BodyTag.EVAL_BODY_BUFFERED ¸¦ µ¹·ÁÁÖ¾î, Æò°¡ÇÒ Çʿ䰡 ¾ø´Â °æ¿ì´Â SKIP_BODY ¸¦ µ¹·ÁÁÝ´Ï´Ù.
Tag °¡ EVAL_BODY_INCLUDE ¸¦ µ¹·ÁÁÖ¾úÀ» °æ¿ì´Â, ÅÂ±× º»Ã¼ (Á¸ÀçÇÏ´Â °æ¿ì)¸¦ Æò°¡ÇÑ °á°ú°¡ ÇöÀçÀÇ Ãâ·Â¿ë JspWriter ¿¡ Ãâ·ÂµÇ¾î doEndTag()°¡ ºÒ·Á °©´Ï´Ù.
BodyTag.EVAL_BODY_BUFFERED ´Â, ÅÂ±× Çڵ鷯°¡ BodyTag ¸¦ ½ÇÀåÇϰí ÀÖ´Â °æ¿ì¸¸ À¯È¿ÇÕ´Ï´Ù.
JSP ÄÁÅ×À̳ʴÂ, doStartTag()°¡ ºÒ·Á °£ ÈÄ¿¡, TagExtraInfo ÀÇ ÁöÁ¤¿¡ ÀÀÇØ º¯¼öÄ¡¸¦ À絿±â ÇÕ´Ï´Ù.
JspException.
- BodyTag
public int doEndTag() throws JspException
ÀÌ ¸Þ¼Òµå´Â, doStartTag ·ÎºÎÅÍ Á¦¾î°¡ µ¹¾Æ¿Â ÈÄ¿¡ ºÒ·Á °©´Ï´Ù. ¾×¼ÇÀÇ º»Ã¼°¡ Æò°¡µÉÁö ¾î¶³Áö´Â, doStartTag ÀÇ ¹Ýȯ°ª¿¡ ÀÀÇØ °áÁ¤µË´Ï´Ù.
ÀÌ ¸Þ¼Òµå°¡ EVAL_PAGE ¸¦ µ¹·ÁÁÖ¾úÀ» °æ¿ì´Â, ÆäÀÌÁöÀÇ ³ª¸ÓÁöÀÇ ºÎºÐÀÌ °è¼ÓÇØ Æò°¡µË´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ SKIP_PAGE ¸¦ µ¹·ÁÁÖ¾úÀ» °æ¿ì´Â, ÆäÀÌÁöÀÇ ³ª¸ÓÁöÀÇ ºÎºÐÀº Æò°¡µÇÁö ¾Ê°í, ¿ä±¸´Â ¿Ï·áÇÕ´Ï´Ù. ÀÌ ¿ä±¸°¡ ´Ù¸¥ ÆäÀÌÁö³ª Servlet ·ÎºÎÅÍ Àü¼Û µÇ¾úÀ» °æ¿ì, ¶Ç´Â ´Ù¸¥ ÆäÀÌÁö³ª Servlet ·ÎºÎÅÍ ÀÎŬ·çµå µÈ °ÍÀÎ °æ¿ì´Â, ÇöÀçÀÇ ÆäÀÌÁöÀÇ Æò°¡¸¸À» ÇÕ´Ï´Ù.
JSP ÄÁÅ×À̳ʴÂ, doEndTag()°¡ ºÒ·Á °£ ÈÄ¿¡, TagExtraInfo ÀÇ ÁöÁ¤¿¡ ÀÀÇØ º¯¼öÄ¡¸¦ À絿±â ÇÕ´Ï´Ù.
JspException.
- public void release()
|
|||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||
°³¿ä: ³»ºÎ Ŭ·¡½º | Çʵå | constructor¡¡ ¡¡ | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor¡¡ ¡¡ | ¸Þ¼Òµå |