Servlet 페이지 효과 구현

본 논문 의 사례 는 Servlet 이 페이지 효 과 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
페이지 별 알고리즘:
네 개의 변 수 를 정의 해 야 합 니 다.그들 은 각자 의 용도 가 있 습 니 다.
int pageSize:페이지 마다 몇 개의 기록 을 표시 합 니까?
int pageNow:몇 페이지 를 표시 하 시 겠 습 니까?
int page Count:모두 몇 페이지 입 니까?
int rowCount:모두 몇 개의 기록 이 있 습 니까?
설명:
pageSize 는 지정 입 니 다.pageNow 는 사용자 의 선택 을 말 합 니 다.
rowCount 는 표 에서 조회 할 수 있 습 니 다.
pageCount 는 계 산 된 것 입 니 다.이 계산 공식 은 다음 과 같 습 니 다.

if(rowCount%pageSize==0) { 
 pageCount=rowCount/pageSize; 
} else { 
 pageCount=rowCount/pageSize+1; 
} 
문 구 를 사용 하면:select 필드 이름 목록 에서 표 이름 where id between?and ?
이 sql 문 구 는 확실히 빠 르 지만 문제 가 있 습 니 다.즉,표 의 id 가 삭제 되면 한 페이지 에 기록 이 적 을 수 있 습 니 다.
따라서 최종 방법 은 다음 과 같다.
select top pageSize 필드 이름 목록 에서 표 이름 where id not in(select top pageSize*(pageNow-1)표 이름 에서 id)
구현 코드:

import javax.servlet.http.*; 
import java.io.*; 
import java.sql.*; 
public class fenye extends HttpServlet{ 
 public void doGet(HttpServletRequest req,HttpServletResponse res) 
  { 
    Connection ct=null; 
    PreparedStatement ps=null; 
    ResultSet rs=null; 
     
    int pageSize=3; //            
       int pageNow=1;  //           
       int pageCount=0; //   ,         
       int rowCount=0; //    ,     
       String sPageNow=req.getParameter("pageNow"); //                
      if(sPageNow!=null) //       ,       
       { 
          pageNow=Integer.parseInt(sPageNow); 
      } 
     
 
  try{ 
         PrintWriter pw=res.getWriter(); 
       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
      ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Students","sa","  "); 
      ps=ct.prepareStatement("select count(*) from [Students].[dbo].[Students]"); //         
      rs=ps.executeQuery(); 
      while(rs.next()) 
      { 
        rowCount=rs.getInt(1); //         
      } 
      if(rowCount%pageSize==0)  //       
      { 
        pageCount=rowCount/pageSize; 
      } 
      else 
      { 
        pageCount=rowCount/pageSize+1;  
      } 
     
 ps=ct.prepareStatement("select top "+pageSize+" * from [Students].[dbo].[Students] where id not in(select top "+pageSize*(pageNow-1)+" id from [Students].[dbo].[Students])"); 
     
  
    rs=ps.executeQuery(); 
    pw.println("<body><center>");  //             
    pw.println("<table border=1"); 
    pw.println("<tr><th>id</th><th>name</th><th>grade</th></tr>"); 
    while(rs.next()) 
    { 
      pw.println("<tr>"); 
      pw.println("<td>"+rs.getInt(1)+"</td>"); 
      pw.println("<td>"+rs.getString(2)+"</td>"); 
      pw.println("<td>"+rs.getString(3)+"</td>"); 
      pw.println("</tr>"); 
    } 
    pw.println("</table>"); 
    if(pageNow==1)  //      ,          ,       
    { 
      pw.println("<a href=fenye?pageNow="+pageNow+">"+"forward"+"</a>"); 
    } 
    else   //        ,        ,         
    { 
      pw.println("<a href=fenye?pageNow="+(pageNow-1)+">"+"forward"+"</a>"); 
    } 
    if(pageCount<=5) //             
    { 
      for(int i=1;i<=pageCount;i++) 
       { 
      pw.println("<a href=fenye?pageNow="+i+">"+i+"</a>"); 
       } 
    }else if(pageCount-pageNow<=5)  
    { 
      for(int i=pageNow;i<=pageCount;i++) 
      pw.println("<a href=fenye?pageNow="+i+">"+i+"</a>"); 
    }else //       ,                  
    { 
      for(int i=pageNow;i<=pageNow+5;i++) 
        pw.println("<a href=fenye?pageNow="+i+">"+i+"</a>"); 
    } 
     
    if(pageNow==pageCount) //        ,          
     { 
       pw.println("<a href=fenye?pageNow="+pageNow+">"+"backward"+"</a>"); 
    } 
    else 
    { 
      pw.println("<a href=fenye?pageNow="+(pageNow+1)+">"+"backward"+"</a>"); 
    } 
    pw.println("</center></body>"); 
    }catch(Exception ex){ 
      ex.printStackTrace(); 
    } 
       
  } 
   
 public void doPost(HttpServletRequest req,HttpServletResponse res) 
  { 
  this.doGet(req,res); 
  } 
}
 실행 결과:
각 페이지 에 기록 수가 3 일 때:

해당 연결 을 클릭 하면 성공 적 으로 점프 할 수 있 습 니 다.
마지막 페이지 는 다음 과 같 습 니 다:

대응 코드:

if(pageCount<=5) 
  { 
    for(int i=1;i<=pageCount;i++) 
     { 
    pw.println("<a href=fenye?pageNow="+i+">"+i+"</a>"); 
     } 
  } 

백 워드 를 누 르 면 다시 뛰 지 않 습 니 다.
프로그램 이 페이지 수 를 제어 하 는 하이퍼링크 수 효 과 를 표시 하기 위해 페이지 당 표시 기록 수 를 1 로 변경 합 니 다.
첫 페이지 표시 효과:

대응 코드:

else 
    { 
      for(int i=pageNow;i<=pageNow+5;i++) 
        pw.println("<a href=fenye?pageNow="+i+">"+i+"</a>"); 
    } 

현재 페이지 가 점점 커지 면 표시 효과:
 

대응 코드:

 else if(pageCount-pageNow<=5) 
    { 
      for(int i=pageNow;i<=pageCount;i++) 
      pw.println("<a href=fenye?pageNow="+i+">"+i+"</a>"); 
    } 


이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기