공부/JSP 혼공

9. [게시판 실습] 입력 글 저장하기

마준123 2023. 3. 25. 22:50

1. write_ok.jsp를 만들고 아래의 내용을 입력한다.

<%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>


<%

String s_name=new String(request.getParameter("name").getBytes("8859_1"),"UTF-8");
String s_password=request.getParameter("password");
String s_email=request.getParameter("email");
String s_homepage=request.getParameter("homepage");
String s_subject=new String(request.getParameter("subject").getBytes("8859_1"),"UTF-8");
String s_memo=new String(request.getParameter("memo").getBytes("8859_1"),"UTF-8");
String s_ip = request.getRemoteAddr();

try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "오라클DB아이디", "오라클DB비번");

    String str_sql = "INSERT INTO board (name,password,email,homepage,subject,memo,ip,wrietime) VALUES(?,?,?,?,?,?,?,'123123')";         
※주의!! wrietime 은 원래 writetime인데 제가 테이블만들때 컬럼명에 오타를냈습니다. 귀찮아서 그냥 쓰려고 저렇게 만들었습니다.
    PreparedStatement pstmt = conn.prepareStatement(str_sql);
    pstmt.setNString(1,s_name);
    pstmt.setNString(2,s_password);
    pstmt.setNString(3,s_email);
    pstmt.setNString(4,s_homepage);
    pstmt.setNString(5,s_subject);
    pstmt.setNString(6,s_memo);
    pstmt.setNString(7,s_ip);
    pstmt.executeUpdate();
    pstmt.close();
    conn.close();

} catch (Exception e) {
    out.println(e);
}

%>


<html>
<head>
    <meta charset="UTF-8">
<script language=javascript>
    self.window.alert("전송완료");
    location.href="write.html";
</script>
</head>
<body>
</body>
</html>

2. 이제 write.html에서 내용을 입력하면 db에 insert가 되는걸 확인할 수 있다.

 

 

 

※ 참고용 코드가 실행되는 순서

  1. Oracle JDBC 드라이버 클래스 로딩: Class.forName("oracle.jdbc.driver.OracleDriver");
  2. 데이터베이스 연결 생성: Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "jsp", "root");
  3. SQL 쿼리문 작성: String str_sql = "INSERT INTO BBS (name,password,email,homepage,subject,memo,ip,wrietime) VALUES(?,?,?,?,?,?,?,SYSDATE)";
  4. Prepared Statement 생성: PreparedStatement pstmt = conn.prepareStatement(str_sql);
  5. Prepared Statement의 매개변수 값 지정: pstmt.setNString()을 이용하여 매개변수에 값 할당
  6. 쿼리 실행: pstmt.executeUpdate();
  7. Prepared Statement와 데이터베이스 연결 닫기: pstmt.close(); conn.close();