	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		boolean ret = false; 
		boolean res = true;
		HttpSession session = request.getSession(false);
		String actionUrl = "";
		List<String> errorMsgs = new ArrayList<String>();		
		Member user = new Member();
		String imagePath = getServletContext().getRealPath("image"); 
		int size = 2 * 1024 * 1024; 
		MultipartRequest multi = new MultipartRequest(request, imagePath, size, "utf-8", new DefaultFileRenamePolicy());	
		request.setCharacterEncoding("utf-8");
		String userid = multi.getParameter("userid");
		String userpwd = multi.getParameter("pwd");
			System.out.println("userid:" + userid + " / userpwd : "+ userpwd);
		String pwd_confirm 	= multi.getParameter("pwd_confirm");
		String lastname 	= multi.getParameter("lastname");
		String firstname 	= multi.getParameter("firstname");
		String nickname 	= multi.getParameter("nickname");
		String email 		= multi.getParameter("email");
		String gender 		= multi.getParameter("gender");
		String website		= multi.getParameter("website");
		String introduce 	= multi.getParameter("introduce");
		String info 		= multi.getParameter("info");
		if(isRegisterMode(multi) == state.signup || isRegisterMode(multi) == state.update) {
			if (userpwd.length() < 6 || userpwd == null ) {
				errorMsgs.add("비밀번호는 6자 이상 입력해주세요.");
				res = false;
			} 
			if (!userpwd.equals(pwd_confirm)) {
				errorMsgs.add("비밀번호가 일치하지 않습니다.");
				res = false;
			} 
			if (userid == null || userid.trim().length() == 0) {
				errorMsgs.add("ID를 반드시 입력해주세요.");
				res = false;
			}			
			if (lastname == null || lastname.trim().length() == 0) {
				errorMsgs.add("성을 반드시 입력해주세요.");
				res = false;
			}			
			if (firstname == null || firstname.trim().length() == 0) {
				errorMsgs.add("이름을 반드시 입력해주세요.");
				res = false;
			}			
			if (nickname == null || nickname.trim().length() == 0) {
				errorMsgs.add("별명을 반드시 입력해주세요.");
				res = false;
			}			
			if (gender == null || !(gender.equals("M") || gender.equals("F") )) {
				errorMsgs.add("성별에 적합하지 않은 값이 입력되었습니다.");
				res = false;
			}			
			if (info == null || !(info.equals("Y") || info.equals("N") )) {
				errorMsgs.add("정보 공개여부를 선택해주세요");
				res = false;
			}
		} else if(isRegisterMode(multi) == state.login) {
			if (userid == null || userid.trim().length() == 0) {
				errorMsgs.add("ID를 입력해주세요.");
				res = false;
			}
			if (userpwd == null || userpwd.trim().length() == 0) {
				errorMsgs.add("비밀번호를 입력해주세요.");
				res = false;
			}
		}
		try {
			if(res && (isRegisterMode(multi) == state.signup || isRegisterMode(multi) == state.update)) {
				user.setUserid(userid);
				user.setPwd(userpwd);
				user.setRegisterdate(new Timestamp(System.currentTimeMillis()));
				user.setLastname(lastname);
				user.setFirstname(firstname);
				user.setNickname(nickname);
				user.setEmail(email);
				user.setGender(gender);
				user.setIntroduce(introduce);
				user.setWebsite(website);
				user.setInfo(info);
				ret = SignUpManager.SignUp(multi, response, user, imagePath, isRegisterMode(multi).toString()); 
				if (user.getProfilephoto() == null) {
					errorMsgs.add("사진 업로드에 문제가 발생하여 사진이 업로드 되지 않았습니다");
				}
				if(ret) {
					System.out.println("회원가입이나 수정 잘됨");
					actionUrl = "main.jsp";
				} else {
					System.out.println("회원가입이나 수정 잘안됨");
					actionUrl = "signup.jsp";
				}
			} else if(res && (isRegisterMode(multi) == state.login)) {
				user = MemberDAO.findById(userid);
				if(user != null) {
					if( user.getUserid().equals(userid) && user.getPwd().equals(userpwd) ) {
						session.setAttribute("userid", user.getUserid());
					    session.setAttribute("usernickname", user.getNickname());
					    session.setAttribute("profilephoto", user.getProfilephoto());
					    System.out.println("로그인성공!" + user.getUserid() + "님이 로그인하셨습니다.");
						actionUrl = "main.jsp";
						ret = true;
					} else if(user.getPwd() != userpwd) {
						errorMsgs.add("비밀번호가 일치하지 않습니다. 다시 확인해주세요");
						actionUrl = "login.jsp";
					}
				} else {
					errorMsgs.add("없는 아이디입니다. 다시 확인해주세요");
					actionUrl = "login.jsp";
				}
			} else {
				actionUrl = "error.jsp";
			}
		} catch (SQLException | NamingException e) {
			System.out.println(e.getMessage());
			errorMsgs.add("알 수 없는 문제가 발생하였습니다. 다시 시도해주세요");
			session.invalidate();
			actionUrl = "error.jsp";
		}
		if(actionUrl.equals("main.jsp")) {
			response.sendRedirect("");
		} else {		
			request.setAttribute("errorMsgs", errorMsgs);
			RequestDispatcher dispatcher = request.getRequestDispatcher(actionUrl);
			dispatcher.forward(request, response);
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		boolean ret = false; 
		boolean res = true;
		HttpSession session = request.getSession(false);
		String actionUrl = "";
		List<String> errorMsgs = new ArrayList<String>();		
		Member user = new Member();
		String imagePath = getServletContext().getRealPath("image"); 
		int size = 2 * 1024 * 1024; 
		MultipartRequest multi = new MultipartRequest(request, imagePath, size, "utf-8", new DefaultFileRenamePolicy());	
		request.setCharacterEncoding("utf-8");
		String userid = multi.getParameter("userid");
		String userpwd = multi.getParameter("pwd");
			System.out.println("userid:" + userid + " / userpwd : "+ userpwd);
		String pwd_confirm 	= multi.getParameter("pwd_confirm");
		String lastname 	= multi.getParameter("lastname");
		String firstname 	= multi.getParameter("firstname");
		String nickname 	= multi.getParameter("nickname");
		String email 		= multi.getParameter("email");
		String gender 		= multi.getParameter("gender");
		String website		= multi.getParameter("website");
		String introduce 	= multi.getParameter("introduce");
		String info 		= multi.getParameter("info");
		if(isRegisterMode(multi) == state.signup || isRegisterMode(multi) == state.update) {
			if (userpwd.length() < 6 || userpwd == null ) {
				errorMsgs.add("비밀번호는 6자 이상 입력해주세요.");
				res = false;
			} 
			if (!userpwd.equals(pwd_confirm)) {
				errorMsgs.add("비밀번호가 일치하지 않습니다.");
				res = false;
			} 
			if (userid == null || userid.trim().length() == 0) {
				errorMsgs.add("ID를 반드시 입력해주세요.");
				res = false;
			}			
			if (lastname == null || lastname.trim().length() == 0) {
				errorMsgs.add("성을 반드시 입력해주세요.");
				res = false;
			}			
			if (firstname == null || firstname.trim().length() == 0) {
				errorMsgs.add("이름을 반드시 입력해주세요.");
				res = false;
			}			
			if (nickname == null || nickname.trim().length() == 0) {
				errorMsgs.add("별명을 반드시 입력해주세요.");
				res = false;
			}			
			if (gender == null || !(gender.equals("M") || gender.equals("F") )) {
				errorMsgs.add("성별에 적합하지 않은 값이 입력되었습니다.");
				res = false;
			}			
			if (info == null || !(info.equals("Y") || info.equals("N") )) {
				errorMsgs.add("정보 공개여부를 선택해주세요");
				res = false;
			}
		} else if(isRegisterMode(multi) == state.login) {
			if (userid == null || userid.trim().length() == 0) {
				errorMsgs.add("ID를 입력해주세요.");
				res = false;
			}
			if (userpwd == null || userpwd.trim().length() == 0) {
				errorMsgs.add("비밀번호를 입력해주세요.");
				res = false;
			}
		}
		try {
			if(res && (isRegisterMode(multi) == state.signup || isRegisterMode(multi) == state.update)) {
				user.setUserid(userid);
				user.setPwd(userpwd);
				user.setRegisterdate(new Timestamp(System.currentTimeMillis()));
				user.setLastname(lastname);
				user.setFirstname(firstname);
				user.setNickname(nickname);
				user.setEmail(email);
				user.setGender(gender);
				user.setIntroduce(introduce);
				user.setWebsite(website);
				user.setInfo(info);
				ret = SignUpManager.SignUp(multi, response, user, imagePath, isRegisterMode(multi).toString()); 
				if (user.getProfilephoto() == null) {
					errorMsgs.add("이 메세지는 사진 업로드를 하지 않았거나 사진 업로드시 문제가 발생했을때 보이는 메세지입니다");
					System.out.println("이 메세지는 사진 업로드를 하지 않았거나 사진 업로드시 문제가 발생했을때 보이는 메세지입니다" );
				}
				if(ret) {
					System.out.println("회원가입이나 수정 잘됨");
					actionUrl = "main.jsp";
				} else {
					System.out.println("회원가입이나 수정 잘안됨");
					actionUrl = "error.jsp";
				}
			} else if(res && (isRegisterMode(multi) == state.login)) {
				user = MemberDAO.findById(userid);
				if(user != null) {
					if( user.getUserid().equals(userid) && user.getPwd().equals(userpwd) ) {
						session.setAttribute("userid", user.getUserid());
					    session.setAttribute("usernickname", user.getNickname());
					    session.setAttribute("profilephoto", user.getProfilephoto());
					    System.out.println("로그인성공!" + user.getUserid() + "님이 로그인하셨습니다.");
						actionUrl = "main.jsp";
						ret = true;
					} else if(user.getPwd() != userpwd) {
						errorMsgs.add("비밀번호가 일치하지 않습니다. 다시 확인해주세요");
						actionUrl = "login.jsp";
					}
				} else {
					errorMsgs.add("없는 아이디입니다. 다시 확인해주세요");
					actionUrl = "login.jsp";
				}
			} else {
				actionUrl = "error.jsp";
			}
		} catch (SQLException | NamingException e) {
			System.out.println(e.getMessage());
			errorMsgs.add("알 수 없는 문제가 발생하였습니다. 다시 시도해주세요");
			session.invalidate();
			actionUrl = "error.jsp";
		}
		if(actionUrl.equals("main.jsp")) {
			response.sendRedirect("");
		} else {		
			request.setAttribute("errorMsgs", errorMsgs);
			RequestDispatcher dispatcher = request.getRequestDispatcher(actionUrl);
			dispatcher.forward(request, response);
		}
	}
