Java Resources 패키지에 com.member.model, com.member.controller 패키지 두 개를 생성

=============================코드=============================
package com.board.model;
public class BoardDTO {
private int board_no;
private String board_writer;
private String board_title;
private String board_cont;
private String board_pwd;
private int board_hit;
private String board_date;
private String board_update;
public int getBoard_no() {
return board_no;
}
public void setBoard_no(int board_no) {
this.board_no = board_no;
}
public String getBoard_writer() {
return board_writer;
}
public void setBoard_writer(String board_writer) {
this.board_writer = board_writer;
}
public String getBoard_title() {
return board_title;
}
public void setBoard_title(String board_title) {
this.board_title = board_title;
}
public String getBoard_cont() {
return board_cont;
}
public void setBoard_cont(String board_cont) {
this.board_cont = board_cont;
}
public String getBoard_pwd() {
return board_pwd;
}
public void setBoard_pwd(String board_pwd) {
this.board_pwd = board_pwd;
}
public int getBoard_hit() {
return board_hit;
}
public void setBoard_hit(int board_hit) {
this.board_hit = board_hit;
}
public String getBoard_date() {
return board_date;
}
public void setBoard_date(String board_date) {
this.board_date = board_date;
}
public String getBoard_update() {
return board_update;
}
public void setBoard_update(String board_update) {
this.board_update = board_update;
}
}
board 테이블의 전체 게시물의 수를 조회하는 메서드를 생성하자
=============================코드=============================
package com.board.model;
import java.sql.*;
public class BoardDAO {
// DB와 연결하는 객체
Connection con = null;
// DB에 SQL문을 전송하는 객체
PreparedStatement pstmt = null;
// SQL문을 실행한 후에 결과값을 가지고 있는 객체
ResultSet rs = null;
// SQL문을 저장할 객체
String sql = null;
// MemberDAO 객체를 싱글턴 방식으로 만들어보자
// 1단계 : MemberDAO 객체를 정적(static) 멤버로 선언을 해주어야 함
private static BoardDAO instance = null; // instance 는 참조변수
// 2단계 : 싱글턴 방식으로 객체를 만들기 위해서는
// 우선적으로 기본생성자의 접근지정자를 public이 아닌 private으로 변경해주어야 함
// 즉, 외부에서 직접적으로 기본생성자에 접근하여 호출하지 못하도록 하는 방법
private BoardDAO() { } // 기본 생성자
// 3단계 : 기본 생성자 대신에 싱글턴 객체를 return 해주는 getInstance() 메서드를 만들어서
// 해당 getInstance() 메서드를 외부에서 접근이 가능하도록 해주면 됨
public static BoardDAO getInstance() {
if(instance == null) {
instance = new BoardDAO();
}
return instance;
} // getInstance() 메서드 end
// DB 연동 작업을 하는 메서드
public void openConn() {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "goott";
String password = "99229922";
try {
// 1단계 : 오라클 드라이버를 메모리로 로딩 작업 진행
Class.forName(driver);
// 2단계 : 오라클 DB와 연결 작업 진행
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
} // openConn() 메서드 end
// DB에 연결되어 있던 자원을 종료하는 메서드
public void closeConn(ResultSet rs, PreparedStatement pstmt, Connection con) {
try {
if(rs != null) { rs.close(); }
if(pstmt != null) { pstmt.close(); }
if(con != null) { con.close(); }
} catch (SQLException e) {
e.printStackTrace();
}
}
// DB에 연결되어 있던 자원을 종료하는 메서드
public void closeConn(PreparedStatement pstmt, Connection con) {
try {
if(pstmt != null) { pstmt.close(); }
if(con != null) { con.close(); }
} catch (SQLException e) {
e.printStackTrace();
}
}
// board 테이블의 전체 게시물의 수를 조회하는 메서드
public int getBoardCount() {
int count = 0;
try {
openConn();
sql = "select count(*) from board";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()) {
count = rs.getInt(1); // 5
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConn(rs, pstmt, con);
}
return count;
}
}
=============================코드=============================
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align = "center">
<hr width = "30%" color = blue>
<h3>BOARD 테이블 메인 페이지</h3>
<hr width = "30%" color = blue>
<br/> <br/>
<%-- request.getContextPath() : 현재 프로젝트명을 문자열로 반환해주는 메서드 --%>
<%-- select는 별칭 --%>
<a href = "<%=request.getContextPath() %>/list.go">[전체 게시물 목록]</a>
</div>
</body>
</html>

=============================코드=============================
package com.board.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.board.model.BoardDAO;
import com.board.model.BoardDTO;
@WebServlet("/list.go")
public class ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ListServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 요청 : 전체 게시물 목록을 보여달라고 요청
// 응답 : board 테이블에서 게시글 전체 목록을 조회하여
// 조회된 게시물 전체를 view page로 이동시키는 비즈니스 로직
BoardDAO dao = BoardDAO.getInstance();
// 게시물의 총 개수를 구하는 메서드 호출
int count = dao.getBoardCount();
// 게시물의 전체 리스트를 구하는 메서드 호출
List<BoardDTO> boardList = dao.getBoardList();
// 조회된 게시물 목록과 게시물 수를 view page로 이동 ==> 바인딩 작업
request.setAttribute("List", boardList);
request.setAttribute("Count", count);
request.getRequestDispatcher("view/board_list.jsp").forward(request, response);
}
}
=============================코드=============================
<%@page import="com.board.model.BoardDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<BoardDTO> boards = (List<BoardDTO>)request.getAttribute("List");
int listCount =(int)request.getAttribute("Count");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align = "center">
<hr width = "30%" color = "tomato">
<h3>BOARD 테이블 전체 게시물 목록 페이지</h3>
<hr width = "30%" color = "tomato">
<br/> <br/>
<table border = "1" width = "450">
<tr>
<td colspan = "5" align = "right">
전체 게시물 수 : <%=listCount %> 개
</td>
</tr>
<tr>
<th>게시글 No.</th> <th>글 제목</th> <th>작성자</th> <th>조회수</th> <th>작성일자</th>
</tr>
<%
if(boards.size() != 0) {
for(BoardDTO dto : boards) {
%>
<tr>
<td><%=dto.getBoard_no() %></td>
<td><%=dto.getBoard_title() %></td>
<td><%=dto.getBoard_writer() %></td>
<td><%=dto.getBoard_hit() %></td>
<td><%=dto.getBoard_date().substring(0,10) %></td>
</tr>
<% } // for문 end
}else {
// 게시물 전체 목록이 없는 경우
%>
<tr>
<td colspan = "5" align = "center">
<h3>전체 게시물 목록이 없습니다...</h3>
</td>
</tr>
<% } %>
</table>
</div>
</body>
</html>

전체 게시물 목록 클릭!
