사례 12:페이지 나 누 기

21591 단어 java-web자바
실 현 된 페이지 는 주로 두 가지 가 있 는데 하 나 는 클 라 이언 트 페이지(가짜 페이지)이 고 다른 하 나 는 서버 쪽 페이지 입 니 다.이른바 클 라 이언 트 페이지 는 SQL 구문 select*from table 로 모든 기록 을 꺼 낸 다음 에 클 라 이언 트 가 몇 페이지 인지 알 게 된 후에 rs.absolte(pagesize*currentPage)로 특정한 기록 을 찾 아 페이지 를 나 누 는 것 입 니 다.서버 쪽 페이지 는 표시 할 페이지 를 서버 쪽 에 보 내 고 서버 쪽 에서 꺼 낸 기록 이 어느 것 에서 어느 것 으로 되 어 있 는 지 계산 한 다음 에 특정한 SQL 문 구 를 구성 하 는 것 을 말한다.예 를 들 어 MYSQL 은 LIMIT 로 어느 기록 에서 어느 기록 으로 되 어 있 는 지,ACCESS 와 MSSQL 은 TOP 으로 몇 개의 기록 을 제거 할 수 있 는 지,그 다음 에 TOP 을 하나 더 삽입 하여 특정한 항목 의 수 를 추출 하 는 기록 을 실현 합 니 다.보통 서버 쪽 페이지 를 사용 합 니 다.클 라 이언 트 페이지 는 매번 전체 데이터 베 이 스 를 조회 해 야 하기 때문에 효율 이 낮 습 니 다.
아래 의 이 예 는 가짜 페이지 의 예 이다.
   
   
   
   
  1. <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> 
  2. <%@ page import="java.sql.*"%>    
  3. <%@ page import="javax.sql.*"%>    
  4. <%@ page import="javax.naming.*"%>  
  5. HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  6. <html> 
  7. <head> 
  8.  
  9. <title> title> 
  10. head> 
  11.  
  12. <body> 
  13.  
  14. <
  15. //  
  16.  
  17. java.sql.Statement sqlStmt;//SQL  
  18. java.sql.ResultSet sqlRst;//  
  19.  
  20. java.lang.String strCon;//  
  21. java.lang.String strSQL;//SQL  
  22. int intPageSize;//  
  23. int intRowCount;//  
  24. int intPageCount;//  
  25. int intPage;//  
  26. java.lang.String strPage; 
  27. int i; 
  28. //  
  29. intPageSize=2
  30. //  
  31. strPage=request.getParameter("page"); 
  32. if(strPage==null){// QueryString page ,  
  33. intPage=1
  34. else{//  
  35. intPage=java.lang.Integer.parseInt(strPage); 
  36. //if(intPage<1)intPage=1
  37.  
  38.  
  39. InitialContext ctx=new InitialContext();    
  40.  
  41. DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");    
  42.  
  43. Connection conn = ds.getConnection();    
  44. // SQL  
  45. sqlStmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
  46. // SQL  
  47. strSQL="select * from publishers"
  48. // SQL  
  49. sqlRst=sqlStmt.executeQuery(strSQL); 
  50. //  
  51. sqlRst.last(); 
  52. intRowCount=sqlRst.getRow(); 
  53. //  
  54. intPageCount=(intRowCount+intPageSize-1)/intPageSize; 
  55. //  
  56. //if(intPage>intPageCount) 
  57.     //intPage=intPageCount
  58. %> 
  59.  
  60. <html> 
  61. <head> 
  62. <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> 
  63. <title>JSP - -JDBC3.0title> 
  64. head> 
  65. <body> 
  66. <table border="1" cellspacing="0" cellpadding="0"> 
  67. <tr> 
  68. <th> IDth> 
  69. <th> th> 
  70. tr> 
  71. <
  72. if(intPageCount>0){ 
  73. //  
  74. sqlRst.absolute((intPage-1)*intPageSize+1); 
  75. //  
  76. i=0
  77. while(i<intPageSize&&!sqlRst.isAfterLast()){ 
  78. %> 
  79. <tr> 
  80. <td><%=sqlRst.getString(1)%>td> 
  81. <td><%=sqlRst.getString(2)%>td> 
  82. tr> 
  83. <
  84. sqlRst.next(); 
  85. i++; 
  86. %> 
  87. table> 
  88. <br> 
  89. <%=intPage%>    <%=intPageCount%>    
  90. <%if(intPage<intPageCount){%><a href="PageIndex.jsp?page="> a><%}%> 
  91.    
  92. <%if(intPage>1){%><a href="PageIndex.jsp?page="> a><%}%> 
  93. body> 
  94. html> 
  95. <
  96. //  
  97. sqlRst.close(); 
  98. // SQL  
  99. sqlStmt.close(); 
  100. //  
  101. conn.close(); 
  102. %> 
  103. body> 
  104. html> 

데이터베이스 생 성 스 크 립 트:
   
   
   
   
  1. drop database demo if exists; 
  2.  
  3. create database demo; 
  4.  
  5. use demo; 
  6.  
  7. create table publishers( 
  8.     Pub_ID int primary key auto_increment, 
  9.     Pub_Name varchar(20) 
  10. ); 
  11.  
  12. insert into publishers values(1,' '); 
  13. insert into publishers values(2,' '); 
  14. insert into publishers values(3,' '); 
  15. insert into publishers values(4,' '); 
  16. insert into publishers values(5,' '); 
  17. insert into publishers values(6,' '); 

그리고 데이터베이스 연결 탱크 설정:
tomcat 루트 디 렉 터 리 에 있 는 conf/context.xml 파일 을 열 고...에 입력 하 십시오:
   
   
   
   
  1. <Resource name="jdbc/mysql"   
  2.        auth="Container"   
  3.            
  4.        type="javax.sql.DataSource"   
  5.        driverClassName="com.mysql.jdbc.Driver"   
  6.        url="jdbc:mysql://localhost:3306/demo"   
  7.        username="root"   
  8.        password="123456"   
  9.        maxActive="100"   
  10.        maxIdle="30"   
  11.        maxWait="10000" />   

웹.xml 을 열 고...에 다음 코드 를 추가 합 니 다:
   
   
   
   
  1. <resource-ref>   
  2.     <description>DB Connectiondescription>   
  3.     <res-ref-name>jdbc/mysqlxres-ref-name>   
  4.     <res-type>javax.sql.DataSourceres-type>   
  5.     <res-auth>Containerres-auth>   
  6.   resource-ref>   

데이터베이스 연결 풀 설정 완료!페이지 에 접근 하면 됩 니 다.
데이터 페이지 는 자주 사용 되 는 기능 입 니 다.우 리 는 hibenate 로 포장 하 는 방법 을 사용 할 수 있 습 니 다(저 는 아직 할 줄 모 릅 니 다)
데이터 페이지 의 관건 은 바로 네 개의 변수 이다.총 줄 수(ResultSet 을 통 해 얻 을 수 있 음),총 페이지 수(계산 할 수 있 음),현재 페이지(이전 페이지 다음 페이지 를 통 해 전달),각 페이지 에 표 시 된 줄 수 intPageSize(일반적으로 지정 되 어 있 음).
그 다음 에 전달 할 페이지 수 에 따라 ResultSet 포인 터 를 그 페이지 의 첫 번 째 요소 로 지정 하고 intPageSize 줄 이 표시 되 거나 조회 결과 의 끝 에 이 를 때 까지 반복 적 으로 옮 겨 다 닙 니 다.

좋은 웹페이지 즐겨찾기