IBM Korea Skip to main content
       IBM Ȩ    |  Á¦Ç° & ¼­ºñ½º  |  °í°´Áö¿ø & ´Ù¿î·Îµå  |  È¸¿ø°¡ÀÔ  

IBM developerWorks > ÀÚ¹Ù
developerWorks

JSTL ÀÔ¹® Part 1: Expression Language
JSP ¾ÖÇø®ÄÉÀ̼ǿë MA ´Ü¼øÈ­Çϱâ

Level: Intermediate

Mark A. Kolb
¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î
2003³â 2¿ù 11ÀÏ

JSP Standard Tag Library (JSTL)Àº ÀϹÝÀûÀÎ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ±â´É(¹Ýº¹(iteration)°ú Á¶°Ç, µ¥ÀÌÅÍ °ü¸® Æ÷¸Ë, XML Á¶ÀÛ, µ¥ÀÌÅͺ£À̽º ¾×¼¼½º)À» ±¸ÇöÇÏ´Â Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸® ¸ðÀ½ÀÌ´Ù. ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀÎ Mark KolbÀº JSTL ű×ÀÇ »ç¿ë¹æ¹ýÀ» ¼³¸íÇÑ´Ù. Ç¥ÇöÃþ(presentation layer)¿¡¼­ ¼Ò½º Äڵ带 Á¦°ÅÇÏ¿© ¼ÒÇÁÆ®¿þ¾î °ü¸®¸¦ ´Ü¼øÈ­½ÃÅ°´Â ¹æ¹ýµµ ¼³¸íÇÑ´Ù. ÀÌ¿Ü¿¡µµ JSTLÀÇ ´Ü¼øÈ­µÈ Expression Language¿¡ ´ëÇÑ ¼³¸íµµ Æ÷ÇԵǾî ÀÖ´Ù.

JavaServer Pages (JSP)´Â J2EE Ç÷§ÆûÀ» À§ÇÑ Ç¥ÁØ Ç¥Çö ·¹À̾î(presentation-layer) ÀÌ´Ù. JSP´Â ÆäÀÌÁö ÄÜÅÙÆ®¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇÒ ¼ö ÀÖ´Â Àü»êÀ» ¼öÇà ÇÒ ¼ö ÀÖ´Â ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®¿Í ¾×¼ÇÀ» Á¦°øÇÑ´Ù. ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®´Â ÇÁ·Î±×·¥ ¼Ò½º Äڵ尡 JSP Äڵ忡 Æ÷Ç﵃ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÆäÀÌÁö°¡ »ç¿ëÀÚ ¿äû¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ·»´õ¸µ µÉ ¶§ ½ÇÇàÇÒ ¸ñÀûÀÌ´Ù. ¾×¼Ç(actions)Àº Àü»ê ÀÛµ¿À» JSP ÆäÀÌÁöÀÇ ÅÛÇø´ ÅؽºÆ®¸¦ ±¸¼ºÇÏ°í ÀÖ´Â HTML À̳ª XML°ú °ÅÀÇ Èí»çÇÏ°ÔÇϴ ű׷ΠÀÎĸ½¶ÇÑ´Ù. JSP ½ºÆÑ¿¡ Ç¥ÁØÀ¸·Î Á¤ÀÇµÈ ¸î °¡ÁöÀÇ ¾×¼ÇµéÀÌ ÀÖ´Ù. ÇÏÁö¸¸ JSP 1.1 ºÎÅÍ °³¹ßÀÚµéÀº Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸® ÇüÅ·ΠÀڽŸ¸ÀÇ ¾×¼ÇµéÀ» ¸¸µé ¼ö ÀÖ´Ù.

JSP Standard Tag Library (JSTL)´Â JSP 1.2 Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸® ¸ðÀ½À¸·Î¼­ ±¤¹üÀ§ÇÑ ¼­¹öÃø ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀϹÝÀûÀ¸·Î ¾²ÀÌ´Â ±âº» ±â´ÉµéÀ» ±¸ÇöÇÑ´Ù. JSTLÀº µ¥ÀÌÅÍ Æ÷¸Ë, ¹Ýº¹ ÄÜÅÙÆ® ¶Ç´Â Á¶°Ç ÄÜÅÙÆ® °°Àº ÀüÇüÀûÀΠǥÇö ·¹À̾ À§ÇÑ Ç¥ÁØ ±¸ÇöÀ» Á¦°øÇϱ⠶§¹®¿¡, JSP ÀÛ¼ºÀÚµéÀÌ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡ ÁýÁßÇϴµ¥ µµ¿òÀÌ µÈ´Ù.

¹°·Ð, ½ºÅ©¸³Æ²¸´, ÀͽºÇÁ·¹¼Ç, ¼±¾ð °°Àº JSP ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®¸¦ »ç¿ëÇϴ ŽºÅ©¸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Á¶°Ç ÄÜÅÙÆ®(conditional content)´Â ¼¼ °³ÀÇ ½ºÅ©¸³Æ²¸´(Listing 1ÀÇ ÇÏÀ̶óÀÌÆ® ºÎºÐ)À» »ç¿ëÇÏ¿© ±¸ÇöµÉ ¼ö ÀÖ´Ù. ÆäÀÌÁö ³»¿¡ ÇÁ·Î±×·¥ ¼Ò½º Äڵ带 ÀÓº£µùÇÏ´Â °Í¿¡ ÀÇÁ¸Çϱ⠶§¹®¿¡ ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®°¡ ¼ÒÇÁÆ®¿þ¾î °ü¸® ŽºÅ©¸¦ ¸Å¿ì º¹ÀâÇÏ°Ô ÇÏ´Â °æÇâÀÌÀÖ´õ¶óµµ JSP ÆäÀÌÁö´Â ±×µéÀ» »ç¿ëÇÑ´Ù. Listing 1ÀÇ ½ºÅ©¸³Æ²¸´ ¿¹Á¦´Â ºê·¹À̽ºµéÀÇ ÀûÀýÇÑ ¸ÅĪ¿¡ ¸Å¿ì ÀÇÁ¸ÇÑ´Ù. Á¶°ÇÈ­µÈ ÄÜÅÙÆ® ³»¿¡ Ãß°¡ ½ºÅ©¸³Æ²¸´À» ÁßøÇÏ´Â °ÍÀº ½ÅÅýº ¿¡·¯°¡ °©ÀÚ±â ÀϾ´Ù¸é ÆäÀÌÁö°¡ JSP ÄÜÅ×À̳ʿ¡ ÀÇÇØ ÄÄÆÄÀÏ µÉ ¶§ °á°ú ¿¡·¯ ¸Þ½ÃÁö¸¦ ÇÕ¸®È­ÇÏ´Â °ÍÀº µµÀüÀÌ µÉ ¼ö ÀÖ´Ù.

Listing 1. ½ºÅ©¸³Æ²¸´À» ÅëÇØ Á¶°Ç ÄÜÅÙÆ® ±¸ÇöÇϱâ
<% if (user.getRole() == "member")) { %>
    <p>Welcome, member!</p>
<% } else { %>
    <p>Welcome, guest!</p>
<% } %>

±×¿Í °°Àº ÇÁ·Î±×·¥À» ÇØ°áÇϴµ¥¿¡´Â ÇÁ·Î±×·¡¹Ö °æÇèÀÌ ¸¹ÀÌ ÇÊ¿äÇÏ´Ù. JSP ÆäÀÌÁöÀÇ ¸¶Å©¾÷ÀÌ ÆäÀÌÁö ·¹À̾ƿô°ú ±×·¡ÇÈ µðÀÚÀο¡ Àͼ÷ÇÑ µðÀÚÀ̳ʿ¡ ÀÇÇØ °³¹ß ¹× °ü¸®µÇ´Âµ¥ ¹ÝÇØ ±×¿Í °°Àº ÆäÀÌÁö ³»ÀÇ ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®´Â ¹®Á¦°¡ »ý±æ ¶§ ÇÁ·Î±×·¡¸Ó°¡ °³ÀÔÇؾßÇÑ´Ù. ÇϳªÀÇ ÆÄÀϾȿ¡ ÀÖ´Â Äڵ忡 ´ëÇÑ Ã¥ÀÓÀ» °øÀ¯ÇÏ´Â °ÍÀº JSP ÆäÀÌÁöÀÇ °³¹ß, µð¹ö±ë, Çâ»óÀ» ¼º°¡½ÅÀÏ·Î ¸¸µç´Ù. JSTLÀº ÀϹÝÀûÀÎ ±â´ÉÀ» Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®ÀÇ Ç¥ÁØ ¼¼Æ®·Î ÆÐŰ¡Ç߱⠶§¹®¿¡ JSP ÀÛ¼ºÀÚµéÀÌ ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®¿¡ ´ëÇÑ Çʿ並 ÁÙÀÌ°í °ü·ÃµÈ °ü¸® ºñ¿ëÀ» ÇÇÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

JSTL ½Ã¸®Áî

Part 2, "JSTL ±âÃÊ, Part 2 : Çٽɿ¡ Á¢±ÙÇϱâ" (2003³â 3¿ù)

Part 3, "Presentation is everything" (2003³â 4¿ù)

Part 4, "Accessing SQL and XML content" (2003³â 5¿ù)

JSTL 1.0
2002³â 6¿ù¿¡ ¸±¸®½ºµÈ JSTL 1.0Àº ³× °³ÀÇ Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®(core, format, xml, sql)¿Í µÎ °³ÀÇ ¹ü¿ë ÅÂ±× ¶óÀ̺귯¸® ¹ë¸®µ¥ÀÌÅÍ(ScriptFreeTLV & PermittedTaglibsTLV)·Î ±¸¼ºµÇ¾î ÀÖ´Ù. core ÅÂ±× ¶óÀ̺귯¸®´Â Ä¿½ºÅÒ ¾×¼ÇÀ» Á¦°øÇÏ¿© ¹üÀ§ º¯¼ö¸¦ ÅëÇØ µ¥ÀÌÅ͸¦ °ü¸®ÇÒ ¼ö ÀÖµµ·ÏÇϸç ÆäÀÌÁö ÄÜÅÙÆ®ÀÇ ¹Ýº¹°ú Á¶°ÇÈ­¸¦ ¼öÇàÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¶ÇÇÑ URL¿¡¼­ »ý¼º ¹× ÀÛµ¿ÇÒ ¼ö Àִ ű׵µ Á¦°øÇÑ´Ù. format ÅÂ±× ¶óÀ̺귯¸®´Â À̸§ÀÌ ½Ã»çÇÏ´Â ¹Ù¿Í °°ÀÌ µ¥ÀÌÅÍ Æ¯È÷ ¼ýÀÚ¿Í ³¯Â¥¸¦ Æ÷¸ËÇÏ´Â ¾×¼ÇÀ» Á¤ÀÇÇÑ´Ù. ±¹ÁöÈ­ µÈ ¸®¼Ò½º ¹øµéÀ» »ç¿ëÇÏ¿© JSP ÆäÀÌÁöÀÇ ±¹Á¦È­µµ Áö¿øÇÑ´Ù. xml ¶óÀ̺귯¸®¿¡´Â XMLÀ» ÅëÇØ Ç¥ÇöµÈ µ¥ÀÌÅ͸¦ Á¶ÀÛÇÒ ¼ö ÀÖ´Â Å×±×°¡ Æ÷ÇԵǾî ÀÖ´Ù. sql ¶óÀ̺귯¸®´Â °ü°èÇü µ¥ÀÌÅͺ£À̽º¸¦ Äõ¸®ÇÏ´Â ¾×¼ÇÀ» Á¤ÀÇÇÑ´Ù.

µÎ °³ÀÇ JSTL ÅÂ±× ¶óÀ̺귯¸® ¹ë¸®µ¥ÀÌÅÍ´Â °³¹ßÀÚµéÀÌ JSP ¾ÖÇø®ÄÉÀÌ¼Ç ³»¿¡¼­ Ç¥ÁØÀ» ÄÚµùÇϵµ·Ï ÇÑ´Ù. ScriptFreeTLV ¹ë¸®µ¥ÀÌÅ͸¦ ¼³Á¤ÇÏ¿© JSP ÆäÀÌÁö ³»¿¡ ÀÖ´Â ´Ù¾çÇÑ ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®(½ºÅ©¸³Æ²¸´, Ç¥Çö, ¼±¾ð)ÀÇ ´Ù¾çÇÑ À¯ÇüÀ» »ç¿ëÇÏ´Â °ÍÀ» ¸·´Â´Ù. ÀÌ¿Í ºñ½ÁÇÏ°Ô PermittedTaglibsTLV ¹ë¸®µ¥ÀÌÅÍ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ JSP ÆäÀÌÁöµé¿¡ ÀÇÇØ ¾×¼¼½ºµÈ Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®(JSTL ÅÂ±× ¶óÀ̺귯¸® Æ÷ÇÔ)À» Á¦ÇÑÇÑ´Ù.

JSTLÀº J2EE Ç÷§Æû¿¡ ÇÊ¿äÇÑ ÄÄÆ÷³ÍÆ®°¡ µÉ °ÍÀÌÁö¸¸ ÀûÀº ¼öÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹öµé¸¸ÀÌ À̸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â °ÍÀÌ Çö½ÇÀÌ´Ù. JSTL 1.0ÀÇ ·¹ÆÛ·±½º ±¸ÇöÀº Apache Software FoundationÀÇ Jakarta Taglibs ÇÁ·ÎÁ§Æ®ÀÇ ÀϺημ­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. (Âü°íÀÚ·á). ·¹ÆÛ·±½º ±¸Çö¿¡ ÀÖ´Â Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®´Â JSTL Áö¿øÀ» Ãß°¡Çϱâ À§ÇØ JSP 1.2¿Í Servlet 2.3 ÀÌ»ó ½ºÆÑÀ» Áö¿øÇÏ´Â ¸ðµç ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö¿¡ ÅëÇÕµÉ ¼ö ÀÖ´Ù.

Expression language
JSP 1.2¿¡¼­ JSP ¾×¼ÇÀÇ ¾ÖÆ®¸®ºäÆ®´Â Á¤Àû ij¸¯ÅÍ ½ºÆ®¸µÀ̳ª ÀͽºÇÁ·¹¼ÇÀ» »ç¿ëÇÏ¿© ÁöÁ¤µÈ´Ù. ¿¹¸¦ µé¾î Listing 2ÀÇ °æ¿ì Á¤Àû °ªµéÀº <jsp:setProperty> ¾×¼ÇÀÇ name°ú property ¾ÖÆ®¸®ºäÆ®¸¦ À§ÇØ ÁöÁ¤µÈ´Ù. ¹Ý¸é ÀͽºÇÁ·¹¼ÇÀº ÀÌ°ÍÀÇ °ª ¾ÖÆ®¸®ºäÆ®¸¦ ÁöÁ¤Çϴµ¥ »ç¿ëµÈ´Ù. ÀÌ ¾×¼ÇÀº ¿äû ¸Å°³º¯¼öÀÇ ÇöÀç °ªÀ» À̸§ÀÌ ºÙ¿©Áø ºó ¼Ó¼ºÀ¸·Î ÇÒ´çÇÏ´Â È¿°ú¸¦ °®°í ÀÖ´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î »ç¿ëµÈ ÀͽºÇÁ·¹¼ÇÀº request-time attribute valuesÀ̶ó ÀÏÄþîÁö¸ç ¾ÖÆ®¸®ºäÆ® °ªÀ» µ¿ÀûÀ¸·Î ÁöÁ¤ÇϱâÀ§ÇÑ JSP ½ºÆÑ¿¡ ³»ÀåµÈ À¯ÀÏÇÑ ¸ÞÄ¿´ÏÁòÀÌ´Ù.

Listing 2. request-time attribute valueÀ» °áÇÕÇÏ´Â JSP ¾×¼Ç

<jsp:setProperty name="user" property="timezonePref"
                 value='<%= request.getParameter("timezone") %>'/>

request-time attribute values°¡ ÀͽºÇÁ·¹¼ÇÀ» »ç¿ëÇÏ¿© ÁöÁ¤µÇ±â ¶§¹®¿¡ ´Ù¸¥ ½ºÅ©¸³Æà ¿¤¸®¸ÕÆ®¿Í °°Àº ¼ÒÇÁÆ®¿þ¾î °ü¸® ¹®Á¦°¡ ÀϾ ¼ö ÀÖ´Ù. ÀÌ·± ÀÌÀ¯·Î ÀÎÇØ JSTL Ä¿½ºÅÒ Å±״ µ¿Àû ¾ÖÆ®¸®ºäÆ® °ªÀ» ÁöÁ¤Çϱâ À§ÇÑ ´ë¾È ¸ÞÄ¿´ÏÁòÀ» Áö¿øÇÑ´Ù. JSP ÀͽºÇÁ·¹¼ÇÀ» »ç¿ëÇÏ´Â °Í º¸´Ù JSTL ¾×¼Ç¿ë ¾ÖÆ®¸®ºäÆ® °ªÀÌ ´Ü¼øÈ­ µÈ expression language (EL)¸¦ »ç¿ëÇÏ¿© ÁöÁ¤µÉ ¼ö ÀÖ´Ù. ELÀº JSP ÄÁÅ×À̳ʿ¡ ÀÖ´Â µ¥ÀÌÅ͸¦ °Ë»ö ¹× Á¶ÀÛÇÒ ½Äº°ÀÚ, Á¢±ÙÀÚ, ¿¬»êÀÚ¸¦ Á¦°øÇÑ´Ù. ELÀº EcmaScript(Âü°íÀÚ·á)¿Í XML Path Language (XPath)¿¡ ¾à°£ ÀÇÁ¸Çϱ⠶§¹®¿¡ ½ÅÅýº´Â ÆäÀÌÁö µðÀÚÀÌ³Ê¿Í ÇÁ·Î±×·¡¸Ó ¸ðµÎ ¿¡°Ô Àͼ÷ÇÏ´Ù. ELÀº °´Ã¼¿Í ¼Ó¼ºµéÀ» °Ë»öÇϸ鼭 °£´ÜÇÑ ÀÛµ¿À» ¼öÇàÇÑ´Ù. ÀÌ°ÍÀº ÇÁ·Î±×·¡¹Ö ¾ð¾îµµ ½ºÅ©¸³Æà ¾ð¾îµµ ¾Æ´Ï´Ù. JSTL ÅÂ±×¿Í °áÇÕÇÏ¸é °£´ÜÇÏ°í Æí¸®ÇÑ Ç¥±â¸¦ »ç¿ëÇÏ¿© º¹ÀâÇÑ ÀÛµ¿ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù. EL ÀͽºÇÁ·¹¼ÇÀº ´Þ·¯ Ç¥½Ã($)¿Í Áß°ýÈ£ ({})¸¦ ¾Õ¿¡ ºÙ¿© »ç¿ëÇÏ¿© ¹üÀ§¸¦ Á¤ÇÑ´Ù.(Listing 3)

Listing 3. JSTL ¾×¼Ç: EL ÀͽºÇÁ·¹¼Ç ¹üÀ§ ÁöÁ¤

<c:out value="${user.firstName}"/>

¿©·¯°³ÀÇ ÀͽºÇÁ·¹¼Çµé°ú Á¤Àû ÅؽºÆ®¸¦ °áÇÕÇÏ¿© ½ºÆ®¸µ ¿¬°áÀ» ÅëÇØ µ¿Àû ¾ÖÆ®¸®ºäÆ® °ªÀ» ¸¸µé ¼ö ÀÖ´Ù.(Listing 4). °³º° ÀͽºÇÁ·¹¼ÇµéÀº ½Äº°ÀÚ, Á¢±ÙÀÚ, ¸®ÅÍ·², ¿¬»êÀÚ·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ½Äº°ÀÚ´Â µ¥ÀÌÅÍ ¼¾ÅÍ¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ °´Ã¼¸¦ ÂüÁ¶Çϴµ¥ »ç¿ëµÈ´Ù. ELÀº 11 °³ÀÇ ½Äº°ÀÚ¸¦ º¸À¯ÇÏ°í ÀÖ´Ù. 11 °³ÀÇ EL ³»Àå °´Ã¼¿¡ »óÀÀÇÏ´Â °ÍµéÀÌ´Ù. ´Ù¸¥ ¸ðµç ½Äº°ÀÚµéÀº ¹üÀ§ º¯¼ö¸¦ ÂüÁ¶ÇÏ´Â °ÍÀ¸·Î °£ÁֵȴÙ. Á¢±ÙÀÚ´Â °´Ã¼ÀÇ ¼Ó¼º ¶Ç´Â Ä÷º¼ÇÀÇ ¿¤¸®¸ÕÆ®¸¦ °Ë»öÇϴµ¥ »ç¿ëµÈ´Ù. ¸®ÅÍ·²Àº °íÁ¤µÈ °ªµé(¼ýÀÚ, ¹®ÀÚ, ½ºÆ®¸µ, ºÎ¿ï, null)À» ³ªÅ¸³½´Ù. ¿¬»êÀÚ´Â µ¥ÀÌÅÍ¿Í ¸®ÅÍ·²ÀÌ °áÇÕ ¹× ºñ±³µÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

Listing 4. Á¤Àû ÅؽºÆ®¿Í ¿©·¯ EL ÀͽºÇÁ·¹¼ÇÀ» °áÇÕÇÏ¿© µ¿Àû ¾ÖÆ®¸®ºäÆ® °ª ÁöÁ¤Çϱâ

<c:out value="Hello ${user.firstName} ${user.lastName}"/>

¹üÀ§ º¯¼ö(Scoped variables)
<jsp:useBean> ¾×¼ÇÀ» ÅëÇÑ JSP ¿¡ÀÌÇǾÆÀÌ´Â µ¥ÀÌÅÍ°¡ ÀúÀåµÉ ¼ö ÀÖµµ·Ï Çϸç JSP ÄÁÅ×ÀÌ³Ê ³»¿¡ ³× °³ÀÇ ´Ù¸¥ ¹üÀ§¿¡¼­ µ¥ÀÌÅÍ°¡ °Ë»öµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. JSTLÀº ÀÌ·¯ÇÑ ¹üÀ§ ³»¿¡ °´Ã¼¸¦ ÇÒ´çÇÏ°í Á¦°ÅÇÒ Ãß°¡ ¾×¼ÇÀ» Á¦°øÇÑ´Ù. ´õ¿íÀÌ, ELÀº ¹üÀ§ º¯¼ö °°Àº °´Ã¼µéÀ» °Ë»öÇÏ´Â ºôÆ®ÀÎ Áö¿øÀ» Á¦°øÇÑ´Ù. ƯÈ÷ ELÀÇ ³»Àå °´Ã¼ Áß Çϳª¶óµµ »óÀÀÇÏÁö ¾Ê´Â EL ÀͽºÇÁ·¹¼Ç¿¡ ÀÖ´Â ½Äº°ÀÚ´Â ³× °³ÀÇ JSP ½ºÄß Áß Çϳª¿¡ ÀúÀåµÈ °´Ã¼¸¦ ÂüÁ¶ÇÏ´Â °ÍÀ¸·Î ÀÚµ¿ °£ÁֵȴÙ:

  • ÆäÀÌÁö ¹üÀ§
  • ¿äû ¹üÀ§
  • ¼¼¼Ç ¹üÀ§
  • ¾ÖÇø®ÄÉÀÌ¼Ç ¹üÀ§

ÆäÀÌÁö ¹üÀ§¿¡ ÀúÀåµÈ °´Ã¼µéÀº ƯÁ¤ ¿äû¿¡ ´ëÇÑ ÆäÀÌÁö°¡ ÇÁ·Î¼¼½º µÇ´Â µ¿¾È °Ë»öµÉ ¼ö ÀÖ´Ù. ¿äû ¹üÀ§ ³»¿¡ ÀúÀåµÈ °´Ã¼µéÀº ¿äû ÇÁ·Î¼¼½º¿¡ Âü¿©ÇÑ ¸ðµç ÆäÀÌÁöµéÀÌ ÇÁ·Î¼¼½º ÇÏ´Â µ¿¾È °Ë»öµÉ ¼ö ÀÖ´Ù. °´Ã¼°¡ ¼¼¼Ç ¹üÀ§¿¡ ÀúÀåµÇ¾îÀÖ´Ù¸é À¥ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ ´ÜÀÏ ÀÎÅÍ·¢Æ®ºê ¼¼¼Ç µ¿¾È »ç¿ëÀÚ°¡ ¾×¼¼½º ÇÑ ÆäÀÌÁö·Î °Ë»öµÉ ¼ö ÀÖ´Ù. À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¾ð·Îµå(unload) µÉ ¶§ ±îÁö ¾ÖÇø®ÄÉÀÌ¼Ç ¹üÀ§¿¡ ÀúÀåµÈ °´Ã¼´Â ¸ðµç ÆäÀÌÁö¿¡¼­ Á¢±Ù°¡´ÉÇÏ¸ç ¸ðµç »ç¿ëÀÚµéÀÌ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.

ij¸¯ÅÍ ½ºÆ®¸µÀ» Èñ¸ÁÇÏ´Â ¹üÀ§¿¡ ÀÖ´Â °´Ã¼·Î ¸ÅÇÎÇÏ¿© ¹üÀ§¾È¿¡ °´Ã¼¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡´Â °°Àº ij¸¯ÅÍ ½ºÆ®¸µÀ» Á¦°øÇÏ¿© ¹üÀ§¿¡¼­ °´Ã¼¸¦ °Ë»öÇÒ ¼öµµ ÀÖ´Ù. ½ºÆ®¸µÀº ¹üÀ§ ¸ÅÇÎ Áß °Ë»öµÇ°í ¸ÅÇÎµÈ °´Ã¼´Â ¸®ÅϵȴÙ. Servlet API ³»¿¡¼­ ±×¿Í °°Àº °´Ã¼µéÀº »óÀÀÇÏ´Â ¹üÀ§ÀÇ ¾ÖÆ®¸®ºäÆ®·Î¼­ ¾ð±ÞµÈ´Ù. ELÀÇ °æ¿ì ¾ÖÆ®¸®ºäÆ®¿Í °ü·ÃµÈ ij¸¯ÅÍ ½ºÆ®¸µÀº º¯¼ö À̸§À¸·Î °£ÁÖµÉ ¼öµµ ÀÖ´Ù.

EL¿¡¼­ ³»Àå °´Ã¼µé°ú °ü·ÃÀÌ ¾ø´Â ½Äº°ÀÚµéÀº JSP ¹üÀ§¿¡ ÀúÀåµÈ °´Ã¼µéÀ» ¸í¸íÇÏ´Â °ÍÀ¸·Î °£ÁֵȴÙ. ±×¿Í °°Àº ½Äº°ÀÚ´Â ÆäÀÌÁö ¹üÀ§¸¦ °Ë»çÇÏ°í ±× ´ÙÀ½¿¡´Â ¿äû ¹üÀ§, ¼¼¼Ç ¹üÀ§, ¾ÖÇø®ÄÉÀÌ¼Ç ¹üÀ§ ¼øÀ¸·Î °Ë»çÇÑ´Ù. ½Äº°ÀÚÀÇ À̸§ÀÌ ±× ¹üÀ§¿¡ ÀúÀåµÈ °´Ã¼ À̸§°ú ¸ÅĪµÇ´ÂÁöÀÇ ¿©ºÎ°¡ Å×½ºÆ®µÈ´Ù. ù ¹ø° ¸ÅÄ¡´Â EL ½Äº°ÀÚÀÇ °ªÀ¸·Î ¸®ÅϵȴÙ. EL ½Äº°ÀÚ´Â ¹üÀ§ º¯¼ö¸¦ ÂüÁ¶ÇÏ´Â °ÍÀ¸·Î °£ÁÖµÉ ¼ö ÀÖ´Ù.

±â¼úÀûÀÎ °üÁ¡¿¡¼­ º¸¸é ³»Àå °´Ã¼·Î ¸ÅÇÎÇÏÁö ¾Ê´Â ½Äº°ÀÚ´Â PageContext ÀνºÅϽºÀÇ findAttribute() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Æò°¡µÇ¸é¼­ ÇöÀç ÇÚµéµÇ´Â ¿äû¿¡ ´ëÇØ ÀͽºÇÁ·¹¼ÇÀÌ ¹ß»ýÇÏ´Â ÆäÀÌÁöÀÇ ÇÁ·Î¼¼½ÌÀ» ³ªÅ¸³½´Ù. ½Äº°ÀÚÀÇ À̸§Àº ÀÌ ¸Þ¼Òµå¿¡ ´ëÇÑ ÀÎÀڷμ­ Àü´ÞµÈ´Ù. ÀÌ°ÍÀº °°Àº À̸§À» °¡Áø ¾ÖÆ®¸®ºäÆ®¿¡ ´ëÇÑ ³× °³ÀÇ ¹üÀ§¸¦ °Ë»öÇÑ´Ù. ¹ß°ßµÈ ù ¹ø° ¸ÅÄ¡´Â findAttribute() ¸Þ¼Òµå °ªÀ¸·Î ¸®ÅϵȴÙ. ±×¿Í °°Àº ¾ÖÆ®¸®ºäÆ®°¡ ³× °³ÀÇ ¹üÀ§ Áß¿¡ ¾øÀ¸¸é nullÀÌ ¸®ÅϵȴÙ.

±Ã±ØÀûÀ¸·Î ¹üÀ§ º¯¼ö´Â ³× °³ÀÇ EL ½Äº°Àڷμ­ »ç¿ëµÉ ¼ö ÀÖ´Â À̸§À» °¡Áø JSP ¹üÀ§ÀÇ ¿¡Æ®¸®ºäÆ®¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿µ¼ýÀÚ À̸§À¸·Î ÇÒ´çµÇ´Â ÇÑ ¹üÀ§ º¯¼ö´Â JSP ¿¡ Á¸ÀçÇÏ´Â ¸ðµç ¸ÞÄ¿´ÏÁòÀ¸·Î ¸¸µé¾îÁ® ¾ÖÆ®¸®ºäÆ®¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¿©±â¿¡´Â ºôÆ®ÀÎ <jsp:useBean> ¾×¼ÇÀº ¹°·Ð setAttribute() ¸Þ¼Òµå°¡ Æ÷ÇԵȴÙ. °Ô´Ù°¡ ³× °³ÀÇ JSTL ¶óÀ̺귯¸®¿¡¼­ Á¤ÀÇµÈ ¸¹Àº Ä¿½ºÅÒ Å±׵éÀº ½º½º·Î ¹üÀ§ º¯¼ö·Î¼­ ¾ÖÆ®¸®ºäÆ® °ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.

³»Àå °´Ã¼(Implicit objects)
11 °³ÀÇ EL ³»Àå °´Ã¼¿ë ½Äº°Àڴ ǥ 1°ú °°´Ù. JSP ³»Àå °´Ã¼¿Í È¥µ¿ÇÏÁö ¸»°Í!

Ç¥ 1. EL ³»Àå °´Ã¼
Category ½Äº°ÀÚ ¼³¸í
JSP pageContext ÇöÀç ÆäÀÌÁöÀÇ ÇÁ·Î¼¼½Ì°ú »óÀÀÇÏ´Â PageContext ÀνºÅϽº
¹üÀ§ pageScope ÆäÀÌÁö ¹üÀ§ ¾ÖÆ®¸®ºäÆ® À̸§°ú °ª°ú °ü·ÃµÈ Map
requestScope ¿äû ¹üÀ§ ¾ÖÆ®¸®ºäÆ® À̸§°ú °ª°ú °ü·ÃµÈ Map
sessionScope ¼¼¼Ç ¹üÀ§ ¾ÖÆ®¸®ºäÆ® À̸§°ú °ª°ú °ü·ÃµÈ Map
applicationScope ¾ÖÇø®ÄÉÀÌ¼Ç ¹üÀ§ ¾ÖÆ®¸®ºäÆ® À̸§°ú °ª°ú °ü·ÃµÈ Map
¿äû ¸Å°³º¯¼ö param ¿äû ¸Å°³º¯¼öÀÇ ±âº» °ªÀ» À̸§À¸·Î ÀúÀåÇÏ´Â Map
paramValues ¿äû ¸Å°³º¯¼öÀÇ ¸ðµç °ªÀ» String ¾î·¹À̷μ­ ÀúÀåÇÏ´Â Map
¿äû Çì´õ header ¿äû Çì´õÀÇ ±âº» °ªÀ» À̸§À¸·Î ÀúÀåÇÏ´Â Map
headerValues ¿äû Çì´õÀÇ ¸ðµç °ªÀ» String ¾î·¹À̷μ­ ÀúÀåÇÏ´Â Map
ÄíÅ° cookie ¿äû¿¡ ¼ö¹ÝµÇ´Â ÄíÅ°µéÀ» À̸§À¸·Î ÀúÀåÇÏ´Â Map
ÃʱâÈ­ ¸Å°³º¯¼ö initParam À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÜÅؽºÆ® ÃʱâÈ­ ¸Å°³º¯¼ö¸¦ À̸ªÀ¸·Î ÀúÀåÇÏ´Â Map

JSP¿Í EL ³»Àå °´Ã¼°¡ ÀϹÝÀûÀÎ ÇϳªÀÇ °´Ã¼¸¦ °®´Â ¹Ý¸é(pageContext) ´Ù¸¥ JSP ³»Àå °´Ã¼´Â EL¿¡¼­ Á¢±Ù °¡´ÉÇÏ´Ù. ÆäÀÌÁöÄÜÅؽºÆ®°¡ ´Ù¸¥ 8 °³ÀÇ JSP ³»Àå °´Ã¼ ¸ðµÎ¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â ¼Ó¼ºÀ» °®°í Àֱ⠶§¹®ÀÌ´Ù.

³²¾ÆÀÖ´Â ¸ðµç EL ³»Àå °´Ã¼µéÀº ¸Ê(map)ÀÌ´Ù. À̸§¿¡ »óÀÀÇÏ´Â °´Ã¼µéÀ» Ž»öÇÑ´Ù. ù ¹ø° ³× °³ÀÇ ¸ÊÀº ÀÌÀü¿¡ ¾ð±ÞÇÑ ´Ù¾çÇÑ ¾ÖÆ®¸®ºäÆ® ¹üÀ§¸¦ ³ªÅ¸³½´Ù. ƯÁ¤ ¹üÀ§ ³»ÀÇ ½Äº°ÀÚµéÀ» °Ë»öÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ELÀÌ ±âº»ÀûÀ¸·Î »ç¿ëÇÏ´Â ¼øÂ÷ÀûÀΠŽ»ö ÇÁ·Î¼¼½º¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â´Ù.

´ÙÀ½ ³× °³ÀÇ ¸ÊÀº ¿äû ¸Å°³º¯¼ö¿Í Çì´õÀÇ °ªÀ» ¹ÝÀÔÇÏ´Â ¿ëµµÀÌ´Ù. HPPT ÇÁ·ÎÅäÄÝÀÌ ¿äû ¸Å°³º¯¼ö¿Í Çì´õ°¡ ´ÙÁß °ªÀ» °¡Áú ¼ö ÀÖµµ·Ï Çϱ⠶§¹®¿¡ °¢°¢ ÇÑ ½ÖÀÇ ¸ÊÀÌ ÀÖ´Ù. °¢ ½Ö Áß¿¡¼­ ù ¹ø° ¸ÊÀº ¿äû ¸Å°³º¯¼ö ¶Ç´Â Çì´õ¿¡ ´ëÇÑ ±âº» °ªÀ» ¸®ÅÏÇÑ´Ù. ½ÇÁ¦ ¿äû ½Ã ù ¹ø°·Î ÁöÁ¤µÈ °ªÀÌ ¹«¾ùÀÌµç »ó°ü¾ø´Ù. µÎ ¹ø° ¸ÊÀº ¸Å°³º¯¼ö³ª Çì´õÀÇ °ª ¸ðµÎ °Ë»öµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ ¸ÊÀÇ ÇÙ½ÉÀº ¸Å°³º¯¼ö ¶Ç´Â Çì´õÀÇ À̸§ÀÌ´Ù. °ªµéÀº String °´Ã¼ÀÇ ¾î·¹ÀÌÀÌ´Ù.

ÄíÅ° ³»Àå °´Ã¼´Â ¿äûÀ¸·Î ¼³Á¤µÈ ÄíÅ°¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦°øÇÑ´Ù. ÀÌ °´Ã¼´Â ¿äû°ú °ü·ÃµÈ ¸ðµç ÄíÅ°µéÀÇ À̸§À» Cookie °´Ã¼µé·Î ¸ÅÇÎÇϸ鼭 ÄíÅ°µéÀÇ ¼Ó¼ºÀ» ³ªÅ¸³½´Ù.

¸¶Áö¸· EL ³»Àå °´Ã¼ÀÎ initParamÀº À¥ ¾ÖÇø®ÄÉÀ̼ǰú °ü·ÃµÈ ¸ðµç ÄÜÅؽºÆ® Ãʱâ¿Í ¸Å°³º¯¼öÀÇ À̸§°ú °ªÀ» ÀúÀåÇÏ´Â ¸ÊÀÌ´Ù. ÃʱâÈ­ ¸Å°³º¯¼öµéÀº¾ÖÇø®ÄÉÀ̼ÇÀÇ WEB-INF µð·ºÅ丮¿¡ ÀÖ´Â web.xml Àü°³ µð½ºÅ©¸³ÅÍ ÆÄÀÏÀ» ÅëÇØ Á¤ÀǵȴÙ.

Á¢±ÙÀÚ(Accessors)
EL ½Äº°ÀÚ´Â ³»Àå °´Ã¼ ¶Ç´Â ¹üÀ§ º¯¼ö·Î¼­ ¼³¸íµÉ ¼ö Àֱ⠶§¹®¿¡ ÀÚ¹Ù °´Ã¼·Î Æò°¡ÇؾßÇÑ´Ù. ELÀº »óÀÀÇÏ´Â Àڹ٠Ŭ·¡½º¿¡¼­ ÇÁ¸®¸ÓƼºê¸¦ ·¡ÇÎ/¾ð·¡ÇÎÇÑ´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì ½Äº°ÀÚµéÀº ÀÚ¹Ù °´Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ µÈ´Ù.

°á°úÀûÀ¸·Î ÀÌ·¯ÇÑ °´Ã¼µéÀÇ ¼Ó¼ºÀ̳ª, ¾î·¹ÀÌ¿Í Ä÷º¼ÇÀÇ °æ¿ì ±×µéÀÇ ¿¤¸®¸ÕÆ®¿¡ ¾×¼¼½ºÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. À̸¦ À§ÇØ ELÀº µÎ °³ÀÇ ´Ù¸¥ Á¢±ÙÀÚ¸¦ Á¦°øÇÑ´Ù. ´å(dot) ¿ÀÆÛ·¹ÀÌÅÍ(.)¿Í ºê·¡Å¶ ¿ÀÆÛ·¹ÀÌÅÍ([])ÀÌ´Ù. À̵éÀº ¼Ó¼º°ú ¿¤¸®¸ÕÆ®µéÀÌ ELÀ» ÅëÇØ ¿¬»êµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

´å ¿¬»êÀÚ´Â °´Ã¼ÀÇ ÇÁ·ÎÆÛƼ¿¡ Á¢±ÙÇϴµ¥ »ç¿ëµÈ´Ù. ${user.firstName} ÀͽºÇÁ·¹¼Ç¿¡¼­ ´å ¿¬»êÀÚ´Â user ½Äº°ÀÚ¿¡ ÀÇÇØ ÂüÁ¶µÈ °´Ã¼ Áß firstNameÀ̶ó´Â À̸§À» °¡Áø ¼Ó¼º¿¡ ¾×¼¼½º ÇÑ´Ù. ELÀº ÀÚ¹Ù ºó ±ÔÁ¤À» »ç¿ëÇÏ¿© °´Ã¼ ¼Ó¼º¿¡ Á¢±ÙÇϱ⠶§¹®¿¡ ÀÌ ¼Ó¼º¿¡ ´ëÇÑ °ÔÅÍ(ÀϹÝÀûÀ¸·Î getFirstName())´Â ÀÌ ÀͽºÇÁ·¹¼ÇÀÌ Á¤È®È÷ °è»êÇϱâ À§Çؼ­ ¹Ýµå½Ã Á¤ÀǵǾî¾ß ÇÑ´Ù. ¾×¼¼½ºµÇ´Â ¼Ó¼ºÀÌ °´Ã¼ÀÏ ¶§ ´å ¿¬»êÀÚ´Â Àç±ÍÀûÀ¸·Î Àû¿ëµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î °¡»óÀÇ user °´Ã¼°¡ ÀÚ¹Ù °´Ã¼·Î¼­ ±¸ÇöµÈ address ¼Ó¼ºÀ» °®°í ÀÖ´Ù¸é ´å ¿¬»êÀÚ´Â ÀÌ °´Ã¼ÀÇ ¼Ó¼º¿¡ ¾×¼¼½º Çϱâ À§ÇØ »ç¿ëµÉ ¼öµµ ÀÖ´Ù. ${user.address.city} ÀͽºÇÁ·¹¼ÇÀº ÀÌ address °´Ã¼ Áß ÁßøµÈ city ¼Ó¼ºÀ» ¸®ÅÏÇÑ´Ù.

ºê·¡Å¶ ¿¬»êÀÚ´Â ¾î·¹ÀÌ¿Í Ä÷º¼ÇÀÇ ¿¤¸®¸ÕÆ®¸¦ °Ë»öÇϴµ¥ »ç¿ëµÈ´Ù. ¾î·¹ÀÌ¿Í Ä÷º¼Ç(java.util.List¸¦ ±¸ÇöÇÏ´Â Ä÷º¼Ç)ÀÇ °æ¿ì °Ë»öµÉ ¿¤¸®¸ÕÆ® À妽º´Â ºê·¡Å¶ ¾È¿¡ ³ªÅ¸³­´Ù. ¿¹¸¦ µé¾î ${urls[3]} ÀͽºÇÁ·¹¼ÇÀº ÀÌ urls ½Äº°ÀÚ¿¡ ÀÇÇØ ÂüÁ¶µÈ ¾î·¹ÀÌ ¶Ç´Â Ä÷º¼ÇÀÇ ³× ¹ø° ¿¤¸®¸ÕÆ®¸¦ ¸®ÅÏÇÑ´Ù.

java.util.Map ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â Ä÷º¼ÇÀÇ °æ¿ì ºê·¡Å¶ ¿¬»êÀÚ´Â °ü·Ã Å°¸¦ »ç¿ëÇÏ¿© ¸Ê¿¡ ÀúÀåµÈ °ªÀ» ã´Â´Ù. ÀÌ Å°´Â ºê·¡Å¶ ³»¿¡¼­ ÁöÁ¤µÇ°í »óÀÀÇÏ´Â °ªÀº ÀͽºÇÁ·¹¼Ç °ªÀ¸·Î ¸®ÅϵȴÙ. ¿¹¸¦ µé¾î ${commands["dir"]} ÀͽºÇÁ·¹¼ÇÀº commands ½Äº°ÀÚ¿¡ ÀÇÇØ ÂüÁ¶µÈ MapÀÇ "dir" Å°¿Í °ü·ÃµÈ °ªÀ» ¸®ÅÏÇÑ´Ù.

ÀͽºÇÁ·¹¼ÇÀÌ ºê·¡Å¶¾È¿¡ ³ªÅ¸³¯ ¼ö ÀÖ´Ù. ÁßøµÈ ÀͽºÇÁ·¹¼ÇÀÇ °è»ê °á°ú´Â Ä÷º¼ÇÀ̳ª ¾î·¹ÀÌÀÇ ÀûÀýÇÑ ¿¤¸®¸ÕÆ®¸¦ °Ë»öÇÏ´Â À妽º ¶Ç´Â Å°·Î ÀÛ¿ëÇÑ´Ù. ´å ¿¬»êÀÚ°¡ true¶ó¸é, ºê·¡Å¶ ¿¬»êÀÚµµ Àç±ÍÀûÀ¸·Î Àû¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ´Â ELÀÌ ´ÙÂ÷¿ø ¾î·¹ÀÌ, Áßø Ä÷º¼Ç, ¶Ç´Â µÑÀÇ °áÇÕ¿¡¼­ ¿¤¸®¸ÕÆ®¸¦ °Ë»ö ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ´õ¿íÀÌ ´å ¿¬»êÀÚ¿Í ºê·¡Å¶ ¿¬»êÀÚ´Â »óÈ£¿î¿ë¼ºÀÌ ÀÖ´Ù. ¿¹¸¦µé¾î ÇÑ ¾î·¹ÀÌÀÇ ¿¤¸®¸ÕÆ®°¡ °´Ã¼¶ó¸é ºê·¡Å¶ ¿¬»êÀÚ´Â ±× ¾î·¹ÀÌÀÇ ¿¤¸®¸ÕÆ®¸¦ °Ë»öÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ°í ´å ¿¬»êÀÚ¿Í °áÇÕÇÏ¿© ¿¤¸®¸ÕÆ® ¼Ó¼º Áß Çϳª¸¦ °Ë»öÇÒ ¼ö ÀÖ´Ù. (¿¹¸¦ µé¾î ${urls[3].protocol}).

ELÀÌ µ¿Àû ¾ÖÆ®¸®ºäÆ® °ªÀ» Á¤ÀÇÇÏ´Â °£ÇÑÇÑ ¾ð¾î·Î¼­ ÀÛ¿ëÇÑ´Ù°í º¼ ¶§, ÀÚ¹Ù Á¢±ÙÀÚ¿Í´Â ´Ù¸¥ EL Á¢±ÙÀÚÀÇ Àç¹ÌÀִ Ư¼º Áß Çϳª´Â null¿¡ Àû¿ëµÉ ¶§ ¿¹¿Ü¸¦ ´øÁöÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. EL Á¢±ÙÀÚ°¡ Àû¿ëµÇ´Â °´Ã¼(¿¹¸¦ µé¾î ${foo.bar}¿Í ${foo["bar"]}ÀÇ foo ½Äº°ÀÚ)°¡ nullÀ̸é Á¢±ÙÀÚ Àû¿ë °á°ú ¿ª½Ã nullÀÌ´Ù. ÀÌ´Â ´ëºÎºÐÀÇ °æ¿ì, µµ¿òÀÌ µÇ´Â ÀÏÀÌ´Ù.

¸¶Áö¸·À¸·Î ´å ¿¬»êÀÚ¿Í ºê·¡Å¶ ¿¬»êÀÚ´Â »óÈ£ ±³È¯µÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ${user["firstName"]}Àº user °´Ã¼ÀÇ firstName ¼Ó¼ºÀ» °Ë»öÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ${commands.dir}°¡ commands ¸Ê¿¡¼­ "dir" Å°¿Í °ü·ÃµÈ °ªÀ» ¹ÝÀÔÇϴµ¥ »ç¿ëµÉ ¼ö Àִ°Ͱú °°Àº ÀÌÄ¡ÀÌ´Ù.

¿¬»êÀÚ(Operators)
½Äº°ÀÚ¿Í Á¢±ÙÀÚ¸¦ »ç¿ëÇÏ¿© ELÀº ¾ÖÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ(¹üÀ§ º¯¼ö¸¦ ÅëÇØ ³ëÃâ) ¶Ç´Â ȯ°æ °ü·Ã Á¤º¸(EL ³»Àå °´Ã¼¸¦ ÅëÇØ ³ëÃâ)¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â °´Ã¼ °èÃþÀ» Æ®·¡¹ö½º ÇÒ ¼ö ÀÖ´Ù. ±×¿Í °°Àº µ¥ÀÌÅÍ¿¡ °£´ÜÈ÷ Á¢±ÙÇÏ´Â °ÍÀº ¸¹Àº JSP ¾ÖÇø®ÄÉÀ̼ǿ¡ ÇÊ¿äÇÑ Ç¥Çö ·ÎÁ÷À» ±¸ÇöÇϴµ¥ Á¾Á¾ ºÎÀûÇÕÇÏ´Ù.

EL¿¡´Â EL ÀͽºÇÁ·¹¼ÇÀ¸·Î Á¢±ÙµÈ µ¥ÀÌÅ͸¦ Á¶ÀÛ ¹× ºñ±³ÇÒ ¿©·¯ ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÀÌ·¯ÇÑ ¿¬»êÀÚµéÀ» Ç¥ 2¿¡ ¿ä¾àÇß´Ù.

Ç¥ 2. EL ¿¬»êÀÚ
Category ¿¬»êÀÚ
»ê¼ú +, -, *, / (or div), % (or mod)
°ü°èÇü == (or eq), != (or ne), &lt; (or lt), > (or gt), &lt;= (or le), >= (or ge)
³í¸® &amp;&amp; (or and), || (or or), ! (or not)
Ÿ´ç¼º°Ë»ç empty

»ê¼ú ¿¬»êÀÚ´Â ´õÇϱâ, »©±â, ³ª´©±â¸¦ Áö¿øÇÑ´Ù. ´Ù¸¥ ¿¬»êÀڵ鵵 Á¦°øµÈ´Ù. ³ª´©±â¿Í ³ª¸ÓÁö ¿¬»êÀÚµéÀº ºñ »ó¡ À̸§µéÀ̶ó´Â ´ë¾ÈÀ» °®°í ÀÖ´Ù. »ê¼ú ¿¬»êÀÚÀÇ »ç¿ë¹ýÀ» ¼³¸íÇÏ´Â ¿¹Á¦ ÀͽºÇÁ·¹¼ÇÀº Listing 5¿¡ ¼³¸íµÇ¾î ÀÖ´Ù. »ê¼ú ¿¬»êÀÚ¸¦ ÇÑ ½ÖÀÇ EL ÀͽºÇÁ·¹¼Ç¿¡ Àû¿ëÇÑ °á°ú´Â ±×·¯ÇÑ ÀͽºÇÁ·¹¼Ç¿¡ ÀÇÇØ ¸®ÅÏµÈ ¼ýÀÚ °ª¿¡ ´ëÇÑ ¿¬»êÀÚ¿¡ Àû¿ëÇÑ °á°úÀÌ´Ù.

Listing 5. »ê¼ú ¿¬»êÀÚ¸¦ »ç¿ëÇÏ´Â EL ÀͽºÇÁ·¹¼Ç

${item.price * (1 + taxRate[user.address.zipcode])}

°ü°èÇü ¿¬»êÀÚ´Â ¼ýÀÚ ¶Ç´Â ÅؽºÆ® µ¥ÀÌÅ͸¦ ºñ±³ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ºñ±³ °á°ú´Â ºÎ¿ï °ªÀ¸·Î¼­ ¸®ÅϵȴÙ. ³í¸®Àû ¿¬»êÀÚ´Â ºÎ¿ï °ªÀÌ °áÇÕµÉ ¼ö ÀÖµµ·Ï ÇÏ¸ç »õ·Î¿î ºÎ¿ï °ªÀ» ¸®ÅÏÇÑ´Ù. EL ³í¸®Àû ¿¬»êÀÚ´Â ÁßøµÈ °ü°èÇü ¿¬»êÀÚ ¶Ç´Â ³í¸®Àû ¿¬»êÀÚÀÇ °á°ú¿¡ Àû¿ëµÉ ¼ö ÀÖ´Ù. (Listing 6).

Listing 6. °ü°èÇü ¿¬»êÀÚ ¹× ³í¸®Àû ¿¬»êÀÚ¸¦ »ç¿ëÇÏ´Â EL ÀͽºÇÁ·¹¼Ç

${(x >= min) &amp;&amp; (x <= max)}

EL ¿¬»êÀÚ´Â empty ÀÌ´Ù. µ¥ÀÌÅÍÀÇ Å¸´ç¼º °Ë»ç¿¡ ƯÈ÷ À¯¿ëÇÏ´Ù. empty ¿¬»êÀÚ´Â ÇϳªÀÇ ÀͽºÇÁ·¹¼ÇÀ» ÀÎÀÚ·Î ÃëÇÑ´Ù.(${empty input}). ±×¸®°í ÀͽºÇÁ·¹¼ÇÀÌ empty °ªÀ¸·Î °è»êÇß´ÂÁöÀÇ ¿©ºÎ¸¦ ³ªÅ¸³»´Â ºÎ¿ï °ªÀ» ¸®ÅÏÇÑ´Ù. null·Î °è»êÇÑ ÀͽºÇÁ·¹¼ÇÀº empty·Î °£ÁֵȴÙ. ¾î¶² ¿¤¸®¸ÕÆ®µµ ¾ø´Â Ä÷º¼ÇÀ̳ª ¾î·¹ÀÌ¿Í °°´Ù. empty ¿¬»êÀÚ´Â ÀÎÀÚ°¡ ±æÀÌ°¡ 0ÀÎ StringÀ¸·Î °è»êÇß´Ù¸é true·Î ¸®ÅÏÇÑ´Ù.

EL ¿¬»êÀÚÀÇ ¿ì¼±¼øÀ§´Â Ç¥ 3¿¡ Á¤¸®µÇ¾î ÀÖ´Ù. Listing 5¿Í 6¿¡ Á¦¾ÈµÈ °Í ó·³ °ýÈ£´Â ±×·ì ÀͽºÇÁ·¹¼Ç¿¡ »ç¿ëµÇ°í ÀϹÝÀûÀÎ ¿ì¼±¼øÀ§¸¦ µû¸¥´Ù.

Ç¥ 3. EL ¿¬»êÀÚ ¿ì¼±¼øÀ§ (À§->¾Æ·¡, ¿ÞÂÊ->¿À¸¥ÂÊ)
[], .
()
unary -, not, !, empty
*, /, div, %, mod
+, binary -
() &lt;, >, &lt;=, >=, lt, gt, le, ge
==, !=, eq, ne
&amp;&amp;, and
||, or

¸®ÅÍ·²(Literals)
¼ýÀÚ, ij¸¯ÅÍ ½ºÆ®¸µ, ºÎ¿ï, nullÀº EL ÀͽºÇÁ·¹¼Ç¿¡¼­ ¸®ÅÍ·² °ªÀ¸·Î ÁöÁ¤µÉ ¼ö ÀÖ´Ù. ij¸¯ÅÍ ½ºÆ®¸µÀº ½Ì±Û ÄõÆ® ¶Ç´Â ´õºí ÄõÆ®·Î ¹üÀ§°¡ ÁöÁ¤µÈ´Ù. ºÎ¿ï °ªÀº true¿Í false·Î °è»êµÈ´Ù.

Taglib Áö½Ã¹®
¾Õ¼­ ¾ð±ÞÇßÁö¸¸ JSTL 1.0¿¡´Â ³× °³ÀÇ Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®°¡ Æ÷ÇԵǾî ÀÖ´Ù. ÀͽºÇÁ·¹¼Ç ¾ð¾î·Î JSTL ű×ÀÇ ÀÎÅÍ·¢¼ÇÀ» ¼³¸íÇϱâ À§ÇØ JSTL core ¶óÀ̺귯¸®¿¡¼­ ¿©·¯ ű׵éÀ» °ËÅäÇÒ °ÍÀÌ´Ù. ¸ðµç JSP Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®·Î true°¡ µÈ´Ù¸é taglib Áö½Ã¹®Àº ÀÌ ¶óÀ̺귯¸® ű׸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö¿¡ Æ÷ÇԵǾî¾ßÇÑ´Ù. ÀÌ Æ¯Á¤ ¶óÀ̺귯¸®¿¡ ´ëÇÑ Áö½Ã¹®Àº Listing 7¿¡ ³ªÅ¸³ªÀÖ´Ù.

Listing 7. JSTL core ¶óÀ̺귯¸®ÀÇ EL ¹öÀü¿ë Åױ׸³ Áö½Ã¹®

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

½ÇÁ¦·Î JSTL core ¶óÀ̺귯¸®¿¡ »óÀÀÇÏ´Â µÎ °³ÀÇ Taglib Áö½Ã¹®ÀÌ ÀÖ´Ù. JSTLÅÙ¿¡¼­ ELÀº ¿É¼ÇÀ̱⠶§¹®ÀÌ´Ù. JSTL 1.0 ÀÇ ³× °³ÀÇ Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®µéÀº µ¿Àû ¾ÖÆ®¸®ºäÆ® °ªÀ» ÁöÁ¤ÇÒ ¶§ EL ´ë½Å JSP ÀͽºÇÁ·¹¼ÇÀ» »ç¿ëÇÏ´Â ´ë¾È ¹öÀüÀ» °®°íÀÖ´Ù. ÀÌ·¯ÇÑ ´ë¾È ¶óÀ̺귯¸®´Â JSPÀÇ ÀüÅëÀûÀÎ ¿äû½Ã°£ ¾ÖÆ®¸®ºäÆ® °ª¿¡ ÀÇÁ¸Çϱ⠶§¹®¿¡ RT ¶óÀ̺귯¸®·Î ÀÏÄþîÁø´Ù. ¹Ý¸é ÀͽºÇÁ·¹¼Ç ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀº EL ¶óÀ̺귯¸®¶ó°í ÇÑ´Ù. °³¹ßÀÚµéÀº ´ë¾È Taglib Áö½Ã¹®À» »ç¿ëÇÏ´Â °¢°¢ÀÇ ¶óÀ̺귯¸®ÀÇ ¹öÀüµéÀ» ±¸º°ÇÑ´Ù. RT ¹öÀüÀÇ ÄÚ¾î ¶óÀ̺귯¸®¸¦ »ç¿ëÇϱâ À§ÇÑ Áö½Ã¹®Àº Listing 8¿¡ ³ª¿ÍÀÖ´Ù. ÇÏÁö¸¸ Áö±ÝÀº EL¿¡ ÁýÁßÇØ¾ß Çϱ⠶§¹®¿¡ Áö±Ý ÇÊ¿äÇÑ °ÍÀº ÀÌ Áö½Ã¹®µé Áß Ã¹ ¹ø° °ÍÀÌ´Ù.

Listing 8. RT ¹öÀüÀÇ JSTL core ¶óÀ̺귯¸®¿ë ű׸³ Áö½Ã¹®

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %>

º¯¼ö ű×
ù ¹ø° JSTL Ä¿½ºÅÒ Å±״ <c:set> ¾×¼ÇÀÌ´Ù. ÀÌ¹Ì ¾ð±ÞÇßµíÀÌ ¹üÀ§ º¯¼ö´Â JSTL¿¡¼­ ÇÙ½ÉÀûÀÎ ¿ªÇÒÀ» ÇÏ°í <c:set> ¾×¼ÇÀº ÅÂ±× ±â¹ÝÀÇ ¸ÅÄ¿´ÏÁòÀ» Á¦°øÇÏ¿© ¹üÀ§ º¯¼öÀÇ »ý¼º ¹× ¼³Á¤¿¡ ¾²ÀδÙ. ÀÌ ¾×¼ÇÀÇ ½ÅÅýº´Â Listing 9¿Í °°´Ù. var ¾ÖÆ®¸®ºäÆ®´Â ¹üÀ§ º¯¼ö À̸§À» Á¤ÇÏ°í scope ¾ÖÆ®¸®ºäÆ®´Â º¯¼ö°¡ ¸Ó¹°°Ô µÉ ¹üÀ§¸¦ ³ªÅ¸³»°í, value ¾ÖÆ®¸®ºäÆ®´Â º¯¼ö°¡ µÉ °ªÀ» ÁöÁ¤ÇÑ´Ù. ÁöÁ¤µÈ º¯¼ö°¡ ÀÌ¹Ì Á¸ÀçÇϸé Áö½ÃµÈ °ªÀ¸·Î ÇÒ´çµÈ´Ù. ±×·¸Áö ¾Ê´Ù¸é »õ·Î¿î ¹üÀ§ º¯¼ö°¡ ¸¸µé¾îÁö°í ±× °ªÀ¸·Î ÃʱâÈ­µÈ´Ù.

Listing 9. <c:set> ¾×¼Ç ½ÅÅýº

<c:set var="name" scope="scope" value="expression"/>

scope ¾ÖÆ®¸®ºäÆ®´Â ¼±ÅÃÀûÀ̸ç page·Î ±âº» ¼³Á¤µÇ¾î ÀÖ´Ù.

<c:set>ÀÇ µÎ ¿¹Á¦´Â Lisitng 10¿¡ ¼³¸íµÇ¾î ÀÖ´Ù. ù ¹ø° ¿¹Á¦¿¡¼­ ¼¼¼Ç ¹üÀ§ º¯¼ö´Â String °ªÀ¸·Î ¼³Á¤µÈ´Ù. µÎ ¹ø°¿¡¼­´Â ÀͽºÇÁ·¹¼ÇÀº ¼ýÀÚ °ªÀ» ¼³Á¤Çϴµ¥ »ç¿ëµÈ´Ù. square¶ó´Â ÆäÀÌÁö ¹üÀ§ º¯¼ö´Â x ¶ó´Â ¿äû ¸Å°³º¯¼ö °ªÀ» ¹è°¡½ÃŲ °á°ú·Î ÇÒ´çµÈ´Ù.

Listing 10. <c:set> ¾×¼Ç ¿¹Á¦

<c:set var="timezone" scope="session" value="CST"/>
<c:set var="square" value="${param['x'] * param['x']}"/>

¾ÖÆ®¸®ºäÆ®¸¦ »ç¿ëÇÏ´Â ´ë½Å ¹üÀ§ º¯¼ö¿ë °ªÀ» <c:set> ¾×¼ÇÀÇ ¹Ùµð ÄÜÅÙÆ®·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Á¢±Ù¹æ½ÄÀ» »ç¿ëÇÏ¿© Listing 10ÀÇ Ã¹ ¹ø° ¿¹Á¦¸¦ Listing 11°ú °°ÀÌ ÀçÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ´õ¿íÀÌ <c:set> ű×ÀÇ ¹Ùµð ÄÜÅÙÆ®°¡ Ä¿½ºÅÒ Å±׸¦ Àû¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. <c:set>ÀÇ ¹Ùµð ¾È¿¡¼­ ¸¸µé¾îÁø ¸ðµç ÄÜÅÙÆ®´Â String °ª °°ÀÌ ÁöÁ¤µÈ º¯¼ö¿¡ ÇÒ´çµÈ´Ù..

Listing 11. ¹Ùµð ÄÜÅÙÆ®¸¦ ÅëÇØ <c:set> ¾×¼Ç¿ë °ª ÁöÁ¤Çϱâ

<c:set var="timezone" scope="session">CST</c:set>

JSTL core ¶óÀ̺귯¸®¿¡´Â ¹üÀ§ º¯¼ö¸¦ °ü¸®ÇÏ´Â µÎ ¹ø° ű×(<c:remove>)°¡ Æ÷ÇԵǾî ÀÖ´Ù. À̸§¿¡¼­ ½Ã»çµÇ´Â ¹Ù¿Í °°ÀÌ <c:remove> ¾×¼ÇÀº ¹üÀ§ º¯¼ö¸¦ Áö¿ì´Âµ¥ »ç¿ëµÇ°í µÎ °³ÀÇ ¾ÖÆ®¸®ºäÆ®¸¦ ÃëÇÑ´Ù. var ¾ÖÆ®¸®ºäÆ®´Â Á¦°ÅµÉ º¯¼ö¸¦ ¸í¸íÇÏ°í ¼±ÅÃÀûÀÎ scope ¾ÖÆ®¸®ºäÆ®´Â Á¦°ÅµÇ¾î¾ß ÇÒ ¹üÀ§¸¦ ³ªÅ¸³½´Ù. (Listing 12).

Listing 12. <c:remove> ¾×¼Ç ¿¹Á¦

<c:remove var="timezone" scope="session"/>

¾Æ¿ôDz
<c:set> ¾×¼ÇÀº ÀͽºÇÁ·¹¼ÇÀÇ °á°ú°¡ ¹üÀ§ º¯¼ö·Î ÇÒ´çµÉ ¼ö ÀÖµµ·Ï ÇÏ´Â ¹Ý¸é °³¹ßÀÚµéÀº ÀͽºÇÁ·¹¼Ç °ªÀ» ÀúÀåÇÏ´Â ´ë½Å °£´ÜÈ÷ µð½ºÇ÷¹ÀÌÇϱ⸦ ¿øÇÑ´Ù. ÀÌ´Â JSTLÀÇ <c:out> Ä¿½ºÅÒ Å±×ÀÇ ¸òÀÌ´Ù. (Listing 13). ÀÌ Å±״ value ¾ÖÆ®¸®ºäÆ®¿¡¼­ ÁöÁ¤µÈ ÀͽºÇÁ·¹¼ÇÀ» °è»êÇÑ´Ù. ±×·±´ÙÀ½ °á°ú¸¦ ÇÁ¸°Æ®ÇÑ´Ù. ¼±ÅÃÀû default ¾ÖÆ®¸®ºäÆ®°¡ ÁöÁ¤µÇ¸é value ¾ÖÆ®¸®ºäÆ®ÀÇ ÀͽºÇÁ·¹¼ÇÀÌ null ¶Ç´Â ºñ¾îÀÖ´Â StringÀ¸·Î °è»êµÉ ¶§ <c:out> ¾×¼ÇÀº °ªÀ» ÇÁ¸°Æ®ÇÑ´Ù.

Listing 13. <c:out> ¾×¼Ç ½ÅÅýº

<c:out value="expression" default="expression" escapeXml="boolean"/>

escapeXml ¾ÖÆ®¸®ºäÆ® ¶ÇÇÑ ¼±ÅûçÇ×ÀÌ´Ù. "<", ">", "&" °°Àº ij¸¯ÅÍ°¡ <c:out> ű׿¡ ÀÇÇØ ¾Æ¿ôDz µÉ ¶§ Á¾·áµÇ´ÂÁöÀÇ ¿©ºÎ¸¦ Á¦¾îÇÑ´Ù. escapeXmlÀÌ true·Î ¼³Á¤µÇ¾î ÀÖ´Ù¸é ÀÌ Ä³¸¯Å͵éÀº »óÀÀÇÏ´Â XML ÀÎÅÍƼ(&lt;, &gt;, &amp;)·Î ¹Ù²ï´Ù.

¿¹¸¦ µé¾î, user¶ó´Â ¼¼¼Ç ¹üÀ§ º¯¼ö°¡ ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. ÀÌ°ÍÀº »ç¿ëÀÚ¿¡ ´ëÇÑ username°ú company¶ó´Â µÎ °³ÀÇ ¼Ó¼ºµéÀ» Á¤ÀÇÇϴ Ŭ·¡½ºÀÇ ÀνºÅϽºÀÌ´Ù. ÀÌ °´Ã¼´Â »ç¿ëÀÚ°¡ »çÀÌÆ®¿¡ Á¢±ÙÇÒ ¶§¸¶´Ù ¼¼¼Ç¿¡ ÇÒ´çµÈ´Ù. ÇÏÁö¸¸ ÀÌ µÎ °³ÀÇ ¼Ó¼ºµéÀº »ç¿ëÀÚ°¡ ½ÇÁ¦·Î ·Î±×ÀÎÇϱâ Àü±îÁö ¼³Á¤µÇÁö ¾Ê´Â´Ù. (Listing 14). ÀÏ´Ü »ç¿ëÀÚ°¡ ·Î±×ÀÎÇϸé "Hello"°¡ µð½ºÇ÷¹ÀÌ µÇ°í µÚµû¶ó¼­ »ç¿ëÀÚ À̸§°ú °¨ÅººÎÈ£°¡ ³ª¿Â´Ù. »ç¿ëÀÚ°¡ ·Î±×ÀÎÇϱâ Àü¿¡ ¿©±â¿¡¼­ »ý±ä ÄÜÅÙÆ®´Â "Hello Guest!" ¶ó´Â ±¸(phrase)°¡ µÈ´Ù. ÀÌ °æ¿ì username ¼Ó¼ºÀÌ ÃʱâÈ­µÇÁö ¾Ê¾Ò±â ¶§¹®¿¡ <c:out> ű״ default ¾ÖÆ®¸®ºäÆ® °ªÀ» ÇÁ¸°Æ®ÇÑ´Ù.

Listing 14. <c:out> ¾×¼Ç ¿¹Á¦ (µðÆúÆ® ÄÜÅÙÆ®)

Hello <c:out value="${user.username}" default=="Guest"/>!

<c:out> ű×ÀÇ escapeXml ¾ÖÆ®¸®ºäÆ®¸¦ »ç¿ëÇÏ´Â Listing 15¸¦ º¸ÀÚ. company ¼Ó¼ºÀÌ ÀÚ¹Ù String °ªÀÎ "Flynn & Sons"À¸·Î ¼³Á¤µÇ¾ú´Ù¸é ÀÌ ¾×¼Ç¿¡¼­ »ý±ä ÄÜÅÙÆ®´Â Flynn & SonsÀÌ µÈ´Ù. ÀÌ ¾×¼ÇÀÌ HTML ¶Ç´Â XML ÄÜÅÙÆ®¸¦ ¸¸µå´Â JSP ÆäÀÌÁöÀÇ ÀϺζó¸é ÀÌ Ä³¸¯ÅÍÀÇ ½ºÆ®¸µ Áß°£¿¡ ÀÖ´Â ¾ÚÆÛ»÷Æ® ºÎÈ£´Â HTML ¶Ç´Â XMLÀÌ ¹®ÀÚ¸¦ Á¦¾îÇÏ°í ÀÌ ÄÜÅÙÆ®ÀÇ ·»´õ¸µ ¶Ç´Â ÆĽÌÀ» ¹æÇØÇϴ°ÍÀ¸·Î Çؼ®ÇÏ°í ³¡³­´Ù. escapeXml ¾ÖÆ®¸®ºäÆ®ÀÇ °ªÀÌ true·Î ¼³Á¤µÇ¸é »ý¼ºµÈ ÄÜÅÙÆ®´Â Flynn &amp; SonsÀÌ µÈ´Ù. ÀÌ ÄÜÅÙÆ®¸¦ ¸¸³ª´Â ºê¶ó¿ìÀú ¶Ç´Â Æļ­´Â ÀÎÅÍÇÁ¸®Å×À̼ǿ¡ ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. HTML°ú XMLÀÌ JSP ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ °¡Àå ÀϹÝÀûÀÎ ÄÜÅÙÆ® À¯ÇüÀ̶ó¸é escapeXml ¾ÖÆ®¸®ºäÆ®ÀÇ µðÆúÆ® °ªÀÌ true¶ó´Â °ÍÀº ³î¶ó¿î ÀÏÀÌ ¾Æ´Ï´Ù.

Listing 15. <c:out> ¾×¼Ç ¿¹Á¦

<c:out value="${user.company}" escapeXml=="false"/>

µðÆúÆ® °ªÀ¸·Î º¯¼ö ¼³Á¤Çϱâ
µ¿Àû µ¥ÀÌÅ͸¦ ´Ü¼øÇÏ°Ô ÇÏ´Â °Í ¿Ü¿¡µµ µðÆúÆ® °ªÀ» ÁöÁ¤ÇÏ´Â <c:out>ÀÇ ±â´ÉÀº <c:set>À» ÅëÇØ º¯¼ö °ªÀ» ¼³Á¤ÇÒ ¶§¿¡µµ À¯¿ëÇÏ´Ù. ¹üÀ§ º¯¼ö¿¡ ÇÒ´çµÈ °ªÀÌ <c:set> ű×ÀÇ ¹Ùµð ÄÜÅÙÆ®·Î ÁöÁ¤µÉ¼ö ÀÖ°í value ¾ÖÆ®¸®ºäÆ®·Î¼­µµ °¡´ÉÇÏ´Ù. <c:out> ¾×¼ÇÀ» <c:set> ű×ÀÇ ¹Ùµð ÄÜÅÙÆ®¿¡ ÁßøÇÏ¿© º¯¼ö ÇÒ´çÀº ÀÌ°ÍÀÇ µðÆúÆ® °ªÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. (Listing 11).

ÀÌ·¯ÇÑ Á¢±Ù ¹æ½ÄÀº Listing 16¿¡µµ ¼³¸íµÇ¾î ÀÖ´Ù. ¿ÜºÎ <c:set> ű×ÀÇ ÀÛµ¿Àº ´Ü¼øÇÏ´Ù.

Listing 16. <c:set>°ú <c:out> °áÇÕ: µðÆúÆ® º¯¼ö °ª Á¦°ø

<c:set var="timezone" scope=="session">
   <c:out value="${cookie['tzPref'].value}" default=="CST"/>
</c:set>

¿äû¿¡ Á¦°øµÈ tzPref ¶ó´Â À̸§ÀÇ ÄíÅ°°¡ ¾ø´Ù. ³»Àå °´Ã¼¸¦ »ç¿ëÇÑ °Ë»öÀº nullÀÌ µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀͽºÇÁ·¹¼ÇÀº ÀüüÀûÀ¸·Î nullÀ» ¸®ÅÏÇÑ´Ù. value ¾ÖÆ®¸®ºäÆ®¸¦ °è»êÇÑ °ªÀÌ null À̱⠶§¹®¿¡ <c:out> ű״ default ¾ÖÆ®¸®ºäÆ®¸¦ °è»êÇÑ °á°ú¸¦ ¾Æ¿ôDzÇÑ´Ù.

Âü°íÀÚ·á

¸ñ Â÷:
JSTL 1.0
Expression language
¹üÀ§ º¯¼ö
³»Àå °´Ã¼
Á¢±ÙÀÚ
¿¬»êÀÚ
¸®ÅÍ·²
Taglib Áö½Ã¹®
º¯¼ö ű×
¾Æ¿ôDz
µðÆúÆ® °ªÀ¸·Î º¯¼ö ¼³Á¤Çϱâ
Âü°í ÀÚ·á
ÇÊÀÚ ¼Ò°³
±â»ç¿¡ ´ëÇÑ Æò°¡
°ü·Ã dW ¸µÅ©:
Using JSPs and custom tags within VisualAge for Java and WebSphere Studio
Take control of your JSP pages with custom tags
JSP taglibs: Better usability by design
Subscribe to the developerWorks newsletter
US ¿ø¹® Àбâ
Also in the Java zone:
Tutorials
Tools and products
Code and components
Articles
ÇÊÀÚ¼Ò°³
Mark Kolb´Â ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀ̸ç Web Development with JavaServer Pages, 2nd EditionÀÇ °øµ¿ÀúÀÚÀÌ´Ù.
ÀÌ ±â»ç¿¡ ´ëÇÏ¿© ¾î¶»°Ô »ý°¢ÇϽʴϱî?

Á¤¸» ÁÁ´Ù (5) ÁÁ´Ù (4) ±×Àú±×·¸´Ù (3) ¼öÁ¤º¸¿ÏÀÌ ÇÊ¿äÇÏ´Ù(2) ÇüÆí¾ø´Ù (1)

  È¸»ç¼Ò°³  |  °³ÀÎÁ¤º¸ º¸È£Á¤Ã¥  |  ¹ý·ü  |  ¹®ÀÇ