<?xml version="1.0" encoding="euc-kr" ?>
<?xml-stylesheet type="text/xsl" href="http://okjsp.pe.kr/lecture/okjsplec_c.xsl" ?>
<lecture>
	<title>Form Study #1</title>
	<who>kenu</who>
	<when>2002-02-24 12:34¿ÀÀü</when>
	<what>
		<text>
		°ªÀ» ³Ñ°ÜÁÖ´Â ¹æ½Ä Áß ¸¹ÀÌ »ç¿ëÇÏ´Â 3°¡Áö ¹æ½ÄÀ» ³íÀÇÇÏ°Ú½À´Ï´Ù. GET, POST ¹æ½Ä°ú ÆÄÀÏÀ» Àü¼ÛÇÒ ¼ö ÀÖ´Â multipart/form-data ¿¡ °üÇÑ °ÍÀÔ´Ï´Ù. ¼Ò½º¸¦ ÀÏ´Ü º¸½ÃÁÒ.
		<¼Ò½º ÆÄÀÏ¸í="formstudy.jsp">
<![CDATA[<html>
<head>
  <title>okjsp form study</title>
</head>
<body>
<%-- ÀÔ·Â °ªÀ» Ã³¸®ÇÏ´Â ºÎºÐ --%>
<pre>
contentType: <%=request.getContentType()%>
contentLength: <%=request.getContentLength()%>
method: <%=request.getMethod()%>
get name: <%=request.getParameter("gname")%>
post name: <%=request.getParameter("pname")%>
mp name: <%=request.getParameter("mpname")%>
filename: <%=request.getParameter("filename")%>
</pre>
<%-- °ªÀ» ÀÔ·Â¹Þ´Â ºÎºÐ --%>
form1:
  <form method="get">
    name (get) <input type="text" name="gname">
    <br>
    <input type="submit" value="get">
  </form>
form2:
  <form method="post">
    name (post) <input type="text" name="pname">
    <br>
    <input type="submit" value="post">
  </form>
form3:
  <form method="post" enctype="multipart/form-data">
    name (multipart) <input type="text" name="mpname">
    <br>
    file <input type="file" name="filename">
    <br>
    <input type="submit" value="multipart">
  </form>
</body>
</html>
]]>
		</¼Ò½º>
		</text>
	</what>

	<what>
		<text>form ÅÂ±×¿¡ action ¼Ó¼ºÀÌ ¾ø´Ù¸é ÀÚ±â ÀÚ½ÅÀ» ´Ù½Ã ÇÑ ¹ø È£ÃâÇÕ´Ï´Ù. Áï action="formstudy.jsp" ¿Í °°Àº °á°úÀÔ´Ï´Ù. ºê¶ó¿ìÀúÀÇ ÁÖ¼ÒÁÙ¿¡ ÀÔ·ÂÇØ¼­ ¼­¹ö¿¡ ¿äÃ»ÇÒ °æ¿ì ±âº» method ´Â GET ÀÔ´Ï´Ù.
		</text>
		<image>http://okjsp.pe.kr/lecture/lec05/form01_01.gif
		</image>
	</what>
	<what>
		<text>
		GET ¹æ½ÄÀÇ °æ¿ì ³Ñ°ÜÁÖ´Â °ªÀº ÁÖ¼ÒÁÙ¿¡ Ãß°¡µË´Ï´Ù. Ã¹¹øÂ° ÀÔ·ÂÃ¢¿¡ okjsp ¶ó´Â °ªÀ» ÀÔ·ÂÇÑ ÈÄ¿¡ Àü¼Û ¹öÆ°À» ´©¸£¸é ´ÙÀ½ È­¸éÀº ´ÙÀ½°ú °°ÀÌ ³ª¿À°Ô µË´Ï´Ù. Æ¯Â¡ÀûÀÎ °ÍÀº GETÀ» ÅëÇÑ °ªÀÇ Àü´ÞÀº ÁÖ¼ÒÁÙÀ» Å¸°í Àü´ÞÀÌ µË´Ï´Ù. µû¶ó¼­ ¼­¹ö¸¶´Ù ´Ù¸£Áö¸¸ ´ë·« 230¹ÙÀÌÆ® ÀÌ»óÀÇ °ªÀº Àü´ÞÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. ¶§¹®¿¡ ºñ¹Ð¹øÈ£ °°Àº Áß¿äÇÑ °ªµéÀº ³ëÃâµÇ±â ½±°í, Ç×¸ñÀÌ ¸¹Àº form ¾ç½ÄÀº GET¹æ½ÄÀ¸·Î Ã³¸®ÇÏÁö ¾ÊÀ» ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù.
		</text>
		<image>http://okjsp.pe.kr/lecture/lec05/form01_02.gif
		</image>
	</what>
	<what>
		<text>
		POST ¹æ½ÄÀº °ªÀÇ Àü´Þ°æ·Î´Â header ºÎºÐÀÔ´Ï´Ù. getContentLength() ¸Þ¼Òµå¸¦ ÅëÇØ¼­ Àü´ÞµÇ´Â °ªÀÇ Byte Å©±â¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¶§ parameter ÀÌ¸§°ú °ªÀÌ = À» »çÀÌ¿¡ µÎ°í, Ç×¸ñ°ú Ç×¸ñÀº &amp; ·Î ±¸ºÐµÈ ¹®ÀÚ¿­·Î Header ¸¦ ÅëÇØ¼­ Àü´ÞÀÌ µË´Ï´Ù. ^^ ÁÖ¼ÒÁÙ¿¡ GET ¹æ½ÄÀÇ ÀÚ±¹À» ³²±äÃ¤ POST ÆûÀ» »ç¿ëÇÏ¸é ÁÖ¼ÒÁÙÀÇ ÆÄ¶ó¸ÞÅÍµµ Àü´ÞÀÌ µË´Ï´Ù. µÎ¹øÂ° ÀÔ·ÂÃ¢¿¡ okjsppost ¸¦ ÀÔ·ÂÇÏ°í Àü¼ÛÇÏ¸é ¾Æ·¡ ±×¸²°ú °°ÀÌ ³ª¿É´Ï´Ù.
		</text>
		<image>http://okjsp.pe.kr/lecture/lec05/form01_03.gif
		</image>
	</what>

	<what>
		<text>
		contentLength °¡ 15°¡ ³ª¿Ô½À´Ï´Ù. Àú ±æÀÌÀÇ ÀÇ¹Ì´Â "pname=okjsppost"¸¦ »ý°¢ÇØº¸¸é ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÔ´Ï´Ù. getParameter("pname") ÇßÀ» °æ¿ì okjsppost °¡ ³ª¿À´Â °ÍÀº ´Ù ¾Æ½Ã°ÚÁÒ. ±×¸®°í contentType ÀÌ application/x-www-form-urlencoded ÀÎ °Íµµ ±â¾ïÇØµÎ½Ã±â ¹Ù¶ø´Ï´Ù.
		</text>
	</what>

	<what>
		<text>
		form tag ¿¡ enctype="multipart/form-data" ÀÏ °æ¿ì Àü¼Û¿¡ ´ëÇØ¼­ »ìÆìº¾½Ã´Ù. °¡Àå ¸¹ÀÌ Áú¹®µÇ´Â °ÍÀÌ ¿Ö ÆÄÀÏÀº ¾÷·Îµå µÇ´Âµ¥ request.getParameter() ·Î º¯¼ö°ªÀ» °¡Á®¿ÀÁö ¸øÇÏ´Â°¡ ÀÔ´Ï´Ù. (ÀÌ°Í Áú¹®ÇÏ´Â »ç¶÷ 100¸íµµ ´õ ºÃ½À´Ï´Ù. ÀÌ ¹®Á¦ ¶§¹®¿¡ ÀÌ °­ÁÂ¸¦ ¾´ °ÍÀÌ±âµµ ÇÏÁÒ. ÀÏÁ¾ÀÇ FAQ ¶ó°í ÇÒ ¼ö ÀÖÁÒ.) ÀÏ´Ü multi ¶ó´Â °ª¸¸ ³Ö¾î¼­ º¸³»¸é 293~300 »çÀÌÀÇ °ªÀÌ ³ª¿É´Ï´Ù. ¿Ö ÀÌ¸® °¡º¯ÀûÀÎÁö´Â ¾ÆÁ÷ Àúµµ ´õ Ã£¾ÆºÁ¾ßÇÒ °Í °°±¸¿ä(Àúµµ ÀÌ°Å ºÐ¼®Àº Ã³À½ÀÔ´Ï´Ù. ^^) "mpname=multi" ¿Ü¿¡µµ ¹º°¡ ´Ù¸¥ °ÍÀÌ 280¹ÙÀÌÆ® ÀÌ»óÀÇ Á¤º¸¸¦ °°ÀÌ º¸³½´Ù´Â °ÍÀ» °¨À» ÀâÀ¸¼Å¾ß ÇÕ´Ï´Ù. ½±Áö´Â ¾ÊÀ» °Í °°ÁÒ? ±×·¸½À´Ï´Ù. ½±Áö ¾Ê½À´Ï´Ù. ÀÌ °ªÀ» ºÐ¼®ÇØ¼­ »Ì¾Æ³»¾ß(parsing) ÇÏ´Âµ¥ Á÷Á¢ÇÏ°Ô µÈ´Ù¸é °ñ ¾ÆÇÃ °ÍÀÔ´Ï´Ù. ´ÙÇà½º·´°Ôµµ ¹«·á·Î °ø°³µÈ MultipartRequest ¶ó´ø°¡ ¹®Á¦°¡ Á» ÀÖÁö¸¸ ±â´ÉÀÌ ÁÁÀº jspsmartupload ¿Í °³¹ßÀÚ°¡ Ã¥À» ±¸ÀÔÇØ¾ß »ç¿ë±ÇÇÑÀ» ¾òÀ» ¼ö ÀÖ´Â jason hunter ÀÇ O'reilly MultipartRequest µîÀÌ ÀÖ½À´Ï´Ù. ±¹³» °³¹ßÀÚµéÀÌ °ø°³ÇÏ´Â ÀÚ¹ÙÀÇ²Þ ´ÔÀÇ NewTakeUpload µîµµ ÀÖ±¸¿ä. Áßº¹ÆÄÀÏÃ³¸® ¸Þ¼Òµåµµ ÀÖ´Ù°í ÇÕ´Ï´Ù. ÀÌ°ÍµéÀÇ ¼Ò½º¸¦ ±¸ÇØ¼­ ºÐ¼®ÇØº¸½Ã´Â °Íµµ ³ª»ÚÁö ¾Ê°ÚÁÒ.
		</text>
		<image>http://okjsp.pe.kr/lecture/lec05/form01_04.gif
		</image>
	</what>

	<what>
		<text>multipart ¿¡ ´ëÇØ¼­´Â ´ÙÀ½¿¡ ´õ ÁýÁßºÐ¼®ÇØº¸µµ·Ï ÇÏ°í, ¿©±â¼­´Â request.getParameter() ±× ÀÌ»óÀÇ ¹º°¡°¡ ÀÖ´Ù´Â °ÍÀ» ¾Æ´Â °ÍÀ¸·Î ¸¸Á·ÇÏµµ·Ï ÇÏÁÒ.
		±×·³ ÀÌ °ªÀ» ¹ÞÀ» ¼ö ÀÖ´Â ¹æ¹ýÀ» °£´ÜÈ÷ ¼Ò°³ÇÏ°í ¸¶Ä¡µµ·Ï ÇÏ°Ú½À´Ï´Ù. jason hunter ÀÇ MultipartRequest ¿¡¼­ ¾÷·Îµå °´Ã¼(multi)¸¦ »ý¼ºÇÏ¸é¼­ ¾÷·Îµå¸¦ ÇÕ´Ï´Ù. ÀÌ MultipartRequest Å¬·¡½º¿¡´Â request ¿¡¼­ »ç¿ëÇß´ø ¸Þ¼ÒµåµéÀ» ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇÕ´Ï´Ù. µû¶ó¼­ request ´ë½Å °´Ã¼¸í(multi) À» »ç¿ëÇØ¼­ ¿øÇÏ´Â ÆÄ¶ó¸ÞÅÍ°ªÀ» »Ì¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¼Ò½º¸¦ º¸½ÃÁÒ. Á¦°¡ »ç¿ëÇÏ´Â ¼Ò½º ÁßÀÇ ÀÏºÎÀÔ´Ï´Ù. filename Àº ´Ù¸¥ ¹æ½ÄÀ¸·Î »Ì¾Æ³»´Â °Íµµ À¯½ÉÈ÷ »ìÆìº¸¼¼¿ä.
		<¼Ò½º ÆÄÀÏ¸í="board_write2.jsp ÆÄÀÏ Áß">
<![CDATA[...
  MultipartRequest multi =
        new MultipartRequest(request, savePath, sizeLimit);

  Enumeration files = multi.getFileNames();

  while(files.hasMoreElements()) {
    fname = (String)files.nextElement();
    f = multi.getFile(fname);
    maskname[cnt] = ""+System.currentTimeMillis()+cnt;
    filename[cnt] = multi.getFilesystemName(fname);
    filesize[cnt] = 0;
    if (f != null) {
  		filesize[cnt] = f.length();
  		up1 = new File(savePath+"/"+filename[cnt]);
   		up2 = new File(savePath+"/"+maskname[cnt]);
   		if (up1.exists()) {
         boolean rslt = up1.renameTo(up2);
   		}
   	} // end if f != null
    cnt++;
  }
...

  String name    = Kr.nchk(multi.getParameter("mpname")    );
...

]]>
      </¼Ò½º>
		</text>
	</what>

	<what>
		<text>ÀÌ¹ø °­ÁÂ´Â ¿©±â¼­ ¸¶Ä¡°Ú½À´Ï´Ù. Àúµµ API ¸¦ ´õ º¸¸é¼­ °øºÎ¸¦ Á» ´õ ÇÑ ´ÙÀ½¿¡ multipart ¿¡ ´ëÇØ¼­ ´õ ±íÀº ³»¿ëÀÇ °­ÁÂ¸¦ ÁØºñÇØº¸°í ½Í½À´Ï´Ù.(^^; ¾ðÁ¦ °­ÁÂ°¡ ½áÁúÁö´Â Àúµµ... ÇìÇì). Jason Hunter ÀÇ ÀÚ¹Ù ¼­ºí¸´ ÇÁ·Î±×·¡¹Ö °³Á¤ÆÇ(ÇÑºû¹Ìµð¾î, ÀÌÃ¢½Å ¹ø¿ª) Ã¥¿¡ ÀÚ¼¼ÇÑ ³»¿ëÀÌ ÀÖÀ¸´Ï Âü°íÇÏ½Ã±â ¹Ù¶ø´Ï´Ù.
		</text>
	</what>


	<refer>
		<link>http://www.servlets.com/cos/</link>
		<comment>Jason Hunter ÀÇ MultipartRequest ¸¦ ±¸ÇÒ ¼ö ÀÖ´Â °÷</comment>
	</refer>
	<refer>
		<link>http://iasandcb.hihome.com/cosi/</link>
		<comment>MultipartRequestÀÇ ±¹Á¦È­¹öÀüÀ» ±¸ÇÒ ¼ö ÀÖ´Â °÷</comment>
	</refer>
	<refer>
		<link>http://aboutjsp.com/lec/multipart.htm</link>
		<comment>MultipartRequest»ç¿ë¹ý aboutjspÀÇ ÀÌ¼±Àç´Ô °­ÀÇ</comment>
	</refer>
	<refer>
		<link>http://cafe.daum.net/DOJ</link>
		<comment>Dream Of Java ´ÔÀÇ NewTakeUpload ¸¦ ±¸ÇÒ ¼ö ÀÖ´Â °÷</comment>
	</refer>
	<refer>
		<link>http://okjsp.pe.kr/heogn/lecture/lec05/fileup01.htm</link>
		<comment>FileUpload ÄÄÆ÷³ÍÆ® ¼Ò½º¿Í ¿¹Á¦</comment>
	</refer>
	<refer>
		<link>http://www.kimho.pe.kr/jsp/jsp_upload.html</link>
		<comment>Jason Pell ÀÇ MultipartRequest ¿¡ ´ëÇÑ ±èÈ£´ÔÀÇ °­ÁÂ</comment>
	</refer>
</lecture>
