티스토리 뷰

728x90
반응형
프로젝트 요약

프로젝트 요약

프로젝트 : mysqljsp52_tb_member

1. m_insert_form2.jsp 파일 생성

기존 m_insert_form.jsp 코드를 복사하여 m_insert_form2.jsp 파일을 생성합니다.

        <form action="<%= request.getContextPath() %>/minsert/m_insert_action.jsp" method="post">
        <table border="1">
            <tr>
                <td>아이디</td>
                <td><input type="text" name="m_id" size="20"></td>
            </tr>
            <tr>
                <td>암호</td>
                <td><input type="text" name="m_pw" size="20"></td>
            </tr>
            <tr>
                <td>권한</td>
                <td><input type="text" name="m_level" size="20"></td>
            </tr>
            <tr>
                <td>이름</td>
                <td><input type="text" name="m_name" size="20"></td>
            </tr>
            <tr>
                <td>이메일</td>
                <td><input type="text" name="m_email" size="20"></td>
            </tr>
            <tr>
                <td colspan="4"><input type="submit" value="회원가입버튼"></td>
            </tr>
        </table>
        </form>
    

2. m_insert_form2.jsp 파일 수정

form action을 수정하여 m_insert_action2.jsp로 변경합니다.

        <form action="<%= request.getContextPath() %>/minsert2/m_insert_action2.jsp" method="post">
    

3. 입력 필드 이름 변경

입력 필드의 name 속성을 변경합니다.

        memberId
        memberPw
        memberLevel
        memberName
        memberEmail
    

4. MySQL 드라이버 로딩 문제 해결

올바른 MySQL 드라이버 클래스를 로딩합니다.

        Class.forName("cohttp://m.mysql.cj.jdbc.Driver");
    

5. 데이터베이스 연결 코드 추가

JSP 파일에 데이터베이스 연결 코드를 추가합니다.

        <%
        String jdbcDriver = "jdbc:mysql://localhost:3306/dev52db?useUnicode=true&characterEncoding=euckr";
        String dbUser = "dev52id";
        String dbPass = "dev52pw";
        Connection conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
        System.out.println(conn + "<-- conn");
        %>
    

6. 입력값을 PreparedStatement에 설정

사용자로부터 입력받은 값을 PreparedStatement에 설정합니다.

        pstmt.setString(1, memberId);
        pstmt.setString(2, memberPw);
        pstmt.setString(3, memberLevel);
        pstmt.setString(4, memberName);
        pstmt.setString(5, memberEmail);
    

7. 데이터베이스에 값 삽입

PreparedStatement를 이용해 데이터베이스에 값을 삽입합니다.

        pstmt = conn.prepareStatement("INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");
        pstmt.setString(1, memberId);
        pstmt.setString(2, memberPw);
        pstmt.setString(3, memberLevel);
        pstmt.setString(4, memberName);
        pstmt.setString(5, memberEmail);
        pstmt.executeUpdate();
    

8. 에러 처리 및 트랜잭션 관리

데이터베이스 작업 중 발생하는 에러를 처리하고 트랜잭션을 관리합니다.

        conn.rollback();
        conn.commit();
    

9. 연결 종료

데이터베이스 연결을 종료합니다.

        pstmt.close();
        conn.close();
    

10. 추가 내용

데이터베이스 스키마 및 사용자 생성, 권한 부여에 대한 내용입니다.

        CREATE DATABASE db16hwang DEFAULT CHARACTER SET UTF8;
        CREATE USER 'dbid16hwang'@'%' IDENTIFIED BY 'dbpw16hwang';
        GRANT ALL PRIVILEGES ON db16hwang.* TO 'dbid16hwang'@'%';
        FLUSH PRIVILEGES;
    

11. JSP에서 데이터베이스 작업

JSP 파일에서 데이터베이스 작업을 수행하는 예시입니다.

        <%@ page import = "java.sql.*" %>
        <%
        String memberId = request.getParameter("memberId");
        String memberPw = request.getParameter("memberPw");
        String memberLevel = request.getParameter("memberLevel");
        String memberName = request.getParameter("memberName");
        String memberEmail = request.getParameter("memberEmail");
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            Class.forName("cohttp://m.mysql.cj.jdbc.Driver");
            String jdbcDriver = "jdbc:mysql://localhost:3306/dev52db?useUnicode=true&characterEncoding=euckr";
            String dbUser = "dev52id";
            String dbPass = "dev52pw";
            conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
            pstmt = conn.prepareStatement("INSERT INTO tb_member VALUES (?, ?, ?, ?, ?)");
            pstmt.setString(1, memberId);
            pstmt.setString(2, memberPw);
            pstmt.setString(3, memberLevel);
            pstmt.setString(4, memberName);
            pstmt.setString(5, memberEmail);
            pstmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
            if (conn != null) try { conn.close(); } catch (SQLException e) {}
        }
        %>
    
728x90
반응형