比如我数据库里有 30 条记录.
我现在想一个页面里只显示 10 条记录..
应该怎样写代码呢.? 请帮忙下.

解决方案 »

  1.   

    《page.jsp》*******************************************************************
    文件名《page.jsp》
    <%@ page language="java" import="java.sql.*, my.*" %>
    <%@ page contentType="text/html; charset=gb2312" %>
    <jsp:useBean id="pagi" scope="page" class="my.Pagi"/>
    <html>
    <body>
    <table  align="center" border=1> 
    <% 
    String CountQuery="select count(*) from 商品资料";  
    String query = "select * from 商品资料";  
    ResultSet rs = pagi.querySql(CountQuery,query, request);  
    String footer = pagi.PageFooter(); 
    %>
    <tr>
    <td >商品编号</font></td>
    <td >商品名称</font></td>
    </tr>
    <%
    if (pagi.intPageCount>0)  
    {  
    int i=0;  
    while (rs.next())  
    {  
    i++;  
    if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))  
    {  
    %>
    <tr>
    <td><%=rs.getString(1)%></td>
    <td><%=rs.getString(2)%></td>
    </tr>
    <%
    }


    out.println("<tr><td colspan=2>"+footer+"</td></tr>");
    rs.close(); 
    pagi.close_all();
    %>
    </table>
    </body>
    </html>
    ****************************************文件名《pagi.java》*********************************************************文件名《pagi.java》
    package my;  import java.util.*;  
    import java.sql.*;  
    import java.io.*;  
    import javax.servlet.*;  
    import javax.servlet.http.*;
    import my.DB.*;public class Pagi
    {  
    ResultSet CountTopicrs=null; //初始化总记录数Rs变量  
    ResultSet Pagirs=null; //初始化分页时Rs变量
    public int intCountTopic=0; //主题总数
    public int intPageSize;//每页显示主题数 
    public int intPageCount;//总页数 
    public int intPage=1; //当前页数 
    public String nowPage; // int i;
    public String HttpFile;//初始化当前页intPage变量,以准确便获取当前页。 //当前的地址栏的文件
    DB db; //定义Linkdb类的一个对象。public Pagi()//定义构造器,初始化每页显示的主题数和数据库的连接。
    {
    intPageSize=4;  //每页显示的记录数目
    db = new DB(); 
    }//Countsql:总记录的Query字符串。[形式为select count(*) from tablename]  
    //Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]  
    //request :参数传递过程中的变量。[用来控制翻页时的pages变量]  
    public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)throws Exception
    {
    HttpFile=request.getRequestURI();  //获取当前文件名。 
    nowPage=request.getParameter("pages");  //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数] 
    if (nowPage==null)

    intPage=1; 
    }
    else

    intPage=Integer.parseInt(nowPage); 
    if (intPage<1) 
    intPage=1; 
    }    CountTopicrs=db.executeQuery(Countsql); //@@@@@@@@@@@@获取总记录数的结果集。 if (CountTopicrs.next())  
    {
    intCountTopic=CountTopicrs.getInt(1);  
    }
    intPageCount = (intCountTopic+intPageSize-1)/intPageSize;  //获取总页数。if (intPage>intPageCount)//如果当前页大于总页数,则当前页等于总页数。 
    {
    intPage=intPageCount;  
    }  
    CountTopicrs.close();  //关闭总主题数的数据集。
            db.close_all();
    Pagirs=db.executeQuery(Pagisql);  //@@@@@@@@@@@@@@@获取执行分页的结果集。 
    return Pagirs;  
    }//end querySql function.    
    public int getCountTopic()//获取记录总数。
    {
    return intCountTopic;  
    }  
    public int getPageCount() //获取总页数。 
    {
    return intPageCount;  
    }
    public int getIntPage()  //获取当前页数。 
    {  
    return intPage;  
    }  public String PageFooter() 
    {  
    String str = "";  
    int next, prev;  
    prev=intPage-1;  
    next=intPage+1;  
    str += "查询到<font color=red>"+getCountTopic()+"</font>条记录"+
    "    共<font color=red>"+getPageCount()+"</font>页";  
    str +=" 第<font color=red>"+getIntPage()+"</font>页 ";  
    if(intPage>1) 
    str += " <A href=" + HttpFile + "?pages=1"+">首页</A> ";  
    else 
    str += " 首页 ";  
    if(intPage>1)
    str += " <A href=" + HttpFile + "?pages=" + prev + ">上一页</A> ";  
    else
    str += " 上一页 ";  
    if(intPage<intPageCount)  
    str += " <A href=" + HttpFile + "?pages=" + next + ">下一页</A> ";  
    else 
    str += " 下一页 ";  
    if(intPageCount>1&&intPage!=intPageCount)  
    str += " <A href=" + HttpFile + "?pages=" + intPageCount + 
    ">尾页</A>";  
    else
    str += " 尾页 ";  return str;  

        public void close_all() 
    {
            db.close_all();
    }
    }************************************************文件名《DB.java》********************************************************
    文件名《DB.java》
    package my;import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;
    //一个用于查找数据源的工具类。
    public class DB {
    private Connection con=null;
    private Statement stmt=null;
    ResultSet rs=null;public  ResultSet executeQuery(String sql) throws Exception
    {
    rs=null;
    try
    {   
    Context initCtx = new javax.naming.InitialContext(); 
                Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
                DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); 
        con=ds.getConnection();
        stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs=stmt.executeQuery (sql);
    }
    catch(SQLException e){throw e;}
    catch(NamingException e){throw e;}return rs;
    }
        //执行Insert,Update语句  
    public void executeUpdate(String sql) throws Exception
    {
    stmt = null;  
    rs=null;  
    try
    {  
        Context initCtx = new javax.naming.InitialContext(); 
                Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
                DataSource ds = (DataSource)envCtx.lookup("jdbc/bn"); 
        con=ds.getConnection();
        stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    stmt.executeQuery(sql);  
    stmt.close();  
    con.close();  
    }
    catch(SQLException ex) 
    {
    System.err.println("执行SQL语句出错: " + ex.getMessage());  
    }
    }
    // 关闭stmt和关闭连接
    public void close_all()  
    {  
    try{
    stmt.close();
    con.close();
    }  
    catch(SQLException e){e.printStackTrace();}  
    }  
    }
      

  2.   

    哇...要那么多代码的.?  以前学过下 asp 好像也不用那么多的吧.  还是先谢谢了.
      

  3.   

    我晕,asp和jsp来都有得一比哟
    这个类是通用类,什么页面分页都可以用它
      

  4.   

    请教问题<%@ page language="java" import="java.sql.*, my.*" %>
    <%@ page contentType="text/html; charset=gb2312" %>
    <jsp:useBean id="pagi" scope="page" class="my.Pagi"/>
    <html>
    <body>-----我加了这段就不运行???
    <%
    String cz = request.getParameter("cz");
    if(cz==null|| cz=="")cz="-";
    %>
    <table  align="center" border=1> 
    <% 
    String CountQuery="select count(*) from 商品资料";  
    String query = "select * from 商品资料";  
    ResultSet rs = pagi.querySql(CountQuery,query, request);  
    String footer = pagi.PageFooter(); 
    %>
    <tr>
    <td >商品编号</font></td>
    <td >商品名称</font></td>
    </tr>
    <%
    if (pagi.intPageCount>0)  
    {  
    int i=0;  
    while (rs.next())  
    {  
    i++;  
    if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i<=pagi.intPage*pagi.intPageSize))  
    {  
    %>
    <tr>
    <td><%=rs.getString(1)%></td>
    <td><%=rs.getString(2)%></td>
    </tr>
    <%
    }


    out.println("<tr><td colspan=2>"+footer+"</td></tr>");
    rs.close(); 
    pagi.close_all();
    %>
    </table>
    </body>
    </html>
      

  5.   

    // 关闭stmt和关闭连接
    public void close_all()
    {
    try{
    stmt.close();
    con.close();
    }
    catch(SQLException e){e.printStackTrace();}
    }
    }这里直接关掉数据源可能会出问题,加上一个判断是不是更好一些?