본문 바로가기
기초 및 언어/▶ Java&JSP

13. JSP + JDBC Update 예제 정리1 _ member

by 류딩이 2025. 9. 11.

📌 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가 작성 되어있는 수정 폼)이동