http://expert.csdn.net/Expert/topic/2527/2527918.xml?temp=.4388544

解决方案 »

  1.   

    <%@ include file="header.inc"%> 
    //调用用来显示时间的JavaBean (dates.JspCalendar)
    <jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />      
    <%@ page language="java" import="java.sql.*" %>
    //调用用来执行数据库操作的JavaBean (test.faq)
    <jsp:useBean id="workM" scope="page" class="test.faq" />
    //处理中文问题的自定义函数
    <%!
    public String getStr(String str)
    {
    try
    {
    String temp_p=str;
    byte[] temp_t=temp_p.getBytes("GBK");
    String temp=new String(temp_t,"ISO8859_1");
    return temp;
    }
    catch(Exception e)
    {
    e.printStackTreace();
    }
    return "null";
    }
    %>   
    <%! //自定义的静态函数,作用是:用数字分别来表示商品的种类。
    public static String category(int id)
    {
    try
    {
    switch(id)
    {
    case 1:
    return "计算机类";
    case 2:
    return "英语类";
    default:
    return "其他类";
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    return "null";
    }
    %>        
    <TABLE border=0 cellPadding=0 cellSpacing=0 width=760 align="center">
      <TBODY>
     <tr><td align="left" height=25>
    <% //显示用户名
    if(session.getAttribute("username")!=null){
    out.println(session.getAttribute("username"));
    }
    %>  当前位置:<a href="../index.jsp">首页</a> -&gt; 商品分类    </td>
     <!—显示时间--><%@ include file="../member/date.inc"%>  </tr>
      <TR bgColor=#3399ff>
        <TD height=1 colspan="2"><IMG height=1 src="images/spacer.gif" 
      width=16></TD></TR>
      <tr><td height=10 colspan="2"><IMG height=1 src="images/spacer.gif" 
      width=16></td></tr>
      </TBODY></TABLE>
      <table align="center" border="0" width="760" cellspacing="0" cellpadding="0" height="355">                  
    <tr>                  
    <td width="150" height="355" valign="top"></td>                  
    <td width="10" height="100%"></td>
    <td width="1" height="100%" bgcolor="#3399ff"></td>
    <td width="10" height="100%"></td>
    <td width="589" height="331" valign="top" background="images/bg1.gif">                       
            <table border="0" width="100%" cellspacing="0" cellpadding="0">                  
              <tr>                  
            <td width="62%" height="20" bgcolor="#3399ff">&nbsp;<font color="#ffffff">标题</font>       
    </td>
            <td width="15%" height="20" bgcolor="#3399ff">&nbsp;<font color="#ffffff">作者</font>       
      </td>
                <td width="15%" height="20" bgcolor="#3399ff">&nbsp;<font color="#ffffff">类别</font>       
    </td>
                <td width="8%" height="20" bgcolor="#3399ff">&nbsp;<font color="#ffffff">特价</font>       
    </td>
      </tr>
      <ul>
    <%///////////////算出共多少页
    int t;
    int mtotal;
    t=0;
    String strSQLsize="SELECT id FROM book where good_price=true";
    ResultSet RSsize = workM.executeQuery(strSQLsize);
    while(RSsize.next()){
    t=t+1;
    }
    //如果纪录总数除以每页的显示个数,余数大于0,那么
    //逻辑页数应该为商+1;
    //否则,逻辑页数应为所得的商
    //t表示记录的总数
    //3表示了每页所显示的个数
    //mtotal为逻辑页数
    if((t%3)>0){
    mtotal=t/3+1;
    }else mtotal=t/3;
    %>
    <%! //定义变量
    String pageNo, mTmp;
    int i, j, k;
    %>
    <%
    //pageNo表示请求的是第几页
    pageNo = request.getParameter("pageNo");
    //如果pageNo为null值,则赋值为1
    if(pageNo == null){
        pageNo = "1";
    }
    //j表示的是pageNo对应的整型值
    j = Integer.parseInt(pageNo);
    //当j的值小于1时,赋值为1
    if(j < 1)
        j = 1;
    //当j的值大于总页数时,赋值为mtotal
    if(j > mtotal)
        j = mtotal;
    %>
    <% // 读取数据库记录
    String strSQL="SELECT * FROM book where good_price=true order by id desc";
    ResultSet RSa = workM.executeQuery(strSQL);
    //记录集移动到相应的位置
    //j为逻辑页数
    for(k = 0;k < (j-1)*3;k++)
    {
    RSa.next();
    }
    i = 0;
    k = 1;
    while (RSa.next()) {
    i = i + 1;
        //超过3条,循环退出
        if(i == 4)
        {
            k = 0;
            break;
        }     
    out.print("<tr height='23'><td><li><a href=javascript:show('book.jsp?id=");
    out.print(RSa.getInt("id")+"','详细资料',480,500)");
    out.print(">"+getStr(RSa.getString("name"))+"</a></td><td>");
    out.print(getStr(RSa.getString("author"))+"</td><td>");
    out.print( (category(RSa.getInt("category")))+"</td><td>特价</td></tr>");
    }
    i = i - k;
    //关闭记录集
    RSa.close();
    %>
    <%
    //以下代码行是用来显示页面数的
    //当j大于1时,就会显示“第一页”、“上一页”字样
    if(j > 1)
    {
    %>
        <a href="good_price.jsp?pageNo=1">第一页</a>
    <%
        int ii = Integer.parseInt(pageNo,10);
        if(ii > 1)
            ii = ii -1;
        String ssTmp = Integer.toString(ii);
    %>
        <a href="good_price.jsp?pageNo=<%=ssTmp%>">上一页</a>
    <%
    }
    //同样地,当j小于总逻辑页数时,就会显示“下一页”、“最后页”字样
    if(j < mtotal)
    {
        int ii = Integer.parseInt(pageNo,10);
        if(ii < mtotal)
            ii = ii + 1;
        String ssTmp = Integer.toString(ii);
    %>
        <a href="good_price.jsp?pageNo=<%=ssTmp%>">下一页</a>
        <a href="good_price.jsp?pageNo=<%=mtotal%>">最后页</a>
    <%
    }
    if(mtotal < j)
        j = mtotal;        
    %>
      <tr><td height="1" bgcolor="" colspan="2">
      <hr color="#3399ff">
      结果共<%=mtotal%>页,显示第<%=j%>页</td>
    <td align="left" colspan="2" height="32">
    <a href="post.jsp">发布书的信息</a>
    </td>
    <form name="form2" action="index.jsp" method="post">
    <input type="hidden" name="pageNo" value="">
    </form>
    <script language="javascript">
    function sub_page(id)
    {
    if(id==0)
    document.form2.pageNo.value=0;
    else if(id==1)
    document.form2.pageNo.value=2;
    document.form2.submit();
    }
    </script>
      </tr>
            </table>                  
    </form>
    商品分类:<a href="category.jsp?id=1">计算机类</a> |
         <a href="category.jsp?id=2">英语类 </a> |
    <a href="category.jsp?id=3">其他类 </a> |
            </td>   </tr>   </table>
    <!—尾文件-->
    <%@ include file="footer.inc"%>
      

  2.   

    jsp通过只身的类可以进行分页显示。但是在实际应用中多靠数据库来完成。如果靠自身编码完成比较麻烦。你还是依靠数据库比较好而且速度快!
      

  3.   

    一般页面显示风格由jsp来控制,数据的分页就由javabean来控制了。
      

  4.   

    <%@ page language="java" %>
    <%@page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.*"%><!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
    <html>
    <head>
    <SCRIPT LANGUAGE="javascript">
     function openwindow()
    {
     self.location="banjitianjia.jsp";
    }</SCRIPT>
    <title>班级浏览</title>
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    </head>
    <body bgcolor="#FFFFFF">
    <%
    if (session.getAttribute("username")==null)
    {%>
    <script language="javascript">
    alert("非法登陆!");
    document.location.href="../login.html";
    </script>
    <%}
    String readonly="";
    String tmp=(String)session.getAttribute("readonly");
    //out.println(tmp);
    if (!tmp.equals("n"))
    readonly="y";
    else
    readonly="n";
    %>
    <form method="post" action="deletebanji.jsp">
    <table width="600" border="0" cellspacing="2" cellpadding="1">
    <tr bgcolor="#00FF00">
    <td>
    选择
    </td>
    <td>
    班级
    </td>
    <td>
    年级
    </td>
    <td>
    教室
    </td>
    <td>
    年制
    </td>
    <td>
    专业
    </td>
    <td>
    班主任
    </td>
    <td>
    备注
    </td>
    <td>
    修改
    </td>
    </tr> <%!int PageSize=10;
    int ShowPage=1;
    int RowCount=0;
    int PageCount=0;%>
          <%
          String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    String SConnStr="jdbc:odbc:albumSource";
         
          Class.forName(sDBDriver);
           Connection  conn=DriverManager.getConnection(SConnStr);
           Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            String sql="select * from 班级 ORDER BY grade DESC";
     ResultSet rs=stmt.executeQuery(sql); 
    %>
        <% 
        if(!rs.next())
        out.println("没有数据!");
        else{
         rs.last();
       
          RowCount=rs.getRow();
            PageCount=((RowCount%PageSize)==0?(RowCount/PageSize):(RowCount/PageSize)+1);  %>
          <%  String ToPage=request.getParameter("ToPage");
            if(ToPage!=null){
              ShowPage=Integer.parseInt(ToPage);
                if(ShowPage>PageCount){
                  ShowPage=PageCount;
      }else if(ShowPage<=0){
        ShowPage=1;
          }
            }
              rs.absolute((ShowPage-1)*PageSize+1);
              
                %>      <%
          for (int i=1;i<=PageSize;i++)
          {
                 int id=rs.getInt("id");
           String banji=rs.getString("grade");
           String nianji=rs.getString("class");
           String room=rs.getString("classroom");
       String nianzhi=rs.getString("nianzhi");
    String zhuanye=rs.getString("major");
    String banzhuren=rs.getString("cmaster");
    String beizu=rs.getString("meno");
          %>
      <tr bgcolor="#00FF00">
    <td>
    <INPUT type="checkbox" id=xuanze name=xuanze value=<%=id%>>
    </td>
    <td>
    <%=banji%>
    </td>
    <td>
    <%=nianji%>
    </td>
    <td>
    <%=room%>
    </td>
    <td>
    <%=nianzhi%>
    </td>
    <td>
    <%=zhuanye%>
    </td>
    <td>
    <%=banzhuren%>
    </td>
    <td>
    <%=beizu%>
    </td>
    <%if (readonly.equals("n"))
    {%>
    <td>
    <a href=banjixiugai.jsp?id=<%=id%>>修改</a>
    </td>
    <%}%></tr>
     <%if(!rs.next())
        break;
           }
             %>
        <%
           rs.close();
     stmt.close();
          %>
          <tr>
         <%if (readonly.equals("n"))
         {%>
          <td>
          <INPUT type="submit" value="删除" id=submit1 name=submit1>
          </td>
          <td>
          <INPUT type="button" value="添加" id=button1 name=button1 onclick="openwindow()">
          </td>
          <%}%>
          </tr>
              </table>
              
                </form>
    <table width="600" border="0" cellspacing="2" cellpadding="1">
    <tr bgcolor="#ffffff">
                    <td width="400" height="70"><div align="right">共<%=PageCount%>/<font color="#FF0000"><%=ShowPage%></font>页</div></td>
                    <td width="56"><div align="center"> 
                        <%if(ShowPage!=1){%>
                        <a href=classview.jsp?ToPage=<%=1%>>首页</a> 
                        <%}else{%>
                        <font color="#CCCCCC">首页</font> 
                        <%}%>
                      </div></td>
                    <td width="49"><div align="center"> 
                        <%if(ShowPage!=1){%>
                        <a href=classview.jsp?ToPage=<%=ShowPage-1%>>上页</a> 
                        <%}else{%>
                        <font color="#CCCCCC">上页</font> 
                        <%}%>
                      </div></td>
                    <td width="54"><div align="center"> 
                        <%if(ShowPage!=PageCount){%>
                        <a href=classview.jsp?ToPage=<%=ShowPage+1%>>下页</a> 
                        <%}else{%>
                        <font color="#CCCCCC">下页</font> 
                        <%}%>
                      </div></td>
                    <td width="46"><div align="center"> 
                        <%if(ShowPage!=PageCount){%>
                        <a href=classview.jsp?ToPage=<%=PageCount%>>尾页</a> 
                        <%}else{%>
                        <font color="#CCCCCC">尾页</font> 
                        <%}%>
                      </div></td>
                    <td width="100" valign="bottom"><div align="center"> 
                        <table width="99%" border="0" cellspacing="0" cellpadding="0">
                          <tr> 
                            <td> <form action=classview.jsp method=post>
                                <input name=ToPage type="text"  value=<%=ShowPage%> size="4">
                                页</form></td>
                          </tr>
                        </table>
                      </div></td>
                  </tr>
                </table>
              <%}%>
                </body>
    </html>
      

  5.   

    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*"%>
    <html>
    <body>
    <%!
    int pagesize=8;  //每页显示数目
    int pagecount;   //总页数
    int showpage;    //当前页数
    %><%
    Connection con;
    Statement sql;
    ResultSet rs;
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }catch(ClassNotFoundException e){
    out.print(e);
    }
    try{
    String key=request.getParameter("id");
    if(key==null){
    key="";
    }
    byte d[] =key.getBytes("ISO-8859-1");
    key=new String(d);
    con=DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};dbq=g:\\database\\sun.mdb");
    sql=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs=sql.executeQuery("select * from sa");
    rs.last();
    int rowcount=rs.getRow();
    pagecount=(rowcount%pagesize==0)?(rowcount/pagesize):(rowcount/pagesize+1);%>
    <p>总共有<%=rowcount%>条记录</p>
    <table border=1>
    <tr>
    <td width=100>编号</td>
    <td width=100>学号</td>
    <td width=100>姓名</td>
    <td width=100>数学成绩</td>
    <td width=100>语文成绩</td>
    <td width=100>物理成绩</td>
    <td width=100>化学成绩</td>
    <td width=100>英语成绩</td>
    </tr>
    <%
    rs.beforeFirst();
    String s=request.getParameter("page");
    if(s==null){
    s="0";
    }
    try{
    showpage=Integer.parseInt(s);
    }catch(NumberFormatException e){
    out.print(e);
    }
    if(showpage>=pagecount){
    showpage=pagecount;
    }
    if(showpage<=1){
    showpage=1;
    }int posion=(showpage-1)*pagesize+1;
    rs.absolute(posion);
    for(int i=1;i<=pagesize && !rs.isAfterLast();i++){
    out.print("<tr>");
    for(int k=1;k<9;k++){
    out.print("<td>"+rs.getString(k)+"</td>");
    }
    out.print("</tr>");
    rs.next();
    }
    con.close();
    out.print("</table>");
    }catch(SQLException e){
    out.print(e);
    }
    for(int i=1;i<=pagecount;i++){
    out.print("<a href=king.jsp?page="+i+">"+i+"</a>");
    out.print("&nbsp");
    }
    %>
    </body>
    </html>
      

  6.   

    我自己做的是javabean和jsp,你要吗,
      

  7.   

    jsp分页可以有许多方法。但效率就相差很大。我刚刚正在做一个商业网站。我把我的源代码发给你吧。数据库你可要自己修改用户名密码哦。
    javabean里的源代码
    package sql;import java.sql.*;public class operation1 { String sDBDriver = "org.gjt.mm.mysql.Driver";
    //String sDBDriver = "com.mysql.jdbc.Driver";
        String sConnStr = "jdbc:mysql://localhost:3306/test?user=root;password=pallas";
        Connection conn = null;
        ResultSet rs = null;
        Statement stmt;
    int rec_count=0;  public operation1() {
    try {
           Class.forName(sDBDriver);
           conn = DriverManager.getConnection(sConnStr);
           stmt = conn.createStatement();
    }
    catch(java.lang.ClassNotFoundException e)  {
       System.err.println("create(): " + e.getMessage());
    }
        catch(SQLException e){
        }
      }
      
      public int getcount(ResultSet rs_temp){
      try{
    while(rs_temp.next()){
    rec_count=rec_count+1;
    }
      }catch(SQLException e){
      
      }
      return rec_count;  
      }
        
      public boolean executeUpdate(String sql){
        try{
         stmt.executeUpdate(sql);
     return true;
    }catch(SQLException e){
       System.err.println("aq.executeUpdate: " + e.getMessage());
       return false;
    }
      }
      
      public Statement getStatement(){
        return stmt;
      }
      
      public ResultSet executeQuery(String sql) {
    rs = null;
    try {
      rs = stmt.executeQuery(sql);
    }
    catch(SQLException ex) {
      System.err.println("aq.executeQuery: " + ex.getMessage());
    }
    return rs;
     }
    }jsp里的源代码
    <html>
    <body>
    <%@ page  contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
    <jsp:useBean id="data" class="sql.operation1" scope="page"/> 
    <%
    int pages=0;//当前页码
    int pagesize=10;
    ResultSet res;
    String pages_str=request.getParameter("pages");
    if(pages_str==null){
      pages_str="0";
    }
    pages = new Integer(pages_str).intValue();
    //使用新建一个变量创建数据。
    String bottom,top,sql="";
    bottom=String.valueOf(pages*pagesize+1);
    top=String.valueOf(pages*pagesize+pagesize);
    sql="select * from faq where id>="+bottom+" and id<="+top;
    res = data.executeQuery(sql);
    String question,answer;
    while(res.next()){
     question=res.getString(2);
     answer=res.getString(3);
     out.print("<p>"+question+"<li>"+answer+"<br>");
    }
    out.print("<p><hr>");
    String space="&nbsp;&nbsp;";
    int total_page;//计算页数与除以10后留下的页数。
    sql="select ceiling(count(*)/"+pagesize+") as count1 from faq"; //使用count(*)取得记录集
    res=data.executeQuery(sql);
    total_page=res.getInt(1);
    for(int intloop=0;intloop<total_page;intloop++){
      String N_url="<a href=page_show2.jsp?pages="+intloop+">",url1="</a>";
    out.print(N_url+(intloop+1)+url1+space);  
    }
    res.close();
    %> 
    </body>
    </html>
    希望对你有帮助
      

  8.   

    好东西当然要分享啊!看我的:经典分页程序
    jsp+javaBeanhttp://www.52free.com/bbs/index.php?act=ST&f=8&t=148&st=0#entry298如果数据库不同只需修改javaBean中的驱动即可,页面显示数可以自己控制。