또리밍밍
663
2017-09-03 21:19:12
6
1342

jsp mysql 페이징 처리 관련 문의드립니다.


jsp페이징 처리하구 있는데요,

[1][2] ... 페이징 처리가 잘안되고 있습니다.

10개의목록씩 가져올 수 있도록 해주었는데, 두번째 페이지로 가도 목록의 변화가 없네요 ㅠㅠ

2페이지를 클릭하면 pg변수는 2로 잘 찍히는데 내용물의 변화가 없습니다.

쿼리가 잘못됬나요?


<%
    Connection conn = null;
    PreparedStatement pstmt = null;
    Statement stmt = null;
    ResultSet rs = null;
    int totCnt = 0; 				// 게시물 전체 수.

    try{
        conn = DBConf.getConnectionByName(getServletContext(), "test_db", "test");
    	String sqlCount = "SELECT COUNT(*) FROM file";
    	pstmt = conn.prepareStatement(sqlCount);
    	rs = pstmt.executeQuery();
    	if(rs.next()){
    		totCnt = rs.getInt(1);
    	}
    	
        int pageSize = 10; 				// 한 페이지에 게시할 게시물 수
        int pageBlock = 10;										// [1][2]...[9][10]
    	int cpage = request.getParameter("pg") != null? Integer.parseInt(request.getParameter("pg")) :1;
   
      // 마지막 페이지 숫자 번호. (마지막페이지 = 출력게시물수 * 현재페이지수)
    	int EndNo = pageSize * cpage;		
    	int StartNo = EndNo - pageSize;			// 페이지의 시작 번호.
    	int totalPage = ((totCnt -1)/pageSize) +1;
    	int prevBlock = (int)Math.floor((cpage-1) / pageBlock) * pageBlock;	// 이전 페이지
    	int nextBlock = prevBlock + pageBlock +1;		// 다음 페이지

    	int sort = 1;
		String sqlList = "SELECT *"
				+" FROM (SELECT @rnum := @rnum +1 AS rownum,"
				+" no, file_title, file_upload, hit "
				+" FROM (SELECT @rnum := 0) r , file) result"
 				+" ORDER BY file_upload DESC, rownum DESC"
				+ " limit 1,10";
 		
 		System.out.println("sqlList : " + sqlList);
    	pstmt = conn.prepareStatement(sqlList);

    	rs = pstmt.executeQuery();
    %>

    <%
	                        	
	           if(totCnt == 0){
    %>
	             <tr>
	                  <td colspan="4" align="center">등록된 자료가 없습니다.</td>
	                        		
	             </tr>
<%} else{ 
	                        	
	                   while(rs.next()){
	                        		
	                       int no = rs.getInt(2);
	                       String file_title = rs.getString(3);
	                       String file_upload = rs.getString(4);
	                       int hit = rs.getInt(5);
	                        		
	                       Date date = new Date();
	                        		
	   SimpleDateFormat simp_date = new SimpleDateFormat("yyyy-MM-dd");
	   String simpledate = file_upload.substring(0,10);
	                        		
 %>
	      <tr align="center">
	             <td><%=no %></td>
	             <td><a href="file_view.jsp?no=<%=no%>"><%=file_title %></a>
                      </td>
	              <td><%=simpledate %></td>
	                <td><%=hit %></td>
	     </tr>
               </tbody>
	                      
	                  	 
<%    }%>
         	 	 
	     </table>
	                        
	           <div style="text-align:center">
	                        
		  <%if(prevBlock > 0){ %>
		            	<a href="file.jsp?pg<%=prevBlock%>">이전</a>
		  <%} %>
		                     
		  <% for(int i=1 + prevBlock; i< nextBlock && i<=totalPage; i++){  
		          if(i == cpage)
		          {
		  %>
		            [<%=i %>]
		 <% 
		          }else
		           {
		 %>
		        	 [<a href="file.jsp?pg=<%=i%>"><%=i %></a>]
		  <%
		           }
		                    
		                    	 
		   }%>
		   <% if(totalPage >= nextBlock){%>
		                <a href="file.jsp?pg=<%=nextBlock %>">다음</a>
		    <%} %>
		                    
		    </div>
	              
	
	          <% }
	    	rs.close();
	        pstmt.close();
	        conn.close();
    }catch(SQLException ex){
    	ex.getMessage();}%>  


0
0
  • 답변 6

  • alan
    1k
    2017-09-03 21:42:13

    2가 sql문에 들어가나요?

    0
  • 또리밍밍
    663
    2017-09-03 23:01:09

    아니요.. 2페이지 맞게끔 쿼리를 어떤식으로 수정해야할까요?


    0
  • KunAguero
    203
    2017-09-03 23:41:37

    limit 부분에 들어갈 오프셋과 갯수를 정하는 쿼리가 필요할것 같습니다.

    시작번호를 pageNo * 나올 개수

    오프셋 부분을 나올 개수

    로 하시면 될 거 같아요

    0
  • 허니빈
    34
    2017-09-03 23:52:35

    limit 부분에 갯수 정하는 쿼리가 필요한 것 같습니다.

    0
  • alan
    1k
    2017-09-04 00:59:26

    sql limit에 대해서 찾아보셔야 할 것 같습니다.

    페이지당 글 수가 10개라면

    1페이지 1번째는 0이고 2페이지 첫번째는 10입니다.

    0
  • 또리밍밍
    663
    2017-09-04 09:10:02

    답변 감사드립니다~


    offset 사용해서 처리헀습니다 감사합니다~

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.