본문 바로가기
수업 문제(국비 지원)/JSP

[JSP] 2022.09.29(박명록 조회,결과)

by byeolsub 2023. 4. 29.

 ❓ book.sql

create table book (
   seq  number primary key,
   writer varchar2(50),
   title varchar2(200),
   content varchar2(4000),
   regdate date
)
select * from book

delete from book

bookDao.java

package test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import model.DBConnection;

public class BookDao {
	public boolean insert(Book book) {
		//데이터베이스에 등록
		Connection conn = DBConnection.getConnection();
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = conn.prepareStatement("select nvl(max(seq),0) from book");
			rs = pstmt.executeQuery();
			rs.next();
			int maxseq = rs.getInt(1);
			maxseq++;
			pstmt.close();
			
			pstmt = conn.prepareStatement
					("insert into book (seq, writer, title, content, regdate)"
					+"values (?,?,?,?,?)");
					pstmt.setInt(1, maxseq);
					pstmt.setString(2, book.getWriter());
					pstmt.setString(3, book.getTitle());
					pstmt.setString(4, book.getContent());
			//		pstmt.setString(5, book.getContent());
					return pstmt.executeUpdate() > 0;
		}	catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(conn, pstmt, rs);
		}
		return false;
	}
	
}

book.jsp

package test;

import java.util.Date;

public class Book {
	private int seq;
	private String writer;
	private String title;
	private String content;
	private Date regdate;
}
	//getter,setter
	public int getSeq() {
		return seq;
	}
	public void setSeq(int seq) {
		this.seq = seq;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getRegdate() {
		return regdate;
	}
	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}

bookForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /src/main/webapp/test20220929/bookForm.jsp
   1. db에 방명록 테이블생성하기. => book
   2. test.Book Bean 클래스 생성하기
   3. test.BookDao 클래스에서 내용을 등록하기
   4. book.jsp 페이지 작성하기
      - 입력된 내용을 db에 등록하기
      - 등록된 내용을 화면에 출력하기=>(결과화면 참조)
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>방명록 작성</title>
<link rel="stylesheet" href="../css/main.css" >
</head>
<body>
<form action="book.jsp" method="post">
  <table>
    <tr><td>작성자</td>
       <td><input type="text" name="writer"></td></tr>
    <tr><td>제목</td>
       <td><input type="text" name="title"></td></tr>
    <tr><td>내용</td>
       <td><textarea rows="5" cols="60" name="content"></textarea>
    </td></tr>
    <tr><td colspan="2">
      <input type="submit" value="방명록 등록"></td></tr>
  </table>
 </form>
 </body>
 </html>

book.jsp

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="test.BookDao"%>
<%@page import="test.Book"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp2/src/main/webapp/est20220929/book.jsp
	bookForm.jsp에서 전달해준 파라미터 값 들을 db의 book 테이블에 저장기능
	1. 파라미터 값을 읽어서 Book객체에 저장.
	2. Book 객체를 db에 book 테이블에 저장
	3. 방명록 등록 성공 : 화면 내용 출력
	4. 방명록 등록 실패 : bookForm.jsp 페이지로 이동
 --%>
<%
//1. 파라미터 값을 읽어서 Book 객체에 저장
	request.setCharacterEncoding("UTF-8");
	Book book = new Book();
	book.setWriter(request.getParameter("writer"));
	book.setTitle(request.getParameter("title"));
	book.setContent(request.getParameter("content"));
	BookDao dao = new BookDao();
	SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	if(dao.insert(book)) {
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>방명록 결과 보기</title>
</head>
<body>
<table><caption> 방명록 조회</caption>
<tr><td>작성자</td></tr><%=book.getWriter() %></td>
<tr><td>제목</td></tr><%=book.getTitle() %></td>
<tr><td>내용</td></tr><%=book.getContent() %></td>
<tr><td>등록일</td></tr><%=new Date() %></td>
</table>
</body>
</html>
<% } else { %>
<script>
	alert("방명록 등록 실패")
	location.href = 'bookForm.jsp'
</script>
<% }%>