你可以参考以下<% 

int  p.recordCount=0;//总记录数
int p.pageSize=16;//每页显示数量 
int p.pageCount=0;//总页数
int p.pageId=1;//当前页号      


String getPageId =request.getParameter("pageId");sql="select * from tb_soft";
sqlnum="select count(*) from tb_soft";if (getPageId==null) getPageId ="1";
 int count=1;
//取得待显示页码
String strPage = request.getParameter("pageId");
if(strPage==null) p.pageId = 1;
 else  p.pageId = java.lang.Integer.parseInt(strPage);
  p.recordCount= op.rowsCount(sqlnum); //记算总页数
p.pageCount = (p.recordCount+p.pageSize-1) / p.pageSize;
//调整待显示的页码
if(p.pageId>p.recordCount) p.pageId = p.recordCount;
if(p.recordCount>0){
 rs=op.getdb(p.pageSize,p.pageId,sql);
                  
while(rs.next()&&count<=p.pageSize){
  count++;           %>
                    <tr> 
                      <td width="17"><div align="center"><img src="../img/0051.gif" width="10" height="10"></div></td>
                      <td width="437" height="25"><a href="list.jsp?id=<%=rs.getString("id")%>"> 
                        <%=rs.getString("title")%></a></td>
                      <td width="100" align="right">&nbsp;</td>
                    </tr>
                    <% }
     rs.close();
rs=null;
          }  %>
              
  <%if(p.pageCount>1){
if(p.pageId==1){ out.print("<font color=\"#999999\">首页 上一页</font>"); }else{  %>
                          <A HREF="index.jsp?pageId=1">首页</A> <A HREF="index.jsp?pageId=<%=p.pageId-1%>">上一页</A> 
                          <%}%>
                          <%if(p.pageId>=p.pageCount){out.print("<font color=\"#999999\">下一页 尾页</font>");}else{  %>
                          <A HREF="index.jsp?pageId=<%=p.pageId+1%>">下一页</A> 
                          <A HREF="index.jsp?pageId=<%=p.pageCount%>">尾页</A> 
                          <%}}else{
 out.print("<font color=\"#999999\">首页 上一页 下一页 尾页</font>");
 }
%>

解决方案 »

  1.   

    看不太懂,不知道你的sql语句是怎么写的,关键是sql语句的筛选条件是怎么写的,得到一个pageId后不知道怎么用?请指点,谢谢!
      

  2.   

    要看用啥数据库了?不同的数据库,SQL语句是不同的
      

  3.   

    Web开发中一种用sql语句完成分页的高效率方法 
    出自:beyond_xiruo 2002年11月20日 16:14 
    一、Jsp方法如下:
    **********************
    <%@ page language="java" import="java.util.*,java.sql.*" %>
    <%@ page contentType="text/html;charset=gb2312"%>
    <jsp:useBean id="cn" scope="page" class="myConnection.Conn" /><!--引用数据库操作的bean,自己完成,这里不再赘述-->
    <%
    int curpage=1;//当前页
    int page_record=20;//每页显示的记录数
    //用下面的方法(sql查询完成,速度快)
    curpage=Integer.parseInt(request.getParameter("page"));//获取传递的值,需要显示的页
    ResultSet rs=cn.rsexecuteQuery("select top "+page_record+" * from tablename where id not in (select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc");
    //本查询语句得到的是所要显示的1000页的20条记录,大致思路为——子查询排除需要显示的记录前的所有记录,父查询则对余下的记录进行降序排列
    while(rs.next) {
      out.println(rs.getInt("id").toString());
    }
    rs.close();
    %>
      

  4.   

    package hzdq.fdjc.Common;import java.sql.*;
    import java.util.*;/**
     * Title:分页
     * Description:
     * Copyright:    Copyright (c) 2004
     * Company:
     * author:颜喜班
     * @version 1.0
     */
    public class SplitPager
    {
      /*
       * _sql_str:传入的sql语句
       * _total_records: 总记录数目
       * _pageSize: 每页显示的记录数目
       * _page: 所分的逻辑页数
       */
    private Connection con=null;
    private Statement stmt=null;
    private ResultSet rs=null;
    private ResultSetMetaData rsmd=null;
    private String _sql_str;
    private int _total_records;
    private int _pages;
    private int _pagesize;
    public void setConnection(Connection con)
    {
    this.con=con;
    if (this.con == null)
                System.out.println("Failure to get a connection!");
    else
    System.out.println("Success to get a connection!");
    }
    public void initialize(String sqlStr,int pageSize)
    {
    this._sql_str=sqlStr;
    this._pagesize=pageSize;
    try{  
    stmt=this.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);  
                    rs=stmt.executeQuery(this._sql_str); 
    rsmd=rs.getMetaData();
    if (rs!=null)
    {
    rs.last();
    this._total_records = rs.getRow();
    rs.first();
    this._pages = (this._total_records - 1) / this._pagesize + 1;

    }  
               catch(SQLException  e){System.out.println(e.toString()); } 
    }
    public  Vector  getPage(int ipage){ 
              Vector  vData=new  Vector();
              int  n=ipage;  
              int  m=0;  
              m=(n-1)*this._pagesize+1;  
      try{
    if (rs!=null)
    {
    rs.absolute(m);
    for(int i=0;i<this._pagesize;i++){
    String[] sData=new String[rsmd.getColumnCount()];
    for(int j=0;j<rsmd.getColumnCount();j++)
    {
    sData[j]=rs.getString(j+1);
    }
    if (sData==null)
    {
    break;
    }
    vData.addElement(sData);
    rs.next();

    }            
                    rs.close();  
        stmt.close(); 
                    }  
               catch(SQLException  e){System.out.println(e.toString()); } 
               return  vData;  
    }  
    public int getPages()
        {
            return this._pages;
        }
    public int getTotalRecords()
        {
            return this._total_records;
        }}