¿ø¹® : http://www.onjava.com/pub/a/onjava/2004/04/21/JSP2part3.html
by Hans Bergsten, JavaServer Pages, 3ÆÇÀÇ ÀúÀÚ
¹ø¿ª ¼Õ±Ç³²(kwon37xi_aT_yahoo dOt co DoT kr
2004/04/21
JSP ½ºÆåÀº µÎ °¡Áö ÇüÅÂÀÇ JSP ÆäÀÌÁö¸¦ Áö¿øÇÑ´Ù. ¾î¶² ÇüÅÂÀÇ ÅؽºÆ®³ª ¸¶Å©¾÷ÀÌ¶óµµ Æ÷ÇÔÇÏ´Â ÀÏ¹Ý JSP ÆäÀÌÁö¿Í XHTMLÀ̳ª JSP ¿¤¸®¸ÕÆ®¿Í °°Àº À£Æûµå(Well-formed) XML ÀÎ JSP ¹®¼(Document)ÀÌ´Ù. À£Æûµå XML ¹®¼°¡µÇ·Á¸é JSP Áö½ÃÀÚ¿Í ½ºÅ©¸³Æ® ¿ä¼ÒµéÀÌ ÀÏ¹Ý JSP¿Í´Â ´Ù¸¥ ¹æ½ÄÀ¸·Î ±â¼úµÇ¾î¾ß ÇÑ´Ù.
ÀÏ¹Ý JSP ÆäÀÌÁö | JSP ¹®¼ |
---|---|
<%@ page ¼Ó¼º¸ñ·Ï %> | <jsp:directive.page ¼Ó¼º¸ñ·Ï /> |
<%@ include file="path"%> | <jsp:directive.include file="path" /> |
<%! ¼±¾ð %> | <jsp:declaration>¼±¾ð </jsp:declaration> |
<%= ¼ö½Ä %> | <jsp:expression>¼ö½Ä</jsp> |
<% ½ºÅ©¸³Æ²¸´ %> | <jsp:scriptlet>½ºÅ©¸³Æ²¸´</jsp:scriplet> |
ÅÂ±× ¶óÀ̺귯¸®´Â JSP ¹®¼¿¡¼ XML ³×ÀÓ½ºÆäÀ̽º·Î ¼±¾ðµÈ´Ù. ¿¹¸¦µé¾î XHTML°ú JSP Ç¥ÁØ ¾×¼Ç ±×¸®°í JSTL ÄÚ¾î ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â JSP ¹®¼´Â <html> ·çÆ® ¿¤¸®¸ÓÆ°¿¡ ´ÙÀ½°ú °°Àº ³×ÀÓ ½ºÆäÀ̽º ¼±¾ðÀ» °¡Á®¾ß ÇÑ´Ù.
<html
xmlns="http://www.w3c.org/1999/xhtml"
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xml:lang="en" lang="en">
xmlns ¼Ó¼ºÀº ±âº» ³×ÀÓ½ºÆäÀ̽º¸¦ XHTMLÀÇ ³×ÀÓ½ºÆäÀ̽º·Î ¼³Á¤ÇÑ´Ù. xmlns:jsp ¼Ó¼ºÀº JSP Ç¥ÁØ ¾×¼Ç¿¡ Á¤ÀÇµÈ jsp Á¢µÎ»ç¿¡ °üÇÑ °ÍÀÌ°í, xmlns:c ¼Ó¼ºÀº JSTL Core ¶óÀ̺귯¸®¿¡ ÀÇÇØ Á¤ÀÇµÈ c Á¢µÎ»ç¿¡ °üÇÑ °ÍÀÌ´Ù.
JSP ¹®¼´Â óÀ½ºÎÅÍ JSP ¸í¼¼ÀÇ ÇÑ ºÎºÐÀ̾úÀ¸³ª Ãʱ⿡´Â ¼±ÅûçÇ×ÀÏ »ÓÀ̾ú°í ³ªÁß¿¡µµ ¸¹Àº Á¦¾àÀ» °®°í ÀÖ¾ú´Ù. JSP 2.0 Àº ´ëºÎºÐÀÇ Á¦¾àÀ» ¾ø¾Ö°í, ¸Å¿ì ½±°Ô XML°ú JSP¸¦ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ°Ô Çß´Ù.
JSP 2.0 ÀÌÀü¿¡´Â JSP ¹®¼´Â <jsp:root>¿ä¼Ò¸¦ ²À Æ÷ÇÔÇÏ¿© JSP ÄÁÅ×À̳ʿ¡°Ô ÀÌ°ÍÀÌ JSP ÆäÀÌÁöÀÓÀ» ¾Ë·ÁÁÖ¾î¾ß¸¸ Çß´Ù. JSP 2.0Àº JSP ¹®¼ÀÓÀ» ¾Ë·ÁÁÖ´Â ´Ù¸¥ ¹æ¹ýÀ» Á¤ÀÇÇÏ¿© ÀÌ Á¦ÇÑÀ» ¾ø¾Ý´Ù. ´ÙÀ½ Á¶°Çµé Áß ÇÑ °¡Áö¸¸ ¸¸Á·Çϸé JSP ÄÁÅ×À̳ʴ ÆÄÀÏÀ» JSP ¹®¼·Î¼ ó¸®ÇÑ´Ù :
ÀÌ »õ·ÎÀ± ±ÔÄ¢¿¡ ÀÇÇØ JSP ¹®¼¸¦ <jsp:root> ¿ä¼Ò°¡ ÇÊ¿ä ¾ø´Â ÀÏ¹Ý XHTML ÆÄÀÏó·³(¹°·Ð µ¿Àû ÄÁÅÙÆ®¸¦ À§Çؼ JSP ¿ä¼Ò¸¦ Æ÷ÇÔÇϸé¼) ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. JSP ¼Ó¼º ±×·ì ¼±¾ðÀ» ´ÙÀ½°ú °°ÀÌ Çϸé È®ÀåÀÚ°¡ .htmlÀÎ JSP ¹®¼µµ °¡´ÉÇÏ´Ù :
...
<jsp-config>
<jsp-property-group>
<url-pattern>*.html</url-pattern>
<is-xml>true</is-xml>
</jsp-property-group>
</jsp-config>
...
JSP 1.2 ¸í¼¼¿¡ µû¶ó JSP ¹®¼¸¦ ÀÛ¼ºÇغ¸¾Ò´Ù¸é, °ÅÀÇ ´ëºÎºÐ XML ¿ä¼ÒÀÇ ¼Ó¼º¿¡ µ¿ÀûÀ¸·Î °ªÀ» ´ëÀÔÇÒ¶§ ¹®Á¦°¡ ÀÖÀ½À» ¹ß°ßÇßÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, XML ¿ä¼ÒÀÇ class ¼Ó¼º¿¡ »ç¿ëÀÚÀÇ ½ºÅ¸ÀÏ ¼³Á¤À» °¡Áö°í ÀÖ´Â ºó(bean) ÇÁ¶óÆÛƼ °ªÀ» ´ëÀÔÇÑ´Ù°í ÇÏÀÚ. ´ç½ÅÀº ¾Æ¸¶ ´ÙÀ½°ú °°Àº ½Ãµµ¸¦ ¸ÕÀú Çغ¼ °ÍÀÌ´Ù :
<table class="<%= user.getTableClass() %>">
JSP ¹®¼¿¡¼ ÀÌ·± ÇüÅÂÀÇ ÀÚ¹Ù ¼ö½ÄÀÌ JSP ¾×¼Ç ¿ä¼ÒÀÇ ¼Ó¼º °ªÀ¸·Î »ç¿ëµÉ ¼öµµ ÀÖÀ¸³ª, JSP´Â ÅÛÇø´ ÅؽºÆ®¿¡¼´Â ÀÌ·¯ÇÑ ¹®¹ýÀ» ÀÎÁ¤ÇÏÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î ¿©±â¼¿Í °°Àº ¹æ¹ýÀº ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.
JSP ¾×¼Ç ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ¼Ó¼º°ªÀ» Á¤ÇÏ·Á´Â ½Ãµµ ¶ÇÇÑ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù:
<table class="<c:out value="${user.tableClass}"/>">
ÀÌ°ÍÀº ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. À£Æûµå XMLÀº ¿ä¼ÒÀÇ ¼Ó¼º°ªÀ¸·Î º¸´Ù ÀÛ´Ù ±âÈ£(<)¸¦ Æ÷ÇÔÇÒ ¼ö ¾ø´Ù.
JSP 1.2¿¡¼ À£Æûµå XMLÀ» ÁؼöÇÏ¸é¼ µ¿ÀûÀ¸·Î XML ¿ä¼ÒÀÇ ¼Ó¼º°ªÀ» ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº ¸Å¿ì º¸±â ¾ÈÁÁÀº CDATA ¼½¼ÇÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº XML ¿ä¼ÒÀÇ Ã³À½°ú ³¡À» ¸¶Å©¾÷ÀÌ ¾Æ´Ñ ÀÏ¹Ý ÅؽºÆ®(µ¿ÀûÀ¸·Î »ý¼ºµÈ °ªÀ¸·Î µÑ·¯ ½×ÀÎ)·Î °£ÁÖÇÑ´Ù :
<jsp:text><!CDATA[<table class="]]></jsp:text>
<c:out value="${user.tableClass}""/>
<jsp:text>[CDATA[">]]</jsp:text>
JSP 2.0Àº ¸Å¿ì °£´ÜÇÑ ÇØ°áÃ¥À» Á¦½ÃÇØ ÁØ´Ù. ÅÛÇø´ ÅؽºÆ® Áß°£¿¡ EL Ç¥Çö½ÄÀ» »ç¿ëÇϰųª ¿ä¼Ò¸¦ »ý¼ºÇÏ´Â »õ·Î¿î Ç¥ÁØ ¾×¼ÇÀ» »ç¿ëÇÏ¸é µÈ´Ù. EL Ç¥Çö½ÄÀ¸·Î ¿¹Á¦¸¦ ¹Ù²ã ¾²¸é ´ÙÀ½°ú °°´Ù:
<table class="${user.tableClass}">
JSP 2.0 ÄÁÅ×À̳ʴ ¾×¼ÇÀÇ ¼Ó¼ºÀº ¹°·Ð ÅÛÇø´ ÅؽºÆ® »çÀÌÀÇ EL Ç¥Çö½ÄÀ» Æò°¡(°è»ê)ÇÑ´Ù. ±×·¯¹Ç·Î °ÅÀÇ ¸ðµç °æ¿ì¿¡ ÀÌ°ÍÀÌ °¡Àå ÈǸ¢ÇÑ ÇØ°áÃ¥ÀÌ µÈ´Ù.
EL Ç¥Çö½ÄÀ¸·Î ´ëÀÔÇÏ°íÀÚ ÇÏ´Â °ªÀ» Æò°¡ÇÒ ¼ö ¾ø´Ù¸é, ±× ´ë½Å¿¡ 3°³ÀÇ »õ·Î¿î Ç¥ÁØ ¾×¼Ç°ú ¼Ó¼º°ªÀ» ³ªÅ¸³¾ ¼ö ÀÖ´Â ¾Æ¹« JSP Äڵ峪 ÇÔ²² ÀÌ¿ëÇÏ¿© µ¿ÀûÀ¸·Î XML ¿ä¼Ò¸¦ ¸¸µé¾î³¾ ¼ö ÀÖ´Ù:
<jsp:element name="table">
<jsp:attribute name="class">
<c:out value="${user.tableClass}"/>
</jsp:attribute>
<jsp:body>
....
</jsp:body>
</jsp:element>
<jsp:element> ¾×¼ÇÀº XML ¿ä¼Ò¸¦ ¸¸µé°í °Å±â Æ÷ÇÔµÈ <jsp:attribute> ¿ä¼Ò´Â ¿ä¼ÒÀÇ ¼Ó¼ºÀ» ¸¸µç´Ù. ¼Ó¼ºÀÇ °ªÀº <jsp:attribute>ÀÇ ¹ÙµðÀÇ Æò°¡ °á°ú·Î ¼³Á¤µÈ´Ù. ±×·¯¹Ç·Î ÀÌ ¿¹¿¡¼ »ç¿ëÇÑ <c:out>À» ¾´ °Í ó·³ ¿ä¼Ò °ªÀ» »ý¼ºÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ ¾×¼ÇÀ» »ç¿ëÇÏ¿©µµ µÈ´Ù. À¯»çÇÏ°Ô <jsp:body> ¿ä¼Ò¿¡ Æ÷ÇÔµÈ °ªÀ» Æò°¡ÇÏ¿© »ý¼ºµÉ ¿ä¼ÒÀÇ °ªÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
XML ¹®¼´Â ¹®¼ÀÇ ¸Ç À§¿¡ XML ¼±¾ðÀ» °¡Áú ¼ö ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ±× µÚ¿¡ DOCTYPE ¼±¾ðÀÌ µÚµû¸¥´Ù. JSP 2.0 ¿¡¼´Â <jsp:output> Ç¥ÁØ ¾×¼ÇÀ» ÀÌ¿ëÇÏ¿© ÀÌ µÎ°¡Áö ¼±¾ðÀÇ »ý¼ºÀ» Á¶ÀýÇÒ ¼ö ÀÖ´Ù.
JSP ¹®¼°¡ ÃÖ»óÀ§ ¿ä¼Ò·Î <jsp:root> ¿ä¼Ò¸¦ °¡Áö°í ÀÖÁö ¾ÊÀº ÀÌ»ó(ȤÀº ÀÌ ½Ã¸®ÁîÀÇ ´ÙÀ½ ±â»ç¿¡¼ ´Ù·ê tag ÆÄÀÏÀ» ³ªÅ¸³»°Å³ª), JSP ÄÁÅ×À̳ʴ ±âº»ÀûÀ¸·Î ´ÙÀ½°ú °°Àº XML ¼±¾ðÀ» »ý¼ºÇÑ´Ù:
<? xml version="1.0" encoding="encodingValue" ?>
encoding ¼Ó¼ºÀÇ °ªÀº JSP page Áö½ÃÀÚÀÇ contentType ¼Ó¼º¿¡ ÀÇÇØ ÁöÁ¤µÈ ¹®ÀÚ ÀÎÄÚµùÀÌ µÇ°Å³ª ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ» °æ¿ì¿¡´Â UTF-8ÀÌ µÈ´Ù. XML ¼±¾ðÀÌ »ý¼ºµÇ´Â °ÍÀ» ¸·°í ½ÍÀ» ¶§(¾Æ¸¶µµ JSP ¹®¼°¡ ´Ù¸¥ JSP ÆäÀÌÁö¿¡ Æ÷Ç﵃ °æ¿ì¿¡), JSP ¹®¼¿¡¼ <jsp:output> ¾×¼Ç ¿ä¼Ò¸¦ »ç¿ëÇØ JSP ÄÁÅ×À̳ʸ¦ ¼³µæÇÒ ¼ö ÀÖ´Ù :
<jsp:output omit-xml-declaration="true" />
¼±¾ð »ý¼ºÀ» ¸·±â À§ÇØ ¼Ó¼ºÀÇ °ªÀ» 'true'³ª 'yes'·Î ÁöÁ¤ÇÏ°í, ±×·¸Áö ¾Ê´Ù¸é 'false'³ª 'no'¸¦ »ç¿ëÇÑ´Ù.
DOCTYPE ¼±¾ðÀº XML Æļ(ºê¶ó¿ìÀú¿¡¼ »ç¿ëµÇ´Â °Í°ú °°Àº)¿¡°Ô ÀÌ ¹®¼°¡ ¾î¶² Document Type Declaration(DTD)¸¦ µû¸£´ÂÁö¸¦ ¾Ë·ÁÁØ´Ù. Æļ´Â ÀÌ Á¤º¸¸¦ ÀÌ¿ëÇؼ ¿ÀÁ÷ DTD¿¡ ÀÇÇØ ¼±¾ðµÈ XML ¿ä¼Ò¸¸À» Æ÷ÇÔÇÏ°í ÀÖ´Â ¹®¼ÀÎÁö¸¦ °Ë»çÇÑ´Ù. JSP ¹®¼¿¡ ÀÇÇØ »ý¼ºµÉ ¹®¼¿¡ ´ëÇÑ DOCTYPE ¼±¾ðÀ» ³Ö¾î¼´Â ¾ÈµÈ´Ù. ±×·¸°Ô Çϸé JSP ¹®¼ ÀÚ½ÅÀÌ ±× DTD¿¡ µû¸¥´Ù°í ÁöÁ¤ÇÏ´Â °ÍÀÌ µÇ¾î¹ö¸°´Ù. ´ë½Å <jsp:output> ¾×¼ÇÀ» »ç¿ëÇÏ¿© JSP ¹®¼¿¡ ÀÇÇØ »ý¼ºµÉ °á°ú ¹®¼ÀÇ DTD ¼±¾ðÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù :
<jsp:output doctype-root-element="html"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<jsp:directive.page contentType="text/html" />
ÀÌ ¿¹¿¡¼¿Í °°ÀÌ »ç¿ëÇϸé <jsp:output> ¾×¼ÇÀº °á°ú·Î XHTMLÀ» À§ÇÑ DOCTYPE ¼±¾ðÀ» Ãß°¡ÇÑ´Ù :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
³ª´Â ¶ÇÇÑ ÀÌ ¿¹Á¦¿¡¼ ºê¶ó¿ìÀú°¡ °á°ú ÄÁÅÙÆ®¸¦ ¾î¶»°Ô ´Ù·ï¾ß ÇÒÁö¸¦ ÆÇ´ÜÇÏ°Ô Çϱâ À§ÇØ, <jsp:directive.page> ¼±¾ð¿¡ contentType ¼Ó¼ºÀ» text/html MIME ŸÀÓÀ¸·Î ÁöÁ¤ÇÏ¿© Æ÷ÇÔ½ÃÄ×´Ù. Âü°í·Î XHTML¿¡ ¸Â´Â Á¤È®ÇÑ MIME ŸÀÔÀº application/xhtml+xmlÀε¥, ¸î¸î ÃֽŠºê¶ó¿ìÀú(ƯÈ÷ Internet Explorer 6)Àº ±×°ÍÀ» ÀνÄÇÏÁö ¸øÇÑ´Ù. text/htmlÀº ´ëºÎºÐÀÇ ºê¶ó¿ìÀúµéÀÌ ¾î¶»°Ô ´Ù·ï¾ß ÇÒÁö¸¦ ¾Æ´Â XHTMLÀ» À§ÇÑ MIME ŸÀÔÀ¸·Î Åë¿ëµÈ´Ù.
Áö±Ý±îÁö º¸¾ÒµíÀÌ JSP 2.0Àº ¸Å¿ì ½±°Ô JSP ÆäÀÌÁö¸¦ XML ¹®¼·Î ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÀÌ ½Ã¸®ÁîÀÇ ¸¶Áö¸· ÆíÀº Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¿¡ °üÇÑ »õ·Î¿î Ư¡µéÀ» ¾Ë¾Æº¼ °ÍÀÌ´Ù : »õ·Î¿î ÅÂ±× ÆÄÀÏ Çü½Ä°ú °£´ÜÇÑ ÅÂ±× API.
JSP 2.0ÀÇ »õ·Î¿î ±â´ÉµéÀ» Á¢Çغ¸°í ½Í´Ù¸é, Apache Tomcat 5¸¦ »ç¿ëÇغ¸¶ó°í ±ÇÇÏ°í ½Í´Ù. ÅèĹÀº »õ·Î¿î JSP ½ºÆåÀ» ÃÖÃÊ·Î ±¸ÇöÇÑ JSP ÄÁÅ×À̳ÊÀÌ´Ù. Jakarta Project »çÀÌÆ®¿¡¼ ±¸ÇÒ ¼ö ÀÖ´Ù.