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

12. JSP + JDBC insert 예제 정리1 _ member

by 류딩이 2025. 9. 11.

📌 JSP + JDBC Insert 예제 정리

1. insertForm.jsp (회원가입 입력 폼)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
insertForm.jsp <br>

<h1>회원가입</h1>

<!-- 1. 사용자 입력 폼 -->
<form action="insertProc.jsp" method="post">
    <!-- 입력한 값이 insertProc.jsp로 전달됨 -->
    아이디 <input type="text" name="id"><br>
    비번 <input type="text" name="passwd"><br>
    이름 <input type="text" name="name"><br><br>
    
    <input type="submit" value="가입하기">
</form>

 

  • 설명
    • 사용자가 id, passwd, name 입력
    • form action="insertProc.jsp" → 제출 시 insertProc.jsp로 값 전달
    • 전달되는 파라미터 예시 :
insertProc.jsp?id=aa&passwd=bb&name=cc

2. insertProc.jsp (회원가입 처리)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
insertForm.jsp => insertProc.jsp <br>

<%
    // 1. 한글 처리
    request.setCharacterEncoding("UTF-8");

    // 2. 폼에서 넘어온 데이터 받기
    String id = request.getParameter("id");
    String passwd = request.getParameter("passwd");
    String name = request.getParameter("name");

    System.out.println("insertProc.jsp 실행");
%>

<!-- 3. DAO 객체 생성 -->
<jsp:useBean id="mdao" class="myPkg.MemberDao"/>

<%
    // 4. DB insert 실행
    int cnt = mdao.insertMember(id, passwd, name);

    // 5. 결과에 따른 페이지 이동
    if(cnt != -1){ // 삽입 성공
        response.sendRedirect("select.jsp");  // 목록 페이지로 이동
    }else{ // 삽입 실패
        response.sendRedirect("insertForm.jsp"); // 다시 입력폼으로 이동
    }
%>

 

설명

  • request.getParameter() : insertForm.jsp에서 전달된 값 받기
  • <jsp:useBean> : DAO 객체 생성
  • mdao.insertMember() : DB에 회원 정보 삽입
  • 성공 → select.jsp 이동 / 실패 → insertForm.jsp로 이동

3. MemberDao.java (삽입 메서드 부분)

// MemberDao.java 안에 존재
public int insertMember(String id, String passwd, String name) {
    getConnection();  // 1. DB 연결
    int cnt = -1;
    try {
        // 2. SQL 준비 (번호는 시퀀스, 가입일은 default)
        String sql = "insert into member values(m_seq.nextval,?,?,?,default)";
        ps = conn.prepareStatement(sql);

        // 3. 바인딩
        ps.setString(1, id);
        ps.setString(2, passwd);
        ps.setString(3, name);

        // 4. 실행 (성공 시 1 반환)
        cnt = ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 5. 자원 반납
        try {
            if(ps != null) ps.close();
            if(conn != null) conn.close();
        } catch(SQLException e) {
            e.printStackTrace();
        }
    }
    return cnt;
}
 

설명

  • SQL :
insert into member values(m_seq.nextval, ?, ?, ?, default)

 

  • → m_seq.nextval : 시퀀스 번호
    → default : 가입일(sysdate)
  • 실행 성공 시 cnt = 1, 실패 시 cnt = -1 반환

✅ 실행 순서 요약

사용자 → insertForm.jsp에서 값 입력
      → [가입하기] 버튼 클릭
      → insertProc.jsp 실행
         └ request.getParameter()로 값 받음
         └ mdao.insertMember() 호출
         └ DB에 INSERT 실행
      → 삽입 성공 → select.jsp 이동
      → 삽입 실패 → insertForm.jsp 이동