Servlet分页的大概思路

我认为分页的大体思路是:首先,定义1.每页显示多少条数据pageSize,2.定义当前页的页号并初始化pageNow,3.查询数据库中有多少条记录rowCount 4.根据多少条记录来确定一共有多少页pageCount;
其次,是根据这些参数来查询数据库中指定的数据并进行传输,主要的语句是select id,name,slogan,leader form limit ?,?  其中第一个问好代表从哪里开始走,一般值为pageNow*pageSize,第二个问好代表查询多少条数据,一般初始值为pageSize,然后用rs接收。可以将数据插入到表格中。
最后,是首页,上一页,各页页码,下一页,末页的设计。它们的设计主要在于传递的参数值的变化,同时要主要各个参数传递前的检验,当然,为了不至于让各个页码过多,还要定义好现实多少条比较合适。
以上算是基本的思路了,下面的代码写得很不尽如人意,可做借鉴之用。
 

package Servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class page extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("text/html;charset=gb2312");
PrintWriter pw=response.getWriter();
String u=request.getParameter("username");
pw.println("");
pw.println("欢迎您,"+u+"
");
int rowCount=0;//数据库中有多少行的记录
int pageNow=1;//当前是第几页
int pageCount=0;//总共有多少页
int pageSize=3;
String sPageNow=request.getParameter("pageNow");
if(sPageNow!=null){
pageNow=Integer.parseInt(sPageNow);
}
//加载数据库
Connection cn=null;
PreparedStatement pst=null;
ResultSet rs=null;
try{
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/training";
String username="root";
String password="jakeyouxiang";
cn=DriverManager.getConnection(url,username,password);
String sql="select count(*) from team";
pst=cn.prepareStatement(sql);
rs=pst.executeQuery();
if(rs.next()){
rowCount=rs.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
pst=cn.prepareStatement("select id,name,slogan,leader from team limit ?,? ");
pst.setInt(1, pageNow*pageSize);
pst.setInt(2, pageSize);
rs=pst.executeQuery();
pw.println("");
pw.println("
");
while(rs.next()){
pw.println("
");
pw.println("
");
pw.println("
");
}
pw.println("
ID组名口号组长
"+rs.getString("id")+""+rs.getString("name")+""+rs.getString("slogan")+""+rs.getString("leader")+"
");
//首页
if(pageNow!=1){
pw.println("首页");
}
//上一页
pw.println("上一页");
for(int i=pageNow;i
pw.println(""+i+"");
}
//下一页
if(pageNow!=pageCount){
pw.println("下一页");
}
//末页
pw.println("末页");
//也可以在下面加入输入分页的东西
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(cn!=null){
cn.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
this.doGet(request, response);
}
}

你可能感兴趣的:(Servlet)