。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

강의/JSP 게시판 만들기

[JSP 게시판 만들기] 11. 게시판 글 목록 기능 구현하기

quarrrter 2023. 12. 8. 20:18

 

게시글 리스트 만들기

getNext()는 다음에 쓰여질 게시글 번호이기 때문에 -1 

Limit 10을 주었기 때문에 한 페이지에는 게시글 10개가 담김. 

따라서 가장 최신의 게시물부터 10번째 이전의 게시물까지 가져옴

public ArrayList<Bbs> getList(int pageNumber) {
    String SQL = "SELECT BBS WHERE bbsID < ? AND bbsAvailable = 1 ORDER BY bbsID DESC LIMIT 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;
}

 

 

게시판 목록 jsp

for문으로 전체 게시글 리스트 출력

<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="view.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>

 

 

 

 

게시글 10개 넘어가면 다음, 이전 버튼 만들기

 

 

nextPage 메서드를 생성하여 한 페이지에 표시될 수 있는 게시글 수가 넘어가면 true 반환

public boolean nextPage(int pageNumber) {
    String SQL = "SELECT * FROM BBS WHERE bbsID < ? AND bbsAvailable = 1";
    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; 
}

 

pageNumber 기본 값 1 넣기

<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"));
		}
	%>

 

nextPage 메서드 이용

<%
    if(pageNumber != 1) {
%>
    <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>
<%			
    }
%>