📌 JSP + JDBC Update 예제 정리
1. updateForm.jsp (회원 수정 입력 폼)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "myPkg.*" %>
select.jsp(num) => updateForm.jsp <br>
<!-- 예시: updateForm.jsp?num=3 -->
<!-- select.jsp에서 [수정] 클릭 시 num 값이 전달됨 -->
<%
// 1. select.jsp에서 전달받은 num 파라미터
String num = request.getParameter("num");
%>
num : <%=num %> <br>
<!-- 2. DAO 객체 생성 -->
<jsp:useBean id="mdao" class="myPkg.MemberDao"/>
<%
// 3. 해당 회원 정보 가져오기
MemberBean mb = mdao.getMember(num);
System.out.println(mb.getId());
System.out.println(mb.getPasswd());
System.out.println(mb.getName());
%>
<h1>회원수정</h1>
<!-- 4. 기존 데이터 출력 후 수정 가능 -->
<form action="updateProc.jsp" method="post">
<!-- 수정 시 어떤 회원인지 식별하기 위해 hidden으로 num 전달 -->
<input type="hidden" name="num" value="<%=num%>">
아이디 <input type="text" name="id" value="<%=mb.getId()%>"><br>
비번 <input type="text" name="passwd" value="<%=mb.getPasswd()%>"><br>
이름 <input type="text" name="name" value="<%=mb.getName()%>"><br><br>
<input type="submit" value="수정하기">
</form>
✔ 설명
- select.jsp에서 클릭 시 전달된 num을 받음
- mdao.getMember(num) → 해당 회원 정보를 가져와서 화면에 뿌림
- 사용자가 수정할 수 있도록 input value에 기존 값 넣어줌
- hidden 필드에 num을 넣어 회원 식별
2. updateProc.jsp (회원 수정 처리)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "myPkg.*" %>
updateForm.jsp => updateProc.jsp <br>
<%
// 1. 한글 처리
request.setCharacterEncoding("UTF-8");
// 2. 폼 데이터 받기
String num = request.getParameter("num");
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
String name = request.getParameter("name");
%>
<!-- 3. DAO 객체 생성 -->
<jsp:useBean id="mdao" class="myPkg.MemberDao"/>
<%
// 4. updateMember 실행
int cnt = mdao.updateMember(num, id, passwd, name);
// 5. 결과에 따른 페이지 이동
if(cnt != -1){ // 수정 성공
response.sendRedirect("select.jsp"); // 목록 페이지로 이동
} else { // 수정 실패
response.sendRedirect("updateForm.jsp?num=" + num); // 다시 수정폼으로 이동
}
%>
✔ 설명
- request.getParameter() : 폼에서 넘어온 값 받기
- DAO 메서드 updateMember() 호출 → DB에서 해당 회원 수정
- 성공 → select.jsp (목록으로 이동)
- 실패 → 같은 회원 번호의 updateForm.jsp 다시 호출
3. MemberDao.java (update 메서드 부분)
public MemberBean getMember(String num){
System.out.println(num);
getConnection();
MemberBean mb = null;
try {
String sql = "select * from member where num=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, Integer.parseInt(num));
rs = ps.executeQuery();
// 결과 한줄
if(rs.next()) {
int num2 = rs.getInt("num");
String id = rs.getString("id");
String passwd = rs.getString("passwd");
String name = rs.getString("name");
String register = String.valueOf(rs.getDate("register"));
mb = new MemberBean(num2,id,passwd,name,register);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(ps != null)
ps.close();
if(rs != null)
rs.close();
if(conn != null)
conn.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
return mb;
} // getMember
// 회원 수정 메서드
public int updateMember(String num, String id, String passwd, String name) {
getConnection();
int cnt = -1;
try {
// 1. SQL 준비
String sql = "update member set id=?, passwd=?, name=? where num=?";
ps = conn.prepareStatement(sql);
// 2. 값 바인딩
ps.setString(1, id);
ps.setString(2, passwd);
ps.setString(3, name);
ps.setInt(4, Integer.parseInt(num));
// 3. 실행 (성공 시 1 반환)
cnt = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 4. 자원 해제
try {
if(ps != null) ps.close();
if(conn != null) conn.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
return cnt;
}
✔ 설명
- update member set ... where num=? → 특정 회원만 수정
- ps.executeUpdate() 실행 성공 시 수정된 행 개수 반환
- 수정 성공 시 cnt = 1, 실패 시 cnt = -1
✅ 실행 순서 요약
사용자 → select.jsp에서 [수정] 클릭
→ updateForm.jsp 실행
└ num 값 전달받아 mdao.getMember(num) 실행
└ 기존 데이터 출력
→ 수정 후 [수정하기] 클릭
→ updateProc.jsp 실행
└ request.getParameter() 값 받음
└ mdao.updateMember() 실행
└ DB에서 update 처리
→ 성공 → select.jsp 이동
→ 실패 → updateForm.jsp 다시 호출
실행 이미지와 순서

1. select jsp 에서 번호 2 수정 클릭시 ==> num2 를 담아넘어감
2. dao에 getMember메서드에 번호(num=2) 넘어감
3. 한줄의 레코드를 MemberBean으로 만들어서 넘겨줌
4. memberBean타입의 변수로 레코드를 받음

5. updateForm.jsp에 input태그에 value로 집어넣음
6. 수정을 선택했던 num=2가 수정form value로 들어가있음

7. 이정륜 => 김민재로 수정할 번호를 hidden으로 넘김
8. 수정 submit을 누르면 (히든번호 + 아이디, 비밀번호, 이름) 4가지 넘김 ==> updateProc로 넘어감
9. updateForm에서 수정한 값을 updateProc에 입력받음
11.. Dao에서 updateMember에 4가지 값을 받아 수정 (조건 번호에 따라)where num = 2
12. 만약 성공하면 response.sendRedirect() 를 통해 select.jsp로 이동
13. 실패하면 updateForm.jsp?num="+num(선택한 번호의 value가 작성 되어있는 수정 폼)이동
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 15. JSP + JDBC Select 예제 정리2 _ Book (0) | 2025.09.11 |
|---|---|
| 14. JSP + JDBC delete예제 정리1 _ member (0) | 2025.09.11 |
| 12. JSP + JDBC insert 예제 정리1 _ member (0) | 2025.09.11 |
| 11. JSP + JDBC Select 예제1 _ member (0) | 2025.09.11 |
| 10. JSP 유효성 검정 / usebean 숙제 (0) | 2025.09.10 |