CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

JSP页面分页显示的问题

楼主sprinkle(小雨)2002-06-14 11:57:56 在 Java / Web 开发 提问

初学JSP,请问有没有关于在JSP页面上分页显示数据记录的资料(把所有的页数都列出来,以供选择),很急,非常感谢! 问题点数:20、回复次数:2Top

1 楼bzg119(dreamsun)回复于 2002-06-14 12:02:21 得分 20

示例:  
          int   intPageSize;   //一页显示的记录数  
          int   intRowCount;   //记录总数  
          int   intPageCount;   //总页数  
          int   intPage;   //待显示页码  
          int   i,j,k;   //设置一页显示的记录数  
   
          public   String   backdata(int   count,String   strPage){  
                  PreparedStatement   stmt=null;  
                  ResultSet   rs=null;  
                  intPageSize   =   6;   //每页显示6条纪录  
                  intRowCount=count;  
                  String   backStr="";  
                  if(strPage==null){  
                          intPage   =   1;  
                  }else{  
                          intPage   =   Integer.parseInt(strPage);  
                          if(intPage<1)  
                                  intPage   =   1;  
                  }  
                  //计算总页数  
                  intPageCount   =(intRowCount+intPageSize-1)   /   intPageSize;  
                  //调整待显示的页码  
                  if(intPage>intPageCount)   intPage   =   intPageCount;  
                  String   secondTr="<tr><td   nowrap>选择</td><td   nowrap>标题</td><td   nowrap>文件名</td><td   nowrap   nowrap>录入部门</td><td   nowrap>填写人</td><td   nowrap>发布时间</td></tr>";  
                  String   printStr="";  
                  try{  
                          stmt=((Connection)this.getEnvironment().lookup("env:res/connection/awh")).prepareStatement(  
                                  "select   *   from   law_statute   order   by   law_publt   desc");  
                          rs=stmt.executeQuery();  
                          i   =   (intPage-1)   *   intPageSize;  
                          for(j=0;j<i;j++)  
                                  rs.next();  
                          //显示数据  
                          i   =   0;  
                          while(i<intPageSize   &&   rs.next()){  
                                  String   cid=rs.getString("cid");  
                                  String   lawtitle=rs.getString("law_title");  
                                  Date   date=rs.getDate("law_publt");  
                                  String   lawfilen=rs.getString("law_filen");  
                                  String   writdept=rs.getString("writ_dept");  
                                  String   writperson=rs.getString("writ_person");  
                                  String   lawpublt=date.toString();  
                                  String   checkNa="chekb";//+String.valueOf(i);  
                                  printStr=printStr+"<tr><td><input   type='checkbox'   name='"+checkNa+"'   id='"+cid+"'></td><td>"+lawtitle+"</td><td>"+lawfilen+"</td><td>"+writdept+"</td><td>"+writperson+"</td><td>"+lawpublt+"</td></tr>";  
                                  i++;  
                          }  
                  }catch(Exception   ex){  
                          System.out.println(ex.getMessage());  
                  }finally{  
                          try{  
                                  if(rs!=null)   rs.close();  
                                  if(stmt!=null)   stmt.close();  
                          }catch(Exception   e){}  
                  }  
                  String   dataStr="<%strPage   =   request.getParameter('page');%>";  
                  String   pageStr="第"+intPage+"页   "+"   共"+intPageCount+"页";  
                  String   forPgStr="";  
                  String   backPgStr="";  
                  if(intPage<intPageCount){  
                          int   pageNum=intPage+1;  
                          forPgStr="<a   href='lawstatute.jsp?page="+pageNum+"'>下一页</a>";  
                  }  
                  if(intPage>1){  
                          int   pageNum=intPage-1;  
                          backPgStr="<a   href='lawstatute.jsp?page="+pageNum+"'>上一页</a>";  
                  }  
                  String   firstTr="<table   name='table1'   border='1'><tr><td   colspan='2'>"+pageStr+"</td><td   colspan='2'><b>法律法规</b></td><td   colspan='2'>"+forPgStr+"     "+backPgStr+"</td></tr>";  
                  String   lastTr="<tr><td   colspan='6'><input   type='checkbox'   name='checkAll'   onclick='checkedAll()'>全选     <label   onclick='addData()'   style='cursor:hand'>增加</label>&nbsp;<label   onclick='amendData()'   style='cursor:hand'>修改</label>&nbsp;<label   onclick='deleteData()'   style='cursor:hand'>删除</label></td></tr>";  
                  backStr=dataStr+firstTr+secondTr+printStr+lastTr+"</table>";  
                  return   backStr;  
          }  
          /*---------------------------   end   ----------------------------------------*/Top

2 楼bzg119(dreamsun)回复于 2002-06-14 12:02:50 得分 0

一、运行前准备:建议了一个MS   SQLServer7数据库   DNS,名称为:Test_DB,数据库中有一个表:guestbook字段为:email(varchar),body(text)  
      数据库用户为sa   密码空,可以自己修改的。    
  二、代码:  
    <%@   page   contentType="text/html;charset=gb2312"%>  
    <%    
    //变量声明    
    java.sql.Connection   sqlCon;   //数据库连接对象    
    java.sql.Statement   sqlStmt;   //SQL语句对象    
    java.sql.ResultSet   sqlRst;   //结果集对象    
    java.lang.String   strCon;   //数据库连接字符串    
    java.lang.String   strSQL;   //SQL语句    
    int   intPageSize;   //一页显示的记录数    
    int   intRowCount;   //记录总数    
    int   intPageCount;   //总页数    
    int   intPage;   //待显示页码    
    java.lang.String   strPage;    
    int   i,j,k;   //设置一页显示的记录数    
    intPageSize   =   5;   //取得待显示页码    
    strPage   =   request.getParameter("page");    
    if(strPage==null){  
    //表明在QueryString中没有page这一个参数,此时显示第一页数据    
    intPage   =   1;    
    }   else{  
    //将字符串转换成整型    
    intPage   =   java.lang.Integer.parseInt(strPage);    
    if(intPage<1)   intPage   =   1;   }  
    //装载JDBC-ODBC驱动程序    
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    
    //设置数据库连接字符串    
    strCon   =   "jdbc:odbc:Test_DB";    
    //连接数据库    
    sqlCon   =   java.sql.DriverManager.getConnection(strCon,"sa","");    
    //创建SQL语句对象    
    sqlStmt   =   sqlCon.createStatement();    
    //获取记录总数    
    strSQL   =   "select   count(*)   from   guestbook";    
    sqlRst   =   sqlStmt.executeQuery(strSQL);    
    //执行SQL语句并取得结果集    
    sqlRst.next();   //记录集刚打开的时候,指针位于第一条记录之前    
    intRowCount   =   sqlRst.getInt(1);    
    sqlRst.close();   //关闭结果集    
    //记算总页数    
    intPageCount   =   (intRowCount+intPageSize-1)   /   intPageSize;    
    //调整待显示的页码   if(intPage>intPageCount)   intPage   =   intPageCount;    
    //设置获取数据SQL语句    
    strSQL   =   "select   name,email,body   from   guestbook";    
    //执行SQL语句并取得结果集    
    sqlRst   =   sqlStmt.executeQuery(strSQL);  
    //将记录指针定位到待显示页的第一条记录上    
    i   =   (intPage-1)   *   intPageSize;    
    for(j=0;j<i;j++)   sqlRst.next();   %>    
    <html>    
    <head>  
    <title>JSP数据库操作例程   -   数据分页显示   -   JDBC-ODBC</title>  
    </head>    
    <body>    
    <p   align=center>jdbc-odbc留言版</p>    
    <table   border="1"   cellspacing="0"   cellpadding="0"   width=600   align=center>    
    <%    
    //显示数据    
    i   =   0;    
    while(i<intPageSize   &&   sqlRst.next()){   %>    
    <tr>    
    <td>姓名:<%=sqlRst.getString(1)%></td>  
    <td>邮件:<%=sqlRst.getString(2)%></td>  
    </tr>    
    <tr>    
    <td   colspan=2><%=sqlRst.getString(3)%></td>  
    </tr>  
    <%   i++;   }   %>  
    <tr>    
    <td   colspan=2   align=center>    
    第<%=intPage%>页   共<%=intPageCount%>页    
    <%if(intPage<intPageCount){%>  
    <a   href="mssql.jsp?page=<%=intPage+1%>">下一页</a><%  
    }  
    %>    
    <%if(intPage>1){%>  
    <a   href="mssql.jsp?page=<%=intPage-1%>">上一页</a><%  
    }  
    %>    
    </td>    
    </tr>  
    </table>   </body>    
    </html>    
    <%    
    //关闭结果集    
    sqlRst.close();    
    //关闭SQL语句对象    
    sqlStmt.close();    
    //关闭数据库  
    sqlCon.close();  
    %>  
   
  三、怎么去运行?  
      将代码存为文件test.jsp  
      Orion   Application   Server下:  
      Copy到orion的default-web-app目录下,通过:  
      http://localhost:port/test.jsp  
      访问测试  
      对于Resin,Tomcat,JWS等等,都可以运行通过。  
   
  ******************************************  
  一、前言:  
        其实,改写后的JDBC   Data-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之六(MySQL翻页例子)   》   简单改写了一下。  
   
  二、配置:  
  (1)JDBC  
        需要将用到的JDBC驱动Copy到[ORION]/lib目录下  
  (2)data-source  
       在[ORION]/config/data-sources.xml文件中加入如下:  
      〈data-source    
        class="com.evermind.sql.DriverManagerDataSource"    
        name="mySqlDbpage"    
        location="jdbc/HypersonicCoreDS"    
        xa-location="jdbc/xa/HypersonicXADS"    
        ejb-location="jdbc/mysqlDbPage"  
        connection-driver="org.gjt.mm.mysql.Driver"    
        username="root"  
        password=""  
        url="jdbc:mysql://localhost/test"    
        inactivity-timeout="30"  
        /〉  
   
  需要注意的是:  
      (1)ejb-location这个后面的“jdbc/mysqlDbPage”是JNDI要来查找的。  
      (2)connection-driver为JDBC数据库驱动  
      (3)url是JDBC中的URL  
      (4)username为数据库用户名  
      (5)password为用户密码  
      (6)inactivity-timeout为数据库连接超时,默认为30秒  
        对于其他的地方不要改。  
   
  三、改写后的代码如下:  
      <%@   page   contentType="text/html;charset=gb2312"   %>  
      <%@   page   import="java.sql.*,   javax.sql.DataSource,   javax.naming.InitialContext"   %>  
      <%    
      //建立一个JNDI查找对象    
      InitialContext   JNDI_Context   =   new   InitialContext();    
      //JNDI查找数据源    
      DataSource   ds   =   (DataSource)   JNDI_Context.lookup("jdbc/mysqlDbPage");    
      //得到一个数据源连接  
      Connection   conn   =   ds.getConnection();    
      int   intPageSize;   //一页显示的记录数    
      int   intRowCount;   //记录总数    
      int   intPageCount;   //总页数    
      int   intPage;   //待显示页码    
      java.lang.String   strPage;    
      int   i;  
      //设置一页显示的记录数  
      intPageSize   =   2;  
      //取得待显示页码    
      strPage   =   request.getParameter("page");    
      if(strPage==null){  
      //表明在QueryString中没有page这一个参数,此时显示第一页数据    
      intPage   =   1;    
      }   else{  
      //将字符串转换成整型    
      intPage   =   java.lang.Integer.parseInt(strPage);    
      if(intPage<1)   intPage   =   1;  
      }    
      //   得到结果  
      stmt   =   conn.createStatement();    
      ResultSet   sqlRst   =   stmt.executeQuery("select   f1   from   test");    
      //获取记录总数    
      sqlRst.last();    
      intRowCount   =   sqlRst.getRow();    
      //记算总页数    
      intPageCount   =   (intRowCount+intPageSize-1)   /   intPageSize;    
      //调整待显示的页码    
      if(intPage>intPageCount)    
      intPage   =   intPageCount;  
      %>  
      <html>  
      <head>  
      <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
      <title>JSP数据库操作例程   -   数据分页显示   -   JDBC   2.0   -   mysql</title>    
      </head>    
      <body>    
      <table   border="1"   cellspacing="0"   cellpadding="0">  
      <tr>    
      <th>姓名</th>    
      </tr>  
      <%   if(intPageCount>0)  
      {    
      //将记录指针定位到待显示页的第一条记录上    
      sqlRst.absolute((intPage-1)   *   intPageSize   +   1);    
      //显示数据    
      i   =   0;  
      while(i<intPageSize   &&   !sqlRst.isAfterLast()){   %>    
      <tr>    
        <td>  
      <%=sqlRst.getString(1)%>  
      </td>    
      </tr>  
      <%   sqlRst.next();    
      i++;    
      }    
      }    
      %>    
      </table>  
      第<%=intPage%>页   共<%=intPageCount%>页    
      <%if(intPage<intPageCount){%><a   href="mysqlpage.jsp?page=<%=intPage+1%>">下一页</a><%}%>  
      <%if(intPage>1){%><a   href="mysqlpage.jsp?page=<%=intPage-1%>">上一页</a><%}%>    
      </body>    
      </html>  
      <%    
      //关闭结果集    
      sqlRst.close();    
      %>  
       
  三、怎么去运行?  
       见前文《JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)》。  
      注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)  
   
   
   
   
   
  Top

相关问题

  • 如何在jsp页面分页显示查询到的记录
  • 在jsp页面中已实现word显示打印,怎么插入分页符
  • jsp分页显示问题,请教
  • [求助]JSP页面MVC模式(JSP+JavaBean)分页代码!
  • 请教怎么在 JSP 页面里面实现分页!
  • 分页显示,如何保留公共的标题和页面?
  • 分页-->当前页面显示多少条记录问题!~!~ ●●●●●■■■■■■
  • 分页显示后,序号如何接上之前页面?
  • 分页显示,序号如何接上之前页面
  • asp分页显示的获取当前页面

关键词

得分解答快速导航

  • 帖主:sprinkle
  • bzg119

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo