이 예제는 서블릿에 대한 특정 코드를 공유하여 참조의 페이지 매김 효과를 실현합니다. 특정 내용은 다음과 같습니다
페이지 매김 알고리즘 :
네 가지 변수를 정의해야하며 자체 사용이 있습니다.
int pagesize : 페이지 당 몇 개의 레코드가 표시됩니다
Int Pagenow : 표시하고 싶은 페이지
int pagecount : 총 얼마나 많은 페이지가 있습니다
Int RowCount : 총 얼마나 많은 레코드가 있습니다
설명 :
Pagesize는 지정되며 Pagenow는 사용자의 선택을 말합니다.
RowCount는 테이블에서 얻습니다.
PageCount가 계산되고 계산 공식은 다음과 같습니다.
if (rowCount%pagesize == 0) {pagecount = rowCount/pagesize; } else {pagecount = rowCount/pagesize+1; } 명령문을 사용하는 경우 : 테이블 이름에서 필드 이름 목록을 선택하십시오. 그리고 ?
이 SQL 문은 실제로 더 빠르지 만 문제가 있습니다. 즉, 테이블의 ID가 삭제되면 특정 페이지에 하나의 레코드가 누락 될 수 있습니다.
따라서 최종 방법은 다음과 같은 진술입니다.
Top Pagesize 선택 테이블 이름에서 필드 이름 목록을 선택하십시오.
구현 코드는 다음과 같습니다.
javax.servlet.http.*import; java.io.*; Java.sql.*; 공개 클래스 fenye는 httpservlet {public void doget (httpservletrequest req, httpservletrepsonse res) {connection ct = null; 준비된 상태 ps = null; resultSet rs = null; int pagesize = 3; // 각 페이지에 대한 레코드 수가 표시되기를 바랍니다. int pagenow = 1; // 현재 페이지를 첫 번째 페이지로 초기화 int pagecount = 0; // 총 페이지 수, 계산을 통해 int를 알아야합니다. rowCount = 0; // 총 번호를 기록하고 테이블을 찾아 문자열 Spagenow = req.getParameter ( "pagenow")를 찾습니다. // (spagenow! = null) 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 = whitsing", "SA", "Password"); ps = ct.preparestatement ( "[학생]. [dbo]. [학생]"); // 표에서 총 레코드 수를 가져옵니다. 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"+pagesize+" *에서 [학생]. [dbo]. rs = ps.ExecuteQuery (); pw.println ( "<body> <center>"); // 테이블 pw.println ( "<테이블 테두리 = 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+"> "+"forward "+"</a> "); } else // 첫 번째 페이지로 이동하지 않으면 하이퍼 링크를 클릭 할 때마다 페이지가 앞으로 이동합니다 ( "<a href = fenye? pagenow ="+(pagenow-1)+">"+"+"</a> "); } if (pagecount <= 5) // 하이퍼 링크 수에 표시된 페이지 수 {or (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)+">"+"뒤로"+"</a>"); } pw.println ( "</center> </body>"); } catch (예외) {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>"); }위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.