본문 바로가기

자바 웹 개발자가 될거야/JSP

[JSP] 회원정보 수정 / 회원정보 삭제 구현하기

 

< 회원정보 수정하기 >

 

- updateForm.jsp와 updatePro.jsp 파일을 만들어서 수정할 데이터를 받고 처리할거임

 

① updateForm.jsp

 

<%@page import="com.itwillbs.member.MemberBean"%>
<%@page import="com.itwillbs.member.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
 	function check(){
 		if(document.fr.pass.value == ""){
 			alert("비밀번호를 입력하세요! ");
 			document.fr.pass.focus();
 			return false;
 		}
 	}

</script>
</head>
<body>
	<h1>WebContent/member/updateForm.jsp</h1>
	
	<%
	// 세션값 제어
	String id = (String)session.getAttribute("id");
	
	if(id == null){
		response.sendRedirect("loginForm.jsp");
	}
	
	// 해당 회원의 모든정보를 가져와서 화면에 출력
	
	MemberDAO mdao = new MemberDAO();	
	MemberBean oldMB = mdao.getMember(id);
	
	%>	
	
	<h2> 회원정보수정 </h2>
	   <fieldset>
	      <legend> ITWILL 회원정보 수정 </legend>
	      
	      <form action="updatePro.jsp" method="post" name="fr" onsubmit="return check();">
	      <!-- readonly : 읽기전용 (submit가능) / disabled : 사용불가  (submit 불가능) -->
	         아이디 : <input type="text" name="id" value="<%=oldMB.getId()%>" readonly="readonly"><br>
	         비밀번호 : <input type="password" name="pass" placeholder="비밀번호를 입력하시오."><br>
	         이름 : <input type="text" name="name" value="<%=oldMB.getName()%>"><br>
	         나이 : <input type="text" name="age" value="<%=oldMB.getAge()%>"><br>
	         이메일 : <input type="text" name="email" value="<%=oldMB.getEmail()%>"><br>
	         성별 : <input type="radio" name="gender" value="남"
	          <%if(oldMB.getGender().equals("남")){ %>
	          checked
	          <%}%>
	          >남 
	        <input type="radio" name="gender" value="여"
	        <%if(oldMB.getGender().equals("여")){ %>
	          checked
	        <%}%>
	         >여
	                
	         <input type="submit" value="회원수정">
	         <input type="reset" value="초기화">
	      </form>
	   
	   </fieldset>	

</body>
</html>

 

- DB에 저장되어있는 사용자 성별을 가지고 와서 남자면 남자 라디오버튼에 자동체크 여자면 여자 라디오버튼 자동체크

- 아이디는 읽기전용으로 만들어서 수정못하도록 했음 → readonly

- 비밀번호를 입력해야 수정된 form 전달가능

- 아이디, 이름, 나이, 이메일, 성별 정보를 DB에서 들고옴

 

 

 

 

② updatePro.jsp

 

- updateForm에서 데이터를 수정해서 회원수정 버튼을 누르면 updatePro페이지로 가서 처리해준다

- 자바빈에 담긴 객체에 update쿼리가 있음

 

<%@page import="com.itwillbs.member.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/member/updatePro.jsp</h1>

	<%
		// 한글처리 (form태그 정보를 post방식 전달)
		request.setCharacterEncoding("UTF-8");
		
		// 전달된 정보(파라미터) 저장 - 수정할 데이터값(이름, 나이, 성별, 이메일)
		// -> 자바빈 객체를 사용해서 한번에 저장(액션태그)
	%>
	<jsp:useBean id="mb" class="com.itwillbs.member.MemberBean"></jsp:useBean>
	<jsp:setProperty property="*" name="mb"/>
	<%
		System.out.println("수정할 데이터: "+mb);
		// MemberDAO 객체를 생성 - updateMember(bean);
		MemberDAO mdao = new MemberDAO();
		int result = mdao.updateMember(mb);
		
		System.out.println(" 수정 처리결과 : " + result);
		// 수정 처리 결과(정수데이터)에 따른 페이지 이동
		
		if(result == -1){
			%>
			<script type="text/javascript">
				alert('회원정보가 없습니다!');
				history.back();
			</script>			
			<%
		}else if(result == 0){
			%>
			<script type="text/javascript">
				alert('비밀번호 오류입니다!');
				history.back();
			</script>			
			<%
			
		}else{ //result == 1
			%>
			<script type="text/javascript">
				alert('회원정보 수정완료!');
				location.href='main.jsp';
			</script>			
			<%
		}	
	
	%>

</body>
</html>

 

 

- 데이터베이스에도 나이가 바뀐걸 확인할 수 있다

 

 

< 회원정보 삭제하기>

 

- deleteForm.jsp과 deletePro.jsp 파일을 만들어서 회원정보 삭제를 구현할거임

 

① deleteForm.jsp

 

- 비밀번호가 일치했을 때 정보가 삭제되도록 설계

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/member/deleteForm.jsp</h1>

	
	<%
		String id = (String) session.getAttribute("id");
	
		if(id == null){
			response.sendRedirect("loginForm.jsp");
		}
	%>
	
	<fieldset>
		<legend> 회원정보 삭제</legend>
		<form action="deletePro.jsp">
			<input type="hidden" name="id" value="<%=id%>">
			비밀번호 : <input type="password" name="pass"><br>
			<input type="submit" value="삭제하기">		
		</form>
	</fieldset>

</body>
</html>

 

 

 

② deletePro.jsp

 

- deleteForm에서 비밀번호를 받아 정보가 일치하는지 확인하고 회원정보 삭제 처리를 해줌

 

<%@page import="com.itwillbs.member.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/member/deletePro.jsp</h1>
	
	<%
		// 전달된 정보 저장
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		
		// MemberDAO 객체 생성 = deleteMember(id, pass);
		MemberDAO mdao = new MemberDAO();
		
		int result = mdao.deleteMember(id, pass);		
		
		if(result == -1){
			%>
			<script type="text/javascript">
				alert("비밀번호 오류");
				history.back();
			</script>
			<%
		}else if(result == 0){
			%>
			<script type="text/javascript">
				alert("비밀번호 오류");
				history.back();
			</script>
			<%
		}else { //result == 1
			// 로그인 세션정보를 삭제(초기화)
			session.invalidate();
			%>
			<script type="text/javascript">
				alert("삭제완료");
				location.href="main.jsp";
			</script>
			<%
		}
		
	%>

</body>
</html>

 

- session.invalidate();로 회원 정보 삭제하기

 

 

- DB에서도 삭제된 걸 확인할 수 있다