실제로 작성된 목록을 출력하는 기능을 구현합니다.
게시글 목록을 출력하기 위해 게시글 리스트 반환 메서드와 페이징처리 메서드를 생성합니다.
public ArrayList<Bbs> getList(int pageNumber) { // 특정 게시글 리스트 반환
String SQL = "SELECT * FROM BBS WHERE bbsID < ? AND bbsAvailable = 1 ORDER BY bbsID DESC LIMIT 10"; // 페이지당 10개의 게시글 선택
ArrayList<Bbs> list = new ArrayList<Bbs>();
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, getNext() - (pageNumber - 1) * 10); // ?값 설정
rs = pstmt.executeQuery();
while (rs.next()) {
Bbs bbs = new Bbs();
bbs.setBbsID(rs.getInt(1));
bbs.setBbsTitle(rs.getString(2));
bbs.setUserID(rs.getString(3));
bbs.setBbsDate(rs.getString(4));
bbs.setBbsContent(rs.getString(5));
bbs.setBbsAvailabe(rs.getInt(6));
list.add(bbs); // 리스트에 인스턴스 반환
}
} catch (Exception e) {
e.printStackTrace();
}
return list; // 10개의 게시판 리스트 출력
}
public boolean nextPage(int pageNumber) { // 10개 이하 게시물 페이징처리
String SQL = "SELECT * FROM BBS WHERE bbsID < ? AND bbsAvailable = 1 ORDER BY bbsID DESC LIMIT 10";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, getNext() - (pageNumber - 1) * 10);
rs = pstmt.executeQuery();
if (rs.next()) {
return true; // 다음페이지가 있는 경우
}
} catch (Exception e) {
e.printStackTrace();
}
return false; // 현재페이지가 마지막 페이지인 경우
}
bbs.jsp에 만들어 게시물 리스트를 출력 부분을 작성합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="bbs.BbsDAO" %>
<%@ page import="bbs.Bbs" %>
<%@ page import="java.util.ArrayList" %> // 게시판 목록 출력
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="veiwport" content="width=device-width", initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>JSP 게시판 웹 사이트</title>
<style type="text/css"> // 게시글 제목 스타일 설정
a, a:hover {
color: #000000;
text-decoration: none; // 밑줄 삭제
}
</style>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
int pageNumber = 1; // 기본 페이지 넘버
if (request.getParameter("pageNumber") != null ) { // 파라미터 값 정수형 설정
pageNumber = Integer.parseInt(request.getParameter("pageNumber"));
}
%>
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
aria-expanded="false">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="main.jsp">JSP 웹 사이트 게시판</a>
</div>
.
.
.
</nav>
<div class="container">
<table class="table table-striped" style="text-align: center; border: 1px solid #dddddd">
<thead>
<tr>
<th style="background-color: #eeeeee; text-align: center;">번호</th>
<th style="background-color: #eeeeee; text-align: center;">제목</th>
<th style="background-color: #eeeeee; text-align: center;">작성자</th>
<th style="background-color: #eeeeee; text-align: center;">작성일</th>
</tr>
</thead>
<tbody> // 게시글 목록 출력
<%
BbsDAO bbsDAO = new BbsDAO(); // 인스턴스 생성
ArrayList<Bbs> list = bbsDAO.getList(pageNumber); // 현재 페이지 리스트 출력
for(int i = 0; i < list.size(); i++) {
%>
<tr> // 현재 게시글정보
<td><%= list.get(i).getBbsID() %></td>
<td><a href="vew.jsp?bbsID=<%= list.get(i).getBbsID() %>"><%= list.get(i).getBbsTitle() %></a></td> // 게시물 번호를 매개변수로 설정하여 게시물 상세보기로 이동
<td><%= list.get(i).getUserID() %></td>
<td><%= list.get(i).getBbsDate().substring(0, 11) + list.get(i).getBbsDate().substring(11, 13) + "시" + list.get(i).getBbsDate().substring(14, 16) + "분"%></td> // 필요한 날짜정보를 잘라서 출력
</tr>
<%
}
%>
</tbody>
</table> // 이전페이지와 다음페이지로 이동할 수 있는 버튼 생성
<%
if(pageNumber != 1) { // 2페이지 이상인 경우
%>
<a href="bbs.jsp?pageNumber=<%=pageNumber - 1%>" class="btn btn-success btn-arrow-Left">이전</a>
<%
} if(bbsDAO.nextPage(pageNumber + 1)) { // 다음페이지가 존재하는 경우
%>
<a href="bbs.jsp?pageNumber=<%=pageNumber + 1%>" class="btn btn-success btn-arrow-Left">다음</a>
<%
}
%>
<a href="write.jsp" class="btn btn-primary pull-right">글쓰기 </a>
</div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
'개인프로젝트' 카테고리의 다른 글
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 13.게시물 수정 기능 구현하기 (1) | 2024.01.21 |
---|---|
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 12.게시물 상세보기 기능 구현하기 (2) | 2024.01.21 |
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 10.글쓰기 기능 구현하기 (0) | 2024.01.20 |
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 9.게시판 데이터베이스 구축하기 (0) | 2024.01.20 |
[내가 만든 프로젝트 코드 분석 | JSP게시판 만들기] 8.메인페이지 세션관리 (0) | 2024.01.20 |