💡 핵심 요약 (TL;DR)
Javabean 7 : 게시판만들기(글 총갯수, 글목록, 페이징처리)의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* 데이터역순정렬의 방법은 두가지을 적용할 수 있다.
ITWILL학원 : 28강 JSP기초 BY 정규태강사 1. 순서
디비에서 전체 글목록을 읽어서 가져오기
글을 읽어오는 작업은 많은 리소스를 필요로한다.
BoardList.jsp 생성
BoardDAO.java에 getBoardCount() 메서드 생성
디비에 글이 있는지 확인 후 있으면 글 모두 가져오기, 없으면 가져오지않기
BoardDAO.java에 getBoardList() 메서드 생성
최신 글이 위로 오게 정렬 (쿼리이용)
데이터역순정렬의 방법은 두가지
쿼리단계에서 가져올때부터 역순: 더욱 효율적
쿼리로 가져와서 화면에 뿌릴때 역순
페이징처리하기
페이지블럭 만들기
2. BoardList.jsp생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 <% BoardDAO bdao = new BoardDAO ();int cnt = bdao.getBoardCount();int pageSize = 5 ; String pageNum = request.getParameter("pageNum" );if (pageNum == null ){ pageNum ="1" ; } int currentPage = Integer.parseInt(pageNum); int startRow = (currentPage-1 )*pageSize + 1 ;int endRow = currentPage * pageSize;System.out.println(bdao.getBoardList()); ArrayList boardList = null ;if (cnt != 0 ){ boardList = bdao.getBoardList(startRow, pageSize); } %> <fieldset> <legend>땡땡게시판</legend> <div id = "contents" > 게시판 총 글의 수 : <%=cnt %> 개 <input id = "writebtn" type="button" value="글쓰기" onclick="location.href='writeForm.jsp'" > <br> <table> <tr> <th>글번호</th> <th>제목</th> <th>작성자</th> <th>조회수</th> <th>작성일</th> <th>IP</th> </tr> <% for (int i = 0 ;i<boardList.size(); i++){ BoardBean bb = (BoardBean) boardList.get(i); %> <tr> <td><a href = "content.jsp?bno=<%=bb.getBno()%>&pageNum=<%=pageNum%>" ><%=bb.getSubject() %></a></td> <td><%=bb.getSubject() %></td> <td><%=bb.getName() %></td> <td><%=bb.getReadcount() %></td> <td><%=bb.getDate() %></td> <td><%=bb.getIp() %></td> </tr> <% } %> </table> </div> </fieldset> <% if (cnt != 0 ){ int pageCount = cnt/pageSize + (cnt%pageSize == 0 ? 0 :1 ); int pageBlock = 3 ; int startPage = ((currentPage-1 )/pageBlock) * pageBlock + 1 ; int endPage = startPage + pageBlock - 1 ; if (endPage > pageCount){ endPage = pageCount; } %> <div id = "pageBlock" > <% if (startPage > pageBlock){ %> <a href = "boardList.jsp?pageNum=<%=startPage-pageBlock%>" > 이전 </a> <% } for (int i = startPage; i<=endPage; i++){ %> <a href = "boardList.jsp?pageNum=<%=i%>" > <%=i%> </a> <% } if (endPage < pageCount){ %> <a href = "boardList.jsp?pageNum=<%=startPage+pageBlock%>" > 다음 </a> <% } %> </div> <% } %>
3. BoardDAO.java에 getBoardCount() 메서드생성 BoardDAO.java에 getBoardCount() 메서드 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public int getBoardCount () { int count = 0 ; try { getCon(); sql = "select count(*) from itwill_board" ; pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery(); if (rs.next()){ count = rs.getInt(1 ); System.out.println("게시판 글 갯수 확인 :" + count); } } catch (Exception e) { e.printStackTrace(); } finally { closeDB(); } return count; }
4. BoardDAO.java에 getBoardList() 메서드생성 BoardDAO.java에 getBoardList() 메서드 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 public ArrayList getBoardList () { ArrayList boardList = new ArrayList (); try { getCon(); sql = "select * from itwill_board order by re_ref desc" ; pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()){ BoardBean bb = new BoardBean (); bb.setBno(rs.getInt("bno" )); bb.setContent(rs.getString("content" )); bb.setDate(rs.getDate("date" )); bb.setFile(rs.getString("file" )); bb.setIp(rs.getString("ip" )); bb.setName(rs.getString("name" )); bb.setPw(rs.getString("pw" )); bb.setRe_lev(rs.getInt("re_lev" )); bb.setRe_ref(rs.getInt("re_ref" )); bb.setRe_seq(rs.getInt("re_seq" )); bb.setReadcount(rs.getInt("readcount" )); bb.setSubject(rs.getString("subject" )); boardList.add(bb); } } catch (Exception e) { e.printStackTrace(); } finally { closeDB(); } return boardList; }
5. 페이징처리 : BoardDAO.java에 getBoardList(int startRow, int pageSize) 오버로딩 메서드 만들기 getBoardList(int startRow, int pageSize) 오버로딩 메서드만들고 sql구문 변경하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public ArrayList getBoardList (int startRow, int pageSize) { ArrayList boardList = new ArrayList (); try { getCon(); sql = "select * from itwill_board order by re_ref desc, re_seq asc" +"limit ?,?" ; pstmt = con.prepareStatement(sql); pstmt.setInt(1 , startRow-1 ); pstmt.setInt(2 , pageSize); rs = pstmt.executeQuery(); while (rs.next())이후로 getBoardList()와 동일 } }
#TIL ITWILL(JAVA)