• 티스토리 홈
  • 프로필사진
    조별하
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
조별하
  • 프로필사진
    조별하
    • 분류 전체보기 (124)
      • 1. 공부 (0)
        • 기술 면접 (0)
      • 2. 웹개발 (7)
        • Java (1)
        • IT 정보 (5)
        • Error 모음 (1)
      • 3. 개인관심 (1)
        • 전자 (1)
      • GITHUB (5)
      • IT 기술 면접 (3)
      • COMPUTER (2)
      • TASK (1)
      • LANGUAGES (20)
        • Python (3)
        • Django (6)
        • Java (7)
        • Node (1)
        • Jsp (2)
        • R (1)
      • 데이터과학 (2)
        • 머신러닝 및 딥러닝 (2)
      • DATABASE (5)
        • Oracle (2)
      • ISSUE (10)
        • Django (4)
        • Drf (2)
        • Javascript (1)
        • Git (1)
      • JAVA 교육 (65)
        • Java (3)
        • Jquery (2)
        • Sql (16)
        • Jdbc (1)
        • Db (2)
        • Jsp (9)
        • myWeb (15)
        • Servlet (4)
        • Spring (12)
        • Crawling (0)
        • Hosting (1)
      • 정보처리산업기사 (1)
      • EDUCATION (2)
        • IoT 서비스 (2)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 2019/09/10 3. 페이징
        2019년 11월 22일
        • 조별하
        • 작성자
        • 2019.11.22.:46

        페이징

        image

        ▶글이 많이 쌓이게 되면 페이지가 길어지기 때문에 페이지를 만들어 주어야 한다.



        구글 : 페이지가 7개가 넘어가면 앞부분의 페이지 버튼이 사라지고, 뒷부분의 페이지 버튼이 출력
        image

        네이버 : 페이지가 10개 단위로 넘어가며 10개가 넘어가야 그 다음 페이지가 화면에 출력
        image

        ▶어떤 형태의 페이지를 선택할 지는 가장 대중적으로 사용하는것을 쓰면 된다



        페이징 준비단계

        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 에 현재페이지를 설정

        image

        ▶현재 페이지가 없을 경우에는 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 소스를 이용해서 마음에 드는 페이지를 불러왔다

        image

        ★ 페이징 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바