12.改ページ

9865 ワード

基本的な改ページの考え方1、4つの変数を定義します。
int page_persize=2;//       
int page_total=0;//    
int page_now=1;//    
int rs_total=0;//     
 
2、すべてのレコードをrsに読み込む
 
String sql="select  * from userlist ";
ResultSet rs = connDbBean.executeQuery(sql);
 
3、総記録数rs_を計算する。talk
rs.last();//         
rs_total=rs.getRow();//            
 
4、総ページ数を計算する
if (rs_total % page_persize==0)
    page_total=rs_total/page_persize;
else
    page_total=rs_total/page_persize+1;
 
5、現在のページ番号を取得する
try{
if (!(request.getParameter("page_now")==null || request.getParameter("page_now").equals("")))
page_now=Math.min(Math.abs(Integer.parseInt(request.getParameter("page_now"))),page_total);
}catch(java.lang.NumberFormatException e){
out.print("         "+e);
}
if (page_now==0) page_now=1;
 
6、ページ番号に従って、該当するページ番号の最初のレコードにポインタを向ける
rs.absolute((page_now-1)*page_persize+1);
 
7、記録があるかどうかを判断し、forを使って現在のページの記録を循環表示する
    rs.previous();
    for(int i=1;i<=page_persize;i++)
    {
   
    if (!rs.next()) break;//            
    }  
8、ページ番号ナビゲーションを表示する(方式が多様で、もはや説明しない)
<p align=center>
<%
//      ,              。
out.print("  "+rs_total+"    ");
if (page_total>1){
out.print("   "+page_now+"  ");
out.print(" "+page_total+"  ");
if(page_now!=1) {
        out.print("<a href=?page_now=1>  </a> ");
        out.print("<a href=?page_now="+(page_now-1)+">   </a> ");
    }
if(page_now!=page_total){
    out.print("<a href=?page_now="+(page_now+1)+">   </a> ");
    out.print("<a href=?page_now="+page_total+">  </a> ");
    }
%>
<form action="?" method="post"><!--            -->
    <table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
      <tr>
        <td><div align="center">   :
          <input name="page_now" type="text" size="3" />
                <input name="submit" type="submit" value="  " />
        </div></td>
      </tr>
    </table>
</form>
<% } %>
</p>
例1:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>read</title>
</head>
<body style="text-align:center">
<a href="add.jsp">add</a>
<form method='post' action="search.jsp">
  <input type="text" name="str">
  <input type="submit" value="search">
</form>
<table border="1" cellspacing="0" cellpadding="3">
  <tr>
    <td>id</td>
    <td>title</td>
    <td>content</td>
    <td>  </td>
    <td>  </td>
  </tr>
  <%    
	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");   
	String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=dataBase;user=sa;password=sa;";
	Connection conn = DriverManager.getConnection(connectionUrl);      
	Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
	//      
	int page_persize=2;//       
	int page_total=0;//    
	int page_now=1;//    
	int rs_total=0;//     
	//     
	String sql="select * from dataTableName";       
	ResultSet rs=stmt.executeQuery(sql); 
	 //         
	rs.last();//         
	rs_total=rs.getRow();//            
	//      
	if (rs_total % page_persize==0)
		page_total=rs_total/page_persize;
	else
		page_total=rs_total/page_persize+1;
	//      
	try{
	if (!(request.getParameter("page_now")==null || request.getParameter("page_now").equals("")))
	page_now=Math.min(Math.abs(Integer.parseInt(request.getParameter("page_now"))),page_total);
	}catch(java.lang.NumberFormatException e){
	out.print("         "+e);
	}
	if (page_now==0) page_now=1;

	//                 
	rs.absolute((page_now-1)*page_persize+1);
	//           
	for(int i=1;i<=page_persize;i++)
	{
		%>
            <tr>
            <td><%=rs.getString(1)%></td>
            <td><%=rs.getString(2)%></td>
            <td><%=rs.getString(3)%></td>
            <td><a href="del.jsp?id=<%=rs.getString("id")%>">  </a></td>
            <td><a href="edit.jsp?id=<%=rs.getString("id")%>">  </a></td>
            </tr>
		<%
	if (!rs.next()) break;//            
	}
	//  
	rs.close();       
	stmt.close();       
	conn.close();  
%>
</table><br>

<%
//      ,              。
out.print("  "+rs_total+"    ");
if (page_total>1){
out.print("   "+page_now+"  ");
out.print(" "+page_total+"  ");
if(page_now!=1) {
        out.print("<a href=?page_now=1>  </a> ");
        out.print("<a href=?page_now="+(page_now-1)+">   </a> ");
    }
if(page_now!=page_total){
    out.print("<a href=?page_now="+(page_now+1)+">   </a> ");
    out.print("<a href=?page_now="+page_total+">  </a> ");
    }
%>
  <form action="?" method="post">
    <!--            -->
    <table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
      <tr>
        <td><div align="center">   :
            <input name="page_now" type="text" size="3" />
            <input name="submit" type="submit" value="  " />
          </div></td>
      </tr>
    </table>
  </form>
  <% } %>

</body>
</html>
 例2:javabeanを使用しました。
<%
int page_persize=2;//       
int page_total=0;//    
int page_now=1;//    
int rs_total=0;//     
String sql="select * from userlist"; 
ResultSet rs=connDbBean.executeQuery(sql); 
rs.last();//         
rs_total=rs.getRow();//            
if (rs_total % page_persize==0)
    page_total=rs_total/page_persize;
else
    page_total=rs_total/page_persize+1;
try{
if (!(request.getParameter("page_now")==null || request.getParameter("page_now").equals("")))
page_now=Math.min(Math.abs(Integer.parseInt(request.getParameter("page_now"))),page_total);
}catch(java.lang.NumberFormatException e){
out.print("         "+e);
}
if (page_now==0) page_now=1;
rs.absolute((page_now-1)*page_persize+1);
for(int i=1;i<=page_persize;i++)
    {
 //   
    if (!rs.next()) break;//            
    }
rs.close();
connDbBean.closeStmt();   
connDbBean.closeConn();   

//      ,              。
out.print("  "+rs_total+"    ");
if (page_total>1){
out.print("   "+page_now+"  ");
out.print(" "+page_total+"  ");
if(page_now!=1) {
        out.print("<a href=?page_now=1>  </a> ");
        out.print("<a href=?page_now="+(page_now-1)+">   </a> ");
    }
if(page_now!=page_total){
    out.print("<a href=?page_now="+(page_now+1)+">   </a> ");
    out.print("<a href=?page_now="+page_total+">  </a> ");
    }
%>
<form action="?" method="post"><!--            -->
    <table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
      <tr>
        <td><div align="center">   :
          <input name="page_now" type="text" size="3" />
                <input name="submit" type="submit" value="  " />
        </div></td>
      </tr>
    </table>
</form>
<% } %>