¼ºí¸´ ¿¹Á¦
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>" );
}
}
Å×½ºÆ®¸¦ À§Çؼ´Â
- À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ·çÆ®¿¡ upload ¶ó´Â Æú´õ¸¦ ¸¸µì´Ï´Ù
- ÄÄÆÄÀÏÀ» À§ÇØ cos.jar ÆÄÀÏÀ» CLASSPATH ¿¡ Ãß°¡Çϰí ÄÄÆÄÀÏÇÕ´Ï´Ù
- cos.jar ÆÄÀÏÀ» /WEB-INF/lib ¿¡ º¹»çÇÕ´Ï´Ù.
- /WEB-INF/web.xml ÆÄÀÏÀ» ¿¾î UploadTest ¼ºí¸´À» µî·ÏÇÕ´Ï´Ù.(¾Æ·¡ÂüÁ¶)
- ÅèĹÀ» Àç°¡µ¿Çϰí http://localhost/example/upload.html ¸¦ ¹æ¹®ÇÏ¿© Å×½ºÆ® ÇÕ´Ï´Ù.
- Áߺ¹µÈ ÆÄÀÏÀ» ¾÷·Îµå Å×½ºÆ®Çϰí 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 Àü¼Û¹æ½ÄÀÇ Æ¯Â¡»ó °¢°¢ÀÇ À¥ ºê¶ó¿ìÀú°¡ ¼¹ö¿Í Åë½Å¿¡¼ ¼¼¼ÇÀ» À¯ÁöÇÏÁö ¸øÇÏ´Â °ÍÀ» º¸¿ÏÇϱâ À§ÇÑ ±â¼úÀÔ´Ï´Ù.
¼¹ö°¡ Äí۸¦ Àü¼ÛÇϸé À¥ ºê¶ó¿ìÀú´Â ±× ´ÙÀ½ ¿äû¸¶´Ù ÄíŰ °ªÀ» ¼¹ö·Î Àü´ÞÇÏ¿© »ç¿ëÀÚ Á¤º¸¸¦ À¯ÁöÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù.
¼¹ö -> À¥ ºê¶ó¿ìÀú (Äí۸¦ ±Á´Â´Ù°í Ç¥ÇöµÇ´Âµ¥ ¾Æ·¡¿Í °°Àº Á¤º¸°¡ Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú¸¦ ÅëÇØ¼ ÆÄÀÏ·Î ÀúÀåµË´Ï´Ù.)
À̶§ Àü´ÞµÇ´Â Á¤º¸ ÇüÅ´ ¾Æ·¡¿Í °°½À´Ï´Ù.
À¥ ºê¶ó¿ìÀú -> ¼¹ö (Äí۰¡ À¥ºê¶ó¿ìÀú¿¡ ¼ÂÆÃµÇ¸é, À¥ºê¶ó¿ìÀú´Â Äí±â¸¦ Àü´ÞÇØÁØ ¼¹ö·Î ¿äû½Ã¸¶´Ù ¾Æ·¡¿Í °°Àº ¹®ÀÚ¿À» ¼¹ö·Î º¸³À´Ï´Ù.)
ÄíŰ À̸§°ú °ª¿¡´Â []()="/?@:; ¿Í °°Àº ¹®ÀÚ´Â ¿Ã ¼ö ¾ø½À´Ï´Ù.
´ÙÀ½Àº Äí۸¦ ¼³Á¤ÇÏ´Â ÀýÂ÷ÀÔ´Ï´Ù.
(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) ±¸¿öÁø ÄíŰ ÀÌ¿ë
À§¿¡¼ Äí۸¦ ¼³Á¤Çß´Ù¸é ÀÌÁ¦ ¼ºí¸´¿¡¼ ÄíŰ ÀÌ¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
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 Ŭ·¡½º·Î ÇÒ ¼ö ÀÖ´Â ÀÛ¾÷Àº ¾Æ·¡¿Í °°½À´Ï´Ù.
- µð·ºÅ丮 ³»¿ëÀ» ¾Ë¾Æº»´Ù.
- ÆÄÀÏÀÇ ¼Ó¼ºÀ» ¾Ë¾Æº¸°Å³ª ¼³Á¤ÇÕ´Ï´Ù.
- ÆÄÀÏÀÇ À̸§À» º¯°æÇϰųª »èÁ¦ÇÕ´Ï´Ù.
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 ¹®¹ýÀ¸·Î ³Ñ¾î°©´Ï´Ù.
- ´ÙÀ½ °Á : JSP ¹®¹ý
- ÀÌÀü °Á : ¼ºí¸´ ¹®¹ý
