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

¼­ºí¸´ ¿¹Á¦

1. HelloServlet

¼­ºí¸´ÀÇ Ã¹¹øÂ° ¿¹Á¦´Â "¾È³ç! 2008³â" ¸¦ Ãâ·ÂÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
¾ÕÀ¸·Î ³ª¿À´Â ¸ðµç ¿¹Á¦´Â ROOT À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ½ÇÇàÇÕ´Ï´Ù.
¾Æ·¡ ÆÄÀÏÀ» ROOT À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ WEB-INF/src/example Æú´õ¿¡ ÀúÀåÇÕ´Ï´Ù.
/WEB-INF/src/example/ Æú´õ·Î À̵¿ÇÏ¿© ¾Æ·¡¿Í °°ÀÌ ÄÄÆÄÀÏÇÕ´Ï´Ù.

/WEB-INF/src/example/HelloServlet.java

package example;

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

public class HelloServlet extends HttpServlet {
  public void doGet( HttpServletRequest req, HttpServletResponse res )
    throws ServletException,IOException {
    
    res.setContentType( "text/html;charset=euc-kr" );
    PrintWriter out = res.getWriter();
    
    out.println( "<HTML>" );
    out.println( "<BODY>" );
    out.println( "¾È³ç! 2008³â" );
    out.println( "</BODY>" );
    out.println( "</HTML>" );
    out.close();
    
  }
}
(1) web.xml ÆÄÀÏ ÆíÁý

web.xml ÆÄÀÏÀ» ¿­°í web-app ¿¤¸®¸àÆ®¾È¿¡ ¾Æ·¡¸¦ Ãß°¡ÇÕ´Ï´Ù.

/WEB-INF/web.xml

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>example.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
(2) HelloServlet.java ÄÄÆÄÀÏ

CLASSPATH ¿¡ C:/apps/tomcat/common/lib/servlet-api.jar ÆÄÀϰæ·Î¸¦ Ãß°¡Çß´Ù¸é ¾Æ·¡Ã³·³ ÄÄÆÄÀÏÇÕ´Ï´Ù.
javac -d C:/www/myproject/WEB-INF/classes HelloServlet.java
CLASSPATH ¿¡ servlet-api.jar ÆÄÀÏÀ» Ãß°¡ÇÏÁö ¾ÊÀº °æ¿ì¿£ ¾Æ·¡Ã³·³ ÄÄÆÄÀÏÇÕ´Ï´Ù.
javac -d c:/www/myproject/WEB-INF/classes -classpath c:/apps/tomcat/common/lib/servlet-api.jar HelloServlet.java

(3) http://localhost:8080/servlet/HelloServlet ·Î ¹æ¹®ÇÏ¿© Å×½ºÆ®

¾ÆÆÄÄ¡, Tomcat À» Àç½ÃÀÛÇϰí
http://localhost/servlet/HelloServlet À» ¹æ¹®ÇÏ¿© ½ÇÇàÀÌ µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù.

(4) HelloServlet.java ¼­ºí¸´ ¼Ò½º ¼³¸í

1) HttpServlet Ŭ·¡½º¸¦ »ó¼Ó¹ÞÀº ¿ì¸®ÀÇ ¼­ºí¸´Àº public class ·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.
2) HTTP ÀÇ GET ¹æ½ÄÀ¸·Î À¥ ºê¶ó¿ìÀú°¡ ¿äÃ»ÇØ¿À¸é doGet() ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
(ÀϹÝÀûÀ¸·Î À¥¼­¹öÀÇ ÀÚ¿øÀ» ¿äûÇÏ´Â °ÍÀº HTTP ÇÁ·ÎÅäÄÝÀÇ GET ¹æ½ÄÀÇ ¿äûÀÔ´Ï´Ù.)
3) doGet() ¸Þ¼Òµå´Â HttpServletRequest ¿Í HttpServletResponse ŸÀÔÀÇ ¾Æ±Ô¸ÕÆ®¸¦ °¡Áý´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î ´ÙÀ½ ¹®ÀåÀ¸·Î ¿¹¿Ü¸¦ ó¸®ÇÕ´Ï´Ù.
throws ServletException, IOExcepiton
4) res.setContentType("text/html;charset=euc-kr");
Àº À¥ºê¶ó¿ìÀú¿¡ ÀÀ´äÀ¸·Î Ãâ·ÂµÉ ¹®¼­ÀÇ MIME ŸÀÔÀ» ¼³Á¤ÇÕ´Ï´Ù.
;charset=euc-kr À» ¾²Áö ¾ÊÀ¸¸é ÇѱÛÀÌ ±úÁö´Â °æ¿ì°¡ ¹ß»ýÇÕ´Ï´Ù.
setContentType()¸Þ¼Òµå´Â HttpServletResponse ÀÇ ¸Þ¼ÒµåÀÔ´Ï´Ù.
5) PrintWriter out = res.getWriter();
À¥ºê¶ó¿ìÀú°¡ ¸ñÀûÁöÀÎ ¹®ÀÚ Ãâ·Â ½ºÆ®¸²À» ¾ò½À´Ï´Ù.
PrintWriterÀÇ plintln() ¸Þ¼Òµå¾È¿¡ ¹®ÀÚ¿­À» ³ÖÀ¸¸é Ŭ¶óÀ̾ðÆ®ÀÇ À¥ºê¶ó¿ìÀú¿¡ Ãâ·ÂµË´Ï´Ù.
6) http://localhost/servlet/HelloServlet ´Â web.xml ¿¡¼­ ¸ÅÇÎÇÑ ³»¿ë´ë·Î Á¢±ÙÇØ¾ß ÇÕ´Ï´Ù.
7) HelloServlet ¼­ºí¸´ÀÌ ÀÀ´äÀ» º¸³»±â±îÁö
Ŭ¶óÀÌ¾ðÆ®°¡ ¼­¹öÀÇ HelloSerlvet ¼­ºí¸´ ÀÚ¿øÀ» ¿äûÇÕ´Ï´Ù.
¼­ºí¸´ ÄÁÅ×À̳ʴ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ĸ½¶È­ÇÑ HttpSerlvetRequest ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ °´Ã¼¿Í
ÀÀ´äÀ» À§ÇÑ HttpSerlvetResponse ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ °´Ã¼¸¦ ¾Æ±Ô¸ÕÆ®·Î ¹Þ´Â protected void service(HttpServletRequest req,HttpServletResponse res) ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ³»¿ëÀº ´ÜÁö À¥ºê¶ó¿ìÀú°¡ Çì´õ·Î º¸³½ HTTP ¸Þ¼ÒµåŸÀÔ(GET,POST)¿¡ µû¶ó ÀÚµ¿ÀûÀ¸·Î doGet() ¶Ç´Â doPost()¸Þ¼Òµå¸¦ È£ÃâÇϵµ·Ï ÇÏ´Â °ÍÀÌ ÀüºÎÀÔ´Ï´Ù.
(µû¶ó¼­ doGet()À̳ª doPost()¸¦ »ý°¢ÇÏÁö ¾ÊÀ¸·Á¸é service()¸Þ¼Òµå¸¦ Á÷Á¢ ¿À¹ö¶óÀ̵ùÇØµµ µË´Ï´Ù.)

ÀÌÁ¦´Â Ŭ¶óÀÌ¾ðÆ®°¡ À¥ºê¶ó¿ìÀú¸¦ ÅëÇØ¼­ ¿äû°ú ÇÔ²² Á¤º¸¸¦ ¾î¶»°Ô º¸³»´ÂÁö ±×¸®°í ±× Á¤º¸¸¦ ¼­ºí¸´¿¡¼­ ¾î¶»°Ô ´Ù·ê ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¾´Ï´Ù.

2. À¥ ºê¶ó¿ìÀú°¡ ¼­¹ö¿¡ ¹®ÀÚ¿­À» Àü¼ÛÇÏ´Â ¹æ¹ý

HTML FORM ű׸¦ ÀÌ¿ëÇÏ¿© À¥ºê¶ó¿ìÀú°¡ ¼­¹ö·Î ¹®ÀÚ¿­ µ¥ÀÌÅ͸¦ Àü´ÞÇÏ´Â ¹æ¹ý°ú ¼­ºí¸´¿¡¼­ ±× Á¤º¸¸¦ ¹Þ´Â ÄÚµåÁ¶°¢Àº ´ÙÀ½°ú °°½À´Ï´Ù.

Æû ÀÛ¼º ¼­ºí¸´
<input type="text" name="addr"/> req.getParameter("addr");
<input type="radio" name="os" value="WinXP"/>
<input type="radio" name="os" value="Win2003"/>
req.getParameter("os");
<input type="hidden" name="curPage" value="1"/> req.getParameter("curPage");
<input type="password" name="passwd"/> req.getParamter("passwd");
<input type="checkbox" name="hw" value="intel"/>
<input type="checkbox" name="hw" value="amd"/>
req.getParameterValues("hw");
<select name="os" multiple>
  <option value="win">windows</option>
  <option value="linux">linux</option>
  <option value="solaris">solaris</option>
</select>
req.getParameterValues("os");
multiple ¼Ó¼ºÀÌ ¾ø´Ù¸é
req.getParameter( "os" )µµ °¡´É

HttpServletRequest °´Ã¼ÀÇ getParameter(name:String) ¸Þ¼Òµå

HttpServletRequest ÀÇ getParameter(name:String) ¸Þ¼Òµå´Â À¥ºê¶ó¿ìÀú¿¡¼­ »ç¿ëÀÚ°¡ º¸³»´Â µ¥ÀÌÅ͸¦ ¼­ºí¸´¿¡¼­ ¹Þ±â À§ÇØ »ç¿ëÇÏ´Â °¡Àå º¸ÆíÀûÀÎ ¸Þ¼ÒµåÀÔ´Ï´Ù.
¶óµð¿À ¹öưÀº name ¼Ó¼ºÀÌ °°°Ô µÎ¸é °°Àº name ¼Ó¼ºÀÇ ¶óµð¿À ¹öưµéÀº ±×·ìÀÌ µË´Ï´Ù.
±×·ìÈ­µÇ¾î ÀÖ´Â ¶óµð¿À ¹öưÀº »ç¿ëÀÚ°¡ ÇѰ³ Ç׸ñ¸¸À» ¼±ÅÃÇÒ ¼ö ÀÖÀ¸¸ç ¼­¹ö·Î Àü¼ÛÇÏ´Â ÆÄ¶ó¹ÌÅͰªµµ Çϳª¸¸ÀÌ Àü¼ÛµË´Ï´Ù
ÀÌ·¸µí ÆÄ¶ó¹ÌÅÍ¿Í °ª ÇϳªÀÇ ½ÖÀ¸·Î Àü¼ÛµÇ´Â µ¥ÀÌÅ͸¦ ¼ö½ÅÇÏ´Â ¸Þ¼Òµå°¡ ¹Ù·Î getParameter(name:String) ¸Þ¼ÒµåÀÔ´Ï´Ù.
ÀÌ ¹Û¿¡ input ¿¤¸®¸ÕÆ®ÀÇ type ¼Ó¼ºÀÌ text, passwd, hidden ·Î µÈ Æû ¿ª½Ã HttpServletRequest ÀÇ getParameter(name:String) ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ »ç¿ëÀÚ°¡ Àü´ÞÇÑ ÆÄ¶ó¹ÌÅÍ °ªÀ» ¹Þ½À´Ï´Ù.
À̶§ Ŭ¶óÀ̾ðÆ®, Áï À¥ ºê¶ó¿ìÀú¿¡¼­ ¼­¹ö·Î´Â ¹®ÀÚ¿­¸¸À» Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
(¹°·Ð ¼­¹öÃø¿¡¼­ °°Àº ¸Þ¸ð¸®»óÀÇ Á¸ÀçÇÏ´Â ¼­¹öÀÚ¿ø³¢¸®´Â ¸ðµç ŸÀÔÀÌ Àü´ÞµÉ ¼ö ÀÖ½À´Ï´Ù.)

HttpServletRequest °´Ã¼ÀÇ getParameterValues(name:String) ¸Þ¼Òµå

Æû ¾ç½Ä¿¡¼­ ÇϳªÀÇ ÆÄ¶ó¹ÌÅÍ¸í¿¡ °ªÀ» ¿©·¯°³ Àü¼ÛÇÒ ¶§´Â HttpServletRequet ÀÇ getParamter(name:String) ¸Þ¼Òµå°¡ ¾Æ´Ñ getParamterValues(name:String) ¸Þ¼Òµå°¡ »ç¿ëµË´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ¸®ÅϰªÀº »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ °ªµé¸¸À¸·Î ±¸¼ºµÈ String ¹è¿­ÀÔ´Ï´Ù.

HttpServletRequest °´Ã¼ÀÇ getParamterNames()

¸¸¾à »ç¿ëÀÚ°¡ ¾î¶² ÆÄ¶ó¹ÌÅ͸íÀ¸·Î µ¥ÀÌÅ͸¦ º¸³»´ÂÁö ¾Ë¼ö ¾ø´Ù¸é(±×·² °æ¿ì´Â °ÅÀÇ ¾øÁö¸¸) À̶§ »ç¿ëÀÚ°¡ º¸³»´Â ÆÄ¶ó¹ÌÅ͸íÀ» ¾Ë ¼ö ÀÖ´Â ¸Þ¼Òµå°¡ HttpServletRequest ÀÇ getParamterNames()ÀÔ´Ï´Ù.
getParameterNames() ¸Þ¼Òµå´Â ¸®ÅϰªÀ¸·Î ÆÄ¶ó¹ÌÅÍ À̸§À» Á¢±ÙÇÒ ¼ö ÀÖ´Â Enumeration ŸÀÔÀ» ¹ÝȯÇÕ´Ï´Ù.
Enumeration ÀÎÅÍÆäÀ̽º´Â hasMoreElements() , nextElement() 2°³ÀÇ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© µ¥ÀÌÅ͸¦ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

HttpServletRequest °´Ã¼ÀÇ setCharacterEncoding(env:String) ¸Þ¼Òµå

HttpServletRequest ÀÇ setCharacterEncoding("euc-kr") Àº ¿äûÀÇ ¹ÙµðÀÇ ÀÎÄÚµùÀ» ÇÑ±Û ÀÎÄÚµùÀ¸·Î º¯°æÇØÁÖ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.
¸¸ÀÏ ÇÑ±Û µ¥ÀÌÅ͸¦ ¼­¹ö·Î Æû ű׸¦ ÀÌ¿ëÇØ¼­ Àü¼ÛÇÒ ¶§ À§ Äڵ尡 ¾ø´Ù¸é ¼­ºí¸´¿¡¼­ ÇÑ±Û µ¥ÀÌÅÍ´Â ±úÁú °ÍÀÔ´Ï´Ù.
ÁÖÀÇÇÒ Á¡Àº setCharacterEncoding ¸Þ¼Òµå°¡ ½ÇÇàµÇ±â Àü¿¡ ÆÄ¶ó¹ÌÅ͸¦ ¹Þ´Â Äڵ尡 ¼±ÇàµÈ´Ù¸é setCharacterEncoding ¸Þ¼Òµå´Â È¿·ÂÀ» ³»Áö ¸øÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.

HttpServletResponse °´Ã¼ÀÇ setContentType(type:String)

HttpServletResponse ÀÇ setContentType(type:String) ¸Þ¼Òµå´Â ¼­ºí¸´ÀÌ ¸¸µå´Â HTML ¹®¼­ÀÇ Å¸ÀÔ°ú ¹®ÀÚ¼ÂÀ» ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù.
HttpServletRequest ÀÇ setCharacterEncoding(env:String) ¿Í ±¸º°ÇÏ¿©¼­ ±â¾ïÇØ¾ß ÇÕ´Ï´Ù.

3. RequestDispatcher »ç¿ë ¿¹Á¦

javax.servlet.RequestDispathcer Ŭ·¡½º´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ¼­¹ö»óÀÇ ´Ù¸¥ ÀÚ¿ø(¼­ºí¸´,JSP)À¸·Î º¸³»´Â ÀÛ¾÷À» ÇÒ ¶§ »ç¿ëµË´Ï´Ù.
RequestDispathcer ´Â include() ¿Í forward() 2°³ÀÇ ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.
include() ¸Þ¼Òµå´Â ¿äûÀ» ´Ù¸¥ ÀÚ¿øÀ¸·Î º¸³Â´Ù°¡ ´Ù¸¥ ÀÚ¿ø¿¡¼­ ½ÇÇàÀÌ ³¡³ª¸é ´Ù½Ã ¿äûÀ» °¡Á®¿À´Â ¸Þ¼ÒµåÀÔ´Ï´Ù. °á·ÐÀûÀ¸·Î ¸»ÇÏ¸é ¿äûÀ» Àü´ÞÇÑ ÀÚ¿øÀÇ °á°ú¸¦ Æ÷ÇÔÇØ¼­ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô º¸¿©ÁÖ°Ô µË´Ï´Ù.
forward() ¸Þ¼Òµå´Â À̸§ ±×´ë·Î Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ¼­¹ö»óÀÇ ´Ù¸¥ ÀÚ¿ø¿¡°Ô ³Ñ±â´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.

/WEB-INF/src/example/ControllerServlet.java

package example;

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

public class ControllerServlet extends HttpServlet {

  public void doPost( HttpServletRequest req, HttpServletResponse res ) 
    throws IOException, ServletException {
    
    String url = req.getServletPath();
    int end = url.indexOf(".do");
    url = url.substring(1, end);
    
    if ( url.equals( "list" ) ) {
      url = "/example/list.jsp";
    }
    
    ServletContext sc = getServletContext();
    RequestDispatcher rd= sc.getRequestDispatcher( url );
    rd.forward( req, res );
    
  }

  public void doGet( HttpServletRequest req, HttpServletResponse res ) 
    throws IOException, ServletException {
    doPost( req, res );
  }
  
}

/example/list.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
  pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
  °Ô½ÃÆÇ ¸ñ·ÏÀ» º¸ÀÌ´Â ÆäÀÌÁö...
</body>
</html>

´ÙÀ½À¸·Î web.xml ÆÄÀÏÀ» ¿­°í ¾Æ·¡¸¦ Ãß°¡ÇÕ´Ï´Ù.

/WEB-INF/web.xml

<servlet>
	<servlet-name>Controller</servlet-name>
	<servlet-class>example.ControllerServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>Controller</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

´ÙÀ½À¸·Î ¾ÆÆÄÄ¡ ¼³Á¤ ÆÄÀÏ httpd.conf À» ¿­°í ¾Æ·¡¸¦ Ãß°¡ÇÕ´Ï´Ù.
JkMount /*.do tomcat1
ControllerServlet Äڵ忡¼­ "/example/list.jsp" ¿¡ ´ëÇÑ RequestDispatcher ¸¦ ¾òÀº ´ÙÀ½ forward() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ »ç¿ëÀÚÀÇ ¿äûÀ» Àü´ÞÇϰí ÀÖ½À´Ï´Ù.
¾ÆÆÄÄ¡, Tomcat À» Àç°¡µ¿Çϰí http://localhost/list.do ·Î ¹æ¹®ÇÏ¿© /example/list.jsp À̵¿ÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù.

4. ¼­ºí¸´ JDBC ¿¬µ¿¿¹Á¦

- (1) ¿À¶óŬ JDBC ¿¬µ¿ Å×½ºÆ® ÆÄÀÏ GetEmp.java ¸¦ ¼­ºí¸´À¸·Î º¯È¯

/WEB-INF/src/example/GetEmpServlet.java

package example;

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

public class GetEmpServlet extends HttpServlet {
  
  private String DB_URL;
  private String DB_USER;
  private String DB_PASSWORD;

  public void init() throws ServletException {
    //¼³Ä¡°úÁ¤¿¡¼­ ÀÚ½ÅÀÌ Á¤ÇÑ Á¤º¸¿¡ ¸Â°Ô ¹Ù²Û´Ù.
    DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    DB_USER = "scott";
    DB_PASSWORD = "tiger";

    try {
      //µå¶óÀ̹ö¸¦ ·ÎµùÇÕ´Ï´Ù.
      Class.forName( "oracle.jdbc.driver.OracleDriver" );
    } catch ( ClassNotFoundException e ) {
      e.printStackTrace();
    }
  }
  
  public void doGet( HttpServletRequest req, HttpServletResponse res ) 
    throws IOException, ServletException {
    res.setContentType( "text/html;charset=euc-kr" );
    PrintWriter out = res.getWriter();
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String query = "select * from emp";
    try {
      
      //µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù.
      conn = DriverManager.getConnection( DB_URL, DB_USER, DB_PASSWORD );
      
      //Statement¸¦ °¡Á®¿Â´Ù.
      stmt = conn.createStatement();
      
      //SQL¹®À» ½ÇÇàÇÕ´Ï´Ù.
      rs = stmt.executeQuery( query);
      
      while( rs.next() ) {
        String empno = rs.getString(1);
        String ename = rs.getString(2);
        String job = rs.getString(3);
        String mgr = rs.getString(4);
        String hiredate = rs.getString(5);
        String sal = rs.getString(6);
        String comm = rs.getString(7);
        String depno = rs.getString(8);
        
        //°á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù.
        out.println( empno + " : " + ename + " : " + job + " : " + mgr + " : " + hiredate +
          " : " + sal + " : " + comm+" : " + depno + "<br>" );
      }

    } catch (SQLException e) {
      e.printStackTrace( out );
    } finally {
      try {
        if ( rs != null ) rs.close();
        if ( stmt != null) stmt.close();
        if ( conn != null) conn.close();
      } catch ( SQLException e ) {}
    }
  }
}
7369 : SMITH : CLERK : 7902 : 1980-12-17 00:00:00.0 : 800 : null : 20
7499 : ALLEN : SALESMAN : 7698 : 1981-02-20 00:00:00.0 : 1600 : 300 : 30
7521 : WARD : SALESMAN : 7698 : 1981-02-22 00:00:00.0 : 1250 : 500 : 30
7566 : JONES : MANAGER : 7839 : 1981-04-02 00:00:00.0 : 2975 : null : 20
7654 : MARTIN : SALESMAN : 7698 : 1981-09-28 00:00:00.0 : 1250 : 1400 : 30
7698 : BLAKE : MANAGER : 7839 : 1981-05-01 00:00:00.0 : 2850 : null : 30
7782 : CLARK : MANAGER : 7839 : 1981-06-09 00:00:00.0 : 2450 : null : 10
7788 : SCOTT : ANALYST : 7566 : 1987-04-19 00:00:00.0 : 3000 : null : 20
7839 : KING : PRESIDENT : null : 1981-11-17 00:00:00.0 : 5000 : null : 10
7844 : TURNER : SALESMAN : 7698 : 1981-09-08 00:00:00.0 : 1500 : 0 : 30
7876 : ADAMS : CLERK : 7788 : 1987-05-23 00:00:00.0 : 1100 : null : 20
7900 : JAMES : CLERK : 7698 : 1981-12-03 00:00:00.0 : 950 : null : 30
7902 : FORD : ANALYST : 7566 : 1981-12-03 00:00:00.0 : 3000 : null : 20
7934 : MILLER : CLERK : 7782 : 1982-01-23 00:00:00.0 : 1300 : null : 10

¿øÇÏ´Â °á°ú°¡ ³ª¿ÀÁö ¾ÊÀ» ¶§ üũ ¸®½ºÆ®

  • web.xml ÆÄÀÏ¿¡¼­ ¼­ºí¸´ ¸ÅÇÎÁ¤º¸
  • /WEB-INF/classes ¿¡ GetEmpServlet ¹ÙÀÌÆ®ÄÚµå Á¸Àç¿©ºÎ
  • /WEB-INF/lib ¿¡ classes12.jar
  • À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¼º°øÀûÀ¸·Î ·ÎµåµÇ¾ú´ÂÁö È®ÀÎ
  • ÅèĹ ·Î±ë ¸Þ½ÃÁö

5. ServletConfig ÀÇ getInitParameter() »ç¿ë ¿¹Á¦

ServletConfig ÀÇ getInitParameter() ¸Þ¼Òµå´Â ÇØ´ç ¼­ºí¸´¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â ÃʱâÈ­ ÆÄ¶ó¹ÌÅ͸¦ web.xml À¸·ÎºÎÅÍ °¡Á®¿Ã ¶§ »ç¿ëÇÏ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.
ÀÌÀü¿¡ »ç¿ëÇß´ø ConnectionPool °ü·Ã ¼Ò½º´Â JDBC ¼³Á¤³»¿ëÀ» ÀÚ¹ÙÀÇ Properties ÆÄÀÏ(oracle.properties, mysql.properties)À» ÀÌ¿ëÇß½À´Ï´Ù.
¿¹Á¦¿¡¼­´Â ÀÌ JDBC ¼³Á¤ ÆÄÀÏÀ» ÀÚ¹Ù ÇÁ·ÎÆÛƼ ÆÄÀÏ¿¡¼­ XML ÆÄÀÏ·Î º¯°æÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
ÇØ´ç ¼­ºí¸´ÀÇ init ¸Þ¼Òµå³»¿¡ ServletConfig ÀÇ getInitParameter() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ JDBC ¼³Á¤ XML ÆÄÀÏ¿¡ ´ëÇÑ ½ÇÁ¦ ½Ã½ºÅÛ»óÀÇ °æ·Î¸¦ ¾òÀº XML ÆÄÀÏÀÇ ³»¿ëÀ» Àоî ConnectionPool °ü·Ã °´Ã¼¸¦ »ý¼ºÇÑ ´ÙÀ½ ±× °´Ã¼¸¦ ServletContext ¿¡ ÀúÀåÇÕ´Ï´Ù.
´ÙÀ½Àº À§¿¡¼­ ¿¹Á¦·Î »ç¿ëÇß´ø ControllerServlet.java ¿¡ ¾Æ·¡¿Í °°ÀÌ init ¸Þ¼Òµå¸¦ Ãß°¡ÇÕ´Ï´Ù.
±×¸®°í ´ÙÀ½°ú °°Àº import ¹®ÀåÀ» Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù.

  • import net.java_school.db.dbpool.*;
  • import javax.xml.xpath.*;
  • import org.xml.sax.*;

/WEB-INF/classes/ControllerServlet.java

public void init() throws ServletException {
  
  ServletContext cxt = getServletConfig().getServletContext();
  
  String pool = getInitParameter( "pool" );

  String dbServer = null;
  String port = null;
  String dbName = null;
  String userID = null;
  String passwd = null;
  int maxConn = 0;
  int initConn = 0;
  int maxWait = 0;

  if ( pool != null ) {
    try {
      XPathFactory xpathFactory = XPathFactory.newInstance();
      XPath xpath = xpathFactory.newXPath();

      pool = cxt.getRealPath( pool );

      InputSource xmlSource = new InputSource(pool);

      dbServer = xpath.evaluate("/DBproperties/dbServer",xmlSource);
      port = xpath.evaluate("/DBproperties/port",xmlSource);
      dbName = xpath.evaluate("/DBproperties/dbName",xmlSource);
      userID = xpath.evaluate("/DBproperties/userID",xmlSource);
      passwd = xpath.evaluate("/DBproperties/passwd",xmlSource);
      maxConn = Integer.parseInt(xpath.evaluate("/DBproperties/maxConn",xmlSource));
      initConn = Integer.parseInt(xpath.evaluate("/DBproperties/initConn",xmlSource));
      maxWait = Integer.parseInt(xpath.evaluate("/DBproperties/maxWait",xmlSource));
    } catch ( Exception e ) {}
  }
  ConnectionManager dbmgr = new OracleConnectionManager( dbServer, dbName, port, userID, 
  passwd, maxConn, initConn, maxWait );
  
  // OracleConnectionManager °´Ã¼¸¦ ServletContext ¿¡ dbmgr À̶õ À̸§À¸·Î ÀúÀå
  cxt.setAttribute("dbmgr",dbmgr);
}

web.xml ¿­°í ¾Æ·¡¸¦ Ãß°¡ÇÕ´Ï´Ù.

/WEB-INF/web.xml

<servlet>			
  <servlet-name>Controller</servlet-name>
  <servlet-class>example.ControllerServlet</servlet-class>

  <init-param>
    <param-name>pool</param-name>
    <param-value>/WEB-INF/oracle.xml</param-value>
  </init-param>

  <load-on-startup>1</load-on-startup>

</servlet>

oracle.xml ÆÄÀÏÀ» /WEB-INF ¿¡ ÀÚ½ÅÀÇ ¼³Á¤¿¡ ¸Â°Ô ¾Æ·¡¸¦ Âü°íÇØ¼­ ¸¸µì´Ï´Ù.

/WEB-INF/oracle.xml

<?xml version="1.0"?>
<DBproperties>
  <dbServer>10.10.10.10</dbServer>
  <port>1521</port>
  <dbName>orcl</dbName>
  <userID>scott</userID>
  <passwd>tiger</passwd>
  <maxConn>20</maxConn>
  <initConn>5</initConn>
  <maxWait>5</maxWait>
</DBproperties>

¸ÞÀθ޴º JDBC ¿¡¼­ ½Ç½ÀÇÑ ConnectionPool °ü·Ã ¼Ò½º Áß ConnectionManager.java ¿Í OracleConnectionManager.java ¸¦ °¢°¢ ´ÙÀ½°ú °°ÀÌ °íĨ´Ï´Ù.

ConnectionManager.java

package net.java_school.db.dbpool;

import java.sql.*;

public abstract class ConnectionManager {

  protected DBConnectionPoolManager connMgr = null;
  protected String poolName, dbServer, dbName, port, userID, passwd;
  int maxConn,initConn, maxWait;

  public ConnectionManager() {}
  
  public ConnectionManager( String pool, String dbServer, String dbName, String port, 
    String userID, String passwd, int maxConn, int initConn, int maxWait ) {
    poolName = pool;
    this.dbServer = dbServer;
    this.dbName = dbName;
    this.port = port;
    this.userID = userID;
    this.passwd = passwd;
    this.maxConn = maxConn;
    this.initConn = initConn;
    this.maxConn = maxConn;
  }

  public Connection getConnection() {
    return ( connMgr.getConnection( poolName ) );
  }

  public void freeConnection( Connection conn ) {
    connMgr.freeConnection( poolName, conn );
  }

  public int getDriverNumber() {
    return connMgr.getDriverNumber();
  }
}

OracleConnectionManager.java

package net.java_school.db.dbpool;

public class OracleConnectionManager extends ConnectionManager {
  
  public OracleConnectionManager() {}

  public OracleConnectionManager( String dbServer, String dbName, String port, 
    String userID, String passwd, int maxConn, int initConn, int maxWait ) {
    
    super( "oracle", dbServer, dbName, port, userID, passwd, 
	maxConn, initConn, maxWait );
    
    String JDBCDriver = "oracle.jdbc.driver.OracleDriver";

    // ¿À¶óŬ¿ë JDBC thin driver
    String JDBCDriverType = "jdbc:oracle:thin";

    String url = JDBCDriverType + ":@" + dbServer + ":" + port + ":" + dbName;

    connMgr = DBConnectionPoolManager.getInstance();
    connMgr.init( poolName, JDBCDriver, url, userID, passwd, 
	maxConn, initConn, maxWait );
  }
}

À§¿¡¼­ °£´ÜÇÏ°Ô Å×½ºÆ®Çß´ø /exmaple/list.jsp ÆÄÀÏÀ» ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÕ´Ï´Ù.

/example/list.jsp

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.sql.*, net.java_school.db.dbpool.*" %>
<jsp:useBean id="dbmgr" class="net.java_school.db.dbpool.OracleConnectionManager"
scope="application" />
<%
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  String query = "select * from emp";
  try {

    //µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÕ´Ï´Ù.Ä¿³Ø¼ÇÇ® ÀÌ¿ë
    conn = dbmgr.getConnection();

    //Statement¸¦ °¡Á®¿Â´Ù.
    stmt = conn.createStatement();

    //SQL¹®À» ½ÇÇàÇÕ´Ï´Ù.
    rs = stmt.executeQuery( query );

    while ( rs.next() ) {
      String empno = rs.getString(1);
      String ename = rs.getString(2);
      String job = rs.getString(3);
      String mgr = rs.getString(4);
      String hiredate = rs.getString(5);
      String sal = rs.getString(6);
      String comm = rs.getString(7);
      String depno = rs.getString(8);

      //°á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù.
      out.println( empno + " : " + ename + " : " + job + " : " + mgr + " : " + hiredate + 
      " : " + sal + " : " + comm + " : " + depno + "<br>" );
    }
  } catch ( SQLException e ) {
    out.println( "SQLException: " + e.getMessage() );
  } finally {
    try {
      if ( rs != null ) rs.close();
      if ( stmt != null) stmt.close();
      dbmgr.freeConnection( conn );
    } catch ( SQLException e ){}
  }
%>

Tomcat, ¾ÆÆÄÄ¡¸¦ Àç½ÃÀÛÇϰí http://localhost/list.do ·Î ¹æ¹®Çؼ­ Å×½ºÆ®ÇÕ´Ï´Ù.

6. ÆÄÀÏ ¾÷·ÎµåÀ» À§ÇÑ MultipartRequest ÆÑŰÁö

MultipartRequest ÆÑŰÁö´Â ÆÄÀÏ ¾÷·Îµå¿¡ ³Î¸® ÀÌ¿ëµÇ°í ÀÖ´Â ÆÑŰÁöÀÔ´Ï´Ù.
http://www.servlets.com/cos/index.html ¿¡¼­ °¡Àå ÃֽйöÀüÀÎ cos-05Nov2002.zip ¸¦ ´Ù¿î·Îµå ÇÏ¿© ¾ÐÃàÀ» DZ´Ï´Ù.
lib µð·ºÅ丮¿¡ ÀÖ´Â cos.jar ÆÄÀÏÀ» /WEB-INF/lib µð·ºÅ丮¿¡ º¹»çÇÕ´Ï´Ù.
MultipartRequest Ŭ·¡½ºÀÇ »ý¼ºÀÚ´Â ¾Æ·¡ ¸µÅ©¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖµíÀÌ 8°¡Áö³ª µË´Ï´Ù.
http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html
±× Áß ¾Æ·¡ÀÇ »ý¼ºÀÚ´Â ÇÑ±Û ÀÎÄÚµù ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ°í, ¶ÇÇÑ ¾÷·ÎµåµÇ´Â ÆÄÀÏÀÌ ±âÁ¸ÀÇ ÆÄÀϸí°ú Áߺ¹µÉ ¶§ ÆÄÀϸíÀ» º¯°æÇؼ­ ¾÷·ÎµåÇÒ ¼ö ÀÖ½À´Ï´Ù.
MultipartRequest ( HttpServletRequest req, String dir, int max, String encoding, FileRenamePolicy policy )

MultipartRequest ¸Þ¼Òµå

<input type="file" name="photo"/> ű׸¦ ÀÌ¿ëÇØ¼­ logo.gif ¸¦ ¾÷·ÎµåÇß´Ù°í °¡Á¤ÇÏ¿¡ ¼³¸íÇÕ´Ï´Ù.

¸Þ¼Òµå ¼³¸í
getContentType( "photo" ); ¾÷·ÎµåµÈ ÆÄÀÏÀÇ MIME ŸÀÔ ¸®ÅÏ, ¸®Åϰª "image/gif"
getFile( "photo" ); ¾÷·ÎµåµÇ¾î ¼­¹ö¿¡ ÀúÀåµÈ ÆÄÀÏÀÇ File °´Ã¼ ¸®ÅÏ
getFileNames(); Æû ¿ä¼Ò Áß input ÅÂ±× ¼Ó¼ºÀÌ file ·Î µÈ ÆÄ¶ó¹ÌÅÍÀÇ À̸§À» Enumeration ŸÀÔÀ¸·Î ¸®ÅÏ
getFilesystemName( "photo" ); ¾÷·ÎµåµÇ¾î ¼­¹ö ÆÄÀϽýºÅÛ¿¡ Á¸ÀçÇÏ´Â ½ÇÁ¦ ÆÄÀϸíÀ» ¸®ÅÏ
getOriginalFileName( "photo" ); ¿ø·¡ÀÇ ÆÄÀϸíÀ» ¸®ÅÏ
HttpServletRequest ¿Í °°Àº ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϱâ À§ÇÑ ¸Þ¼Òµå
getParameter(String name); name ¿¡ ÇØ´çÇÏ´Â ÆÄ¶ó¹ÌÅÍÀÇ °ªÀ» String ŸÀÔÀ¸·Î ¸®ÅÏ
getParameterNames(); ¸ðµç ÆÄ¶ó¹ÌÅÍÀÇ À̸§À» String À¸·Î ±¸¼ºµÈ Enumeration ŸÀÔÀ¸·Î ¸®ÅÏ
getParameterValues(String name); name ¿¡ ÇØ´çÇÏ´Â ÆÄ¶ó¹ÌÅÍÀÇ °ªµéÀ» String[] ŸÀÔÀ¸·Î ¸®ÅÏ

MultipartRequest ¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ ¾÷·Îµå ¿¹Á¦

/example/upload.html

<!--
ÆÄÀϸí: upload.html
-->

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<body>
<h2>MultipartRequest ¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ ¾÷·Îµå Å×½ºÆ®</h2><
<form action="../servlet/UploadTest" method="post" enctype="multipart/form-data">
    À̸§ : <input type="text" name="name"/><br>
    ÆÄÀÏ1 : <input type="file" name="file1"/><br>
    ÆÄÀÏ2 : <input type="file" name="file2"/><br>
    <input type="submit" value="Àü¼Û"/>
</form>
</body></html>

/WEB-INF/classes/UploadTest.java

package example;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

public class UploadTest extends HttpServlet {
  public void doPost( HttpServletRequest req, HttpServletResponse res ) 
  throws IOException, ServletException {
    
    res.setContentType( "text/html;charset=euc-kr" );
    PrintWriter out = res.getWriter();
    //req.setCharacterEncoding( "euc-kr" );
    ServletContext cxt = getServletContext();
    String dir = cxt.getRealPath( "upload" );

    try {
      MultipartRequest multi = new MultipartRequest( req, dir, 
        5*1024*1024, "euc-kr", new DefaultFileRenamePolicy());

      out.println( "<html>" );
      out.println( "<body>" );
      out.println( "<h1>»ç¿ëÀÚ°¡ Àü´ÞÇÑ ÆÄ¶ó¹ÌÅ͵é</h1>" );
      out.println( "<ol>" );
      Enumeration params = multi.getParameterNames();

      while( params.hasMoreElements() ) {
        String name = (String)params.nextElement();
        String value = multi.getParameter( name );
        out.println( "<li>" + name + "=" + value + "</li>" );
      }
      out.println( "</ol>" );

      out.println( "<h1>¾÷·ÎµåµÈ ÆÄÀÏ</h1>" );

      Enumeration files = multi.getFileNames();

      while( files.hasMoreElements() ) {
        out.println( "<ul>" );  
        String name = (String)files.nextElement();
        String filename = multi.getFilesystemName( name );
        String orginalname =multi.getOriginalFileName( name );
        String type = multi.getContentType( name );
        File f = multi.getFile( name );
        out.println( "<li>ÆÄ¶ó¹ÌÅÍ À̸§ : "  + name + "</li>" );
        out.println( "<li>ÆÄÀÏ À̸§ : " + filename + "</li>" );
        out.println( "<li>¿ø·¡ ÆÄÀÏ À̸§ : " + orginalname + "</li>" );
        out.println( "<li>ÆÄÀÏ Å¸ÀÔ : " + type + "</li>" );

        if( f != null ) {
        out.println( "<li>Å©±â: " + f.length() + "</li>" );
        }

        out.println( "</ul>" );
      }
    } catch( Exception e ) {
      out.println( "<ul>" );
      e.printStackTrace( out );
      out.println( "</ul>" );
    }
    out.println( "</body></html>" );
  }
}

Å×½ºÆ®¸¦ À§Çؼ­´Â

  1. À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ·çÆ®¿¡ upload ¶ó´Â Æú´õ¸¦ ¸¸µì´Ï´Ù
  2. ÄÄÆÄÀÏÀ» À§ÇØ cos.jar ÆÄÀÏÀ» CLASSPATH ¿¡ Ãß°¡Çϰí ÄÄÆÄÀÏÇÕ´Ï´Ù
  3. cos.jar ÆÄÀÏÀ» /WEB-INF/lib ¿¡ º¹»çÇÕ´Ï´Ù.
  4. /WEB-INF/web.xml ÆÄÀÏÀ» ¿­¾î UploadTest ¼­ºí¸´À» µî·ÏÇÕ´Ï´Ù.(¾Æ·¡ÂüÁ¶)
  5. ÅèĹÀ» Àç°¡µ¿Çϰí http://localhost/example/upload.html ¸¦ ¹æ¹®ÇÏ¿© Å×½ºÆ® ÇÕ´Ï´Ù.
  6. Áߺ¹µÈ ÆÄÀÏÀ» ¾÷·Îµå Å×½ºÆ®Çϰí upload Æú´õ¿¡ ÆÄÀϸíÀ» È®ÀÎÇÕ´Ï´Ù.

/WEB-INF/web.xml

<servlet>
    <servlet-name>UploadTest</servlet-name>
    <servlet-class>example.UploadTest</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>UploadTest</servlet-name>
    <url-pattern>/servlet/UploadTest</url-pattern>
</servlet-mapping>

7. ÄíŰ

HTTP Àü¼Û¹æ½ÄÀÇ Æ¯Â¡»ó °¢°¢ÀÇ À¥ ºê¶ó¿ìÀú°¡ ¼­¹ö¿Í Åë½Å¿¡¼­ ¼¼¼ÇÀ» À¯ÁöÇÏÁö ¸øÇÏ´Â °ÍÀ» º¸¿ÏÇϱâ À§ÇÑ ±â¼úÀÔ´Ï´Ù.
¼­¹ö°¡ Äí۸¦ Àü¼ÛÇϸé À¥ ºê¶ó¿ìÀú´Â ±× ´ÙÀ½ ¿äû¸¶´Ù ÄíŰ °ªÀ» ¼­¹ö·Î Àü´ÞÇÏ¿© »ç¿ëÀÚ Á¤º¸¸¦ À¯ÁöÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù.
¼­¹ö -> À¥ ºê¶ó¿ìÀú (Äí۸¦ ±Á´Â´Ù°í Ç¥ÇöµÇ´Âµ¥ ¾Æ·¡¿Í °°Àº Á¤º¸°¡ Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú¸¦ ÅëÇØ¼­ ÆÄÀÏ·Î ÀúÀåµË´Ï´Ù.)
À̶§ Àü´ÞµÇ´Â Á¤º¸ ÇüÅ´ ¾Æ·¡¿Í °°½À´Ï´Ù.

Set-Cookie : name = value ; expires = date ; path = path ; domain = domain ; secure

À¥ ºê¶ó¿ìÀú -> ¼­¹ö (Äí۰¡ À¥ºê¶ó¿ìÀú¿¡ ¼ÂÆÃµÇ¸é, À¥ºê¶ó¿ìÀú´Â Äí±â¸¦ Àü´ÞÇØÁØ ¼­¹ö·Î ¿äû½Ã¸¶´Ù ¾Æ·¡¿Í °°Àº ¹®ÀÚ¿­À» ¼­¹ö·Î º¸³À´Ï´Ù.)

Cookie ; name = value1 ; name2 = value2 ;

ÄíŰ À̸§°ú °ª¿¡´Â []()="/?@:; ¿Í °°Àº ¹®ÀÚ´Â ¿Ã ¼ö ¾ø½À´Ï´Ù.
´ÙÀ½Àº Äí۸¦ ¼³Á¤ÇÏ´Â ÀýÂ÷ÀÔ´Ï´Ù.

(1) ÄíŰ ¼³Á¤ ÀýÂ÷

1) Cookie °´Ã¼¸¦ ¸¸µç´Ù. Cookie(String name, String value)
2) ´ÙÀ½ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ ÄíŰ¿¡ ¼Ó¼ºÀ» ºÎ¿©ÇÑ´Ù.

¸Þ¼Òµå ¼³¸í
setValue(String value) »ý¼ºµÈ ÄíŰÀÇ °ªÀ» Àç¼³Á¤ÇÒ ¶§ »ç¿ëÇÑ´Ù.
setDomain(String pattern) ÄíŰ´Â ±âº»ÀûÀ¸·Î Äí۸¦ »ý¼ºÇÑ ¼­¹ö¿¡¸¸ Àü¼ÛµÈ´Ù.
°°Àº µµ¸ÞÀÎÀ» »ç¿ëÇÏ´Â ¼­¹ö¿¡ ´ëÇØ¼­ °°Àº Äí۸¦ º¸³»±â À§Çؼ­ setDomain()À» »ç¿ëÇÑ´Ù.
ÁÖÀÇÇÒ Á¡Àº Äí۸¦ »ý¼ºÇÑ ¼­¹ö¿Í °ü·ÃÀÌ ¾ø´Â µµ¸ÞÀÎÀ» setDomain()¿¡ °ªÀ¸·Î ¼³Á¤Çϸé Äí۰¡ ±¸¿öÁöÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù.
setMaxAge(int expiry) ÄíŰÀÇ À¯È¿±â°£À» ÃÊ´ÜÀ§·Î ¼³Á¤ÇÑ´Ù.
À½¼ö ÀԷ½ÿ¡´Â ºê¶ó¿ìÀú°¡ ´ÝÀ¸¸é Äí۰¡ »èÁ¦µÈ´Ù.
setPath(String uri) Äí۰¡ Àû¿ëµÉ °æ·Î Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù.
°æ·Î°¡ ¼³Á¤µÇ¸é ÇØ´çµÇ´Â °æ·Î·Î ¹æ¹®ÇÏ´Â °æ¿ì¿¡¸¸ À¥ºê¶ó¿ìÀú°¡ Äí۸¦ À¥¼­¹ö¿¡ Àü¼ÛÇÑ´Ù.
setSecure(boolean flag) flag°¡ trueÀÌ¸é º¸¾Èä³ÎÀ» »ç¿ëÇÏ´Â ¼­¹öÀÇ °æ¿ì¿¡ ÇÑÇØ Äí۸¦ Àü¼ÛÇÑ´Ù.

3) À¥ºê¶ó¿ìÀú¿¡ »ý¼ºµÈ Äí۸¦ Àü¼Û : res.addCookie(cookie);

(2) ±¸¿öÁø ÄíŰ ÀÌ¿ë

À§¿¡¼­ Äí۸¦ ¼³Á¤Çß´Ù¸é ÀÌÁ¦ ¼­ºí¸´¿¡¼­ ÄíŰ ÀÌ¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

Cookie[] cookie = req.getCookies();

HttpServletRequest ÀÇ getCookies() ¸Þ¼Òµå¸¦ »ç¿ëÇØ¼­ ÄíŰ¹è¿­À» ¾ò½À´Ï´Ù.
¸¸¾à ±¸¿öÁø Äí۰¡ ¾ø´Ù¸é getCookies() ¸Þ¼Òµå´Â null À» ¸®ÅÏÇÕ´Ï´Ù.
´ÙÀ½ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇϸé ÄíŰ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
ÀÌÁß getName()°ú getValue()°¡ ÁÖ·Î ¾²ÀÔ´Ï´Ù.

Cookie ¸Þ¼Òµå ¼³¸í
getName() ÄíŰÀÇ À̸§À» ±¸ÇÑ´Ù.
getValue() ÄíŰÀÇ °ªÀ» ±¸ÇÑ´Ù.
getDomain() ÄíŰÀÇ µµ¸ÞÀÎÀ» ±¸ÇÑ´Ù.
getMaxAge() ÄíŰÀÇ À¯È¿½Ã°£À» ±¸ÇÑ´Ù.

´ÙÀ½Àº ¼­¹ö »çÀ̵忡¼­ Äí۰ªÀ» ¾Ë¾Æ³»´Â ÄÚµåÁ¶°¢ÀÔ´Ï´Ù.
¿¹¿¡¼­´Â ÄíŰÀ̸§ÀÌ id ¿¡ ÇØ´çÇÏ´Â Äí۰ªÀ» ¹ÝȯÇÏ´Â ¿¹ÀÔ´Ï´Ù.

String id = null;
Cookie[] cookies = request.getCookies();
if ( cookies != null ) {
  for ( int i=0; i < cookies.length; i++ ) {
    String name = cookies[i].getName();
    if ( name.equals( "id" ) ) {
      id = cookies[i].getValue();
    }
  }
}

¾Æ·¡´Â Äí۸¦ »èÁ¦ÇÏ´Â ¿¹ÀÔ´Ï´Ù.
¹æ¹ýÀº »èÁ¦ÇϰíÀÚ ÇÏ´Â ÄíŰ¿Í °°Àº À̸§ÀÇ Äí۸¦ »ý¼ºÇϰí setMaxAge(0) À» È£ÃâÇÕ´Ï´Ù.

Cookie cookie = new Cookie("id","");
cookie.setMaxAge(0);
res.addCookie(cookie);
(3) ÄíŰ ½Ç½À

´ÙÀ½Àº °£´ÜÇÑ ÄíŰ¿¹Á¦ÀÔ´Ï´Ù.
½Ç½À ÈÄ cookieList.jsp ÆÄÀÏÀ» cookie Æú´õ ¿Ü¿¡ ´Ù¸¥ Æú´õ¿¡ º¹»çÇϰí Å×½ºÆ®ÇØ º¸¼¼¿ä.

/cookie/setCookie.jsp

<%@ page contentType="text/html; charset=euc-kr" %>
<%
  String cookieName = "id";
  String cookieValue = "xman";

  Cookie cookie = new Cookie(cookieName,cookieValue);
  String path = request.getContextPath();
  path = path + "/cookie";
  cookie.setPath( path );
  response.addCookie(cookie);
%>
<a href="cookieList.jsp">ÄíŰ ¸ñ·Ïº¸±â</a>			

/cookie/cookieList.jsp

<%@ page contentType="text/html; charset=euc-kr" %>
<html><body>
ÀúÀåµÇ¾î ÀÖ´Â ÄíŰ ¸ñ·ÏÀÔ´Ï´Ù.<br />
<%
  Cookie[] cookies = request.getCookies();
  if ( cookies != null ) {
    for ( int i=0 ;i < cookies.length; i++ ) {
      out.println(cookies[i].getName());
      out.println("<br />");
      out.println(cookies[i].getValue());
      out.println("<br />");
    }
  }
%>
<a href="removeCookie.jsp">ÄíŰ Á¦°ÅÇϱâ</a> <a href="setCookie.jsp">ÄíŰ ±Á±â</a>
</body></html>

/cookie/removeCookie.jsp

<%@ page contentType="text/html; charset=euc-kr" %>
<%
  Cookie cookie = new Cookie( "id", "" );
  String path = request.getContextPath();
  path = path + "/cookie";
  cookie.setPath( path );
  cookie.setMaxAge( 0 );
  response.addCookie( cookie );
%>
<a href="cookieList.jsp">ÄíŰ ¸ñ·Ïº¸±â</a>

8. ¼¼¼Ç

¼¼¼ÇÀº ÄíŰ ±â¹Ý ±â¼ú·Î ÄíŰÀÇ º¸¾È»ó ¾àÁ¡À» ±Øº¹Çϱâ À§ÇÑ ±â¼úÀÔ´Ï´Ù.
ÄíŰ¿Í ´Ù¸¥ Á¡(Áï, º¸¾È»ó °³¼±µÈ Á¡)Àº À¥ºê¶ó¿ìÀú´Â ¼­¹ö°¡ Á¤ÇØÁØ ¼¼¼ÇID ¸¸À» Äí۰ªÀ¸·Î ÀúÀåÇÕ´Ï´Ù.
¼¼¼ÇÀÌ »ý¼ºµÇ¸é ¼­¹ö¿¡¼­´Â ¼¼¼ÇID¿¡ ÇØ´çÇÏ´Â HttpSession °´Ã¼¸¦ ¼­ºí¸´ ÄÁÅ×À̳ʰ¡ ¿¬°á½ÃÄÑ ÁÝ´Ï´Ù.

¾Æ·¡´Â ¼¼¼Ç »ý¼ºÇÏ´Â ÄÚµåÀÔ´Ï´Ù.
HttpSession session = req.getSession( true ); //¼¼¼ÇÀÌ ¾øÀ¸¸é »ý¼ºÇÕ´Ï´Ù.
HttpSession session = req.getSession( false ); // ¼¼¼ÇÀÌ ¾ø´Ù¸é null À» ¸®ÅÏ
¼¼¼Ç °´Ã¼°¡ »ý¼ºµÇ¾úÀ¸¸é ¼¼¼Ç¿¡ Á¤º¸¸¦ ¾Æ·¡ÄÚµåó·³ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.
session.setAttribue( "data", value ); //data À̸§À¸·Î value °´Ã¼ ÀúÀå

9. File Ŭ·¡½º

ÀÚ¹Ù¿¡¼­´Â ÆÄÀÏÀ» Ç¥ÇöÇϱâ À§ÇØ File Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù.
µð·ºÅ丮µµ File Ŭ·¡½º·Î Ç¥ÇöµË´Ï´Ù.
ÁÖÀÇÇÒ °ÍÀº File Ŭ·¡½º´Â ÆÄÀÏÀ» Àаųª ¾²´Â ¸Þ¼Òµå´Â °¡Áö°í ÀÖÁö ¾Ê½À´Ï´Ù.
ÆÄÀÏÀ» Àаųª ¾²±â À§Çؼ­´Â ÀÔÃâ·Â Ŭ·¡½º¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
File Ŭ·¡½º·Î ÇÒ ¼ö ÀÖ´Â ÀÛ¾÷Àº ¾Æ·¡¿Í °°½À´Ï´Ù.

  1. µð·ºÅ丮 ³»¿ëÀ» ¾Ë¾Æº»´Ù.
  2. ÆÄÀÏÀÇ ¼Ó¼ºÀ» ¾Ë¾Æº¸°Å³ª ¼³Á¤ÇÕ´Ï´Ù.
  3. ÆÄÀÏÀÇ À̸§À» º¯°æÇϰųª »èÁ¦ÇÕ´Ï´Ù.

File °´Ã¼¸¦ »ý¼ºÇÏ´Â ÄÚµå´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
File dir = new File( path );
¿©±â¼­ path ¿¡ ÇØ´çÇÏ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮´Â ½Ã½ºÅÛÀÇ Ç®ÆÐ½º°¡ µÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
´ÙÀ½Àº File Ŭ·¡½ºÀÇ Áß¿ä ¸Þ¼ÒµåÀÔ´Ï´Ù.

File
isDirectory() : boolean
dir.isDirectory(); // dir ÀÌ µð·ºÅ丮À̸é true ¸®ÅÏ
isFile() : boolean
dir.isFile(); // dir ÀÌ ÆÄÀÏÀ̸é true ¸®ÅÏ
list() : String[]
dir.list() : // dir ÀÌ µð·ºÅ丮ÀÏ ¶§ µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀϸíÀÌ String[] °ªÀ¸·Î ¸®ÅÏ
listFiles() : File[]
dir.listFiles(); // µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀÇ ÆÄÀÏ °´Ã¼ ¹è¿­ ¸®ÅÏ
mkdir() : boolean
dir.mkdir(); // File °´Ã¼ÀÇ À̸§À» °¡Áø µð·ºÅ丮¸¦ ¸¸µç´Ù
getName() : String
ÆÄÀϸíÀ» ¸®ÅÏ
getPath() : String
°æ·Î¸¦ ¸®ÅÏ
delete() : boolean
ÆÄÀÏÀ» Áö¿î´Ù.
exists() : boolean
ÆÄÀÏÀ̳ª °æ·Î°¡ Á¸ÀçÇÏ´ÂÁö ¿©ºÎ

À̰ÍÀ¸·Î ¾ÆÁÖ °£´ÜÇÏ°Ô ¼­ºí¸´ ¹®¹ýÀ» »ìÆìº¸¾Ò½À´Ï´Ù.
¼­ºí¸´¿¡ ´ëÇÑ ÀÌÇØ°¡ ÀÖ¾î¾ß JSP ÇÒ¶§¿¡ ÀÌÇØ°¡ ½±½À´Ï´Ù.
´ÙÀ½Àº JSP ¹®¹ýÀ¸·Î ³Ñ¾î°©´Ï´Ù.