- 2019/09/10 3. 페이징2019년 11월 22일
- 조별하
- 작성자
- 2019.11.22.:46
페이징
▶글이 많이 쌓이게 되면 페이지가 길어지기 때문에 페이지를 만들어 주어야 한다.
구글 : 페이지가 7개가 넘어가면 앞부분의 페이지 버튼이 사라지고, 뒷부분의 페이지 버튼이 출력
네이버 : 페이지가 10개 단위로 넘어가며 10개가 넘어가야 그 다음 페이지가 화면에 출력
▶어떤 형태의 페이지를 선택할 지는 가장 대중적으로 사용하는것을 쓰면 된다
페이징 준비단계
1) 한페이지당 출력할 글의 줄수
<table class="table table-bordered"> <tr> <th style="width:300px">제목</th> <th style="width:100px">작성자</th> <th style="width:80px">조회수</th> <th style="width:150px">작성일</th> </tr> <% int recordPerPage=5;
▶테이블의 칼럼창 밑에 한페이지당 출력할 줄 수의 변수를 할당 해 주었다.
2) ssi.jsp 에 현재페이지를 설정
▶현재 페이지가 없을 경우에는 1페이지
3) 현재페이지 값과, 보여줄 페이지 값 매개변수로 설정
ArrayList<BbsDTO> list= dao.list(col,word, nowPage, recordPerPage); if(list==null){ out.println("<tr>"); out.println(" <td colspan='5'><strong>관련자료없음!!</strong></td>"); out.println("</tr>"); }else{
▶ 전에 list 메소드를 3개를 만든다고 언급하였다, 이제 마지막으로 만드는 list 메소드 이다.
4) 페이징 list 소스
public ArrayList<BbsDTO> list(String col, String word, int nowPage, int recordPerPage){ ArrayList<BbsDTO> list=null; // 페이지당 출력할 레코드 갯수 (10개를 기준) // 1 page : WHERE r>=1 AND r<=10 // 2 page : WHERE r>=11 AND r<=20 // 3 page : WHERE r>=21 AND r<=30 int startRow = ((nowPage-1) * recordPerPage) + 1 ; int endRow = nowPage * recordPerPage; try{ Connection con=DBOpen.getConnection(); StringBuilder sql=new StringBuilder(); word = word.trim(); //검색어의 좌우 공백 제거 if(word.length()==0) { //검색을 하지 않는 경우 sql.append(" SELECT bbsno,subject,wname,readcnt,indent,regdt, r"); sql.append(" FROM( SELECT bbsno,subject,wname,readcnt,indent,regdt, rownum as r"); sql.append(" FROM ( SELECT bbsno,subject,wname,readcnt,indent,regdt"); sql.append(" FROM tb_bbs"); sql.append(" ORDER BY grpno DESC, ansnum ASC"); sql.append(" )"); sql.append(" )"); sql.append(" WHERE r>=" + startRow + " AND r<=" + endRow) ; } else { //검색을 하는 경우 sql.append(" SELECT bbsno,subject,wname,readcnt,indent,regdt, r"); sql.append(" FROM( SELECT bbsno,subject,wname,readcnt,indent,regdt, rownum as r"); sql.append(" FROM ( SELECT bbsno,subject,wname,readcnt,indent,regdt"); sql.append(" FROM tb_bbs"); String search=""; if(col.equals("wname")) { search += " WHERE wname LIKE '%" + word + "%'"; } else if(col.equals("subject")) { search += " WHERE subject LIKE '%" + word + "%'"; } else if(col.equals("content")) { search += " WHERE content LIKE '%" + word + "%'"; } else if(col.equals("subject_content")) { search += " WHERE subject LIKE '%" + word + "%'"; search += " OR content LIKE '%" + word + "%'"; } sql.append(search); sql.append(" ORDER BY grpno DESC, ansnum ASC"); sql.append(" )"); sql.append(" )"); sql.append(" WHERE r>=" + startRow + " AND r<=" + endRow) ; }//if end PreparedStatement pstmt=con.prepareStatement(sql.toString()); ResultSet rs=pstmt.executeQuery(); if(rs.next()){ list=new ArrayList<>(); do{ BbsDTO dto=new BbsDTO(); dto.setBbsno(rs.getInt("bbsno")); dto.setSubject(rs.getString("subject")); dto.setWname(rs.getString("wname")); dto.setReadcnt(rs.getInt("readcnt")); dto.setRegdt(rs.getString("regdt")); dto.setIndent(rs.getInt("indent")); list.add(dto); }while(rs.next()); }//if end }catch(Exception e) { System.out.println("목록 페이징 실패: "+e); } return list; }//list() end
5) 글개수 밑에부분에 페이지 리스트를 만들자
<!-- 페이지 리스트 시작 --> <tr> <td colspan="4"> <% String paging= new Paging().paging2(count, nowPage, recordPerPage, col, word, "bbsList.jsp"); out.print(paging); %> </td> <tr> <!-- 페이지 리스트 끝 -->
▶ paging 소스를 이용해서 마음에 드는 페이지를 불러왔다
★ 페이징 class 분석 <과제>
'JAVA 교육 > myWeb' 카테고리의 다른 글
2019/09/11 5. session&application (0) 2019.11.22 2019/09/10 4. scope (0) 2019.11.22 2019/09/09 2. 검색 창 (0) 2019.11.22 2019/09/09 1. 댓글 개수&검색 글 개수 (0) 2019.11.22 2019/09/06 미니 프로젝트 bbs 게시판 (0) 2019.11.22 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)