본문 바로가기
✨ Back-end/Servlet

[Servlet / JSP / SQL] 회원 관리 폼 만들기 (4) - UPDATE(정보 수정)

by 환풍 2023. 2. 23.
728x90

수정을 누르기전에,

 

member_detail.jsp  19번째 줄을 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="memberList.do" method="post">
아이디 ${member.memId } <br>
이름 ${member.memName } <br>
성별 ${member.gender } <br>
가입일 ${member.createDate } <br>
소개글 ${member.intro } <br>
<br>
<input type="submit" value="뒤로가기">
<input type="button" value="삭제" onclick="location.href='memberDelete.do?memId=${member.memId }';"> 
<input type="button" value="수정" onclick="location.href='memberUpdate.do?memId=${member.memId}';"> 
</form>
 
</body>
</html>
cs

서블릿의 memberUpdate.do로 memId 값을 들고간다.

 

MemberController.java 서블릿

역시나 memId 데이터를 받아와 저장하고, 바로 member-mapper로 가서 쿼리를 짜주자.

 

member-mapper.xml

바꿔줄 값이 4개이다. 

 

MemberService.java 인터페이스

 

MemberServiceImpl.java 클래스

//매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성)
//매개변수 : 쿼리 실행 시 빈 값을 채울 용도
//1. 쿼리에서 채워 줄 값이 없을 경우 : 매개변수 없음
//2. 채워줄 값이 하나일 경우
// 2-1) 채워줄 값이 숫자인 경우 : 매개변수 int형 하나
.// 2-2) 채워줄 값이 문자인 경우 : 매개변수 String형 하나
//3. 채워줄 값이 여러개인 경우 : 매개변수는 DTO 객체.
// 리턴타입 : 쿼리 실행 결과를 어떻게 받아올지에 대한 정의
// INSERT, UPDATE, DELETE 쿼리 실행 결과는
// 리턴타입을 int 혹은 void 사용하면됨.
// SELECT 쿼리 결과의 리턴타입은 크게 두 가지로 나뉨.
// 조회결과 데이터가 무조건 한줄만 조회 : DTO 객체.
// 조회 결과 데이터가 0줄이상 가변적일 경우 : List<DTO> 객체.

 

MemberController.java 서블릿

MemberDTO의 member 객체에 가지고온 memId 값을 넣고,

setAtrribute를 이용해 member라는 이름으로 member_update.jsp에 전달한다.

 

member_update.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="updateMember.do" method="post">
<input type="hidden" name="memId" value="${member.memId }">
아이디 : ${member.memId } <br>
이름 <input type="text" name="memName" value="${member.memName }"> <br>
 
 
성별 
    <c:if test="${member.gender eq '남' }">
        <input type="radio" name="gender" checked value="남">
        <input type="radio" name="gender" value="여">여 <br>
    </c:if>
    <c:if test="${member.gender eq '여' }">
        <input type="radio" name="gender" value="남">
        <input type="radio" name="gender" checked value="여">여 <br>
    </c:if>
 
<%-- <input type="radio" name="gender" <c:if test="${member.gender eq '남' }">checked</c:if>
     <input type="radio" name="gender" <c:if test="${member.gender eq '여' }">checked</c:if>>여 <br>
      똑같은 문장임 --%>
가입일 <input type="date" name="createDate" value="${member.createDate }"><br>
 
 
<input type="submit" value="수정!">
</form>
</body>
</html>
cs

jsp에서 데이터를 가지고 서블릿 updateMember.do 로 이동한다.

 

MemberController.java 서블릿

jsp에서 받아온 memName, gender, createDate, memId를 저장시킨다. 

이후 아까 만들었던 member-mapper에서 updateMember 메소드 데이터 값들을 memberService에 부착한다.

이후 다시 member_detail.do 서블릿으로 가며 수정을 종료한다. 이때 memId를 함께 가져가야한다.

 

이렇게 바꾸어보았다.

 

데이터베이스에도 수정된 값이 잘 나타나있다.

 

전, 후

 

새로 로그인을 하면 회원 정보가 달라진 것을 확인할 수 있다.

반응형

댓글