JavaServer PagesTM (JSPTM)°¡ Á¡Á¡ ³Î¸® À¥±â¹Ý ¾îÇø®ÄÉÀ̼ÇÀ¸·Î ÀÚ¸®Àâ¾Æ°¡¸é¼, °³¹ß°ú À¯Áöº¸¼ö¿¡ Á¾»çÇÏ´Â ¸¹Àº JSP ÇÁ·Î±×·¡¸Óµé°ú À¥ °³¹ßÀÚµéÀº, ¿¹Àü¿¡ ÀÚ¹ÙÇÁ·Î±×·¡¸ÓµéÀÌ °Þ¾ú´ø °Í°ú °°Àº µô·¹¸¶¿¡ Á÷¸éÇß´Ù. "¾î¶»°Ô JSP Äڵ带 Â¥¸é Àбâ, ¾²±â, À¯Áöº¸¼öÇϱ⸦ ÀϰüÀûÀ¸·Î ½±°Ô ÇÒ ¼ö ÀÖÀ»±î?"
ÀÌ ±ÛÀº, À¥ ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇÏ´Â ÀüÇüÀûÀÎ ¼ÒÇÁÆ®¿þ¾î ÇÁ·ÎÁ§Æ®¿¡¼ ÁؼöÇØ¾ß ÇÒ JSP(1.1 °ú 1.2¹öÀü) Ç¥ÁØ ÀÛ¼º¿ä·ÉÀ» Á¦¾ÈÇÑ´Ù. ÀÌ ¹®¼ÀÇ ¸ðü´Â ÀÚ¹Ù ¾ð¾î ÄÚµå ÀÛ¼º¿ä·ÉÀÌ´Ù. (JSP ¿Í °ü·ÃµÈ) ÄÚµå ÀÛ¼º ¹æ¹ý ½ºÆå¿¡ ¼Ò°³µÈ ´Ù¾çÇϰí Áß¿äÇÑ ¿ä¼ÒµéÀ» È®ÀÎÇÒ ¼ö ÀÖ´Â ÅÛÇø´À¸·Î »ï¾Ò´Ù. ƯÈ÷, ÆÄÀϸí, ±¸¼º, µé¿©¾²±â, ÁÖ¼®, Áö½ÃÀÚ, ¼±¾ð¹®, ½ºÅ©¸³Æ²¸´, Ç¥Çö½Ä, °ø¹é, ¸í¸í¹ý(À̸§ Áþ´Â ¹ý), ÇÁ·Î±×·¡¹Ö ½À°ü µîÀ» ¼Ò°³ÇÑ´Ù. óÀ½À¸·Î ½ÃµµµÇ´Â JSP ÄÚµå ÀÛ¼º¿ä·ÉÀ̱⠶§¹®¿¡, ÀÌ ±Ç°í ¹®¼¿¡ ´ëÇÑ ¿©·¯ºÐµéÀÇ °ü½É°ú Çǵå¹éÀ» ±â´Ù¸°´Ù. ¿¬¶ôó´Â jsp-codeconv-comments@sun.comÀÌ´Ù.
JSP 2.0 ½ºÆå¿¡¼´Â 1.2 ¹öÀüÀ» ¸ðµÎ Æ÷¿ëÇÏÁö¸¸, ½ºÅ©¸³Æ®°¡ ¾ø´Â ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏ(¼±¾ð¹®, ½ºÅ©¸³Æ²¸´, Ç¥Çö½ÄÀÌ ¾ø´Â)À» ÁöÇâÇϰí, ¼ö¸¹Àº »õ Ư¡µéÀ» °®°í ÀÖ¾î¼, ÀÌ ÀÛ¼º¿ä·ÉÀ» ´õ Áøº¸½ÃÄÑ¾ß µÉ Çʿ䰡 ÀÖ´Ù. °¡´ÉÇÑ ÇÑ, ÀÌ ¹®¼´Â »õ·Î¿î JSP 2.0 Ư¡¿¡ µµ¿òÀ» ÁÖ´Â ÀÛ¼º¹æ½ÄÀ» ¼±ÅÃÇß´Ù.
¸¶Áö¸·À¸·Î, ÀÌ ±ÛÀ» Àд ¼öÁØÀº JSP, Java, ÀÚ¹Ù ÄÚµå ÀÛ¼º¿ä·É¿¡ Àͼ÷ÇØ¾ß Çϰí, ÀÌ¹Ì ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÏ´Â ÆÀ¿¡ Àû¿ëÀÌ µÇ¾î ÀÖ¾î¾ß µÈ´Ù. ±×·¸Áö ¾Ê´Ù¸é, ÀÌ ¸µÅ©¸¦ ÀÐ¾î º¸±â¸¦ ÃßõÇÑ´Ù. Java ¸µÅ© JSP ¸µÅ©.
¡¡
ÄÚµå ÀÛ¼º¿ä·ÉÀº ÇÁ·Î±×·¡¸Ó¿Í À¥ ÄÁÅÙÃ÷ °³¹ßÀÚ¿¡°Ô ¿©·¯ °¡Áö ÀÌÀ¯·Î Áß¿äÇÏ´Ù:
ÆÄÀÏ À̸§Áþ±â´Â Åø º¥´õ¿Í À¥ ÄÁÅ×À̳ʷΠÇÏ¿©±Ý ÆÄÀÏ Å¸ÀÔÀ» ÀνÄÇϰí, °¢°¢¿¡ ¸Â°Ô ÇØ¼®ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ´ÙÀ½ Å×À̺íÀº ÃßõÇÏ´Â ¹æ½ÄÀÇ ÆÄÀÏ È®ÀåÀÚ¿Í À§Ä¡ ¸ñ·ÏÀÌ´Ù.
| File Type | File È®ÀåÀÚ | Ãßõ À§Ä¡ |
| JSP | .jsp |
<context root>/<subsystem path>/ |
| JSP fragment | .jsp |
<context root>/<subsystem path>/ |
.jspf |
<context root>/WEB-INF/jspf/<subsystem path>/ | |
| cascading style sheet | .css |
<context root>/css/ |
| javascript | .js |
<context root>/js/ |
| HTML page | .html |
<context root>/<subsystem path>/ |
| web resource | .gif, .jpg, etc. |
<context root>/images/ |
| tag library descriptor | .tld |
<context root>/WEB-INF/tld/ |
À§ Å×À̺íÀ» º¼ ¶§ ¸î °¡Áö À¯³äÇÒ °ÍÀÌ ÀÖ´Ù. ¿ì¼±, <context root> ´Â À¥ ¾îÇø®ÄÉÀ̼Ç(.war ÆÄÀÏ ³»ÀÇ ·çÆ® µð·ºÅ丮) ÄÁÅØ½ºÆ®ÀÇ ·çÆ®ÀÌ´Ù. µÑ°·Î, <subsystem path> ´Â µ¿Àû, Á¤Àû À¥ÆäÀÌÁö ÄÁÅÙÃ÷ÀÇ ³í¸®ÀûÀÎ ±×·ìÀ¸·Î ³ª´©µµ·Ï ÇÑ´Ù. ÀÛÀº À¥ ¾îÇø®ÄÉÀ̼ÇÀÏ °æ¿ì, ÀÌ°Ô ÇÊ¿äÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. (ÇÑ °÷¿¡ ¸ðµÎ ³õ¾Æµµ µÈ´Ù.)
¼¼Â°·Î, ´Ù¸¥ JSP ÆÄÀÏ¿¡ Æ÷ÇԵǴ JSP ¸¦ ¾ð±ÞÇÒ ¶§ JSP fragment (JSP ÇÁ·¡±×¸ÕÆ® Á¶°¢)¶ó´Â ¿ë¾î¸¦ »ç¿ëÇÑ´Ù. ÁÖÀÇÇÒ °ÍÀº JSP 2.0 ¿¡¼´Â "JSP fragment" ¿ë¾î°¡ °ãÄ¡±â ¶§¹®¿¡ "JSP ¼¼±×¸ÕÆ®(JSP segment)" ¿ë¾î°¡ ´ë½Å »ç¿ëµÈ´Ù. JSP fragment ´Â È®ÀåÀÚ·Î .jsp ¶Ç´Â .jspf ¸¦ »ç¿ëÇϰí,
/WEB-INF/jspf³ª ´Ù¸¥ Á¤ÀûÀÎ ÄÁÅÙÃ÷¿Í ÇÔ²² °¢°¢ À§Ä¡ÇÏ¸é µÈ´Ù. ºÒ¿ÏÀüÇÑ JSP fragment´Â ¾ðÁ¦³ª .jspf È®ÀåÀÚ¸¦ »ç¿ëÇϰí, /WEB-INF/jspf¿¡ À§Ä¡ÇØ¾ß µÈ´Ù. ³×°·Î, JSP ½ºÆå¿¡¼´Â JSP fragment È®ÀåÀÚ·Î .jspf¿Í .jsp ¾çÂÊ ¸ðµÎ¸¦ ±ÇÀåÇÏÁö¸¸, ÃßõÇÏ´Â °ÍÀº .jspf Àε¥, .jsf ´Â JavaServer Faces™ ½ºÆå¿¡¼ »ç¿ëµÉ °ÍÀ̱⠶§¹®ÀÌ´Ù.
³¡À¸·Î, ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ ÆÄÀÏÀ̳ª ´Ù¸¥
ºñ°ø°³ÀûÀÎ ÄÁÅÙÃ÷´Â WEB-INF/
¶Ç´Â ÀÌ ÇÏÀ§ µð·ºÅ丮¿¡ ³õ¾ÆµÎ´Â °ÍÀº º¸ÆíÀûÀ¸·Î ÁÁÀº
½À°üÀÌ´Ù. À¥ ÄÁÅ×À̳ʴ WEB-INF/
¾Æ·¡ ÀÖ´Â ¾î¶² ÆÄÀϵµ ¼ÛÃâÇÏÁö ¾Ê±â ¶§¹®¿¡, ÀÌ ¹æ¹ýÀ»
»ç¿ëÇϸé, Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÇϰųª º¼ ¼ö ¾ø°Ô µÈ´Ù.
¹èÄ¡ ¼³¸íÀÚ(web.xml)ÀÇ
welcome-file ¿¤¸®¸ÕÆ®¿¡
¼±¾ðµÇ¾î ÀÖ´Â À£ÄÄ ÆÄÀÏÀÇ À̸§Àº µ¿ÀûÀÎ ÄÁÅÙÃ÷¸¦
»ý¼ºÇÏ·Á¸é, index.jsp °¡
µÇ¾î¾ß µÇ°í, Á¤ÀûÀÎ À£ÄÄ ÆäÀÌÁö¶ó¸é index.html
·Î ÇØ¾ß ÇÑ´Ù.
JSP ÆÄÀÏÀ» ´Ù±¹¾î·Î ÀÛ¼ºÇÒ ¶§, ·ÎÄÉÀÏ¿¡ µû¶ó µð·ºÅ丮¸¦
³ª´©¾î ±×·ì Áþ±â¸¦ ÃßõÇÑ´Ù. ¿¹¸¦ µé¾î¼ index.jsp
ÀÇ US English ¹öÀüÀº /en_US/index.jsp
¿¡, °°Àº ÆÄÀÏÀÇ ÀϺ»¾îÆÇÀº /ja_JP/index.jsp
¿¡ ÀÖ°Ô ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ÀÚ¹Ù ÄÚµåÀÇ ±¹Á¦È¿¡ °üÇÑ
Ãß°¡ÀûÀÎ Á¤º¸´Â Java Tutorial
¿¡ ÀÖ°í, À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ ±¹Á¦È¿¡ ´ëÇÑ Á¤º¸´Â Designing Enterprise Applications with the J2EETM Platform
Ã¥¿¡ ³ª¿ÍÀÖ´Ù.
±¸Á¶°¡ Àß °®ÃçÁø ¼Ò½º ÄÚµå ÆÄÀÏÀº Àб⠽±°í, ÆÄÀÏ »çÀÌ¿¡ Á¤º¸¸¦ ´õ »¡¸® ³õ¾ÆµÑ ¼ö ÀÖ´Ù. ÀÌ ¼½¼Ç¿¡¼, JSP¿Í ÅÂ±× ¶óÀ̺귯¸® µð½ºÅ©¸³ÅÍ ÆÄÀÏ ¸ðµÎ¸¦ À§ÇÑ ±¸Á¶¸¦ ¼Ò°³ÇÏ·ÁÇÑ´Ù.
JSP ÆÄÀÏÀº ´ÙÀ½ÀÇ ¼½¼ÇµéÀÌ ³ª¿ÇÑ ¼ø¼´ë·Î ±¸¼ºµÈ´Ù:
JSP ÆÄÀÏ ¶Ç´Â ÇÁ·¡±×¸ÕÆ® ÆÄÀÏÀº ¼¹öÃø ÁÖ¼®À¸·Î ½ÃÀÛÇÑ´Ù:
<%-- - ÀÛ¼ºÀÚ: - ÀÏÀÚ: - ÀúÀÛ±Ç Ç¥½Ã: - @(#) - ¼³¸í: --%>
ÀÌ ÁÖ¼®Àº ¼¹öÃø¿¡¼¸¸ º¼ ¼ö ÀÖ´Ù. JSP º¯È¯ °úÁ¤¿¡¼ Á¦°ÅµÇ±â ¶§¹®ÀÌ´Ù. ¿©±â¿¡´Â À¥ °³¹ßÀÚ¸¦ À§ÇÑ JSP¿¡ ´ëÇÑ ÀÛ¼ºÀÚ, ÀÏÀÚ, °³Á¤ÆÇÀÇ ÀúÀÛ±Ç, Áõ¸í°ú ¼³¸íÀÌ Æ÷ÇԵȴÙ. "@(#) " ¹®ÀÚ Á¶ÇÕÀº Áõ¸íÀÇ ½ÃÀÛÀ» Áö½ÃÇÏ´Â °ÍÀ¸·Î ¾î¶² ÇÁ·Î±×·¥¿¡¼ ÀνĵȴÙ. ÀÌ·± Ç¥½ÄÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥µéÀº ¸¹ÀÌ »ç¿ëµÇÁö ¾ÊÁö¸¸, À־ ÇØ°¡ µÉ °ÍÀº ¾ø´Ù. Ãß°¡·Î, ÀÌ Á¶ÇÕÀº ¶§¶§·Î "$Id$" ¸¦ µ¡ºÙ¿©¼, ¾î¶² Á¾·ùÀÇ ¹öÀü °ü¸® ÇÁ·Î±×·¥¿¡¼´Â ÀÚµ¿À¸·Î Áõ¸í Á¤º¸¸¦ JSP¿¡ ±â·ÏÇϵµ·Ï ÇÑ´Ù. ¼³¸í ºÎºÐÀº JSPÀÇ ¸ñÀû¿¡ °üÇÑ Ãà¾àµÈ Á¤º¸¸¦ Á¦°øÇÑ´Ù. ÇÑ ¹®´Ü ÀÌ»ó ³Ñ¾î°¡Áö ¾Êµµ·Ï ÇÑ´Ù.
¾î¶² »óȲ¿¡¼´Â, µµÀÔ ÁÖ¼®ÀÌ JSP º¯È¯°úÁ¤À» Áö³ª¼ Ãâó°¡ È®½ÇÇÏ´Ù´Â ¶æ°ú ¹ýÀûÀÎ ¸ñÀûÀ¸·Î Ŭ¶óÀ̾ðÆ®ÀÇ ºê¶ó¿ìÀú¿¡ º¸¿©Áú Çʿ䰡 ÀÖ´Ù. ÀÌ·² °æ¿ì ÁÖ¼® ºÎºÐÀ» µÎ°³·Î ³ª´²¼ ¿ì¼± Ŭ¶óÀ̾ðÆ®Ãø ½ºÅ¸ÀÏÀÇ ÁÖ¼®À» ´Ü´Ù:
<!-- - Author(s): - Date: - Copyright Notice: --%>
±×¸®°í ³ª¼ ª¾ÆÁø ³ª¸ÓÁö ¼¹öÃø ½ºÅ¸ÀÏÀÇ ÁÖ¼®À» ´Ü´Ù:
<%-- - @(#) - Description: --%>
JSP ÆäÀÌÁö Áö½ÃÀÚ´Â JSP º¯È¯ ½ÃÁ¡¿¡ °ü·ÃµÈ ¼Ó¼ºÀ» Á¤ÀÇÇÑ´Ù. JSP ½ºÆåÀº °°Àº ÆäÀÌÁö¿¡ JSP ÆäÀÌÁö Áö½ÃÀÚÀÇ ¼ö·®À» Á¦ÇÑÇÏÁö ¾Ê´Â´Ù. ±×·¡¼ ´ÙÀ½ µÎ °³ÀÇ ÄÚµå ¿¹Á¦´Â ¶È°°´Ù.(´Ù¸¥ Á¡ÀÌ Àִµ¥, ù ¿¹Á¦´Â Ãâ·Â½Ã¿¡ ¸Ç À§¿¡ µÎ °³ÀÇ ºó ÁÙÀÌ Æ÷ÇԵȴÙ):
ÄÚµå ¿¹Á¦ 1:
<%@ page session="false" %> <%@ page import="java.util.*" %> <%@ page errorPage="/common/errorPage.jsp" %>
ÆäÀÌÁö Áö½ÃÀÚ °°ÀÌ Áö½ÃÀÚÀÇ ±æÀ̰¡ ÀϹÝÀûÀÎ JSP Æø(80 ¹®ÀÚ)À» ³Ñ¾î°¥ °æ¿ì ¿©·¯ ÁÙ·Î ³ª´²Áø´Ù:
ÄÚµå ¿¹Á¦ 2:
<%@ page session="false"
import="java.util.*"
errorPage="/common/errorPage.jsp"
%>
ÀϹÝÀûÀ¸·Î, ÄÚµå ¿¹Á¦ 2´Â ÄÚµå ¿¹Á¦ 1º¸´Ù Áñ°Ü »ç¿ëµÈ´Ù. ¿¹¿Ü°¡ Àִµ¥, ¸Å¿ì ±ä import ¼Ó¼ºÀ» ¾²°Ô µÇ´Â, ¿©·¯ °³ÀÇ ÀÚ¹Ù ÆÐŰÁö°¡ JSPÆäÀÌÁö¿¡¼ ÇÊ¿äÇÒ °æ¿ìÀÌ´Ù:
<%@ page session="false"
import="java.util.*,java.text.*,
com.mycorp.myapp.taglib.*,
com.mycorp.myapp.sql.*, ..."
...
%>
ÀÌ·± °æ¿ì, ÆäÀÌÁö Áö½ÃÀÚ¸¦ ´ÙÀ½°ú °°ÀÌ ³ª´©´Â °ÍÀÌ Áñ°Ü»ç¿ëµÈ´Ù:
<%-- import¸¦ Á¦¿ÜÇÑ ¸ðµç ¼Ó¼º --%> <%@ page ... %> <%-- import ¼Ó¼ºµéÀº ¿©±âºÎÅÍ ½ÃÀÛ --%> <%@ page import="java.util.*" %> <%@ page import="java.text.*" %> ...
ÁÖÀÇÇÒ Á¡Àº, ÀϹÝÀûÀ¸·Î import¹®Àº ÀÚ¹ÙÀÇ Áö¿ª ÄÚµå ÀÛ¼º¿ä·ÉÀ» ÁؼöÇÑ´Ù. ¿¹¸¦ µé¾î, °°Àº ÆÐŰÁö¿¡¼ ¼¼ °³ÀÇ Å¬·¡½º±îÁö¸¸ »ç¿ëµÇ¸é, import ´Â ÆÐŰÁö¸¦ ¼±¾ðÇϱ⠺¸´Ù´Â, Ŭ·¡½º¸¦ ÀÏÀÏÀÌ ¼±¾ðÇÑ´Ù. ¼¼ °³¸¦ ³Ñ¾î°¡¸é, Ŭ·¡½º¸¦ ÀÏÀÏÀÌ ÁöÁ¤ÇÒ °ÍÀÎÁö ¾Æ´Ï¸é, ".*" Ç¥½Ã¸¦ »ç¿ëÇÒ °ÍÀÎÁö´Â À¥ °³¹ßÀÚ ¸¶À½ÀÌ´Ù. ÀüÀÚÀÇ °æ¿ì, ¿ÜºÎ Ŭ·¡½º°¡ ¹«¾ùÀÌ »ç¿ëµÇ´ÂÁö¸¦ ½±°Ô ¾Ë¼ö ÀÖ´Ù. ƯÈ÷ ¹ö±×°¡ ¸¹Àº Ŭ·¡½º¸¦ À§Ä¡½ÃŰ·Á°í Çϰųª, JSP °¡ ÀÚ¹Ù ÄÚµå¿Í ¾î¶»°Ô »óÈ£ÀÛ¿ëÇÏ´ÂÁö¸¦ ÀÌÇØÇÏ·ÁÇÒ °æ¿ì¿¡ À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¾î¼, ¾Æ·¡Ã³·³ ÀÓÆ÷Æ®ÇÑ ÀÚ¹Ù ÆÐŰÁöµé¿¡ °üÇØ ¾ËÁö ¸øÇϸé, À¥ °³¹ßÀÚ´Â Customer Ŭ·¡½º¸¦ ã±â À§Çؼ ÀÌ ¸ðµç ÆÐŰÁöµéÀ» °Ë»öÇØºÁ¾ß µÈ´Ù:
<%@ page import="com.mycorp.bank.savings.*" %> <%@ page import="com.thirdpartycorp.cashmanagement.*" %> <%@ page import="com.mycorp.bank.foreignexchange.*" %> ...
ÈÄÀÚÀÇ °æ¿ì, ÀÛ¼ºµÈ JSP °¡ ±ò²ûÇÏÁö¸¸, »ç¿ëÇÑ Å¬·¡½º°¡ ¹«¾ùÀÎÁö ¾Æ´Â °ÍÀº ¾î·Á¿öÁø´Ù. ÀϹÝÀûÀ¸·Î, JSP ¿¡ ÀÓÆ÷Æ® Áö½ÃÀÚ°¡ ³Ê¹« ¸¹À¸¸é, ÀÚ¹Ù Äڵ尡 ³Ê¹« ¸¹ÀÌ µé¾î°¡ Àֱ⠽±´Ù. º¸´Ù ³ªÀº ¼±ÅÃÀº JSP ű׸¦ ´õ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.(ÈÄ¿¡ ¾ð±ÞÇϰڴÙ).
ÅÂ±× ¶óÀ̺귯¸® Áö½ÃÀÚ´Â JSP ¿¡¼ »ç¿ëÇÏ´Â Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¸¦ ¼±¾ðÇÑ´Ù. ªÀº Áö½ÃÀÚ´Â ÇϳªÀÇ ÁÙ¿¡ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ¿©·¯ °³ÀÇ ÅÂ±× ¶óÀ̺귯¸® Áö½ÃÀÚµéÀº JSP ÀÇ ÇÑ °÷¿¡ °°ÀÌ ¸ð¾ÆµÐ´Ù:
<%@ taglib uri="URI1" prefix="tagPrefix1" %> <%@ taglib uri="URI2" prefix="tagPrefix2" %> ...
ÆäÀÌÁö Áö½ÃÀÚó·³, ÅÂ±× ¶óÀ̺귯¸® Áö½ÃÀÚÀÇ ±æÀ̰¡ ÀϹÝÀûÀÎ JSP Æø(80 ¹®ÀÚ)À» ³Ñ¾î°¥ °æ¿ì ¿©·¯ ÁÙ·Î ³ª´²Áø´Ù:
<%@ taglib
uri="URI2"
prefix="tagPrefix2"
%>
¿ÀÁ÷ ÆäÀÌÁö¿¡¼ »ç¿ëÇÏ´Â ÅÂ±× ¶óÀ̺귯¸®¸¸ ÀÓÆ÷Æ®µÇ¾î¾ß ÇÑ´Ù.
JSP 1.2 ºÎÅÍ, À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ JSP¿¡ JSTL;JSP Ç¥ÁØ ÅÂ±× ¶óÀ̺귯¸®»ç¿ëÇϱ⸦ Àû±Ø ±ÇÀåÇÑ´Ù. ÆäÀÌÁö¿¡¼ JSP ½ºÅ©¸³Æ²¸´ »ç¿ëÇÒ Çʿ並 ÁÙ¿©Áֱ⠶§¹®ÀÌ´Ù. ÀϹÝÀûÀ¸·Î, JSTLÀ» »ç¿ëÇÏ´Â ÆäÀÌÁö´Â ¼Ò½ºÀбâ¿Í À¯Áöº¸¼ö°¡ º¸´Ù ÆíÇÏ´Ù.
JSP ¼±¾ð¹®Àº JSP¿¡¼ ¼Ò¼ÓµÈ ¸Þ¼Òµå¿Í º¯¼ö¸¦ ¼±¾ðÇÑ´Ù. ÀÌµé ¸Þ¼Òµå¿Í º¯¼ö´Â ÀÚ¹Ù ÇÁ·Î±×·¥¿¡¼ÀÇ ¼±¾ð¹®°ú ´Ù¸¦¹Ù ¾ø´Ù. ±×·¡¼ ÀûÀýÇÑ ÄÚµå ÀÛ¼º¿ä·ÉÀ» µû¸£±â¸¸ ÇÏ¸é µÈ´Ù. ¼±¾ð¹®Àº <%! ... %> JSP ¼±¾ð¹® ºí·Ï Çϳª¿¡ ¸ðµÎ ¸ô¾Æ¼ ÇÑ °÷¿¡ ÁýÁßÇØ ³õ´Â °ÍÀÌ ÁÁ´Ù. ¿¹¸¦ µé¸é:
| ´Ù¸¥ ¼±¾ð¹® ºí·Ïµé | ¹Ù¶÷Á÷ÇÑ ¼±¾ð¹® ºí·Ï |
<%! private int hitCount; %>
<%! private Date today; %>
...
<%! public int getHitCount() {
return hitCount;
}
%>
|
<%!
private int hitCount;
private Date today;
public int getHitCount() {
return hitCount;
}
%> |
ÀÌ ¼½¼ÇÀº JSP ÄÚµå¿Í HTML ÀÌ ¼¯¿©ÀÖ´Â ÆäÀÌÁö¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. JSP Ç¥Çö½Ä, ½ºÅ©¸³Æ²¸´, ÀÚ¹ÙºóÁî Áö½ÃÀÚ µîÀÌ ÇØ´çµÈ´Ù.
ÅÂ±× ¶óÀ̺귯¸® ¼³¸í¼(TLD)´Â Àû´çÇÑ XML¼±¾ð°ú ¿Ã¹Ù¸¥ DTD ¹®À¸·Î ½ÃÀÛÇÑ´Ù. ¿¹¸¦ µé¾î¼, JSP 1.2 TLD ´Â ´ÙÀ½°ú °°ÀÌ ½ÃÀÛÇØ¾ß µÈ´Ù:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
¹Ù·Î µÚÀÌ¾î ¼¹öÃø ÁÖ¼®°ú °°Àº ½ºÅ¸ÀÏÀÇ ÁÖ¼®À» ±âÀÔÇÑ´Ù. ÀÛ¼ºÀÚ, ÀÏÀÚ, ÀúÀÛ±Ç, Áõ¸í Á¤º¸, ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÂªÀº ¼³¸íÀÌ´Ù:
<!-- - ÀÛ¼ºÀÚ: - ÀÏÀÚ: - ÀúÀÛ±Ç Ç¥½Ã: - @(#) - ¼³¸í: -->
¿©±â¿¡ °üÇÑ ±ÔÄ¢°ú °¡À̵å¶óÀÎÀº JSP ÆÄÀÏ/ÇÁ·¡±×¸ÕÆ® ÆÄÀÏ¿¡¼ Á¤ÀÇµÈ °Í°ú µ¿ÀÏÇÏ´Ù.
ÅÂ±× ¶óÀ̺귯¸® ÆÄÀÏÀÇ ³ª¸ÓÁö´Â ´ÙÀ½¿¡ ³ª¿À´Â ¼ø¼´ë·Î ÀÌ·ç¾îÁ® ÀÖ´Ù:
TLD ¿¡¼ ¿¤¸®¸ÕÆ® ¸¶Áö¸·¿¡ ¼±ÅÃÀû ¼ºê ¿¤¸®¸ÕÆ®¸¦ Ç×»ó µ¡ºÙÀ̱⸦ ÃßõÇÑ´Ù. ÀÌ ¼±ÅÃÀû ¼ºê ¿¤¸®¸ÕÆ®´Â ÅÂ±× µðÀÚÀ̳ʰ¡ TLDÀÇ ½À¼º°ú Ãß°¡ÀûÀÎ Á¤º¸¸¦ ¹®¼ÈÇÒ Àå¼Ò¸¦ Á¦°øÇÑ´Ù. À̰ÍÀº À¥ ÄÄÆ÷³ÍÆ® °³¹ßÀڵ鿡°Ô´Â º¸ÀÌÁö ¾Ê°Ô µÈ´Ù.
| TLD Element | JSP 1.2 Recommended Sub-element |
JSP 1.1 Recommended Sub-element |
| attribute (JSP 1.2) | description | |
| init-param (JSP 1.2) | description | |
| tag | display-name, description, example | name, info |
| taglib | uri, display-name, description | uri, info |
| validator (JSP 1.2) | description | |
| variable (JSP 1.2) | description |
µé¿©¾²±â´Â ¹Ýµå½Ã °ø¹é¹®ÀڷΠä¿ö¾ßÇÑ´Ù. ÅÇÀº »ç¿ëÇÏ´Â ¿¡µðÅ͸¶´Ù Ç¥½ÃÇÏ´Â °ø¹éÀÇ ¼ö°¡ ´Ù¸£±â ¶§¹®¿¡ JSP ³»¿¡¼ µé¿©¾²±â·Î »ç¿ëÇϱ⿡´Â ÀûÇÕÇÏÁö ¾Ê´Ù. Ưº°È÷ ÅëÇÕ°³¹ßȯ°æ(IDE) Åø¿¡¼ Á¦ÇѵÇÁö ¾Ê¾Ò´Ù¸é, ±âº» µé¿©¾²±â ´ÜÀ§´Â 4°³ÀÇ °ø¹é¹®ÀÚ·Î ÇÑ´Ù. ´ÙÀ½Àº ±× »ç¿ë¿¹ÀÌ´Ù:
<myTagLib:forEach var="client" items="${clients}">
<myTagLib:mail value="${client}" />
</myTagLib:forEach>
¿¬¼Ó µé¿©¾²±â´Â ÀÌÀü ÁÙÀÇ Àû´çÇÑ ÁöÁ¡¿¡¼ ½ÃÀÛÇÑ´Ù. ¿¬¼Ó µé¿©¾²±âÀÇ °ø¹éÀº ±âº» µé¿©¾²±â °ø¹éÀÇ ¹è¼öÀÌ´Ù. (4°³ÀÇ °ø¹é¹®ÀÚÀÇ ¹è¼ö):
<%@ page attribute1="value1"
attribute2="value2"
...
attributeN="valueN"
%>
JSP ½ºÅ©¸³Æ® ¿¤¸®¸ÕÆ®(¼±¾ð¹®, ½ºÅ©¸³Æ²¸´, Ç¥Çö½Ä°ú °°Àº)°¡ ÇÑ ÁÙ¿¡ ¸ÂÁö ¾Ê´Â °æ¿ì, ½ºÅ©¸³Æ® ¾ð¾îÀÇ µé¿©¾²±â ÀÛ¼º¿ä·ÉÀÌ ¿¤¸®¸ÕÆ® ³»¿¡ Àû¿ëµÈ´Ù. ¸öü´Â ¿¤¸®¸ÕÆ®ÀÇ ¿©´Â ±âÈ£ <%=¿Í °°Àº ÁÙ¿¡¼ ½ÃÀÛÇÑ´Ù. ´ÙÀ½ÁÙÀÇ ±âÁصµ ¿©´Â ±âÈ£ <%=°¡ µÈ´Ù. ¸öüÀÇ ³¡Àº ´Ù¸¥ ÁÙ¿¡ ÀÖ´Â ¿¤¸®¸ÕÆ®ÀÇ ´Ý´Â ±âÈ£(%>)·Î ¸¶¹«¸®µÈ´Ù. ¿¹Á¦ÀÌ´Ù:
<%= (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
= Calendar.SUNDAY) ?
"Sleep in" :
"Go to work"
%>
ùÁÙ°ú ¸¶Áö¸· ÁÙÀ» Á¦¿ÜÇÑ ¸öüÀÇ °¡¿îµ¥ ÁÙµéÀº ´ÜÀ§ µé¿©¾²±â °ø¹é(¾Õ ¿¹Á¦¿¡¼ ·Î º¸ÀδÙ)ÀÌ ¾Õ¿¡ Àֱ⠶§¹®¿¡ ³ª¸ÓÁö JSP º¸´Ù È®¿¬È÷ µå·¯³ª°Ô µÈ´Ù.
ÀÚ¹ÙÀÇ ½ºÅ©¸³Æ® ÄÚµå¿Í ÅÛÇø´ ÅØ½ºÆ®(HTML)°¡ ¼¯¿©ÀÖ´Â JSP ¿¤¸®¸ÕÆ®¸¦ À§Çؼ º¹ÇÕ µé¿©¾²±â°¡ ÇÊ¿äÇÑ ÀÌÀ¯´Â JSP ¼Ò½º¸¦ ÀÌÇØÇϱâ À§ÇØ µå´Â ³ë·ÂÀ» ´ú¾îÁÖ±â À§ÇؼÀÌ´Ù. ±âÁ¸ÀÇ µé¿©¾²±â ¿ä·ÉÀº JSP ¼Ò½ºÆÄÀÏÀ» ´õ ¾Ë¾Æº¸±â ¾î·Æ°Ô ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. º¸ÆíÀûÀÎ ±ÔÄ¢¿¡ µû¶ó¼, ´Ù¸¥ ¼Ò½º »çÀÌ¿¡ ³¢¾î ÀÖÀ» °æ¿ì¸¶´Ù º¸Åë µé¿©¾²±â¿¡ Ưº°ÇÑ ´ÜÀ§¸¦ ÇÒ´çÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡ º¸¿©Áö´Â µé¿©¾²±â¿¡ ¿µÇâÀ» ÁØ´Ù. Ãß°¡ÀûÀÎ µé¿©¾²±â´Â (ºê¶ó¿ìÀú¿¡ ÀÇÇØ) º¸Åë ¹«½ÃµÇ°í, ºê¶ó¿ìÀú¿¡ ³ªÅ¸³ª´Â °á°ú´Â Â÷À̰¡ ¾ø´Ù. ¿¹¸¦ µé¾î, <TABLE> ÅÂ±× ¾Õ¿¡ °ø¹éÀÌ ¸î °³ ´õ Ãß°¡µÈ´Ù°í ÇØ¼, ºê¶ó¿ìÀú¿¡¼ º¸¿©Áö´Â Å×À̺íÀÇ À§Ä¡°¡ ´Þ¶óÁö´Â °ÍÀº ¾Æ´Ï´Ù. ±×·¡¼ ÀÌ·¯ÇÑ ÀÛ¼º¿ä·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÌ ´õ ÁÁ¾Æ º¸ÀδÙ:
<table>
<% if { tableHeaderRequired ) { %>
<tr>
<th>Last Name</th>
<th>First Name</th>
</tr>
<% } %>
<c:forEach var="customer" items="${customers}">
<tr>
<td><c:out value="${customer.lastName}"/></td>
<td><c:out value="${customer.firstName}"/></td>
</tr>
</c:forEach>
</table>
À§ ¹æ½Äº¸´Ù´Â ¾Æ·¡ ¹æ½ÄÀÌ ³´´Ù:
<table>
<% if { tableHeaderRequired ) { %>
<tr>
<th>Last Name</th>
<th>First Name</th>
</tr>
<% } %>
<c:forEach var="customer" items="${customers}">
<tr>
<td><c:out value="${customer.lastName}"/></td>
<td><c:out value="${customer.firstName}"/></td>
</tr>
</c:forEach>
</table>
ÁÖ¼®Àº Ãß°¡ Á¤º¸ Àü´ÞÀ̳ª Äڵ带 µÑ·¯½Ò ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù. ¿©±â¼´Â JSP¿¡¼ »ç¿ëÇÏ´Â µÎ°¡Áö ÇüÅÂÀÇ ÁÖ¼®À» º¼ °ÍÀÌ´Ù: JSP Ãø°ú Ŭ¶óÀÌ¾ðÆ® Ãø ÁÖ¼®ÀÌ´Ù.
JSP ÁÖ¼®(¶Ç´Â ¼¹ö Ãø ÁÖ¼®)Àº ¼¹ö¿¡¼¸¸ º¼ ¼ö ÀÖ´Ù(Áï, Ŭ¶óÀÌ¾ðÆ®·Î ÀüÆÄµÇÁö ¾Ê´Â´Ù). ¼ø¼ö JSP ÁÖ¼®À» ½ºÅ©¸³ÆÃ ¾ð¾î¿Í ¼¯¿©ÀÖ´Â JSP ÁÖ¼®º¸´Ù Áñ°Ü »ç¿ëÇÑ´Ù. ÀüÀÚ°¡ ±â¹Ý ½ºÅ©¸³Æ® ¾ð¾î¿¡ ´ú Á¾¼ÓÀûÀ̱⠶§¹®À̰í, JSP 2.0 À¸·Î ÁøÈÇϱ⠴õ ½±±â ¶§¹®ÀÌ´Ù. ´ÙÀ½ µµÇ¥´Â À̰ÍÀ» ¼³¸íÇÑ´Ù:
| Line | JSP ½ºÅ©¸³Æ²¸´°ú ½ºÅ©¸³Æ® ¾ð¾î ÁÖ¼® | ¼ø¼ö JSP ÁÖ¼® |
| ÇÑ ÁÙ | <% /** ... */ %>
<% /* ... */ %>
<% // ... %>
|
<%-- ... --%>
|
| ¿©·¯ ÁÙ | <%
/*
*
...
*
*/
%>
|
<%--
-
...
-
-- %>
|
<%
//
//
...
//
%>
|
Ŭ¶óÀÌ¾ðÆ® Ãø ÁÖ¼®(<!-- ... -->)Àº ÀÀ´ä¿¡ ´ëÇØ¼ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ Ŭ¶óÀÌ¾ðÆ®·Î º¸³»±â À§ÇØ ÀÀ´ä¿¡ ÁÖ¼®À» ´Ù´Â °ÍÀÌ´Ù. ¼¹ö ¾îÇø®ÄÉÀ̼ÇÀÇ ÇൿÀ̳ª ³»ºÎÀûÀÎ ±¸Á¶¿¡ ´ëÇÑ °Í°ú ÀÀ´ä ³»¿ëÀ» »ý¼ºÇÏ´Â Äڵ尡 Æ÷ÇԵǾ ¾ÈµÈ´Ù.
Ŭ¶óÀ̾ðÆ®/»ç¿ëÀÚÀÇ ÀÔÀå¿¡¼ ¼¹ö¿¡¼ º¸³»¿Â ÀÀ´äÀ» ÇØ¼®Çϱâ À§Çؼ ÀÌ·± Á¾·ùÀÇ ÁÖ¼®À» Á÷Á¢ º¼ Çʿ䰡 ¾ø±â ¶§¹®¿¡, Ŭ¶óÀÌ¾ðÆ® Ãø ÁÖ¼®Àº º¸ÆíÀûÀ¸·Î »ç¿ëµÇÁö ¾Ê´Â´Ù. ¾Õ¼ ¾ê±âÇÑ´ë·Î Áõ¸íÀ̳ª, ÀúÀÛ±Ç Á¤º¸ µîÀÇ ¹ýÀûÀÎ ¸ñÀûÀÇ Áõ¸í¿¡ »ç¿ëµÉ °æ¿ì´Â ¿¹¿Ü°¡ µÇ°Ú´Ù. ´Ù¸¥ ¿¹¿ÜÀûÀÎ °æ¿ì´Â HTML ÀúÀÛµµ±¸µéÀÌ HTML ¹®¼ ±¸Á¶ÀÇ Æ²À» Àâ¾ÆÁÖ±â À§ÇØ ÀÛÀº ¾çÀÇ HTML ÁÖ¼®µéÀ» »ç¿ëÇÏ´Â °æ¿ì°¡ µÇ°Ú´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù:
<!-- Åø¹Ù ¼½¼Ç -->
...
<!-- ¿ÞÂÊ ³×ºñ°ÔÀÌ¼Ç ¸Þ´º -->
...
<!-- main body -->
...
<!-- footer -->
...
JSP ¶Ç´Â Ŭ¶óÀÌ¾ðÆ® Ãø ¸ðµÎ, ¿©·¯ ÁÙÀÇ ÁÖ¼®Àº ´ë½Ã ¹®ÀÚ "-" ·Î ²Ù¸çÁø´Ù. XML ½ºÆå¿¡¼, ´õºí-´ë½Ã ¹®ÀÚ¿ "--"Àº XML ÁÖ¼® ¹® ³»¿¡ Çã¿ëµÇÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î, ÀÌ ½ºÆå¿¡ ȣȯ¼º°ú Àϰü¼ºÀ» °®±â À§Çؼ, ´õºí-´ë½Ã ¹®ÀÚ¿Àº ¿©·¯ÁÙÀÇ ÁÖ¼®¹® ³»¿¡ »ç¿ëµÇ¸é ¾ÈµÈ´Ù. ´ÙÀ½ µµÇ¥´Â Ŭ¶óÀÌ¾ðÆ® Ãø ¿©·¯ ÁÙ ÁÖ¼® »ç¿ë¹ýÀ» º¸¿©ÁØ´Ù:
| ±ÇÀå | XML°ú ¸ÂÁö ¾Ê´Â ¹ý |
<!--
- line 1
- line 2
...
-->
|
<!--
-- line 1
-- line 2
...
-->
|
ÀÚ¹Ù ÄÚµå ÀÛ¼º¿ä·É¿¡ µû¶ó¼, °°Àº ŸÀÔÀÇ º¯¼ö ¼±¾ð¹®Àº ´Ù¸¥ ÁÙ¿¡¼ ÀÌ·ç¾îÁ®¾ß µÈ´Ù:
| ºñ Ãßõ | Ãßõ |
<%! private int x, y; %>
|
<%! private int x; %>
<%! private int y; %>
|
ÀÚ¹ÙºóÁî´Â <jsp:useBean> ¾×¼Ç ű׸¦ »ç¿ëÇÏ´Â ´ë½Å, JSP ¼±¾ð¹®À» ÅëÇØ¼ ¼±¾ðµÇ°í ÀνºÅϽºÈµÇ¸é ¾ÈµÈ´Ù.
ÀϹÝÀûÀ¸·Î, º¯¼ö¸¦ À§ÇÑ JSP ¼±¾ð¹®Àº ±× ÀÚü°¡ ½ºÅ©¸³Æ® ¾ð¾îÀÇ »ç¿ëÀ» ºÎÃß±â±â ¶§¹®¿¡ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. JSP ´Â ÇÁ¸®Á¨Å×ÀÌ¼Ç ¸ñÀûÀ¸·Î ¼³°èµÇ¾ú´Âµ¥, ¿©±â¿¡ ºñÁö´Ï½º ·ÎÁ÷°ú ÀÚ¹ÙÄڵ带 ¼¯¾î³õ±â ¶§¹®ÀÌ´Ù. ±×¸®°í, º¯¼öÀÇ ½ºÄÚÇÁ °ü¸®¿¡ µû¸¥ ºÎ´ãµµ »ý±â°Ô µÈ´Ù.
°¡±ÞÀû, ű׶óÀ̺귯¸®·Î µ¿ÀÏÇÑ ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖÀ¸¸é, JSP ½ºÅ¬¸³Æ²¸´Àº ÇÇÇϱ⠹ٶõ´Ù. ÀÌ·¸°Ô ÇÏ¸é ÆäÀÌÁö °¡µ¶¼ºµµ ³ôÀ̰í, À¯Áöº¸¼öµµ ½¬¿öÁø´Ù. ºñÁö´Ï½º ·ÎÁ÷À» ÇÁ¸®ÁøÅ×ÀÌ¼Ç ·ÎÁ÷¿¡¼ ºÐ¸®Çϴµ¥ ÀÏÁ¶Çϸç, JSP 2.0 ½ºÅ¸ÀÏÀÇ ÆäÀÌÁö·Î ½±°Ô ¿Å°Ü°¥ ¼ö ÀÖ´Ù(JSP 2.0 µµ ½ºÅ©¸³Æ²¸´À» Áö¿øÇÏÁö¸¸ ´ú °Á¶ÇÑ´Ù). ´ÙÀ½ ¿¹Á¦´Â customers Ç¥½Ã ¹æ¹ýÀÌ µ¥ÀÌÅÍ Çü¿¡ µû¶ó¼ ´Ù¸¥ ½ºÅ©¸³Æ²¸´À» »ç¿ëÇÏ´Â °ÍÀ» º¸¿©ÁØ´Ù:
customers ´Â CustomersÀÇ ¹è¿
<table>
<% for ( int i=0; i<customers.length; i++ ) { %>
<tr>
<td><%= customers[i].getLastName() %></td>
<td><%= customers[i].getFirstName() %></td>
</tr>
<% } %>
</table>
customers ´Â Enumeration Çü
<table>
<% for ( Enumeration e = customers.elements();
e.hasMoreElements(); ) {
Customer customer = (Customer)e.nextElement();
%>
<tr>
<td><%= customer.getLastName() %></td>
<td><%= customer.getFirstName() %></td>
</tr>
<% } %>
</table>
±×·¯³ª, °øÅë ű׶óÀ̺귯¸®¸¦ »ç¿ëÇϸé, customers ÀÇ µ¥ÀÌÅÍ ÇüÀÌ ´Þ¶óµµ º¸´Ù ³ôÀº À¯¿¬¼ºÀÌ »ý±ä´Ù. ¿¹¸¦ µé¾î¼, JSTL ¿¡¼´Âcustomers ¸¦ ³ªÅ¸³»±â À§Çؼ ¹è¿°ú Enumeration ¾çÂÊ ¸ðµÎ Áö¿øÇÏ´Â ´ÙÀ½°ú °°Àº ÄÚµå·Î Ç¥½ÃÇÒ ¼ö ÀÖ´Ù:
<table>
<c:forEach var="customer" items="${customers}">
<tr>
<td><c:out value="${customer.lastName}"/></td>
<td><c:out value="${customer.firstName}"/></td>
</tr>
</c:forEach>
</table>
ºñÁö´Ï½º ·ÎÁ÷°ú ÇÁ¸®Á¨Å×ÀÌ¼Ç Ãþ°úÀÇ °áÇÕµµÀ» ÁÙÀ̱â À§ÇÑ ¸ðµ¨-ºä-ÄÁÆ®·Ñ·¯(MVC) µðÀÚÀÎ ÆÐÅÏÀ» Àû¿ëÇÏ·Á°í ÇÑ´Ù¸é, JSP ½ºÅ©¸³Æ²¸´Àº ºñÁö´Ï½º ·ÎÁ÷À» ±¸ÇöÇϱâ À§Çؼ »ç¿ëµÇ¾î¼´Â ¾ÈµÈ´Ù. ¿ÀÈ÷·Á, JSP ½ºÅ©¸³Æ²¸´Àº Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ó¸®ÇÑ µÚ¿¡ ³ª¿À´Â µ¥ÀÌÅÍ("°¡Ä¡ °´Ã¼ value objects"·Î ºÒ¸®´Â)¸¦ ÀûÀýÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ÁغñµÈ Çü½Ä¿¡ Àü¼ÛÇϱâ À§ÇØ ÇÊ¿äÇÏ´Ù¸é »ç¿ëµÈ´Ù. ½ÉÁö¾î ±×·² °æ¿ì¿¡µµ, ÇÁ·ÐÆ® ÄÁÆ®·Ñ·¯ ¼ºí¸´À̳ª Ä¿½ºÅÒ Å±׷ΠÇÏ´Â °Ô ´õ ³´´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½ÀÇ ÄÚµå´Â µ¥ÀÌÅͺ£À̽º¿¡¼ Á÷Á¢ customers ÀÇ À̸§À» °¡Á®¿Í Ŭ¶óÀÌ¾ðÆ®¿¡ º¸¿©ÁØ´Ù:
<%
// ½ºÅ©¸³Æ²¸´À» ÀÌ¿ëÇÏ´Â °ÍÀº ÃßõÇÏÁö ¾ÊÀ½!
Connection conn = null;
try {
// Get connection
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("customerDS");
conn = ds.getConnection();
// Get customer names
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT name FROM customer");
// Display names
while ( rs.next() ) {
out.println( rs.getString("name") + "<br>");
}
} catch (SQLException e) {
out.println("Could not retrieve customer names:" + e);
} finally {
if ( conn != null )
conn.close();
}
%>
´ÙÀ½ÀÇ JSP ÄÚµå´Â µ¥ÀÌÅͺ£À̽º 󸮺κÐÀ» ³»ºÎÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º ÄÚµåÀÇ ÀÇÁ¸¼ºÀ» ¼û±â°í ĸ½¶ÈÇÑ Ä¿½ºÅÒű×myTags:dataSource¿¡ À§ÀÓÇϰí Àֱ⠶§¹®¿¡ ´õ º¸±â ÁÁ´Ù:
<myTags:dataSource
name="customerDS"
table="customer"
columns="name"
var="result" />
<c:forEach var="row" items="${result.rows}">
<c:out value="${row.name}" />
<br />
</c:forEach>
result ´Â Ä¿½ºÅÒ ÅÂ±× myTags:dataSource°¡ customer µ¥ÀÌÅͺ£À̽º¿¡¼ customerÀÇ À̸§µé »Ì¾Æ³½ °á°ú¸¦ ´ãÀ¸·Á°í ¸¸µé¾î ³½ ½ºÅ©¸³ÆÃ º¯¼öÀÌ´Ù. JSP ÄÚµå´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿ä±¸¿¡ µû¶ó µ¿ÀûÀ¸·Î ´Ù¸¥ Á¾·ùÀÇ Ãâ·Â(HTML, XML, WML)À» »ý¼ºÇϱâ À§ÇØ È®ÀåÇÒ ¼ö ÀÖ´Ù. ±×°Íµµ ¹é¿£µå ÄÚµå(dataSource ű׸¦ À§ÇÑ)¸¦ º¯°æÇÏÁö ¾Ê°íµµ °¡´ÉÇÏ´Ù. ´õ ³ªÀº ¼±ÅÃÀº À̰ÍÀ» ÇÁ·ÐÆ® ÄÁÆ®·Ñ·¯ ¼ºí¸´¿¡ À§ÀÓÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¼ºí¸´Àº µ¥ÀÌÅ͸¦ ºÒ·¯¿Í¼ ±× °á°ú¸¦ request ½ºÄÚÇÁÀÇ ¼Ó¼ºÀ» ÅëÇØ¼ JSP¿¡ Á¦°øÇÑ´Ù. ¿¹Á¦´Â ÀÚ¹Ù BluePrintÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ¼½¼ÇÀ» Âü°íÇϱ⠹ٶõ´Ù.
¿ä¾àÇϸé :
JSP Ç¥Çö½ÄÀº JSP ½ºÅ©¸³Æ²¸´Ã³·³ °¡´ÉÇÏ¸é »ï°¡´Â °ÍÀÌ ÁÁ´Ù. µ¿ÀÏÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ´ÙÀ½ 3°¡Áö ¿¹Á¦°¡ Àß ¼³¸íÇØÁØ´Ù:
Example 1 (ÀÚ¹Ù ÄÚµå »ç¿ë):
<%= myBean.getName() %>
Example 2 (JSP ÅÂ±× »ç¿ë):
<jsp:getProperty name="myBean" property="name" />
Example 3 (JSTL ÅÂ±× »ç¿ë):
<c:out value="${myBean.name}" />
Example 1 Àº myBean À̶ó´Â ½ºÅ©¸³Æ® º¯¼ö°¡ ¼±¾ðµÈ °ÍÀ̶ó°í °¡Á¤ÇÑ´Ù. ´Ù¸¥ µÎ ¿¹Á¦¿¡¼ myBeanÀº ¾î¶² ½ºÄÚÇÁÀÇ ¼Ó¼ºÀ¸·Î PageContext.findAttribute()À» ÅëÇØ¼ Á¢±ÙÇÒ ¼ö ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. µÎ ¹øÂ° ¿¹Á¦´Â ¶ÇÇÑ <jsp:useBean> ¿¡ ÀÇÇØ¼ ÆäÀÌÁö¿¡ ¼Ò°³µÈ myBeanÀ̶ó°í °¡Á¤ÇÑ´Ù.
¼Â Áß¿¡¼ JSTL ÅÂ±× ¿¹Á¦°¡ ³´´Ù. JSP Ç¥Çö½Ä ¸¸Å ª°í, °¡µ¶¼ºµµ ÁÁ°í, À¯Áöº¸¼öÇϱ⵵ º¸´Ù ÆíÇÏ´Ù. ±×¸®°í, ÀÚ¹Ù ½ºÅ©¸³Æ²¸´¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â´Ù(½ºÅ©¸³Æ²¸´Àº ÀÚ¹Ù ¾ð¾î¿Í API ÇÔ¼öµé¿¡ Àͼ÷ÇØ¾ß ´Ù·ê ¼ö ÀÖ´Ù.) ´õ¿ì±â, JSP 2.0 ½ºÅ¸ÀÏ ÇÁ·Î±×·¥À¸·Î ½±°Ô À̵¿ÇÒ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖ´Ù. ¾î¶² ¼±ÅÃÀÌ Ã¤Åõǵç, ¸ðµç °³¹ßÀÚµéÀÇ µ¿ÀǸ¦ ¾ò¾î¼, °°Àº ÇÁ·ÎÁ§Æ®¿¡ ÀÖ´Â JSP °á°ú¹°µéÀº ÀüüÀûÀ¸·Î ÀϰüµÈ ¹æ½ÄÀ» »ç¿ëÇØ¾ß µÈ´Ù. ÁÖÀÇÇÒ Á¡Àº, JSTL ¿¹Á¦´Â ·ÎÄà ÀÚ¹Ù ½ºÅ©¸³Æ® º¯¼ö·ÎºÎÅͰ¡ ¾Æ´Ñ, page ÄÁÅØ½ºÆ®·ÎºÎÅÍ myBean ÀÇ °ªÀ» °¡Á®¿Â´Ù´Â °ÍÀÌ ½ÇÁúÀûÀ¸·Î Á¶±Ý ´Ù¸¥ Á¡ÀÌ´Ù.
¸¶Áö¸·À¸·Î, JSP Ç¥Çö½ÄÀº ±â¹Ý ½ºÅ©¸³ÆÃ ¾ð¾îÀÇ ¹®¹ý¿¡ ÀÇÁ¸ÇÏ´Â, °°Àº ±â´ÉÀÇ JSP ½ºÅ©¸³Æ²¸´º¸´Ù ³´´Ù. ¿¹¸¦ µé¾î,
<%= x %>
·Î ÇÏ´Â °Ô ¾Æ·¡ ¹æ¹ýº¸´Ù ÁÁ´Ù.
<% out.print( x ); %>
ÄÚµåÀÇ ÀÌÇØ¿Í À¯Áöº¸¼ö¿¡ µå´Â ³ë·ÂÀ» ÁÙÀ̱â À§Çؼ JSP Äڵ带 º¸±â ÁÁ°Ô µé¿©¾²±âÇϴµ¥ °ø¹éÀ» »ç¿ëÇÑ´Ù. ƯÈ÷, ºó ÁÙ°ú °ø¹éÀº ÇÊ¿äÇÑ °÷¿¡¼ JSP ÀÇ ¿©·¯ °÷¿¡ »ðÀԵǾî¾ß ÇÑ´Ù.
ºó ÁÙÀº Ãâ·Â¿¡ ¿øÇÏÁö ¾Ê´Â ¿µÇ⸸ ÁÖÁö ¾Ê´Â´Ù¸é JSPÀÇ °¡µ¶¼ºÀ» ³ôÀ̱â À§Çؼ °¡²û »ç¿ëµÈ´Ù. ¾Æ·¡ ¿¹Á¦¿¡¼, HTML <PRE> ºí·Ï ³»¿¡ µÎ °³ÀÇ JSP Ç¥Çö½Ä »çÀÌ¿¡ ÀÖ´Â ºó ÁÙÀº Ŭ¶óÀ̾ðÆ®ÀÇ ºê¶ó¿ìÀú¿¡ HTML Ãâ·Â °á°ú¿¡¼ ÇÑÁÙ ´õ »ý±â°Ô ¸¸µç´Ù. ±×·¯³ª ºó ÁÙÀÌ <PRE> ºí·Ï »çÀÌ¿¡ ÀÖÁö ¾Ê´Ù¸é, ºê¶ó¿ìÀúÀÇ Ãâ·Â¿¡ ³ªÅ¸³ªÁö ¾Ê´Â´Ù.
| JSP ±¸¹® | Ŭ¶óÀ̾ðÆ®ÀÇ HTML Ãâ·Â |
<pre>
<%= customer.getFirstName() %>
<%= customer.getLastName() %>
</pre>
|
Joe
Block
|
<pre>
<%= customer.getFirstName() %>
<%= customer.getLastName() %>
</pre>
|
Joe
Block
|
<%= customer.getFirstName() %>
<%= customer.getLastName() %>
|
Joe Block
|
°ø¹é ¹®ÀÚ( ; ¿ªÀÚÁÖ:°ø¹éÀº ±æÀ̰¡ 1, ºó ¹®ÀÚ¿Àº ""ó·³ ±æÀ̰¡ 0)´Â JSP ÅÂ±×¿Í ¸öü »çÀÌ¿¡ ¾²¿©Á®¾ß µÈ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½
<%= customer.getName() %>
ÄÚµå´Â ¾Æ·¡ °Íº¸´Ù ÁÁ´Ù.
<%=customer.getName()%>
JSP ÁÖ¼® ÅÂ±×¿Í ÁÖ¼®À» ºÐ¸®ÇÏ´Â °ø¹é ¹®ÀÚµéÀÌ ÀÖ¾î¾ß µÈ´Ù:
<%-- - ¿©·¯ ÁÙÀÇ ÁÖ¼®ÀÌ ³ª´µ¾îÁö¸é, °¢°¢ÀÇ ÁÙÀº - ÇÑ ÁÙ¾¿ Â÷ÁöÇÑ´Ù. --%> <%-- ªÀº ÁÖ¼® --%>
À̸§Áþ´Â ¿ä·ÉÀ» Àû¿ëÇϸé, ÇÁ·ÎÁ§Æ® ³»ÀÇ À¥ ÄÄÆ÷³ÍÆ® ¿¤¸®¸ÕÆ®µéÀ» ½±°Ô È®ÀÎ, ºÐ·ù, ÅëÇÕÇÒ ¼ö ÀÖ´Ù. ÀÌ ¼½¼Ç¿¡¼, JSP¿¡ ÀûÇÕÇÑ ¿ä·ÉÀ» »ìÆìº¸ÀÚ.
JSP (ÆÄÀÏ) À̸§Àº ¾ðÁ¦³ª ¼Ò¹®ÀÚ·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù. ¿©·¯ °³ÀÇ ´Ü¾î·Î ±¸¼ºµÉ ¼ö ÀÖ°í, ÀÌ·¯ÇÑ °æ¿ì ´Ü¾îµéÀº ¸ðµÎ ºÙ¿©¾²°í, À̾îÁö´Â ´Ü¾îÀÇ Ã¹±ÛÀÚ´Â ´ë¹®ÀÚ·Î ¾´´Ù. JSP À̸§Àº °£´ÜÇÑ ¸í»ç³ª ªÀº ¹®ÀåÀÌ µÉ ¼ö ÀÖ´Ù. µ¿»ç»ÓÀÎ JSP ¸íÀº °³¹ßÀÚ¿¡°Ô ÃæºÐÇÑ Àǹ̸¦ Àü´ÞÇÏÁö ¸øÇϱ⠶§¹®¿¡, ÇÇÇϵµ·Ï ÇÑ´Ù. ¿¹¸¦ µé¸é:
perform.jsp
ÆÄÀÏÀº ´ÙÀ½ ÆÄÀϺ¸´Ù ¸íÈ®ÇÏÁö ¾Ê´Ù.
performLogin.jsp
JSP À̸§¿¡ µ¿»ç°¡ µé¾î°¡´Â °æ¿ì, Àº¿¬ Áß¿¡ µÞÂÊ¿¡¼ ó¸®Çϰí Àִٴ ǥ½Ã·Î ÇöÀçÇüÀ» ¾´´Ù:
showAccountDetails.jsp
·Î ¾²´Â °Ô ¾Æ·¡ ÆÄÀÏ¸í º¸´Ù ÁÁ´Ù
showingAccountDetails.jsp
ÅÂ±× Çڵ鷯¿Í °ü·ÃµÈ Ŭ·¡½º¿¡ ´ëÇÑ À̸§Áþ´Â ¿ä·ÉÀº ´ÙÀ½°ú °°´Ù:
| ¼³¸í | Ŭ·¡½º ¸í |
XXX tag extra info (javax.servlet.jsp.tagext.TagExtraInfo¸¦ »ó¼ÓÇÔ) |
XXXTEI |
XXX tag library validator (javax.servlet.jsp.tagext.TagLibraryValidator¸¦ »ó¼ÓÇÔ) |
XXXTLV |
XXX tag handler interface (javax.servlet.jsp.tagext.Tag/IterationTag/BodyTag¸¦ »ó¼ÓÇÔ) |
XXXTag |
| XXX tag handler implementation | XXXTag |
µ¡ºÙ¿©, ÅÂ±× À̸§Àº ÀÚ¹Ù¿¡ °ü·ÃµÈ ÄÚµåÀÛ¼º¹ý¿¡¼ Á¤ÇÑ Å¬·¡½º¿Í ÀÎÅÍÆäÀ̽º À̸§ Áþ´Â ¿ä·ÉÀ» µû¶ó¼ Á¤ÇØ¾ß µÈ´Ù.
ÅÂ±× °ü·ÃµÈ Ŭ·¡½º¿Í ´Ù¸¥ Ŭ·¡½º¿Í ´õ ºÐ¸íÇÏ°Ô ±¸ºÐÇϱâ À§Çؼ, ÆÐŰÁö Á¢¹Ì»ç(tags ¶Ç´Â taglib)¸¦ Ŭ·¡½ºÀÇ ÆÐŰÁö¸í¿¡ Àû¿ëÇÑ´Ù. ¿¹¸¦ µé¸é:
com.mycorp.myapp.tags.XXXTag
ÅÂ±× prefix ´Â ªÁö¸¸ Àǹ̰¡ ´ã±ä ¸í»ç¸¦ »ç¿ëÇØ¾ß Çϰí, ù¹®ÀÚ´Â ¼Ò¹®ÀÚ·Î ÇØ¾ßÇÑ´Ù. ÅÂ±× prefix ´Â ¾ËÆÄºª ¹®ÀÚ¸¸ Æ÷ÇÔÇØ¾ß µÈ´Ù. ¸î °¡Áö ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù:
| ¿¹ | OK? |
mytaglib |
no |
myTagLib |
yes |
MyTagLib |
no |
MyTagLib1 |
no |
My_Tag_Lib |
no |
My$Tag$Lib |
no |
JSP ´Â µÎ°¡Áö ´Ù¸¥ ¹®¹ýÀ» Á¦°øÇÑ´Ù: JSP ÆäÀÌÁö¸¦ ÀÛ¼ºÇÏ´Â 'Ç¥ÁØ ¹®¹ý'°ú JSP¸¦ XML¹®¼·Î ÀÛ¼ºÇÏ´Â 'XML ¹®¹ý'ÀÌ ÀÖ´Ù. Ç¥ÁØ ¹®¹ýÀ» »ç¿ëÇÏ´Â JSP ÆäÀÌÁöµéÀÌ 'JSP ÆäÀÌÁö'·Î ¸¹ÀÌ ¾²ÀδÙ. XML ¹®¹ýÀ¸·Î ÀÛ¼ºµÈ JSP´Â 'JSP ¹®¼'¶ó°í ÀÏÄ´´Ù. ÀÌ ±â»ç´Â ¿ì¼±ÀûÀ¸·Î JSP ÆäÀÌÁö¸¦ ¼Ò°³ÇÏÁö¸¸, ¸¹Àº ºÎºÐÀÇ °³³äµéÀÌ JSP ¹®¼¿¡µµ ¿ª½Ã Àû¿ëµÉ ¼ö ÀÖ´Ù. XMLÀÌ Á» ´õ À¯ÇàÇϸé JSP ¹®¼ »ç¿ëµµ ¸¹¾ÆÁú °ÍÀ̶ó°í ±â´ëµÈ´Ù. JSP 2.0 ½ºÆå¿¡¼´Â ´õ ¸¹Àº XML ¹®¹ý Ä£ÈÀûÀÎ °ÍµéÀÌ ¼Ò°³µÉ °ÍÀÌ´Ù.
ÁÖÀÇÇÒ °ÍÀº XML ¹®¹ýÀ» ÀÌ¿ëÇØ¼ JSP¸¦ ¸¸µå´Â °Í°ú JSP·Î XML °á°ú(view)¸¦ ¸¸µé¾î ³»´Â °Í°ú È¥µ¿Çؼ´Â ¾ÈµÈ´Ù. ÆäÀÌÁö Á¦ÀÛµµ±¸´Â JSP¸¦ ¸¸µé±â À§ÇØ Ç¥ÁØ ¶Ç´Â XML ¹®¹ýÀ» »ç¿ëÇÑ´Ù. ±×¸®°í ³ª¼ ÄÁÅ×À̳ʴ JSP¸¦ XML °á°ú·Î º¯È¯Çϰí, À̰ÍÀº ÅÂ±× ¶óÀ̺귯¸® ¹ë¸®µ¥ÀÌÅÍ(À¯È¿¼º °ËÁõ±â)¿¡¼ È®ÀÎÇÑ´Ù.
JSP ¹®¼´Â ´ÙÀ½°ú °°Àº ±âº» ±¸Á¶¸¦ °®´Â´Ù:
<? xml version="1.0" ?>
<!--
- Author(s):
- Date:
- Copyright Notice:
- @(#)
- Description:
-->
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:prefix1="URI-for-taglib1"
xmlns:prefix2="URI-for-taglib2"
version="1.2">
JSP Document ...
</jsp:root>
ù ÁÙÀº, ÀÌ ÆäÀÌÁö°¡ XML ¹®¼¶ó°í Á¤ÀÇÇÏ´Â ¼±ÅÃÀû XML ÇÁ·Ñ·Î±×ÀÌ´Ù. ´ÙÀ½À¸·Î ¿À´Â °ÍÀº ¹®¼¿¡ ´ëÇÑ ÁÖ¼®ÀÌ´Ù. <jsp:root> ¿¤¸®¸ÕÆ®´Â À̰ÍÀÌ JSP ¹®¼ÀÓÀ» Á¤ÀÇÇϰí, ¹Ýµå½Ã ÀÌ ¿¤¸®¸ÕÆ®°¡ ·çÆ® ¿¤¸®¸ÕÆ®·Î ³ªÅ¸³ª¾ß µÈ´Ù. jsp À̸§°ø°£Àº ¹Ýµå½Ã °¡Á®¿Í¾ß µÇ°í, ¸ðµç ÅÂ±× ¶óÀ̺귯¸®´Â ÀÌ ·çÆ® ¿¤¸®¸ÕÆ®¸¦ »ç¿ëÇØ¼ °¡Á®¿Í¾ß µÈ´Ù. ¹öÀü ¼Ó¼ºÀÌ ÇÊ¿äÇϰí, ¾î¶² ¹öÀüÀ» »ç¿ëÇÒ Áö¸¦ Á¤ÇØÁØ´Ù. JSP ¹®¼ÀÇ ½ÇÁ¦ ³»¿ëÀº <jsp:root> ¿¤¸®¸ÕÆ®ÀÇ ¼ºê¿¤¸®¸ÕÆ®¿¡ ³ªÅ¸³´Ù. Ç¥ÁØ XML µé¿©¾²±â ·ê¿¡ µû¶ó¼ ¹®¼ ÀüüÀûÀ¸·Î ÀϰüµÇ°Ô Àû¿ëÇÏ´Â µé¿©¾²±â ´ÜÀ§´Â 4°³ÀÇ °ø¹é¹®ÀÚÀÌ´Ù.
JSP ¹®¼´Â Çü½ÄÀÌ Àß °®ÃçÁø XML ¹®¼À̱⠶§¹®¿¡, <% %> ¿Í °°Àº ¿¤¸®¸ÕÆ®´Â <jsp:scriptlet /> °°ÀÌ XML·Î ¹Ù²ã¼ Ç¥±âÇØ¾ß µÈ´Ù. ÀÚ¼¼ÇÑ °ÍÀº JSP ½ºÆåÀ» º¸±â ¹Ù¶õ´Ù.
JSP ½ºÆåÀº XML ½ºÅ¸ÀÏÀÇ ÁÖ¼®À» ¾î¶»°Ô ó¸®ÇÒ Áö¿¡ ´ëÇØ ºÒºÐ¸íÇϱ⠶§¹®¿¡, ÁÖ¼®ÀÌ Å¬¶óÀÌ¾ðÆ®·Î ¾ÈÀüÇÏ°Ô Àü´ÞµÇ±â À§Çؼ´Â, <jsp:text>·Î ´ÙÀ½°ú °°ÀÌ °¨½ÎÁÖ¾î¾ß µÈ´Ù:
...
<jsp:text><![CDATA[
<!--
- Multiline comment
- to be sent to client.
-->
]]></jsp:text>
...
¼±¾ð¹®, ½ºÅ©¸³Æ²¸´, Ç¥Çö½Ä¿¡¼ ÀÚ¹Ù Äڵ带 ¾²·Á°í ÇÒ ¶§, Äڵ尡 ¹®¼ÀÇ ±¸Á¶¸¦ ¸Á°¡¶ß¸®Áö ¾Ê´Â´Ù¸é, CDATA¿¤¸®¸ÕÆ®¸¦ »ç¿ëÇÑ´Ù.
...
<jsp:scriptlet>
for( int level = 0; level < 3; level++ ) {
</jsp:scriptlet>
<tr>
<td>
<jsp:expression><![CDATA[
"<h" + level + ">Text</h" + level + ">"
]]></jsp:expression>
</td>
</tr>
<jsp:scriptlet>
}
</jsp:scriptlet>
...
Ç¥ÁØ ¹®¹ý¿¡¼¿Í ´Ù¸£°Ô, XML µé¿©¾²±â ¹ýÄ¢Àº ¿¤¸®¸ÕÆ®ÀÇ ³»¿ë°ú »ó°ü¾øÀÌ ÁؼöµÇ¾î¾ß ÇÑ´Ù.
ÀϹÝÀûÀ¸·Î, ´ÙÀ½°ú °°Àº ÀÌÀ¯·Î JSP ÆäÀÌÁö¿¡ ÀÚ¹Ù ÄÚµå(¼±¾ð¹®, ½ºÅ©¸³Æ²¸´, Ç¥Çö½Ä) ¾²±â¸¦ ÇÇÇÑ´Ù:
ÀÚ¹Ù BluePrintsÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ¼½¼Ç¿¡ ÀÖ´Â ´õ ÀÚ¼¼ÇÑ Á¤º¸¿Í °¡À̵å¶óÀÎÀ» Âü°íÇϱ⠹ٶõ´Ù.
JSP´Â JavaBeanTMÀÇ ÇÁ·ÎÆÛƼ·Î Áõ¸íµÇ´Â ¸ðµç PropertyDescriptor¸¦ ÃʱâÈÇϱâ À§ÇØ Æí¸®ÇÑ ¿¤¸®¸ÕÆ®¸¦ Á¦°øÇÑ´Ù. ¿¹¸¦ µé¸é:
<jsp:setProperty name="bankClient" property="*"/>
±×·¯³ª, ÁÖÀÇÇØ¼ »ç¿ëÇØ¾ß ÇÑ´Ù. ù°·Î, ºóÀÌ ÇÁ·ÎÆÛƼ¸¦ °®°í ÀÖ´Ù, Áï amount ÇÁ·ÎÆÛƼ°¡ ÀÖ´Ù°í Çϰí, ÇöÀç ServletRequest °´Ã¼¿¡ ÆÄ¶ó¹ÌÅÍ(amount)°¡ ¾ø°Å³ª ÆÄ¶ó¹ÌÅÍ °ªÀÌ ""¶ó°í ÇÑ´Ù¸é, ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â´Ù: JSP´Â ºóÀÇ Æ¯Á¤ ÇÁ·ÎÆÛƼ¿¡ null¸¦ ÇÒ´çÇÏÁöµµ ¾Ê´Â´Ù. bankClient ºó¿¡ amountÀÇ ±âÁ¸ °ªÀÌ ¹«¾ùÀ̵çÁö °£¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. µÑ°·Î, PropertyEditors¸¦ ¼±¾ðÇÏÁö ¾ÊÀº ºñ-¿ä¼ÒÀûÀÎ ÇÁ·ÎÆÛƼ´Â ServletRequest °´Ã¼ÀÇ ½ºÆ®¸µ °ª¿¡¼ ¾Ï¹¬ÀûÀ¸·Î ÃʱâÈ µÇÁö ¾Ê±â ¶§¹®¿¡, ¸í½ÃÀûÀÎ º¯È¯ÀÌ ÇÊ¿äÇÏ´Ù. ¼¼Â°·Î, ¸¸ÀÏ ¾îÇø®ÄÉÀ̼ÇÀÌ ÁÖÀÇ ±í°Ô ¼³°èµÇÁö ¾Ê¾Ò´Ù¸é, ¾ÇÀǸ¦ °¡Áø »ç¿ëÀÚ´Â Ãß°¡ÀûÀ¸·Î ¿äû ÆÄ¶ó¹ÌÅ͸¦ µ¡ºÙ¿©¼ ºóÀÇ »ç¿ëÇÏÁö ¸»¾Æ¾ßÇÒ ÇÁ·ÎÆÛƼ °ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
±ò²ûÇÑ Äڵ带 À§Çؼ jsp:setProperty ű׿¡ property="*"¸¦ »ç¿ëÇÑ´Ù¸é, jsp:setProperty ÅÂ±× ÀÌÀü¿¡ ServletRequest °´Ã¼¸¦ ÅëÇØ¼ ¹Þ¾Æ¿Í¾ß ÇÒ, ºóÀ» ÃʱâÈÇϱâ À§ÇÑ ÆÄ¶ó¹ÌÅ͵鿡 ´ëÇØ ÁÖ¼®À» ´Þ±â¸¦ ±ÇÇÑ´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼´Â bankClient ºóÀ» ÃʱâÈÇϱâ À§Çؼ firstName¿Í lastName ÆÄ¶ó¹ÌÅͰ¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀ» ÁÖ¼®¿¡¼ ÀÐÀ» ¼ö ÀÖ´Ù:
<%-- - ServletRequest¿¡¼ firstName¿Í lastName¸¦ ¿ä±¸ --%> <jsp:setProperty name="bankClient" property="*" />
API È£ÃâÀ» ÅëÇØ¼ °´Ã¼¸¦ ÂüÁ¶Çϱ⠺¸´Ù´Â JSP ³»Àå °´Ã¼¸¦ Á÷Á¢ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ±×·¡¼ ServletContext ÀνºÅϽº¿¡ ÀÇÇØ Á¦°øµÇ´Â ÃÊ±â ÆÄ¶ó¹ÌÅÍ¿¡ Á¢±ÙÇϱâ À§ÇØ ´ÙÀ½À» ¾²´Â ´ë½Å¿¡
getServletConfig().getServletContext().getInitParameter("param")
±âÁ¸ ³»Àå °´Ã¼¸¦ »ç¿ëÇÏ´Â °Ô ³´´Ù:
application.getInitParameter("param")
ÃÊ±â ÆÄ¶ó¹ÌÅÍ °ªÀÌ Ãâ·ÂÀÌ µÇ¾î¾ß ÇÏ´Â °æ¿ì¿¡´Â, JSTL·Î Á¢±ÙÇØ¼ Ãâ·ÂÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù:
<c:out value="${initParam['param']}" />
ÀÏÁ¤ÇÑ ÀοëºÎÈ£ÀÇ »ç¿ëÀ» äÅÃÇÑ´Ù. ÀοëºÎÈ£´Â ÀÛÀºµû¿ÈÇ¥ ' ´ë½Å Å«µû¿ÈÇ¥ " ¸¦ »ç¿ëÇÑ´Ù.
| ºÒ±ÔÄ¢ÇÑ ÀοëºÎÈ£ | ÁÁÀº ÀοëºÎÈ£ »ç¿ë |
<%@ page import='javabeans.*'%> |
<%@ page import="javabeans.*" %> |
¿¹¿ÜÀûÀÎ °æ¿ì´Â ÀÛÀºµû¿ÈÇ¥°¡ ÇÊ¿äÇÒ ¶§ÀÌ´Ù. ¿¹¸¦ µé¾î¼ ½ºÅ©¸³Æ® ¾ð¾î¿¡¼ Å«µû¿ÈÇ¥¸¦ »ç¿ëÇÏ´Â °æ¿ì¸¦ µé ¼ö ÀÖ´Ù:
<jsp:include page='<%= getFoodMenuBar("Monday") %>' />
¸¸ÀÏ Ä¿½ºÅÒűװ¡ ¸öü°¡ ¾ø´Ù¸é, ÄÁÅÙÆ®´Â (»ý·«Çؼ "JSP" ±âº»°ªÀ¸·Î ÇÏÁö ¸»°í) empty¶ó°í ¸íÈ®ÇÏ°Ô ¼±¾ðµÇ¾î¾ß ÇÑ´Ù. ÅÂ±× ¶óÀ̺귯¸® ¼³¸í¼¿¡¼ ´ÙÀ½°ú °°ÀÌ Á¤ÇØÁØ´Ù:
<tag>
<name>hello</name>
<tag-class>com.mycorp.util.taglib.HelloTagSupport</tag-class>
<body-content>empty</body-content>
...
</tag>
ÀÌ·¸°Ô Çϸé JSP ÄÁÅ×À̳ʴ ÅÂ±× ¸öü°¡ ¹«Á¶°Ç ºñ¾î¾ß µÇ¸ç ÆÄ½ÌÇÒ ¾î¶² JSP ¹®¹ýµµ Æ÷ÇÔÇÏÁö ¾Ê¾Æ¾ß µÈ´Ù°í ÀνÄÇÑ´Ù. È¿°ú´Â ºó ¸öü¸¦ ÆÄ½ÌÇϱâ À§Çؼ ºÒÇÊ¿äÇÏ°Ô ÀÚ¿øÀÇ ÇÒ´çÀÌ ÀÌ·ïÁö´Â °ÍÀ» Á¦°ÅÇÑ´Ù.
ºó ű״Â, °¡µ¶¼ºÇâ»óÀ» À§ÇØ ¿°í ´Ý´Â XML ¿¤¸®¸ÕÆ® ½ÖÀ¸·Î Ç¥½ÃÇϱ⺸´Ù´Â, ªÀº XML ¿¤¸®¸ÕÆ®·Î Ç¥½ÃÇÑ´Ù. ±×·¡¼
<myTag:hello />
¶ó°í Ç¥±âÇÏ´Â °ÍÀÌ ¾Æ·¡º¸´Ù ³´´Ù.
<myTag:hello></myTag:hello>
¶§¶§·Î, ÅÂ±× ¶óÀ̺귯¸®¸¦ »ç¿ëÇϴµ¥ TLD Çϳª·Î À¯È¿¼ºÀ» °ËÁõÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ÀÖ´Ù. ±× ¶§´Â TLD¿¡ µî·ÏµÈ TagExtraInfo Ŭ·¡½º³ª TagLibraryValidator Ŭ·¡½º¸¦ »ç¿ëÇØ¼, º¯È¯ÇÒ ¶§ ÅÂ±× ¶óÀ̺귯¸®¿¡ ÀÖ´Â ¿¡·¯¸¦ Àâ¾Æ³¾ ¼ö ÀÖ´Ù.
½ºÅ©¸³Æ®°¡ Á¦´ë·Î µ¹¾Æ°¡±â À§Çؼ´Â ÀÚ¹Ù½ºÅ©¸³Æ®´Â ºê¶ó¿ìÀú ŸÀÔÀÇ Æ¯¼º°ú °ü°è¾ø¾î¾ß µÈ´Ù.
µ¿ÀÛÀ» ÇÑ´Ù¸é, JSP¿¡¼ ÀÚ¹Ù½ºÅ©¸³Æ® Äڵ带 µ¶¸³ÀûÀÎ ÆÄÀÏ·Î ºÐ¸®Çϰí, ´ÙÀ½°ú °°ÀÌ JSP¿¡¼ ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ ºÒ·¯¾²´Â ¹æ½ÄÀº ÁÁÀº »ý°¢ÀÌ´Ù:
<script language=javascript src="/js/main.js">
ÀÌ·¸°Ô Çϸé ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ Àç»ç¿ë¼ºµµ Çâ»óµÇ°í, ¿©·¯ JSP »çÀÌ¿¡ ÀϰüµÈ ½À¼ºÀÇ ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ À¯ÁöÇÒ ¼ö ÀÖ°í, JSPÆäÀÌÁöÀÇ º¹À⼺À» ÁÙ¿©ÁØ´Ù.
CSS¸¦ »ç¿ëÇØ¼ Çìµù, Å×ÀÌºí µîÀÇ °øÅëÀûÀΠƯ¼ºÀ» Áß¾Ó¿¡¼ Á¦¾îÇϵµ·Ï ÇÑ´Ù. ÀÌ ¹æ¹ýÀº »ç¿ëÀڵ鿡°Ô ÇÁ¸®Á¨Å×À̼ÇÀÇ Àϰü¼ºÀ» Çâ»ó½Ã۰í, À¯Áöº¸¼ö ³ë·Â°ú JSP ÆäÀÌÁöÀÇ ÄÚµå »çÀÌÁ ÁÙ¿©ÁØ´Ù. ±×·¡¼, ´ÙÀ½°ú °°ÀÌ HTML ű׿¡¼ ½ºÅ¸ÀÏ Á¤º¸¸¦ ³¢¾î¾²Áö ¸»°í:
<H1><FONT color="blue">Chapter 1</FONT></H1> ... <H1><FONT color="blue">Chapter 2</FONT></H1> ...
ÇϳªÀÇ ½ºÅ¸ÀÏ ½ÃÆ® ÆÄÀÏmyJspStyle.css¿¡ ´ÙÀ½°ú °°Àº ½ºÅ¸ÀÏ Á¤º¸¸¦ Á¤ÀÇÇÑ´Ù:
H1 { color: blue }
±×¸®°í JSP ÆäÀÌÁö¿¡ ½ºÅ¸ÀÏ ½ÃÆ®¸¦ Àû¿ëÇÑ´Ù:
<link rel="stylesheet" href="css/myJspStyle.css" type="text/css"> ... <H1>Chapter 1</H1> ... <H1>Chapter 2</H1> ...
¿©·¯ JSP ÆäÀÌÁö¿¡¼ ¹Ýº¹µÇ´Â °íÁ¤µÇ°í º¹ÀâÇÑ ±¸Á¶°¡ ¿ä±¸µÉ ¶§, À̰ÍÀ» ´Ù·ç´Â ¹æ¹ýÀ¸·Î ÄÄÆ÷Áþ ºä ÆÐÅÏ(Composite View pattern;ÀÚ¹Ù Blueprints ÀÇ ÆÐÅÏ ¼½¼Ç Âü°í)À» »ç¿ëÇØ¼, Á¶°¢Á¶°¢À¸·Î ³ª´²¼ ó¸®ÇÏ´Â ¹ýÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î, ÇÁ¸®Á¨Å×ÀÌ¼Ç ±¸Á¶¿¡¼ JSP ´Â ¶§¶§·Î ´ÙÀ½°ú °°Àº ·ÎÁ÷ ·¹À̾ƿôÀ» °®°í ÀÖ´Ù:
| header | |
| menu bar | main body |
| footnote | |
| footer | |
ÀÌ·± ¹æ½ÄÀ¸·Î, ÄÄÆ÷Áþ JSP ´Â °¢°¢ ºÐ¸®µÈ JSP·Î ±¸ÇöµÇ´Â ´Ù¸¥ ¸ðµâ·Î ³ª´· ¼ö ÀÖ´Ù. ±¸¼º¼ººÐÀÌ µÇ´Â JSP´Â ¼ºí¸´À¸·Î º¯È¯ÇÒ ¶§³ª ¿äû½Ã¿¡ include JSP ű׸¦ »ç¿ëÇØ¼ ÄÄÆ÷Áþ JSP ÀÇ Àû´çÇÑ À§Ä¡¿¡ ³õÀÌ°Ô µÈ´Ù. º¸ÆíÀûÀ¸·Î, µ¶¸³ÀûÀ¸·Î ¿äûµÇÁö ¾Ê´Â ÆäÀÌÁö¸¦ ºÒ·¯¾²´Â, Á¤ÀûÀÎ include Áö½ÃÀÚ¸¦ »ç¿ëÇÒ ¶§´Â .jspf È®ÀåÀÚ¸¦ »ç¿ëÇϰí, À¥ ¾îÇø®ÄÉÀÌ¼Ç (war)¿¡¼ /WEB-INF/jspf/ µð·ºÅ丮¿¡ ³õ¾ÆµÑ °ÍÀ» ±â¾ïÇϱ⠹ٶõ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù:
<%@ include file="/WEB-INF/jspf/header.jspf" %> ... <%@ include file="/WEB-INF/jspf/menuBar.jspf" %> ... <jsp:include page="<%= currentBody %>" /> ... <%@ include file="/WEB-INF/jspf/footnote.jspf" %> ... <%@ include file="/WEB-INF/jspf/footer.jspf" %> ...
ÀÌ ¹®¼¿¡¼, JSP ÄÚµå¿Í À¥ ÄÄÆ÷³ÍÆ®¸¦ ÀÛ¼ºÇϴµ¥ º¸´Ù À¯Áöº¸¼öÇϱ⠽±°í, ÀϰüµÈ Ãßõ ÄÚµå ÀÛ¼º¹ý ÇÑ ¼¼Æ®¸¦ Á¦½ÃÇß´Ù. ÀÌ ÁÖÁ¦¿¡ º¸´Ù ´õ °ü½ÉÀÖ´Ù¸é, ´õ ¸¹Àº ÃÖ°íÀÇ ÀÛ¼º¹ýÀÌ Á¸ÀçÇÑ´Ù. ¿¹¸¦ µé¾î, JSP 1.2 ½ºÆå¿¡¼´Â ´ÙÀ½À» ÃßõÇÑ´Ù:
µ¡ºÙ¿©¼, ÀÚ¹Ù BluePrints ´Â ´õ Å« ½ºÄÉÀÏ¿¡¼ ÃÖ°íÀÇ ÀÛ¼º¹ýÀ» Á¦°øÇÑ´Ù. (ÆÐÅÏ ¼½¼Ç¿¡¼ º¸¿©Áö´Â) ¸ðµ¨-ºä-ÄÁÆ®·Ñ·¯ ÆÐÅϰú °°Àº °ÍÀ» ¿¹·Î µé ¼ö ÀÖ´Ù.
¿ì¸®´Â ÀÌ ¹®¼¿¡¼ Á¦½ÃÇÑ ÀÛ¼º¿ä·É¿¡ ´ëÇÑ ¿©·¯ºÐÀÇ Àǰ߿¡ °ü½ÉÀÌ ÀÖ½À´Ï´Ù. JSP ÄÚµå ÀÛ¼º¿ä·É¿¡ ´ëÇØ¼ ¿©·¯ºÐÀÇ ´Ù¸¥ ÀǰßÀÌ ÀÖ´Ù¸é ³ª´©¸é ÁÁ°Ú½À´Ï´Ù. Çǵå¹éÀº ¿©±â·Î º¸³»±â ¹Ù¶ø´Ï´Ù. jsp-codeconv-comments@sun.com.
¾Æ·¡¿¡, À§¿¡¼ ¼³¸íÇÑ ÄÚµå ÀÛ¼º¿ä·ÉÀ» Àû¿ëÇØ ³õÀº ¿ÏÀüÇÑ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ ¼Ò½º¸¦ ¼Ò°³ÇÑ´Ù. ÀÌ ¾îÇø®ÄÉÀ̼ÇÀÇ WAR ÆÄÀÏÀ» ¿©±â ¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù.
¿©±â¿¡ ÀÖ´Â À¥ ¾îÇø®ÄÉÀÌ¼Ç ¿¹Á¦´Â ÀÌ ¹®¼¿¡ ÀÖ´Â ³»¿ëÀÌ ¾î¶»°Ô Àû¿ëµÇ´ÂÁö º¸¿©ÁÖ±â À§ÇÑ °ÍÀÌ´Ù. .war ÆÄÀÏ¿¡´Â ´ÙÀ½ÀÇ ¼Ò½ºÄÚµå ÆÄÀϰú µð·ºÅ丮 ±¸Á¶·Î µÇ¾î ÀÖ´Ù:
/index.jsp /WEB-INF/classes/codeconv/GetResultsTag.class /WEB-INF/jspf/footer.jspf /WEB-INF/lib/jstl.jar /WEB-INF/lib/standard.jar /WEB-INF/tld/lotterylib.tld /WEB-INF/web.xml
index.jsp ÆäÀÌÁö¿¡¼´Â ¿À´Ã±îÁö Æ÷ÇÔµÈ À̹ø ´ÞÀÇ ¸ðÀÇ º¹±Ç Ãß÷°á°ú¸¦ º¸¿©ÁÖ´Â Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®( lotterylib.tld )¸¦ »ç¿ëÇÑ´Ù. ±×¸®°í, HTML ¿¡ º¸¿©Áú °á°ú¸¦ Çü½ÄÈÇϰí, ¹Ýº¹Çϱâ À§Çؼ JSTLÀ» »ç¿ëÇÑ´Ù.
¿¹Á¦´Â JSP 1.2 °ú JSTL 1.0 À» »ç¿ëÇÑ´Ù.
<%--
- Author: Mark Roth
- Date: January 17, 2003
-
- Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
-
- This software is the proprietary information of
- Sun Microsystems, Inc.
- Use is subject to license terms.
-
- @(#)
- Description: Renders fake lottery results for the current month.
--%>
<%@ taglib prefix="c"
uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jstl/fmt" %>
<%@ taglib prefix="lottery"
uri="http://codeconv/lotterylib" %>
<html>
<head>
<title>Fake Lottery Results for this Month
</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date" />
<h1>
Fake Lottery Results for
<fmt:formatDate value="${now}"
pattern="MMMM yyyy" />
</h1>
<hr />
<table border="1" cellpadding="5">
<%-- Store current month and year --%>
<c:set var="currentMonth">
<fmt:formatDate value="${now}" pattern="M" />
</c:set>
<c:set var="currentYear">
<fmt:formatDate value="${now}"
pattern="yyyy" />
</c:set>
<%-- Determine last day to report results for --%>
<c:set var="endDay">
<fmt:formatDate value="${now}" pattern="d" />
</c:set>
<%-- Display one row for each day --%>
<c:forEach var="day" begin="1" end="${endDay}">
<%-- Construct date --%>
<c:set var="dateString">
<c:out value="${currentMonth}/${day}/${
currentYear}" />
</c:set>
<fmt:parseDate var="date"
value="${dateString}"
pattern="M/d/yyyy" />
<jsp:useBean id="date" class="java.util.Date"
/>
<tr>
<td>
<c:out value="${dateString}" />
</td>
<%-- Retrieve and display fake results
for this day --%>
<lottery:getResults var="numbers"
date="<%= date %>" />
<c:forEach var="number" items="${numbers}">
<td>
<c:out value="${number}" />
</td>
</c:forEach>
</tr>
</c:forEach>
</table>
<%@ include file="/WEB-INF/jspf/footer.jspf" %>
</body>
</html>
/*
* codeconv.GetResultsTag
*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the proprietary information of
* Sun Microsystems, Inc.
* Use is subject to license terms.
*
* Version: @(#)
*
* Date: January 13, 2003
*
*/
package codeconv;
import java.util.Date;
import java.util.Random;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
/**
* Retrieves fake lottery results for the given date and
* returns the result in the given attribute
*
* @version @(#)
* @author Mark Roth
*/
public class GetResultsTag extends TagSupport {
/** The maximum number that can be drawn */
private static final int MAX_NUMBER = 58;
/** The number of numbers that are drawn */
private static final int NUMBER_COUNT = 6;
/** The variable to store results to */
private String var;
/** The date on which the numbers were drawn */
private Date date;
/** The PageContext, used to return the result */
private PageContext pageContext;
/**
* Remember the PageContext so it can be used later
* to return the result.
*
* @param pageContext The page context of the calling page
*/
public void setPageContext( PageContext pageContext ) {
this.pageContext = pageContext;
}
/**
* Returns fake lottery results for the given date.
*
* @return EVAL_PAGE so the rest of the page is evaluated.
*/
public int doEndTag() throws JspException {
// Generate the (fake) results.
Random random = new Random( this.date.getTime() );
int[] result = new int[NUMBER_COUNT];
for( int i = 0; i < NUMBER_COUNT; i++ ) {
result[i] = random.nextInt( MAX_NUMBER ) + 1;
}
// Place the result in the scoped attribute named by 'var'.
pageContext.setAttribute( this.var, result );
return EVAL_PAGE;
}
/**
* Setter for date
*
* @param date The fake date on which the lottery numbers
* were drawn
*/
public void setDate( Date date ) {
this.date = date;
}
/**
* Getter for date
*
* @return The fake date on which the lottery numbers
* were drawn
*/
public Date getDate() {
return this.date;
}
/**
* Setter for var
*
* @param var The name of the variable to store the result in
*/
public void setVar( String var ) {
this.var = var;
}
/**
* Getter for var
*
* @return The name of the variable to restore the result in
*/
public String getVar() {
return this.var;
}
}
<%--
- Author: Mark Roth
- Date: January 17, 2003
-
- Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
-
- This software is the proprietary information of
- Sun Microsystems, Inc.
- Use is subject to license terms.
-
- @(#)
- Description: Sample Footer that can be included on pages.
- Assumes JSTL fmt taglib is imported.
--%>
<!-- common footer -->
<hr />
<jsp:useBean id="footerNow" class="java.util.Date" />
<i>
Last Updated:
<fmt:formatDate type="both" value="${footerNow}"
dateStyle="full" timeStyle="full" />
</i>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<!--
- Author: Mark Roth
- Date: January 17, 2003
-
- Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
-
- This software is the proprietary information of
- Sun Microsystems, Inc.
- Use is subject to license terms.
-
- @(#)
- Description: Tag Library for fake lottery results.
-->
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>lottery</short-name>
<uri>http://codeconv/lotterylib</uri>
<display-name>FakeLotteryTaglib</display-name>
<description>
Tag Library for fake lottery results.
</description>
<tag>
<name>getResults</name>
<tag-class>codeconv.GetResultsTag</tag-class>
<body-content>empty</body-content>
<display-name>getResults</display-name>
<description>
Retrieve an array of fake lottery results for the given
date and store them in the given scoped attribute.
</description>
<variable>
<name-from-attribute>var
</name-from-attribute>
<declare>true</declare>
<description>
The fake lottery results for the given date.
</description>
</variable>
<attribute>
<name>var</name>
<required>true</required>
<description>
The name of the variable to store the results in.
</description>
</attribute>
<attribute>
<name>date</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.util.Date</type>
<description>
The date on which the fake lottery numbers
were drawn.
</description>
</attribute>
<example><![CDATA[
<lottery:getResults var="numbers"
date="${date}" />
]]></example>
</tag>
</taglib>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<!--
- Author: Mark Roth
- Date: January 17, 2003
-
- Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
-
- This software is the proprietary information of
- Sun Microsystems, Inc.
- Use is subject to license terms.
-
- @(#)
- Description: Web Deployment Descriptor for JSP 1.2 fake
- lottery example
-->
<web-app>
<display-name>FakeLotteryExample</display-name>
<description>
JSP 1.2 example application that illustrates correct JSP
coding style.
</description>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>http://codeconv/lotterylib</taglib-uri>
<taglib-location>/WEB-INF/tld/lotterylib.tld
</taglib-location>
</taglib>
</web-app>
ÀÌ ¹®¼ÀÇ ÀÌÀü µå·¡ÇÁÆ®¿¡ ¼ÒÁßÇÑ Á¶¾ðÀ» Á¦°øÇØ ÁֽŠGregory Murray (Java BluePrints Team), Damian Fauth (Sun Java Center), Kate Morris (Sun Java Center) ´Ôµé²² °¨»çµå¸³´Ï´Ù.