{{{ package com.mefour.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.oreilly.servlet.MultipartRequest; import com.oreilly.servlet.multipart.DefaultFileRenamePolicy; import java.util.*; public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { // 원래 파일 업로드는 post 방식이기 때문에 goGet은 쓰이지않는다. /* * protected void doGet(HttpServletRequest request, HttpServletResponse * response) throws ServletException, IOException { doPost(request, * response); }// doGet */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("UTF-8"); /* //톰캣 플러그인을 사용하는 경우 String savePath = getServletContext().getRealPath("upfolder"); */ // Dynamic Web Project 의 경우 : 절대 경로를 쓴다. String savePath = "C:/upload"; // out.println("savePath=" + savePath);//경로 확인 int maxSize = 100 * 1024 * 1024; // 최대 업로드 파일 크기 5MB(메가)로 제한 try { // 한글 파일명도 업로드 가능하다 : euc-kr // 하지만 실제로는 한글 파일명은 처리가 불편하기 때문에 영문 파일을 쓴다. MultipartRequest multi = null; try{ multi = new MultipartRequest(request, savePath, maxSize, "UTF-8", new DefaultFileRenamePolicy()); }catch(Exception e){ e.printStackTrace(); } out.println(""); out.println("화일 업로드List"); out.println(""); out.println("
");
			Enumeration params = multi.getParameterNames(); // 파라미터명 얻기
			// 반복문으로 모두 출력하기, 현 예제에는 하나지만 나중에 여러개일 경우을 위해 준비
			while (params.hasMoreElements()) {
				String name = (String) params.nextElement();
				String value = multi.getParameter(name);
				out.println(name + " : " + value);
			}//while
/*			
			out.println("
"); out.println("

업로드된 파일에 대한 설명

"); out.println("
");
			out.println("");
			out.println("");
			out.println("");
			out.println("");
			out.println("");
			out.println("");
			out.println("");

			Enumeration files = multi.getFileNames(); // 파일명 모두 얻기
			// 반복문으로 모두 출력, 역시 여러 파일 업로드 경우를 위해 준비
			while (files.hasMoreElements()) {
				String name = (String) files.nextElement();
				String fileName = multi.getFilesystemName(name); // 실제 업로드된 파일명
				String type = multi.getContentType(name);
				File f = multi.getFile(name);
				out.println("");
				out.println("");
				if (f != null) {
					out.println("");
				}// if
				out.println("");
				out.println("");
			}// while
			out.println("
파일명파일 크기파일의 종류파라미터명
" + fileName + "" + f.length() + "" + type + "" + name + "
"); out.println("
"); out.println("

업로드된 파일 List

"); out.println("
");
			File dirFile = new File(savePath); // 업로드 폴더 얻기
			File[] fileList = dirFile.listFiles(); // 현재 폴더의 모든 파일 리스트 얻기
			// 반복문으로 다운로드 링크 걸어주기
			for (int i = 0; i < fileList.length; i++) {
				String fName = fileList[i].getName();
				out.println(fName);
			}// for
			out.println("
");
*/
		} catch (Exception e) {
			out.print("예외 발생 : " + e);
		}// catch
	}// doPost
}// end
}}}
 * [wiki:egov/paging paging]
 * [wiki:egov/IDGeneration ID Generation]
 * [wiki:egov/propertiesService propertiesService]
 * [wiki:egov/SearchVO SearchVO.java]
 * [wiki:egov/AbstractServiceImpl AbstractServiceImpl.java]
  * [wiki:egov/leavaTrace leavaTrace]
  * [wiki:egov/exception Exception Handling 서비스] 
 * [wiki:egov/Security Security]
  * [wiki:egov/Security/context-security.xml context-security.xml]
  * [wiki:egov/Security/SecuredObjectDAO.java SecuredObjectDAO.java]
  * [wiki:egov/Security/JdbcUserDetailsManager.java JdbcUserDetailsManager.java]
  * [wiki:egov/Security/JdbcDaoImpl.java JdbcDaoImpl.java]