免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1158 | 回复: 1
打印 上一主题 下一主题

一个分页程序,请大家看看,我看不懂?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-10 11:02 |只看该作者 |倒序浏览
------------------------SplitPage.java(一个Bean,用于分解路径)
package page;

import java.util.*;

public class SplitPage {
  //该方法记录浏览过的页面,返回路径值和上一页的id
  public String[] analysePage(String currentId, String tempIdPath,
                              boolean isNext, boolean isPrior){
    //该变量记录上一页的id
    String priorId = "";
    //该变量记录路径值
    String idPath = "";
    String[] variances = new String[2];
    //单击下一页联接的处理代码,增加路径值
    if(isNext){
      //创建当前路径值
      idPath = tempIdPath + currentId + "@@";
      //分柝上一页传入path
      StringTokenizer paths = new StringTokenizer(tempIdPath, "@@";
      //取得记录的path的总数
      int pathCount = paths.countTokens();
      //取得上一页的最前标识
      for(int i = 0; i < pathCount; i++){
        priorId = paths.nextToken();
      }
    }else if(isPrior){
    //单击上一页的处理代码,减少路径值
      //分柝上一页传入path
      StringTokenizer paths = new StringTokenizer(tempIdPath, "@@";
      //取得记录的path的总数减1,减1的意义是删除一个路径值
      int pathCount = paths.countTokens() - 1;
      //如果只有一个路径值,保持路径值不变
      if(pathCount == 0){
        idPath =  tempIdPath;
      }
      //进入添加路径循环,删除最后一个路径值
      for(int i = 0; i < pathCount; i++){
        String temp = paths.nextToken();
        //将路径的前2个值作为上一页的最前标识
        if(i == (pathCount - 2)){priorId = temp;}
        idPath = idPath + temp + "@@";
      }
    }else{
      //直接进入页面的处理代码,取得当前路径值
      idPath = currentId + "@@";
      //设置上一页的路径值
      priorId = String.valueOf(currentId);
    }
    //第1个值是id
    variances[0] = priorId;
    //第2个值是路径值
    variances[1] = idPath;
    return variances;
  }
}
--------------------------------------------------------ShowDataByPageUsingBean.jsp(分页显示)

<%@ page contentType="text/html; charset=GBK" %>;
<%@ page import = "java.util.*, java.sql.*"%>;
<html>;
<head>;
<title>;使用JavaBean进行分页浏览数据示例</title>;
</head>;
<body>;
<jsp:useBean id="splitPage" class="page.SplitPage" />;
<center>;
<h3>;使用JavaBean进行分页浏览数据示例</h3>;
<%
  //定义每页的显示记录数
  int maxRows = 4;
  //设置获取参数的编码机制
  request.setCharacterEncoding("GBK";
  int id = 1;
  //创建上一页的变量
  String priorPage = "";
  //创建下一页的变量
  String nextPage = "";
  //创建记录路径的变量
  String path = "";
  //初始化id参数
  if(request.getParameter("id"!=null){
    try{
      //将id参数转变为数值
      id = Integer.parseInt(request.getParameter("id");
    }catch(Exception ex){
      id = 1;
    }
  }
  //取得路径值
  String tempPath = (request.getParameter("path"!=null)?request.getParameter("path"
                                                        :"";
  boolean isNext = (request.getParameter("isNext" != null)?true:false;
  boolean isPrior = (request.getParameter("isPrior" != null)?true:false;
  //利用JavaBean分解路径值
  String[] paths = splitPage.analysePage(String.valueOf(id), tempPath, isNext, isPrior);
  //取得上一页的id
  priorPage = paths[0];
  //取得分解后的路径值
  path = paths[1];
  //使用jdbc与odbc桥创建数据库联接
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver";
  //使用DriverManager类的getConnection()方法建立联接
  Connection conn = DriverManager.getConnection("jdbcdbc:mysqldemo", "", "");
  //创建SQL语句执行类
  Statement stmt = conn.createStatement();
  //设置返回的最大记录数
  stmt.setMaxRows(maxRows);
  ResultSet rs = stmt.executeQuery("select * from tableDemo1 where id >;= " + id);
  //声明保存记录数的变量
  int rowCount = 0;
  while(rs.next()){
    //取得序号
    id = rs.getInt("id");
    //取得标题值
    String title = rs.getString("title");
    //取得内容
    String content = rs.getString("content");
    rowCount++;
%>;
  <p>;<%=title%>; - <%=content%>;</p>;
<%
  }
  //取得下一页码
  nextPage = String.valueOf(id + 1);
%>;
<p>;
  <a href="ShowDataByPageUsingBean.jsp?id=<%=priorPage%>;&isPrior=true&path=<%=path%>;">;
    上一页
  </a>;
  &&&
  <%--判断下一页是否显示--%>;
  <%if(rowCount == maxRows){%>;
    <a href="ShowDataByPageUsingBean.jsp?id=<%=nextPage%>;&isNext=true&path=<%=path%>;">;
      下一页
    </a>;
  <%}%>;
</p>;
</center>;
</body>;
</html>;





------------------------------------CreateTabledemo1Record.jsp(向数据库添加记录)

<%@ page contentType="text/html; charset=GBK" %>;
<%@ page import = "java.sql.*"%>;
<html>;
<head>;
<title>;创建tabledemo1数据表记录</title>;
</head>;
<body>;
<h3>;为tabledemo1数据表新增100条记录</h3>;
<%
  try{
    //使用jdbc与odbc桥创建数据库联接
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //使用DriverManager类的getConnection()方法建立联接
    Connection conn = DriverManager.getConnection("jdbcdbc:mysqldemo", "", "");
    //创建SQL语句执行类
    Statement stmt = conn.createStatement();
    //创建100条新记录
    String sql;
    int i = 0;
    for(i = 0; i < 100; i++){
      sql = "insert into tabledemo1(title, content) values('新记录" + i
            + "', '新内容" + i + "')";
      //进行记录插入操作
      stmt.executeUpdate(sql);
    }
    out.println("<p>;成功创建" + i + "条新记录.</p>;");
  }catch(Exception ex){
    ex.printStackTrace();
  }
%>;
</body>;
</html>;

--------------------------------------------------------------------------



//该方法记录浏览过的页面,返回路径值和上一页的id
  public String[] analysePage(String currentId, String tempIdPath,
                              boolean isNext, boolean isPrior)

---------为什么需要路径值,我实在看不懂,请看的懂的人,把SplitPage.java重新注释一下!谢谢了!

特别是:String currentId
       String tempIdPath
        boolean isNext, boolean isPrior
        idPath = tempIdPath + currentId + "@@";
        tempIdPath

我觉得文中的变量太多了!看不懂

论坛徽章:
0
2 [报告]
发表于 2004-11-10 12:13 |只看该作者

一个分页程序,请大家看看,我看不懂??

帮我看看,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP