수업강의노트
24_07_17 오늘의 강의노트(요약)
regnator
2024. 7. 23. 01:02
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
반응형