* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2007.02.02

JSP ¹®¹ý

¼­ºí¸´Àº µ¿ÀûÀÎ HTML ÆäÀÌÁö¸¦ ¸¸µé¾îÁÖ´Â ±â¼úÀÌÁö¸¸ ÀÚ¹Ù ÄÚµå¿Í HTML ÄÚµåÀÇ ºÐ¸®¿¡ ¾î·Á¿òÀÌ ÀÖ¾ú½À´Ï´Ù.
JSP´Â ¼­ºí¸´ÀÇ °¡Áö°í ÀÖ´Â µðÀÚÀÎ,ÄÚµåÀÇ ºÐ¸®ÀÇ ¾î·Á¿òÀ» ¾î´ÀÁ¤µµ °³¼±Çß½À´Ï´Ù.

°£´ÜÇÑ JSP ¿¹Á¦ ÆÄÀÏ(hello.jsp)·Î JSP°¡ À¥»ó¿¡¼­ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¼³¸íÇϰڽÀ´Ï´Ù.
(JSP ¹®¼­ÀÇ È®ÀåÀÚ´Â ¹Ýµå½Ã .jsp À̾î¾ß ÇÕ´Ï´Ù.)

hello.jsp

<html>
<body>
<% out.println("Hello World!!"); %>
</body>
</html>

Ŭ¶óÀ̾ðÆ®(À¥ºê¶ó¿ìÀú)°¡ hello.jsp¸¦ ¿äû(¹æ¹®)Çϸé, À¥¼­¹ö(¾ÆÆÄÄ¡)´Â hello.jsp À̶õ ÀÚ¿øÀÌ ÀÚ½ÅÀÌ Ã³¸®ÇÒ ¼ö ¾ø´Â jspÆÄÀÏÀÓÀ» ÀνÄÇϰí JSP/¼­ºí¸´ ÄÁÅ×À̳Ê(ÅèĹ)¿¡°Ô Á¦¾î±ÇÀ» ³Ñ±é´Ï´Ù.
JSP/¼­ºí¸´ ÄÁÅ×À̳ʴ hello.jsp °¡ óÀ½À¸·Î ¿äûµÇ¾ú´Ù¸é hello.jsp À» ¼­ºí¸´À¸·Î º¯È¯ÇÕ´Ï´Ù.
(º¯È¯µÈ ¼­ºí¸´Àº ÅèĹÀÇ °æ¿ì {TOMCAT_HOME}/work/.. ¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ROOT ¾ÖÇø®ÄÉÀ̼ÇÀÇ ·çÆ® µð·ºÅ丮¿¡ hello.jsp ÀÚ¿øÀÌ ÀÖ´Ù¸é, {TOMCAT_HOME}/work/Catalina/localhost/_/org/apache/jsp/hello_jsp.java °ú °°ÀÌ ¼­ºí¸´ÀÌ »ý¼ºµÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.)
º¯È¯µÈ ¼­ºí¸´Àº ÄÄÆÄÀÏµÈ ÈÄ¿¡ »óÁÖ ¸Þ¸ð¸®¿¡ ·ÎµùµÈ ÈÄ¿¡¾ß ºñ·Î¼­ ¿äûÇÑ Å¬¶óÀÌ¾ðÆ®¿¡°Ô ¼­ºñ½º¸¦ ÇÏ°Ô µË´Ï´Ù.
ÀÌÈÄ ´Ù½Ã hello.jsp ¿äûÀÌ µé¾î¿À¸é JSP/¼­ºí¸´ ÄÁÅ×À̳ʴ ÀÏ´Ü hello.jsp ÆÄÀÏÀÌ º¯°æµÇ¾ú´ÂÁö¸¦ üũÇÕ´Ï´Ù.
¼Ò½º°¡ º¯°æµÇÁö ¾Ê¾Ò´Ù¸é ´ÙÀ½À¸·Î °´Ã¼°¡ ÀÌ¹Ì ·ÎµùµÇ¾ú¾î ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
·ÎµùÀÌ µÇ¾ú´Ù¸é ·ÎµùµÈ °´Ã¼°¡ ¼­ºñ½ºÇÏ°í ·ÎµùµÇÁö ¾Ê¾Ò´Ù¸é ¸Þ¸ð¸®¿¡ ·Îµù ÈÄ ¼­ºñ½ºÇÕ´Ï´Ù.
¼Ò½º°¡ º¯°æµÇ¾ú´Ù¸é JSP/¼­ºí¸´ ÄÁÅ×À̳ʴ hello.jsp ÆÄÀÏÀ» ´Ù½Ã ÄÄÆÄÀÏÇÏ¿© ¼­ºí¸´À¸·Î º¯È¯ÇÕ´Ï´Ù.
JSP Process
ÀÌ·¸µí JSP´Â ¼­ºí¸´ ±â¹ÝÀÇ ±â¼úÀÔ´Ï´Ù.
´ÙÀ½Àº JSP ¹®¹ýÀÔ´Ï´Ù.

¸ñÂ÷

1. Áö½Ã¾î(Directives)

	1) page Áö½Ã¾î
	2) include Áö½Ã¾î
	3) taglib Áö½Ã¾î
	
2. ½ºÆ®¸³ÆÃ(Scripting)

	1) ¼±¾ð(Declarations)
	2) Ç¥Çö½Ä(Expressions)
	3) ½ºÅ©¸³Æ®·¿(Scriptlets)
	
3. ¾×¼Ç(Actions)

	1) jsp:useBean
	2) jsp:setProperty
	3) jsp:getProperty
	4) jsp:param
	5) jsp:include
	6) jsp:forward
	7) jsp:plugin
	
4. ³»Àç °´Ã¼(Implicit Objects)

	1) out
	2) request
	3) response
	4) pageContext
	5) session
	6) application
	7) config
	8) page
	9) exception

1. Áö½Ã¾î

Áö½Ã¾î(Directives)´Â JSPÆäÀÌÁöÀÇ Àü¹ÝÀûÀÎ Á¤º¸¸¦ ¼­ºí¸´/JSP ¿£Áø¿¡°Ô Á¦°øÇÏ´Â ¿ªÈ°À» ÇÕ´Ï´Ù.
JSP ½ºÆå¿¡ ÀÇÇØ ÇöÀç¿¡ °¡´ÉÇÑ Áö½Ã¾î´Â page, include, taglib ÀÔ´Ï´Ù.

  1. page Directive
  2. include Directive
  3. taglib Directive

©ç page Áö½Ã¾î

¢Æ ¿ë¹ý : <%@ page {attribute = "value"} %>

attribute = "value" ¼³¸í
language = "scriptLanguage" ÆäÀÌÁö¸¦ ÄÄÆÄÀÏÇÒ ¼­¹öÃø ¾ð¾î°¡ ¹«¾ùÀÎÁö ±â¼ú(´ëºÎºÐ java)
import = "importList" ÆäÀÌÁö°¡ import ÇÏ´Â ÀÚ¹ÙÆÑŰÁö ¸®½ºÆ® ±â¼ú (,·Î ±¸ºÐ)
session = "true | false" ÆäÀÌÁö¿¡ session µ¥ÀÌÅͰ¡ ÀÌ¿ëµÇ´ÂÁöÀÇ ¿©ºÎ¸¦ °áÁ¤ (µðÆúÆ®°ª:true)
buffer = "none | size in kb" Ãâ·Â ½ºÆ®¸²ÀÇ ¹öÆÛÅ©±â¸¦ °áÁ¤(µðÆúÆ®°ª:8kb)
autoFlush = "true | false" Ãâ·Â¹öÆÛ°¡ ÀÚµ¿ÀûÀ¸·Î ºñ¿öÁö´Â°¡ ¶Ç´Â ¹öÆÛ°¡ Â÷¸é ÀͼÁ¼ÇÀ» ¹ß»ýÇÒ°ÍÀΰ¡ ¿©ºÎ¸¦ °áÁ¤ (µðÆúÆ®°ª:true)
isThreadSafe = "true | false" ¼­ºí¸´/JSP ¿£Áø¿¡°Ô ÀÌ ÆäÀÌÁö°¡ ÀϽÿ¡ ´ÙÁßÀ¸·Î ¼­ºñ½ºÇÒ ¼ö Àִ°¡ÀÇ ¿©ºÎ¸¦ ¾Ë¸²
(µðÆúÆ®°ªÀº true, ¸¸¾à ÀÌ °ªÀÌ false·Î ¼ÂÆÃµÇ¾ú´Ù¸é SingleThreadModel ·Î ÆäÀÌÁö°¡ ÀÛµ¿ÇÕ´Ï´Ù.)
info = "text" JSPÆäÀÌÁö¿¡ °üÇÑ Á¤º¸¸¦ ³ªÅ¸³À´Ï´Ù.
Servlet.getServletInfo() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ Á¢±Ù°¡´ÉÇÕ´Ï´Ù.
errorPage = "error_uri" JSP ÀͼÁ¼ÇÀ» ´Ù·ç´Â ¿¡·¯ ÆäÀÌÁöÀÇ »ó´ë°æ·Î¸¦ ³ªÅ¸³À´Ï´Ù.
isErrorPage = "true | false" ÆäÀÌÁö°¡ ¿¡·¯Çڵ鸵ÇÏ´Â ÆäÀÌÁöÀΰ¡¸¦ ±â¼ú (µðÆúÆ®°ª:false)
contentType = "ctinfo" Ŭ¶óÀÌ¾ðÆ®·Î º¸³»Áú response ÀÇ MIMEŸÀÔ°ú ij¸¯ÅͼÂ

µðÆúÆ® °ªÀÌ Àû¿ëµÇ¹Ç·Î °³¹ßÀÚ´Â ÀÌ ¼Ó¼ºÀ» ¸ðµÎ¸¦ Á¤ÀÇÇØ ÁÙ Çʿ䰡 ¾ø½À´Ï´Ù.
java.utilÆÑŰÁö¸¦ importÇÏ´Â ÆäÀÌÁö Áö½Ã¾î ¿¹

<%@ page import="java.util.*" %>

©è include Áö½Ã¾î

inlcude Áö½Ã¾î´Â JSP º¯È¯¶§¿¡ ÅØ½ºÆ®³ª ¼Ò½º¸¦ »ðÀÔÇϱâ À§ÇØ »ç¿ëÇÕ´Ï´Ù.
¢Æ ¿ë¹ý : <%@ include file="»ðÀÔ¹®¼­" %>
»ðÀԵǴ ¹®¼­´Â À¥ ¾ÖÇø®ÄÉÀ̼dz»¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù.
¿¹) <%@ include file = "header.jsp" %>
include Áö½Ã¾î´Â ¼­ºí¸´À¸·Î º¯È¯ÇÒ ¶§ Çѹø¸¸ »ç¿ëµË´Ï´Ù.
µû¶ó¼­ »ðÀԵǴ ÆÄÀÏÀÇ ¼Ò½º°¡ º¯°æµÉ¶§´Â ¼­ºí¸´/JSP ¿£ÁøÀÌ Àç½ÃÀ۵DZâ Àü±îÁö´Â ¹Ý¿µµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

©é taglib Áö½Ã¾î

taglib Áö½Ã¾î´Â JSPÆäÀÌÁö°¡ Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÔÀ» ±â¼úÇÕ´Ï´Ù.
Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®´Â °¢°¢ÀÇ Ä¿½ºÅÒ ÅÂ±× ÁýÇÕÀ» ±¸º°ÇÏ´Â prefix¿Í uri·Î À¯ÀÏÇÏ°Ô ±¸º°µË´Ï´Ù.
¢Æ ¿ë¹ý : <%@ taglib uri="tagLibraryURI" prefix="tagPrefix" %>
¡Ø ű׶óÀ̺귯¸® Áö½Ã¾î ¼Ó¼º(url, prefix)
uri : Ä¿½ºÅÒÅÂ±× ¶óÀ̺귯¸®¸¦ °íÀ¯ÇÏ°Ô À̸§Áþ´Â URI ÂüÁ¶
prefix : Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¸¦ ±¸º°Çϴµ¥ ¾²ÀÌ´Â Prefix Á¤ÀÇ

2. ½ºÅ©¸³ÆÃ(Scripting)

½ºÅ©¸³ÆÃÀº HTMLÆäÀÌÁö¿¡ ÀÚ¹ÙÄÚµå Á¶°¢À» ¹Ù·Î »ðÀÔÇϱâ À§ÇØ »ç¿ëÇÕ´Ï´Ù.
½ºÅ©¸³ÆÃ¿¡´Â ¼±¾ð(Declarations), ½Ä(Expressions), ½ºÅ©¸³Æ®·¿(Scriptlets) 3°¡Áö°¡ ÀÖ½À´Ï´Ù.

  1. Declarations
  2. Expressions
  3. Scriptlets

©ç ¼±¾ð(Declarations)

¼±¾ðÀº ÀÚ¹Ù º¯¼ö¿Í ¸Þ¼Òµå¸¦ JSP ÆäÀÌÁö³»¿¡¼­ ¼±¾ðÇϱâ À§Çؼ± »ç¿ëµË´Ï´Ù.
¼±¾ðÀº JSP ÆäÀÌÁö°¡ ù¹øÂ°·Î ·ÎµùµÉ ¶§ ÃʱâÈ­µÇ°í ±× ÈÄ¿¡ °°Àº ÆäÀÌÁö³»ÀÇ ´Ù¸¥ ¼±¾ð, ½Ä, ½ºÅ©¸³Æ®·¿¿¡°Ô ÀÌ¿ëµÇ¾î Áý´Ï´Ù.
¢Æ ¿ë¹ý : <%! declaration %>
º¯¼ö ¼±¾ð ¿¹ : <%! String name = new String( "BOB" ); %>
¸Þ¼Òµå ¼±¾ð ¿¹ : <%! public String getName() { return name; } %> ¼±¾ðÀº ¼­ºí¸´À¸·Î º¯È¯µÉ¶§ º¯¼ö ¼±¾ðÀÏ °æ¿ì ¼­ºí¸´ Ŭ·¡½ºÀÇ ¸â¹öº¯¼ö·Î, ¸Þ¼Òµå ¼±¾ðÀÏ °æ¿ì ¼­ºí¸´ Ŭ·¡½ºÀÇ ¸Þ¼Òµå·Î º¯È¯µË´Ï´Ù.

©è Ç¥Çö½Ä(Expressions)

Ç¥Çö½ÄÀº ÄÁÅ×À̳ʿ¡ ÀÇÇØ °á°ú°ª(¹®ÀÚ¿­)À¸·Î ¹Ù²î´Â JSP ÄÄÆ÷³ÍÆ®ÀÔ´Ï´Ù.
Ç¥Çö½ÄÀº request ŸÀÓ¿¡ jsp ÆÄÀϳ»¿¡¼­ ¼­ºí¸´/JSP ÄÁÅ×À̳ʿ¡ ÀÇÇØ º¯È¯µÇ¾î »ðÀԵ˴ϴÙ.
¸¸¾à °á°ú°ªÀÌ ¹®ÀÚ¿­·Î º¯È¯µÇÁö ¾Ê´Â´Ù¸é ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù.
¹ø¿ª½Ã ¹®ÀÚ¿­ÀÌ °ËÃâµÇÁö ¾Ê´Â´Ù¸é ClassCastException ¹ß»ýÇÕ´Ï´Ù.
¢Æ ¿ë¹ý : <%=expression%>
¿¹ : Hello <%=getName()%>

©é ½ºÅ©¸³Æ®·¿(Scriptlets)

½ºÅ©¸³Æ®·¿¿¡¼­´Â ÀÚ¹Ù ¹®ÀåÀ» ÀÚÀ¯·´°Ô ±â¼úÇÒ ¼ö ÀÖ½À´Ï´Ù.
¢Æ ¿ë¹ý : <% scriptlets source %>
<%...%> ·Î Ç¥ÇöµÇ´Â ½ºÅ©¸³Æ®·¿³»ÀÇ ÀÚ¹Ù ÄÚµå´Â ¼­ºí¸´À¸·Î º¯È¯µÉ¶§ _jspSevice() ¸Þ¼Òµå¿¡ Æ÷ÇԵ˴ϴÙ.

3. ¾×¼Ç(Actions)

¾×¼ÇÀº °³Ã¼¸¦ º¯°æÇϰųª »ý¼ºÇϱâ À§ÇØ »ç¿ëµË´Ï´Ù.

  1. jsp:useBean
  2. jsp:setProperty
  3. jsp:getProperty
  4. jsp:param
  5. jsp:include
  6. jsp:forward
  7. jsp:plugin

©ç <jsp:useBean>

ÀÌ ¾×¼ÇÀº JSP ºóÁ »ý¼ºÇϰųª »ý¼ºµÈ JSP ºóÁ ã½À´Ï´Ù.
JSP¹®¼­³»¿¡¼­ <jsp:useBean>ºÎºÐ¿¡ À̸£¸é ¿ì¼± °°Àº scope ¿Í id ¸¦ »ç¿ëÇÏ´Â °´Ã¼¸¦ ã½À´Ï´Ù.
¸¸¾à °´Ã¼¸¦ ãÁö ¸øÇϸé ÁÖ¾îÁø scope ¿Í id ¼Ó¼º´ë·Î ÇØ´ç °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.

¨ç syntax
¢Æ body°¡ ¾ø´Â °æ¿ì
<jsp:useBean id="name" scope="page|request|session|application" typeSpec />

¢Æ body°¡ ÀÖ´Â °æ¿ì
<jsp:useBean id="name" scope="page|request|session|application" typeSpec>
body (bodyÀÇ ³»¿ëÀ¸·Î Scriptlets À̳ª jsp:setProperty ¾×¼ÇÀÌ ¿Ã ¼ö ÀÖÀ½.)
</jsp:useBean>

typeSpec :: =class="className" |
class="className" type="typeName" |
type="typeName" class="className" |
beanName="beanName" type="typeName" |
type="typeName" beanName="beanName" |
type="typeName"

¨è <jsp:useBean> ¾×¼Ç ¼Ó¼º

¼Ó¼º ¼³¸í
id ÁÖ¾îÁø scope ¿¡¼­ °´Ã¼ ÀνºÅϽº¸¦ ½Äº°Çϱâ À§ÇÑ Å°
scope »ý¼ºµÈ ºóÀÇ ·¹ÆÛ·±½º°¡ À¯È¿ÇÑ ¹üÀ§, page(±âº»°ª)|request|session|application
class °´Ã¼ÀÇ ±¸ÇöÀ» Á¤ÀÇÇϴ Ŭ·¡½º
beanName java.beans.Beans Ŭ·¡½ºÀÇ instantiate() ¸Þ¼ÒµåÀÇ ¾Æ±Ô¸ÕÆ®·Î »ç¿ëÇÒ ºóÀÇ À̸§À» ÁöÁ¤
type ÇØ´ç ºóÀÇ ÀνºÅϽº¸¦ ŸÀÔ Ä³½ºÆÃÇÒ ¶§ÀÇ Å¸ÀÔÀ¸·Î class ¼Ó¼º¿¡¼­ Á¤ÀÇµÈ Å¬·¡½ºÀÇ ¼öÆÛ Ŭ·¡½º ¶Ç´Â ÀÎÅÍÆäÀ̽º

¨é ¿¹Á¦
¢Æ ¿¹Á¦ 1:

<jsp:useBean id="cart" scope="request" class="example.Cart" />

À̰ÍÀº ´ÙÀ½ÀÇ scriptlet ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù.

<%
    example.Cart cart;
    cart = (example.Cart)request.getAttribute("cart");
    if ( cart == null ) {
        cart = new example.Cart();
        request.setAttribute("cart", cart);
    }
%>

¢Æ ¿¹Á¦ 2:

<jsp:useBean id="cart" scope="session" class="example.Cart" type="Cartable" />

À̰ÍÀº ´ÙÀ½ÀÇ scriptlet ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù.

<%
    example.Cart cart;
    synchronized (session) {
        cart = (example.Cart)session.getValue("cart");
        if ( cart == null ) {
            cart = (Cartable)new example.Cart();
            session.putValue("cart", cart);
        }
    }
%>

©è <jsp:setProperty>

ÀÌ ¾×¼ÇÀº ÀÚ¹ÙºóÀÇ ¼Ó¼º°ªÀ» ¼ÂÆÃÇÏ´Â µ¥ ¾²ÀÔ´Ï´Ù.

¨ç syntax
<jsp:setProperty name="beanName" propexpr />
propexpr ::= property="*"|
property="propertyName" |
property="propertyName" param="parameterName" |
property="propertyName" value="propertyValue"
propertyValue ::= string

¨è <jsp:setProperty> ¾×¼Ç ¼Ó¼º

¼Ó¼º ¼³¸í
name <jsp:useBean>À̳ª ´Ù¸¥ ¾×¼Ç¿¡¼­ Á¤ÀÇµÈ ºó ÀνºÅϽºÀÇ À̸§
property °ªÀ» º¯°æÇϰíÀÚ ÇÏ´Â ºó ¼Ó¼º
¸¸¾à property="*" ¶ó¸é HTTP ¿äû¿¡ Àü´ÞµÈ ¸ðµç ÆÄ¶ó¹ÌÅÍÀÇ À̸§°ú µ¿ÀÏÇÑ À̸§À» °¡Áø ¸ðµç setter ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ºóÀÇ ¼Ó¼º°ªÀ» ¼öÁ¤ÇÕ´Ï´Ù.
À̶§ ÆÄ¶ó¹ÌÅÍÀÇ value°¡ °ø¹é¹®ÀÚ("") ¶ó¸é ÀÌ¿¡ »óÀÀÇÏ´Â ºóÀÇ ¼Ó¼ºÀº ¼öÁ¤µÇÁö ¾Ê½À´Ï´Ù.
param HTTP ¿äûÀÇ ÆÄ¶ó¹ÌÅÍ À̸§
ÀÌ ÆÄ¶ó¹ÌÅÍ value ·Î property ¼Ó¼º¿¡ ÇØ´çÇÏ´Â ºóÀÇ ¼Ó¼º°ªÀ» º¯°æÇÕ´Ï´Ù.
value value ¿¡ Á¤ÀÇµÈ ¹®ÀÚ¿­·Î ºóÀÇ ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù.

¨é ¿¹Á¦
¢Æ ¿¹Á¦ 1 :

<jsp:useBean id="login" scope="page" class="example.User" />
<jsp:setProperty name="login" property="passwd" />

À̰ÍÀº ´ÙÀ½ÀÇ scriptlet ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù.

<%
    example.User login;
    login = (example.User) pageContext.getAttribute("login");
    if ( login == null ) {
        login = new example.User();
        pageContext.setAttribute("login",login);
    }
    String _jspParam;
    _jspParam = request.getParameter("passwd");
    if ( _jspParam != null && !_jspParam.equals("") )
        login.setPasswd(_jspParam);
%>

¢Æ ¿¹Á¦ 2 :
´ÙÀ½°ú °°ÀÌ FORM ÀÌ ÀÛ¼ºµÇ¾ú´Ù¸é,

<form name="login" method="post">
    <input type="text" name="uid" />
    <input type="password" name="passwd" />
</form>

À̸¦ ¹Þ´Â JSP ÆäÀÌÁö ³»ÀÇ ´ÙÀ½°ú °°Àº ¾×¼ÇÀº

<jsp:setProperty name="login" property="*" />

´ÙÀ½ÀÇ scriptlet ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù.

<%
    String _jspParam;
    _jspParam = request.getParameter("passwd");
    if ( _jspParam != null && !_jspParam.equals("") )
        login.setPasswd(_jspParam);
    _jspParam = request.getParameter("uid");
    if ( _jspParam != null && !_jspParam.equals("") )
        login.setUid(_jspParam);
%>

¢Æ ¿¹Á¦ 3 :
´ÙÀ½°ú °°ÀÌ FORM ÀÌ ÀÛ¼ºµÇ¾ú´Ù¸é,

<form name="login" method="post">
    <input type="text" name="member_id" />
</form>

À̸¦ ¹Þ´Â JSP ÆäÀÌÁö ³»ÀÇ ´ÙÀ½°ú °°Àº ¾×¼ÇÀº

<jsp:setProperty name="login" property="uid" param="member_id" />

´ÙÀ½ÀÇ scriptlet ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù.

<%
    String _jspParam;
    _jspParam = request.getParameter("member_id");
    if ( _jspParam != null && !_jspParam.equals("") )
        login.setUid(_jspParam);
%>

ÀÌ·¸µí, ºóÀÇ ¸Þ¼Òµå À̸§°ú FORM ÀÇ ÆÄ¶ó¹ÌÅÍ À̸§ÀÌ ¼­·Î ÀÏÄ¡ÇÏÁö ¾ÊÀ» ¶§ param ¼Ó¼ºÀ» »ç¿ëÇÕ´Ï´Ù.

¢Æ ¿¹Á¦ 4 :

<jsp:setProperty name="login" property="uid" value="admin" />

´ÙÀ½ÀÇ scriptlet ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù.

<%
    login.setUid("admin");
%>

ÀÌ·¸µí, ºó³»ÀÇ ¼Ó¼º °ªÀ» ¼³Á¤ÇÕ´Ï´Ù.

©é <jsp:getProperty>

jsp:getProperty ¾×¼ÇÀº ºóÀÇ ¼Ó¼º°ªÀ» °¡Á®¿Í¼­ À̰ÍÀ» output ½ºÆ®¸²¿¡ µÎ´Â ¾×¼ÇÀÔ´Ï´Ù.

¨ç ½ÅÅýº
<jsp:getProperty name="name" property="propertyName" />

¨è <jsp:getProperty> ¾×¼Ç ¼Ó¼º

¼Ó¼º ¼³¸í
name ºó ÀνºÅϽºÀÇ À̸§
property ¾ò°íÀÚ ÇÏ´Â ºó ÀνºÅϽºÀÇ ¼Ó¼º°ª

©ê <jsp:param>

ÀÌ ¾×¼ÇÀº <jsp:include>, <jsp:forward>, <jsp:plugin> ¿¡ ³Ñ°ÜÁÙ ÆÄ¶ó¹ÌÅ͸¦ Á¤ÀÇÇÒ ¶§ »ç¿ëµË´Ï´Ù.

¨ç syntax
<jsp:param name="name" value="value" />

¨è <jsp:param> ¾×¼Ç ¼Ó¼º

¼Ó¼º ¼³¸í
name ÆÄ¸®¹ÌÅÍÀÇ À̸§
value ÆÄ¸®¹ÌÅÍÀÇ °ª

©ë <jsp:include>

ÀÌ ¾×¼ÇÀº JSPÆäÀÌÁö¿¡ Á¤Àû(HTML) ¶Ç´Â ´ÙÀ̳ª¹Í À¥ ÄÄÆ÷³ÍÆ®(JSP,Servlets)¸¦ Ãß°¡ÇÒ¶§ »ç¿ëÇÕ´Ï´Ù.

¨ç ½ÅÅýº
<jsp:include page = "urlSpec" flush = "true">
  <jsp:param ... />
</jsp:include>

¨è <jsp:include> ¾×¼Ç ¼Ó¼º
page : ÀÎŬ·çµå µÇ´Â ¼Ò½ºÀÇ »ó´ë°æ·Î
flush : ¹öÆÛ°¡ ºñ¿öÁö´Â ¿©ºÎ

©ì <jsp:forward>

ÀÌ ¾×¼ÇÀº ¼­ºí¸´/JSP ¿£ÁøÀÌ ½ÇÇàÁß¿¡ request¸¦ ´Ù¸¥ ÀÚ¿ø(Á¤Àû ¹®¼­,¼­ºí¸´, JSP)¿¡°Ô ³Ñ±â´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.
ÀÌ ¾×¼Ç¿¡¼­µµ <jsp:param> °¡ ¾²ÀÏ ¼ö Àִµ¥ ÀÌ´Â Æ÷¿öµùÇÒ ´ë»óÀÚ¿ø¿¡°Ô Àü´ÞÇÒ ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤Çϱâ À§ÇØ ¾²ÀÔ´Ï´Ù.

½ÅÅýº
<jsp:forward page = "relativeURL">
  <jsp:param .../>
</jsp:forward>

´ÜÀÏ ¼Ó¼º page´Â Æ÷¿öµùÇÒ ´ë»óÀÚ¿øÀ» »ó´ëÁÖ¼Ò·Î ³ªÅ¸³½ °ªÀÔ´Ï´Ù.

©í <jsp:plugin>

ÀÌ ¾×¼ÇÀº ´Ù¿î·Îµå³ª ¾ÖÇø´,ÀÚ¹ÙºóÀÇ ½ÇÇàÀ» ÀÏÀ¸Å°´Â HTML Äڵ带 »ý¼ºÇϴµ¥ »ç¿ëµË´Ï´Ù.
ÀÌ ¾×¼ÇÀº Çѹø ÇØ¼®µÇ¾î <object> ³ª <embed> ·Î ¹Ù²ò´Ï´Ù.
¼Ó¼ºÀº ¹Ù²î´Â Äڵ忡 Ç¥ÇöÀ» À§ÇÑ ¼³Á¤µ¥ÀÌÅÍ·Î Á¦°øµË´Ï´Ù.

½ÅÅýº
<jsp:plugin type = "pluginType" code = "classFile" codebase = "relativeURLpath" >
  <jsp:params>
</jsp:params>
</jsp:plugin>

<jsp:plugin>ÀÇ ¼Ó¼º ¼³¸í
type : ÀÎŬ·çµåÇÒ Ç÷¯±×ÀΠŸÀÔ ¿¹¸¦ µé¸é applet
code : Ç÷¯±×ÀÎÀÌ ½ÇÇàÇÒ Å¬·¡½ºÀÇ À̸§
codebase : Ŭ·¡½ºÀÇ Àý´ë ¶Ç´Â »ó´ë°æ·Î

4. ³»Àç °´Ã¼(Implicit Object)

³»Àç °´Ã¼´Â JSP ¹®¼­³»¿¡¼­ ÀÌ¿ëµÇ´Â °´Ã¼Àε¥ Ưº°È÷ ·¹ÆÛ·±½º¸¦ ¾ò±â À§ÇÑ ÀÛ¾÷¾øÀÌ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ ¸»ÇÕ´Ï´Ù.

  1. out
  2. request
  3. response
  4. pageContext
  5. session
  6. application
  7. config
  8. page
  9. exception

©ç out

javax.servlet.jsp.JspWriterŬ·¡½ºÀÇ ÀνºÅϽº¸¦ ³ªÅ¸³À´Ï´Ù.
µ¥ÀÌÅ͸¦ ÀÀ´ä ½ºÆ®¸²À¸·Î ÀÛ¼ºÇϴµ¥ »ç¿ëÇÕ´Ï´Ù.
ÀÌ °´Ã¼ÀÇ ÀϹÝÀûÀÎ ¸Þ¼Òµå´Â out.println()ÀÔ´Ï´Ù.

»ç¿ë¿¹
*** out.jsp ***

<%@ page errorPage = "errorpage.jsp" %>
<html><head><title>Use Out</title></head>
<body>
<%
  //Print a simple message using the implicit out object.
  out.println("<b> Hello Bob! </b>");
%>
</body></html>

©è request

javax.servlet.http.HttpServletRequest ÀÎÅÍÆäÀ̽ºÀÇ ÀνºÅϽº
¿äû ÆÄ¶ó¹ÌÅͳª Çì´õ¿Í °°Àº »ç¿ëÀÚ°¡ ¿äûÇÑ À¯¿ëÇÑ Á¤º¸¿¡ ´ëÇØ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.
request °´Ã¼´Â ¸ðµç HTTP¿äû°ú °ü·ÃµÇ¾î ÀÖ½À´Ï´Ù.
ÀÌ °´Ã¼´Â requestÀÇ ÆÄ¶ó¹ÌÅ͸¦ ±¸Çϴµ¥ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Âµ¥ getParamter()¸Þ¼Òµå¸¦ »ç¿ëÇÔÀ¸·Î½á ÆÄ¶ó¹ÌÅÍÀÇ °ªÀ» ¸®ÅϹ޽À´Ï´Ù.
¿¹)
*** request.jsp ***

<%@ page errorPage = "errorpage.jsp" %>
<html>
<head>
  <title>UseRequest</title>
</head>
<body>
<%
  out.println( "<b>Welcome: " + request.getParameter("user") + "</b>" );
%>
</body>
</html>

½ÇÇàÇÏ·Á¸é ´ÙÀ½ URLÀ» ¹æ¹®ÇÕ´Ï´Ù. http://localhost/bbs/request.jsp?user=kim

©é response

javax.servlet.http.HttpServletResponse ÀÎÅÍÆäÀ̽ºÀÇ ÀνºÅϽºÀÔ´Ï´Ù.
»ç¿ëÀÚ¿¡°Ô ¸®ÅÏÇÒ ÇöÀç ÀÀ´äÀ» ³ªÅ¸³½´Ù.
ÇÏÁö¸¸ ´ëºÎºÐÀÇ HTML Ãâ·ÂÀº out°´Ã¼¸¦ ÀÌ¿ëÇÕ´Ï´Ù.

©ê pageContext

jsp¹üÀ§ ³»¿¡¼­ ÀÌ¿ë °¡´ÉÇÑ ¸ðµç ÀÚ¿ø ¹× ÇöÀçÀÇ ¿äû, ÀÀ´ä, ServletContext,HttpSession, ServletConfig °°Àº ÆäÀÌÁö ¼Ó¼ºµé¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.
pageContext °´Ã¼´Â ³»Àå °´Ã¼¸¦ Á¢±ÙÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.

©ë session

session °´Ã¼´Â javax.servlet.http.HttpSession °´Ã¼¸¦ ³ªÅ¸³À´Ï´Ù.
¼¼¼Ç µ¥ÀÌŸ¸¦ Àаí ÀúÀåÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

session °´Ã¼ÀÇ »ç¿ë¿¹
*** session.jsp ***

<html>
<head>
  <title>Session Example </title>
</head>
<body>
<%
  //get a referece to the current count from the session 
  Integer count = (Integer)session.getAttribute( "COUNT" );
  
  if( count == null ) {
    //If the count was not found, create one
    count = new Integer( 1 );
    //and add it to the HttpSession
    session.setAttribute( "COUNT", count );
  } else {
    //Otherwise increment the value
    count = new Integer( count.intValue() + 1 );
    session.setAttribute( "COUNT", count );
  }
  out.println( "<b>This page has been accessed: " + count + " times.</b>" ); 
%> 
</body></html>

ÀÌ ¿¹Á¦¸¦ »ç¿ëÇϱâ À§Çؼ­´Â session.jsp ÆÄÀÏÀ» {TOMCAT_HOME}/webapps/mnd¿¡ º¹»çÇϰí http://localhost/bbs/session.jsp ¸¦ ¹æ¹®ÇÕ´Ï´Ù.
¸®·Îµå ¹öưÀ» ´­·¯ °á°ú¸¦ È®ÀÎÇÕ´Ï´Ù.

©ì application

application °´Ã¼´Â javax.servlet.ServletContext ³ªÅ¸³½´Ù.
ÀÌ °´Ã¼´Â ÁÖ·Î À¥ ÄÄÆ÷³ÍÆ®°¡ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ServletContext¿¡ ÀúÀåµÇ¾î ÀÖ´Â °´Ã¼¸¦ Á¢±ÙÇϱâ À§ÇØ »ç¿ëµË´Ï´Ù.

©í config

ÀÌ °´Ã¼´Â ServletConfigÀÇ ·¹ÆÛ·±½º¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
ServletConfig´Â ¼­ºí¸´/JSP ¿£ÁøÀÇ °üÇÑ ¼³Á¤ Á¤º¸¸¦ ´ã°í ÀÖ½À´Ï´Ù.
ÃʱâÈ­ ÆÄ¶ó¹ÌÅ͵鿡 Á¢±ÙÇϱâÀ§ÇØ »ç¿ëÇÕ´Ï´Ù.

©î page

ÀÌ °´Ã¼´Â ÇöÀç JSPÆäÀÌÁöÀÇ ·¹ÆÛ·±½º¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
jspÆäÀÌÁöÀÇ ÆäÀÌÁö ±¸Çö Ŭ·¡½º ÀνºÅϽº¸¦ ÂüÁ¶Çϸç ObjectÇüÀ¸·Î ¼±¾ðµÇ¾î ÀÖ½À´Ï´Ù.
pageº¯¼ö´Â ½ºÅ©¸³ÆÃ ¿¤¸®¸ÕÆ®µé ¾È¿¡¼­ °¡²û »ç¿ëµÇ¸ç, ´Ü¼øÈ÷ jspÆäÀÌÁö¿Í ±¸Çö ¼­ºí¸´ »çÀÌÀÇ ¿¬°á ¿ªÇÒÀ» ÇÕ´Ï´Ù.

©ï exception

JSPÆäÀÌÁö¿¡¼­ ¹ß»ýÇÑ ÀâÈ÷Áö ¾ÊÀº ÀͼÁ¼Ç¿¡ Á¢±ÙÀ» Á¦°øÇÏ´Â °´Ã¼ÀÔ´Ï´Ù.
ÀÌ °´Ã¼´Â page Áö½Ã¾î Áß isErrorPage°¡ true·Î ¼³Á¤ÇÑ ÆäÀÌÁö³»¿¡¼­¸¸ »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.
Áï, ÆäÀÌÁöµð·ºÆ¼ºê¸¦ ÀÌ¿ëÇØ¼­ ¿¡·¯ ÆäÀÌÁö·Î ÁöÁ¤ÇÑ jsp¿¡¼­¸¸ À¯¿ëÇÑ °´Ã¼ÀÔ´Ï´Ù.

include Áö½Ã¾î¿Í include Ç¥ÁØ ¾×¼Ç°úÀÇ Â÷ÀÌÁ¡
Áö½Ã¾î´Â Çѹø¸¸ ¹ø¿ªÅ¸ÀÓ¿¡ ÇØ¼®µÇÁö¸¸ Ç¥Áؾ׼ÇÀÇ °æ¿ì´Â ¸Å requestŸÀÓ¸¶´Ù ÇØ¼®µË´Ï´Ù.
µû¶ó¼­ Áö½Ã¾î¸¦ »ç¿ëÇÑ ÀÎŬ·çµå´Â ÀÎŬ·çµåµÇ´Â ÆÄÀÏÀÇ º¯È­´Â ÅèĹÀÌ Àç½Ãµ¿µÇÁö ¾ÊÀ¸¸é ¹Ý¿µµÇÁö ¾Ê½À´Ï´Ù.

¼­ºí¸´ÄÁÅØ½ºÆ®¿Í À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ °ü°è
¼­ºí¸´ÄÁÅØ½ºÆ®¿Í À¥ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ °ü°è¿¡ ´ëÇØ ¾Ë±â Àü¿¡ ¸ÕÀú ¼­ºí¸´ÄÁÅØ½ºÆ®°¡ ¹«¾ùÀÎÁö ºÎÅÍ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù.
¼­ºí¸´ÄÁÅØ½ºÆ®(ServletContext)´Â javax.servlet ÆÑŰÁö¿¡ ¼ÓÇÏ´Â °´Ã¼ÀÔ´Ï´Ù.
À̰ÍÀº À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼­ºê »çÀ̵å ÄÄÆ÷³ÍÆ®¿Í ¼­ºí¸´ ÄÁÅ×À̳ʿÍÀÇ Åë½ÅÀ» ´ã´çÇÏ´Â ¸Þ¼Òµå ÁýÇÕÀ» Á¤ÀÇÇÕ´Ï´Ù.
¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ °¡Àå ÀϹÝÀûÀÎ »ç¿ëÁß Çϳª´Â, À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼­¹ö »çÀ̵å ÄÄÆ÷³ÍÆ®µé ¸ðµÎ¿¡°Ô ÀÌ¿ëµÉ ¼ö ÀÖ´Â °´Ã¼¸¦ À§ÇÑ ÀúÀå¼Ò·Î ÀÌ¿ëµÇ´Â °ÍÀÔ´Ï´Ù.
¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ ÀúÀåµÈ °´Ã¼´Â À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÏ»ýµ¿¾È Á¸ÀçÇÕ´Ï´Ù.
4°³ÀÇ ¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ ¸Þ¼Òµå´Â °øÀ¯¸Þ¸ð¸®±â´É¸¦ Á¦°øÇϱâ À§ÇØ ¾²ÀÔ´Ï´Ù.
´ÙÀ½Àº °¢°¢ÀÇ ¸Þ¼Òµå¿¡ °üÇÑ ¼³¸íÀÔ´Ï´Ù.

setAttribute(java.lang.String name,java.lang.Object object)

ù¹øÂ° ÆÄ¶ó¹ÌÅͰªÀÎ À̸§À¸·Î °´Ã¼¸¦ ¹ÙÀεùÇÏ°í °´Ã¼¸¦ ¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ ÀúÀåÇÕ´Ï´Ù.
¸¸¾à ƯÁ¤ À̸§ÀÌ ÀÌ¹Ì »ç¿ëÁßÀ̶ó¸é ±âÁ¸ÀÇ À̸§À¸·Î ¹ÙÀεùµÈ ¼Ó¼ºÀ» Áö¿ì°í »õ·Î¿î °´Ã¼¸¦ ÀÌ À̸§À¸·Î ¹ÙÀεùÇÕ´Ï´Ù.

getAttribute(java.lang.String name)

ù¹øÂ° ÆÄ¶ó¹ÌÅͰªÀ» À̸§À¸·Î ÂüÁ¶ÇÏ´Â °´Ã¼¸¦ ¹ÝȯÇÕ´Ï´Ù.
¸¸¾à ÁÖ¾îÁø À̸§À¸·Î ¹ÙÀÎµÈ ¼Ó¼ºÀÌ ¾ø´Ù¸é ³ÎÀ» ¹ÝȯÇÕ´Ï´Ù.

getAttributeNames()

¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ ÀúÀåµÈ ¼Ó¼ºÀ̸§À» Enumeration ŸÀÔÀ¸·Î ¹ÝȯÇÕ´Ï´Ù.

À¥ ¾ÖÇø®ÄÉÀ̼ǰú ¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ °ü°è
¿ì¸®´Â ÀÌ¹Ì {TOMCAT_HOME}/conf/server.xml ÆÄÀÏ¿¡ »õ·Î¿î Context¸¦ Ãß°¡Çß½À´Ï´Ù. (ÅèĹ admin ÅøÀ» ÀÌ¿ëÇØ¼­).
ÀÌ ÀÛ¾÷À» Çϸé À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÑ °ÍÀÔ´Ï´Ù.
À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» Ãß°¡ÇÔ°ú µ¿½Ã¿¡ »õ·Î¿î ¼­ºí¸´ÄÁÅØ½ºÆ®¸¦ ¶ÇÇÑ ¸¸µç °ÍÀÔ´Ï´Ù.
À̰ÍÀÌ À¥ ¾ÖÇø®ÄÉÀ̼ǰú ¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ °ü°èÀÔ´Ï´Ù.
¸ðµç À¥ ¾ÖÇø®ÄÉÀ̼Ǹ¶´Ù ´Ü ÇϳªÀÇ ¼­ºí¸´ÄÁÅØ½ºÆ®°¡ ÀÖ½À´Ï´Ù.
ÀÌ´Â ¼­ºí¸´ ½ºÆå¿¡ ÀÇÇØ ¿ä±¸µÇ¾îÁö°í ¸ðµç ¼­ºí¸´/JSP ¿£Áø¿¡ ÀÇÇØ ¼öÇàµË´Ï´Ù.
À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÄÆ÷³ÍÆ®¿¡ ¾î¶»°Ô ¿µÇâÀ» ¹ÌÄ¡´ÂÁöÀÇ ¿¹

½ÇÁ¦·Î ¼­ºí¸´ÄÁÅØ½ºÆ®¿Í À¥ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ °ü°è¸¦ ÀÌÇØÇϱâ À§ÇØ,
¿ì¸®´Â ÀÌ¹Ì ¸¸µç /bbs À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¿Ü¿¡ /bbs2 ¶ó´Â À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» Ãß°¡ÇÕ´Ï´Ù.(ÅèĹ admin Åø ÀÌ¿ë)
±×¸®°í °¢°¢ÀÇ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ¾Æ·¡¿Í °°Àº 2°³ÀÇ À¥ÄÄÆ÷³ÍÆ®¸¦ °¢°¢ ¹èÄ¡ÇÕ´Ï´Ù.

ù¹øÂ° À¥ ÄÄÆ÷³ÍÆ® ¼­ºí¸´
*** ContextText.java ***

package example;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class ContextTest extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html;charset=euc-kr";
  public void init() throws ServletException {}

  public void doGet( HttpServletRequest request, HttpServletResponse response )
    throws ServletException, IOException {
    doPost( request, response );
  }

  public void doPost( HttpServletRequest request, HttpServletResponse response )
    throws ServletException, IOException {
    
    // ServletContext ·¹ÆÛ·±½º¸¦ ¾ò´Â´Ù.
    ServletContext context = getServletContext();
    
    // ServletContext·ÎºÎÅÍ count ¼Ó¼º°ªÀ» ¾ò±â¸¦ ½ÃµµÇÕ´Ï´Ù.
    Integer count = (Integer)context.getAttribute( "count" );
    
    // ¸¸¾à count ¼Ó¼ºÀÌ ¾ø´Ù¸é ¸¸µç´Ù.
    // count ¼Ó¼º ÃʱⰪÀº 0 ÀÔ´Ï´Ù.
    if ( count == null ) {
      count = new Integer(0);
      context.setAttribute( "count", new Integer(0) );
    }
    
    response.setContentType( CONTENT_TYPE );
    PrintWriter out = response.getWriter();
    out.println( "<html>" );
    out.println( "<head><title>ContextTest</title></head>" );
    out.println( "<body>" );
    
    // count ¼Ó¼º°ªÀÇ ÇöÀç°ªÀ» Ãâ·ÂÇÕ´Ï´Ù.
    out.println( "<p>ÇöÀç COUNT ´Â : " + count + ".</p>" );
    out.println( "</body></html>" );
    
    // doPost¸Þ¼Òµå°¡ ºÒ¸±¶§¸¶´Ù count ¼Ó¼º°ªÀ» 1¾¿ Áõ°¡½ÃŲ´Ù.
    count = new Integer( count.intValue() + 1 );
    // ServletContext¿¡ Áõ°¡ÇÑ count ¼Ó¼ºÀ» ÀúÀåÇÕ´Ï´Ù.
    context.setAttribute( "count", count );
  }

  public void destory() {}
}

ÄÚµå ¼³¸í
1. getServletContext()¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ ServletContextÀÇ ·¹ÆÛ·±½º¸¦ ¾ò½À´Ï´Ù.
ServletContext context = getServletContext();
2. ¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ ·¹ÆÛ·±½º¸¦ ¾ò¾ú´Ù¸é ¼­ºí¸´ÄÁÅØ½ºÆ®·ÎºÎÅÍ count ¼Ó¼º°ªÀ» ¾ò°íÀÚ ½ÃµµÇÕ´Ï´Ù.
À̶§ getAttribute()¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
Integer count = (Integer)context.getAttribute("count");
3. ¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ count¶ó´Â ¼Ó¼ºÀÌ ÀÖ´ÂÁö Á¶»çÇÏ°í ¸¸ÀÏ ±×·± ¼Ó¼ºÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ¸¸µé°í ¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù.
À̶§ setAttribute()¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
if( count == null) {
count = new Integer(0);
context.setAttribute("count",new Integer(0));
}
4. ¼Ó¼ºÀÌ ¹ß°ßµÇ¾ú´Ù¸é ÀÌ °ªÀ» Ãâ·Â½ºÆ®¸²¿¡ ¾¹´Ï´Ù.
out.println( "<p>The current COUNT is : " + count + ".</p>" );
5. ¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ ¼Ó¼º°ªÀ» Áõ°¡½Ã۰í ÀÌ °ªÀ» ¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù.
count = new Integer( count.intValue() + 1 );
context.setAttribute( "count", count );
¼­ºí¸´À» 2°³ÀÇ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ ¹èÄ¡ÇÕ´Ï´Ù.
À§ ¼­ºí¸´ Äڵ带 bbs/WEB-INF/classes¿Í bbs2/WEB-INF/classes ¿¡ À§Ä¡½ÃŲÈÄ
javac -d . ContextTest.java
¶ó´Â ¸í·É¾î·Î ÄÄÆÄÀÏÇϰí
http://localhost/bbs/servlet/example.ContextTest
ttp://localhost/bbs2/servlet/example.ContextTest
¸¦ ¹æ¹®ÇØ È®ÀÎÇÕ´Ï´Ù.
2¹øÂ° À¥ÄÄÆ÷³ÍÆ® JSPÆäÀÌÁö
ÆÄÀÏÀ§Ä¡ : /bbs/example/ , /bbs2/example/

*** ContextTest.jsp ***

<%@ page contentType="text/html;charset=euc-kr" %>
<HTML>
  <head><title>ContextTest</title></head>
<body>
<h1>
<%
  // count ¼Ó¼ºÀ» ¾ò±â¸¦ ½ÃµµÇÕ´Ï´Ù.
  Integer count = (Integer)application.getAttribute( "count" );
  
  // ¸¸¾à count ¼Ó¼ºÀÌ nullÀ̸é Çϳª ¸¸µé¾î¼­ ¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ ÀúÀåÇÕ´Ï´Ù.
  if ( count == Null ) {
    count = new Integer(0);
    application.setAttribute( "count", count );
  }
%>
ÇöÀç COUNT ´Â : <%=count%>
<%
  // count ¼Ó¼ºÀ» 1 Áõ°¡½ÃÄÑ ¼­ºí¸´ÄÁÅØ½ºÆ®¿¡ »õ·Î ÀúÀåÇÕ´Ï´Ù.
  count = new Integer( count.intValue() + 1 );
  application.setAttribute( "count", count );
%>
</h1>
</body></html>

ÀÌ ÆÄÀÏÀ» bbs/example ¿Í bbs2/example ¿¡ º¹»çÇÕ´Ï´Ù.
°¢°¢ÀÇ ºÐ¸®µÈ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¾î¶»°Ô À̵é ÄÄÆ÷³ÍÆ®¿¡ ¿µÇâÀ» ¹ÌÄ¡´ÂÁö È®ÀÎÇÕ´Ï´Ù.
½ÇÇèÀ» ½ÃÀÛÇϱâ À§ÇØ ´ÙÀ½ URL¸¦ ¹æ¹®ÇÕ´Ï´Ù.
http://localhost/bbs/example/ContextTest.jsp
http://localhost/bbs2/example/ContextTest.jsp
Refresh ¹öưÀ» ¿©·¯¹ø ´©¸£°í count°¡ Áõ°¡µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
»õ·Î¿î ºê¶ó¿ìÀú¸¦ ¿­°í ¼­ºí¸´À» ¹æ¹®ÇÕ´Ï´Ù.
http://localhost/bbs/servlet/example.ContextTest
http://localhost/bbs2/servlet/example.ContextTest

Ãâ·Â°á°ú´Â ContextTest.jsp ¿Í °°À» °ÍÀÔ´Ï´Ù.
countÀÇ °ª¿¡ ÁÖ¸ñÇÕ´Ï´Ù.

ContextTest.jsp¿¡¼­º¸´Ù 1¸¸Å­ Áõ°¡µÈ °ªÀÔ´Ï´Ù.
À̰ÍÀº ¼­ºí¸´°ú JSP°¡ °°Àº ¼­ºí¸´ÄÁÅØ½ºÆ®¸¦ °øÀ¯Çϰí ÀÖ½À´Ï´Ù´Â ÀǹÌÀÔ´Ï´Ù.
¼­ºí¸´ ÄÁÅØ½ºÆ®ÀÇ °øÀ¯¸Þ¸ð¸® ±â´ÉÀÔ´Ï´Ù. (°øµ¿ ÀúÀå¼Ò ±â´É)
°¢°¢ JSP¿Í ¼­ºí¸´À» ¹æ¹®ÇÔÀ¸·Î½á count °´Ã¼°¡ ¾î¶»°Ô °øÀ¯µÇ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.

ÀÌÁ¦ /bbs2/ContextTest.jsp JSPÆäÀÌÁö¸¦ »õ·Î¿î âÀ¸·Î ¹æ¹®ÇÕ´Ï´Ù.
http://localhost/bbs2/example/ContextTest.jsp countÀÇ °ªÀÌ 0ÀÎ °á°úÈ­¸éÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
À̰ÍÀÌ ÀǹÌÇÏ´Â °ÍÀº /bbs À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ »ç¿ëÇÏ´Â count¿Í Áö±ÝÀÇ count´Â ´Ù¸£´Ù´Â °ÍÀÔ´Ï´Ù.
À̰ÍÀÌ À¥ ¾ÖÇø®ÄÉÀ̼ǰú ¼­ºí¸´ÄÁÅØ½ºÆ®ÀÇ °ü°èÀÔ´Ï´Ù.
/bbs2 ¿Í °ü·ÃÀÌ ÀÖ´Â ¼­ºí¸´ ÄÁÅØ½ºÆ®´Â ÀÌ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ À¯ÀÏÇÕ´Ï´Ù.
±×¸®°í ´Ù¸¥ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç /bbs ¾È¿¡ ÀÖ´Â À¥ ÄÁÆ÷³ÍÆ®¿¡ ÀÇÇØ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù.

´Ù½Ã È®ÀÎÀ» À§ÇØ /bbs2 ÀÇ ¼­ºí¸´À» ¹æ¹®ÇÕ´Ï´Ù.
http://localhost/bbs2/servlet/example.ContextTest
/bbs2 ¿¡ ¹èÄ¡µÈ JSP¿Í °°Àº count ·¹ÆÛ·±½º¸¦ »ç¿ëÇÔÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù

JSP ¹®¹ý¿¡¼­ ²À È®ÀÎÇØ¾ß ÇÒ »çÇ×µé

1. <%@ page session = true>
Q. page Áö½Ã¾î¿¡¼­ session ¼Ó¼ºÀº ±¸Ã¼ÀûÀ¸·Î ¹«¾ùÀ» ÀǹÌÇϴ°¡ ?
page Áö½Ã¾î¿¡ session ¼Ó¼ºÀÌ false·Î µÇ¾î ÀÖÀ¸¸é À¥ ÄÁÅ×À̳ʿ¡¼­´Â ÇØ´ç ÆäÀÌÁö°¡ session °´Ã¼¸¦ »ý¼ºÇÏÁöµµ ¸øÇÏ°í ¶ÇÇÑ ±âÁ¸ÀÇ session °´Ã¼¿¡ ´ëÇÑ ·¹ÆÛ·±½ºµµ ¾òÀ» ¼öµµ ¾ø½À´Ï´Ù.
false·Î µÇ¾î ÀÖ´Â »óÅ¿¡¼­ session °´Ã¼¿¡ Á¢±ÙÇϰíÀÚ ÇÏ¸é ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù.

2. <jsp:useBean id="name" scope="page|request|session|application" class="ClassName" />
Q. Ç¥Áؾ׼ÇÀÇ <jsp:useBean>¿¡¼­ scope ¼Ó¼ºÀº ¹«¾ùÀ» ÀǹÌÇϴ°¡ ?
scope ¼Ó¼ºÀº jsp:useBean ¼Ó¼º Áß¿¡¼­ °¡Àå Áß¿äÇÑ ºÎºÐÀÔ´Ï´Ù.
ÀÏ´Ü ÀÌ ¼Ó¼ºÀº ÀÚ¹Ù ºóÁ °´Ã¼È­½ÃŲ ÈÄ ¾î´À ¹üÀ§±îÁö »ç¿ëÀ» ÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù.
Scope ¼Ó¼ºÀ¸·Î ÁöÁ¤ÇÑ ¿µ¿ªÀÇ ¼ö¸í¿¡ µû¶ó¼­ ºó °´Ã¼´Â ÇϳªÀÇ ÆäÀÌÁö°¡ ¾Æ´Ï¶ó ¿©·¯ ÆäÀÌÁö¿¡¼­ ¼Ò¸êÇÏÁö ¾Ê°í ÂüÁ¶µÇ±â°í ÇÕ´Ï´Ù.
(¿¹¸¦ µé¾î scope ¼Ó¼ºÀÌ session À¸·Î ¼³Á¤µÇ¾ú´Ù¸é ºó °´Ã¼´Â ¼¼¼ÇÀÌ Á¾·áÇÒ ¶§±îÁö ¼Ò¸êµÇÁö ¾Ê°í À¯ÁöµË´Ï´Ù.)
ºó °´Ã¼°¡ »ý¼ºµÈ ÀÌÈÄ ¾î¶² ÆäÀÌÁö¿¡¼­µµ ÂüÁ¶µÉ ¼ö ¾øÀ» ¶§ ÀÚµ¿À¸·Î ¼Ò¸êµË´Ï´Ù.
Scope ¼Ó¼ºÀº ±âº» °ªÀº pageÀÔ´Ï´Ù.
scope ¼Ó¼º¿¡´Â 4°³ÀÇ °ªÀ» ÁöÁ¤ÇØ ÁÙ ¼ö Àִµ¥ °¢°¢ÀÇ °ª¿¡ ´ëÇØ¼­ Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°½À´Ï´Ù.
page : ÀÚ¹Ù ºóÁî°¡ ÇöÀçÀÇ JSP ÆäÀÌÁö ³»¿¡¼­¸¸ »ç¿ë °¡´ÉÇϵµ·Ï ¼³Á¤ÇÒ ¶§
±âº» °ªÀ̹ǷΠƯº°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÀÌ ¿É¼ÇÀÌ Àû¿ëµË´Ï´Ù.
ºó °´Ã¼ÀÇ ¼ö¸íÀº ÇÑ ÆäÀÌÁö ³»¿¡¼­¸¸ À¯ÁöµË´Ï´Ù.
Page ¿µ¿ªÀ¸·Î »ý¼ºµÈ °´Ã¼´Â ¿äûµÈ ÆäÀÌÁö ³»¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.
°°Àº ÆäÀÌÁö¸¦ ¿äÃ»ÇØµµ »õ·Î¿î ºó °´Ã¼°¡ »ý¼ºµË´Ï´Ù.
ÆäÀÌÁöÀÇ ½ÇÇà Á¾·á¿Í ÇÔ²² ºó °´Ã¼´Â ¼Ò¸êµË´Ï´Ù.
¸Å ÆäÀÌÁö¸¶´Ù »õ·Î »ý¼ºµÇ¹Ç·Î °´Ã¼°¡ »ý¼ºÀÚÀÇ ÃʱâÈ­ ºÎºÐÀ» Ç×»ó ½ÇÇàÇÕ´Ï´Ù.
Page¿µ¿ªÀº ÇÑ ÆäÀÌÁö¿¡¼­¸¸ À¯È¿ÇϹǷΠ<jsp:include> ű׳ª <jsp:forward> ű׷ΠÆ÷ÇÔµÈ ÆäÀÌÁö¿¡¼­
<jsp:useBean> ű״ ÀÌ¹Ì ¸¸µé¾îÁø ºó °´Ã¼¸¦ ÂüÁ¶ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó °°Àº id ¼Ó¼º°ªÀ» °¡Áø »õ·Î¿î °´Ã¼¸¦ »ý¼ºÇÏ°Ô µË´Ï´Ù.
ÇÑ <jsp:include> ű׿¡¼­ »ý¼ºÇÑ ºó °´Ã¼´Â ¿ø ÆäÀÌÁö¿¡¼­ ÂüÁ¶µÉ ¼ö ¾ø½À´Ï´Ù.
Page ¿µ¿ªÀÇ ºó °´Ã¼´Â jsp ÆäÀÌÁö°¡ ºÒ¸± ¶§¸¶´Ù ¸ÕÀú »ý¼ºµÈ ºó °´Ã¼ÀÇ »óŰ¡ ÇÊ¿äÇÏÁö ¾Ê°í »õ·Î »ý¼ºµÇ¾îµµ µÇ´Â °æ¿ì¿¡ ÀûÇÕÇÏ´Ù.
request : JSP ÆäÀÌÁö´Â jsp:forward, jsp:include ű׸¦ ÀÌ¿ëÇØ¼­ ´Ù¸¥ JSP ÆäÀÌÁö¿Í ÇÔ²² »ç¿ëÇÒ ¼ö Àִµ¥ ÀÌ °ªÀ¸·Î ¹üÀ§¸¦ ÁöÁ¤Çϸé ÇöÀçÀÇ JSP ÆäÀÌÁö¿Í ¿¬°áµÇ¾î ÀÖ´Â ¸ðµç JSP ÆäÀÌÁö±îÁö ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
ÀÌ·² °æ¿ì ÀÌ ÀÚ¹Ù ºóÁîÀÇ id´Â ´Ù¸¥ ÆäÀÌÁö¿¡ µ¿ÀÏÇÑ À̸§ÀÇ id°¡ Á¸ÀçÇØ¼­´Â ¾ÈµË´Ï´Ù.
¹Ý´ë·Î page ¼Ó¼ºÀ¸·Î ÁöÁ¤µÇ¾î ÀÖÀ» °æ¿ì¿¡´Â ÇöÀç ÆäÀÌÁö¿¡ jsp:forward¿Í jsp:include°¡ ÀÖÀ» Áö¶óµµ ÇØ´ç ÆäÀÌÁö±îÁö ¿µÇâÀ» ¹ÌÄ¡Áö´Â ¾Ê½À´Ï´Ù. Áï, ÇØ´ç ÆäÀÌÁö°¡ ¿ø ÆäÀÌÁö¿¡¼­ ÂüÁ¶ÇÏ´Â ÀÚ¹Ù ºóÁ ÂüÁ¶ÇÏÁö ¸øÇÕ´Ï´Ù.
¶ÇÇÑ request ¿µ¿ªÀ¸·Î »ý¼ºµÈ ºó °´Ã¼¸¦ request °´Ã¼¿¡ ÀúÀåÇÏ¿© request °´Ã¼¿¡¼­ ã¾Æ¼­ ÂüÁ¶°¡ °¡´ÉÇÕ´Ï´Ù.
<jsp:include> ÅÂ±×¿Í <jsp:forward>ű׸¦ »ç¿ëÇÏ´Â °æ¿ì °°Àº request °´Ã¼¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù.

session : ÀÌ °ªÀ¸·Î ¹üÀ§¸¦ ÁöÁ¤ÇØ ³õÀ¸¸é ¼¼¼Ç¿¡ À¯È¿ÇÒ ¶§±îÁö ÀÚ¹Ù ºóÁîÀÇ °´Ã¼°¡ À¯È¿ÇÕ´Ï´Ù.
¼¼¼ÇÀÌ À¯ÁöµÇ´Â µ¿¾È °°Àº ¼¼¼Ç¿¡¼­ È£ÃâµÇ´Â ¸ðµç ÆäÀÌÁö¿¡¼­ ºó °´Ã¼´Â ¼Ò¸êµÇÁö ¾Ê°í À¯ÁöµË´Ï´Ù.
Session ¿µ¿ªÀ¸·Î »ý¼ºµÈ ºóÀº session °´Ã¼¿¡ ÀúÀåµË´Ï´Ù.
°¢ »ç¿ëÀÚ¿¡ ´ëÇÏ¿© µ¶¸³ÀûÀ¸·Î »ý¼ºµÇ´Â session °´Ã¼´Â ¼¼¼ÇÀÌ Á¾·áµÉ ¶§±îÁö È£ÃâµÇ´Â ¸ðµç ÆäÀÌÁö¿¡¼­ id ¼Ó¼ºÀ¸·Î ±¸ºÐµÇ´Â °´Ã¼µéÀ» À¯ÁöÇÏ°í »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
ÇѰ¡Áö ÁÖÀÇÇÒ Á¡Àº page Áö½Ã¾î¿¡¼­ session ¼Ó¼ºÀ» false·Î ÇØ ³õ¾ÒÀ» °æ¿ì¿¡´Â ÀÌ ÀÚ¹Ù ºóÁî °´Ã¼´Â »ç¿ëÇÒ ¼ö ¾ø°Ô µË´Ï´Ù.
page, request scope ¼Ó¼ºÀ¸·Î »ý¼ºµÈ ºóÀº ºê¶ó¿ìÀúÀÇ ¿äû¿¡ ´ëÇÏ¿© °á°ú¸¦ »ý¼ºÇÏ¿© µ¹·ÁÁØ ´ÙÀ½¿¡´Â ¼Ò¸êµË´Ï´Ù.
application : ÀÌ °ªÀº °¡Àå ±¤¹üÀ§ÇÑ ¹üÀ§¸¦ °®´Â °ªÀÔ´Ï´Ù. ÀÌ °ªÀ¸·Î ¹üÀ§¸¦ ÁöÁ¤ÇÏ¸é ¸ðµç JSP ÆäÀÌÁö¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÀÚ¹Ù ºóÁî °´Ã¼´Â ¼­ºí¸´/JSP ¿£ÁøÀ» Á¤Áö½ÃŰ°Å³ª ´Ù½Ã ½ÃÀÛ½Ãų ¶§±îÁö °è¼Ó »ì¾Æ ÀÖ°Ô µË´Ï´Ù.
Áï, ¼­ºí¸´/JSP ¿£Áø¿¡ ÀÇÇØ ¼Ò¸êµÇÁö ¾Ê°í À¯ÁöµË´Ï´Ù.

application scope ¼Ó¼ºÀ¸·Î »ý¼ºµÈ ºóÀº application ³»À尴ü¿¡ ÀúÀåµÇ¾î °°Àº À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇÏ´Â ¸ðµç »ç¿ëÀÚ¿¡°Ô »ç¿ëµÇ¾î Áú ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÌ ¿É¼ÇÀº °ÅÀÇ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.
3. <%@ include file="»ó´ë°æ·ÎÆÄÀϸí" %> °ú <jsp:include page="»ó´ë°æ·ÎÆÄÀϸí" /> ÀÇ Á¤È®ÇÑ Â÷ÀÌ´Â ?
Include µð·ºÆ¼ºêÀÇ °æ¿ì Æ÷ÇԵǴ ÆäÀÌÁö¿Í ÇöÀç jsp ÆäÀÌÁö°¡ ÇÕÃÄÁ®¼­ ÇϳªÀÇ jsp ÆäÀÌÁö(ÀÌ´Â °ð ÇÕÃÄÁø jspÆäÀÌÁö°¡ ¼­ºí¸´À¸·Î º¯È¯µÊÀ» ÀǹÌ)°¡ µÇ´Â ¹Ý¸é¿¡ <jsp:include>¾×¼Ç ű׷ΠÆ÷ÇԵǴ ÆäÀÌÁö¿Í Æ÷ÇÔÇÏ´Â ÆäÀÌÁö°¡ ÇÕÃÄÁöÁö ¾Ê°í ±×´ë·Î Á¸ÀçÇÏ°Ô µË´Ï´Ù.