<% //1. 디비에서 전체 글목록을 읽어서 가져오기 //2. BoardDAO 객체생성 BoardDAO bdao = new BoardDAO(); //3. 디비에 글이 있는지 확인 후 있으면 글 모두 가져오기,없으면 가져오지않기 : getBoardCount() int cnt = bdao.getBoardCount();
//7. 페이징처리 (이미 유명한 알고리즘 공식, 사용법만 알면 됨) //7-1. 한 페이지에서 보여줄 글의 개수 설정(5개, 변경가능) int pageSize = 5; //7-2. 지금 내가 몇페이지에 있는 확인 //페이지번호는 숫자인데 왜 String으로 하는지 ? => 연산을 할 것이 아니라서 String이 편함 String pageNum = request.getParameter("pageNum"); //7-3. 페이지번호정보가 없을 경우 내가 보는 페이지가 첫페이지가 되도록 if(pageNum == null){ pageNum ="1"; } //7-4. 시작행번호계산 //10개씩 컬럼 나누고 2페이지에서 시작행이 11이되고 3페이지에서 시작행이 21이 되게끔 만들기 int currentPage = Integer.parseInt(pageNum); //String을 integer로 변환 int startRow = (currentPage-1)*pageSize + 1; //currentPage가 2인경우, (2-1)x10+1 = 11 //currentPage가 3인경우, (3-1)x10+1 = 21
//DB에서 게시글 전체 가져오는데 페이징처리한 메서드 구현 (메서드 오버로딩) public ArrayList getBoardList(int startRow, int pageSize){ //가변길이 배열 생성 ArrayList boardList = new ArrayList();
try { //1. 디비연결 getCon(); //2. sql작성, pstmt //게시판의 데이터 목록중에서 10개씩 정렬해서 가져오기 //re_ref(그룹번호) 내림차순 + re_seq(답글순서결정)오름차순으로 정렬 //데이터 짤라서 가져오기 limit 시작행-1, 페이지갯수 => 해당 위치부터 개수만큼 가져오기 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); //3. 실행 -> rs저장 rs = pstmt.executeQuery(); while(rs.next())이후로 getBoardList()와 동일 } }