本人的最佳解决方案如下:  
DBMS:MS  SQLServer  2000  中文版  
其中strSQLWhere,查询语句的Where子句  
1.为了能够将查询语句也传递到下一页,所以必须将“上页”、“下页”等等放在"Form"里,同时将查询用到的SQL语句作为一个hidden进行传递如下:  
    <form  name=frmtopage  method=post  action=PDMShow.jsp>  
        <input  type=hidden  name=paramSQLWhere  value=“<%=strSQLWhere%>">  
          <a  href=javascript:viewPage(1)>首页</a>  
          ....  
        转到第  <input  type=text  size=3  name=pagetoshow  class=buttontext>  页  
    </form> 
 
其中viewPage的定义如下:  
<script  language="Javascript">  
<!--  
function  viewPage(pageID){  
      document.frmtopage.pagetoshow.value=pageID+""  
      document.frmtopage.submit()  

 
!-->  
</script>  
2、在计算页数时必须得到查询语句的记录总数,使用count(*)  方法  
    totalSQL="select  count(*)  from  ("  +  strSQL  +  ")  as  temp"  
    执行totalSQL  则得到总记录数。  
  注意:避免在strSQL中包含“order  by”语句,如果有则除去,否则会出错。去掉“order  by”子句对于获取总记录数没有任何影响。  
3、直接返回要显示页的记录,不必返回所有记录  SQL  语句的写法如下:  
pageSQL="select    IDENTITY(int,1,1)  as  Nbr,*    into  #tmp  From  ("  +strSQL  +  ")  as  temp  order  by  Nbr  select  *  from  #tmp  where  nbr  between  41  and  50  drop  table  #tmp  "  
上述返回了第41到50条记录,根据具体页数进行修改。  
综上,我认为这个是JSP分页的最佳方案。