package info.dyndns.split;
import info.dyndns.blog.Utility;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Split extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
//connect with database
conn = Utility.getConn();
stat = conn.createStatement();
int currentPage = 1; //当前页
int recordDisplay = 3; //显示记录条数
int numberOfRow; //总记录条数
//用户指定当前页
if (request.getParameter("page")!=null)
{
String page = request.getParameter("page");
currentPage = Integer.parseInt(page);
}
//计算出记录总数
String rowCountSql = "SELECT * FROM titles";
rs = stat.executeQuery(rowCountSql);
rs.last();
numberOfRow = rs.getRow();
rs = null;
//System.out.print("helo" + numberOfRow);
//pw.print("hello" + numberOfRow);
/*limit a,b a代表偏移量,b代表记录个数,比如要取从5到8的的4个数据
* 那么limit 4,4
* 4代表游标在第4个数据,然后向后取4个数据5、6、7、8
*/
final String SQL =
"SELECT * FROM titles LIMIT " + (currentPage-1)*recordDisplay + ","+ recordDisplay ;
rs = stat.executeQuery(SQL);
//获得列数
ResultSetMetaData meatData =rs.getMetaData();
final int numberOfColumn = meatData.getColumnCount();
pw.print("<table border=\"1\">");
//显示标题
pw.print("<tr>");
for (int i=1; i<=numberOfColumn; i++){
pw.print("<td>"+ meatData.getColumnName(i)+"</td>");
}
pw.print("</tr>");
//显示内容
while(rs.next()){
pw.print("<tr>");
for (int k=1; k<=numberOfColumn; k++)
pw.print("<td>"+ rs.getObject(k)+"</td>");
pw.print("</tr>");
}
pw.print("</table><br />"); //表单结束
int totalPages = getTotalPages(numberOfRow, recordDisplay);
for (int n= 1; n<=totalPages; n++){
pw.print("<a href='/comment/servlet/Split?page="+n+"'>"+n+" </a>");
}
}catch(SQLException e){
e.printStackTrace();
}finally {
Utility.free(conn, stat, rs);
}
}
public int getTotalPages (int totalRecords, int recordsDisplay){
int val = totalRecords / recordsDisplay;
if (totalRecords % recordsDisplay ==0){
return val;
}
else return (val+1);
}
}
简单的分页技术
最新推荐文章于 2024-07-08 16:29:33 发布