본문 바로가기
study/MVC

[MVC] 16. MVC Model1 방식 - 회원가입 (회원정보수정)

by 금이패런츠 2022. 4. 8.
728x90
반응형

수정하기 전 기존 내용을 화면에 출력하기 
   1. id 파라미터 조회
   2. login 정보 조회.
       - 로그아웃 : "로그인 하세요" 출력. loginForm.jsp 페이지 이동.
   3. 내정보가 아니 면서,admin도 아닌 경우
       - 내정보만 수정 가능합니다. 출력. main.jsp 페이지 이동
   4. id 정보를 db에서 읽어 Member 객체에 저장
   5. Member 객체를 화면에 출력.       

<%@page import="model.MemberDao"%>
<%@page import="model.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- src/main/webapp/model1/member/updateForm.jsp
  수정하기 전 기존 내용을 화면에 출력하기 
   1. id 파라미터 조회
   2. login 정보 조회.
       - 로그아웃 : "로그인 하세요" 출력. loginForm.jsp 페이지 이동.
   3. 내정보가 아니 면서,admin도 아닌 경우
       - 내정보만 수정 가능합니다. 출력. main.jsp 페이지 이동
   4. id 정보를 db에서 읽어 Member 객체에 저장
   5. Member 객체를 화면에 출력.        
--%>
<%
	String id = request.getParameter("id");
	String login = (String)session.getAttribute("login");
	
	if(login == null ) { %> <%-- 로그인이 안된 경우 --%>
<script>
	alert("로그인 하세요")
	location.href="loginForm.jsp"
</script>	
<% } //로그인이 된 경우. 관리자가 아니고 다른사람정보 조회 불가
	else if (!id.equals(login) && !login.equals("admin")) { %>
<script>
		alert("내 정보 수정만 가능합니다.")
		location.href="main.jsp"
</script>
<% } else { //정상적인 거래. 본인거래, 관리자인 경우 다른 사용자 정보
	Member mem = new MemberDao().selectOne(id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 수정 </title>
<link rel="stylesheet" href="../../css/main.css">
<script type="text/javascript">
   function  inputcheck(f) {
   if(f.pass.value == "") {
		   alert("비밀번호를 입력하세요");
		   f.pass.focus();
		   return false;
	   }
   }   
   function win_passchg() {
	  var op = "width=500, height=250, left=50,top=150";
	  open("passwordForm.jsp","",op);
   }
   function win_upload(){
	   var op = "width=500,height=150,left=50, top=150";
	   open("memberimg.jsp","",op);
   }
</script>
</head><body>
<form action="update.jsp" name="f" method="post" 
       onsubmit="return inputcheck(this)">
<input type="hidden" name="picture" value="<%=mem.getPicture() %>">
<table><caption>회원 정보 수정</caption>
<tr><td rowspan="4" valign="bottom">
  <img src="picture/<%=mem.getPicture() %>" width="100" height="120" id="pic"><br>
  <font size="1"><a href="javascript:win_upload()">사진수정</a></font>
</td><th>아이디</th>
<td><input type="text" name="id" readonly value="<%=mem.getId() %>"></td></tr>
<tr><th>비밀번호</th><td><input type="password" name="pass" ></td></tr>
<tr><th>이름</th>
<td><input type="text" name="name" value="<%=mem.getName() %>"></td></tr>
<tr><th>성별</th>
   <td><input type="radio" name="gender" value="1"<%=mem.getGender() == 1?"checked":"" %>>남
       <input type="radio" name="gender" value="2"<%=mem.getGender() == 2?"checked":"" %>>여</td></tr>
<tr><th>전화번호</th>
<td colspan="2"><input type="text" name="tel" value="<%=mem.getTel() %>"></td></tr>
<tr><th>이메일</th>
<td colspan="2"><input type="text" name="email" value="<%=mem.getEmail() %>"></td></tr>
<tr><td colspan="3"><input type="submit" value="회원수정">
<% if(!login.equals("admin") || id.equals("admin")) { %>
<input type="button" value="비밀번호수정" onclick="win_passchg()">
<% } %></td></tr>
</table></form></body></html>
<% } %>

  1. 모든 파라미터 정보를 Member 객체에 저장
  2. 입력된 비밀번호와, db에 저장된 비밀번호 비교 => db에서 읽기
       관리자인경우 관리자비밀번호로 비교하기.
      - 같지 않은 경우 : "비밀번호 오류" 메세지 출력 updateForm.jsp 페이지 이동
  3. 비밀번호가 같은 경우
    파라미터를 저장하고 있는 Member 객체를 이용하여 db 정보 수정.
     boolean MemberDao.update(Member)
     결과가 false면 수정실패 메세지 출력후 , updateForm.jsp 페이지 이동
     결과가 true 면 수정성공 info.jsp 페이지 이동

<%@page import="model.MemberDao"%>
<%@page import="model.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- src/main/webapp/model1/member/update.jsp  
  1. 모든 파라미터 정보를 Member 객체에 저장
  2. 입력된 비밀번호와, db에 저장된 비밀번호 비교 => db에서 읽기
       관리자인경우 관리자비밀번호로 비교하기.
      - 같지 않은 경우 : "비밀번호 오류" 메세지 출력 updateForm.jsp 페이지 이동
  3. 비밀번호가 같은 경우
  	 파라미터를 저장하고 있는 Member 객체를 이용하여 db 정보 수정.
     boolean MemberDao.update(Member)
     결과가 false면 수정실패 메세지 출력후 , updateForm.jsp 페이지 이동
     결과가 true 면 수정성공 info.jsp 페이지 이동
 --%>
 <% 
  	// 1. 모든 파라미터 정보를 Member 객체에 저장
  	request.setCharacterEncoding("UTF-8");
	Member mem = new Member();
 	mem.setId(request.getParameter("id"));
 	mem.setPass(request.getParameter("pass"));
 	mem.setName(request.getParameter("name"));
 	mem.setGender(Integer.parseInt(request.getParameter("gender")));
 	mem.setTel(request.getParameter("tel"));
 	mem.setEmail(request.getParameter("email"));
 	mem.setPicture(request.getParameter("picture"));
 	//2. 입력된 비밀번호와, db에 저장된 비밀번호 비교 => db에서 읽기
	String login = (String)session.getAttribute("login");
 	MemberDao dao = new MemberDao();
 	Member dbmem = dao.selectOne(login);
 	//입력된 비밀번호 : mem.getPass()
 	//db 비밀번호 : dbmem.getPass()
 	String msg = "비밀번호가 틀렸습니다.";
 	String url = "updateForm.jsp?id=" + mem.getId();
 	if (mem.getPass().equals(dbmem.getPass())) {
 	//3. 비밀번호가 같은 경우
 		if(dao.update(mem)) {
 			msg = "수정성공";
 			url = "info.jsp?id=" + mem.getId();
 		} else {
 			msg = "수정실패";
 		}
 	}
 %>
<script>
	alert('<%=msg %>')
	location.href="<%=url %>"
</script>
728x90
반응형