Topic: 为什么这样不能分页呢? |
Print this page |
1.为什么这样不能分页呢? | Copy to clipboard |
Posted by: sisili Posted on: 2004-09-15 22:01 我的目标是每6条记录在一页显示,可是运行结果是所有记录都被显示出来了,而且只有“上一页”,没有“下一页”。 请大虾们帮我看看吧,我想了半天也没想出来。 谢谢 <%@ page contentType="text/html; charset=GBK" %> <jsp:useBean id="webDataModule" scope="session" class="data.WebDataModule" /> <%@page import="java.sql.*, java.util.*, java.sql.Date" %> <html> <head> <title>网上订餐</title> </head> <body> <center> <h3>食堂菜单</h3><br><br> <form action="search.jsp" method="post"> 菜名:<input name="foodNameSearch" type="text" size="30"> <input name="search" type="submit" value="搜索"> </form> <% //设置获取参数的编码机制 request.setCharacterEncoding("GBK"); int id =1; //创建上一页的变量 String priorPage = ""; //创建下一页的变量 String nextPage = ""; //创建记录路径的变量 String path = ""; //取得路径值 String tempPath = request.getParameter("path"); //单击下一页联接的处理代码,增加路径值 if(request.getParameter("isNext") != null){ //创建当前路径值 path = tempPath + id + "@@"; //分柝上一页传入goodsIdPath StringTokenizer paths = new StringTokenizer(tempPath, "@@"); //取得路径的通过总数 int pathCount = paths.countTokens(); //取得上一页的最前标识 for(int i = 0; i < pathCount; i++){ priorPage = paths.nextToken(); } }else if(request.getParameter("isPrior") != null){ //单击上一页的处理代码,减少路径值 //分柝上一页传入路径 StringTokenizer paths = new StringTokenizer(tempPath, "@@"); //减1的意义是删除一个路径值 int pathCount = paths.countTokens() - 1; //如果只有一个路径值,保持路径值不变 if(pathCount == 0){ path = tempPath; } //进入添加路径循环,删除最后一个路径值 for(int i = 0; i < pathCount; i++){ String temp = paths.nextToken(); //将路径的前2个值作为上一页的最前的商品标识 if(i == (pathCount - 2)){priorPage = temp;} path = path + temp + "@@"; } }else{ //直接进入页面的处理代码 //创建当前路径值 path = id + "@@"; } ResultSet HallMenuRs = webDataModule.getHallMenuRs(id); //声明保存记录数的变量 int HallMenuCount = 0; while(HallMenuRs.next()){ //取得id id = HallMenuRs.getInt("id"); //取得window int window = HallMenuRs.getInt("window"); //取得foodName String foodName = HallMenuRs.getString("foodName"); //取得foodPrice String foodPrice = HallMenuRs.getString("foodPrice"); HallMenuCount++; %> <a href="login.jsp?id=<%=id%>"> <%=id%> - <%=window%> - <%=foodName%>- <%=foodPrice%> </a><br><br> <% } //取得下一页码 nextPage = String.valueOf(id + 1); %> <p> <a href="index.jsp?id=<%=priorPage%>&isPrior=true&path=<%=path%>"> 上一页 </a> <%--判断下一页是否显示--%> <%if(HallMenuCount == 6){%> <a href="index.jsp?id=<%=nextPage%>&isNext=true&path=<%=path%>"> 下一页 </a> <%}%> </p> </center> </body> </html> |
2.Re:为什么这样不能分页呢? [Re: sisili] | Copy to clipboard |
Posted by: sunzy19810705 Posted on: 2004-09-16 08:37 看不出来有什么错误啊,是不是你别的页面有问题呢?都帖出来大家看看啊 |
3.Re:为什么这样不能分页呢? [Re: sisili] | Copy to clipboard |
Posted by: sisili Posted on: 2004-09-16 10:30 我把数据库连接bean和运行结果的图也贴出来,请大家给我看看吧 WebDataModule.java如下所示: import com.borland.dx.dataset.*; import com.borland.dx.sql.dataset.*; import java.sql.*; public class WebDataModule { public Connection conn; Statement totalStmt; Statement StudentInfoPageStmt; Statement HallMenuPageStmt; ResultSet HallMenuRs; ResultSet StudentInfoRs; public WebDataModule(){ try {jbInit();} catch(Exception e) {e.printStackTrace();} } private void jbInit() throws Exception { String url = "jdbc:odbc:OrderFoodSQLServer"; //创建连接类 Connection conn; //告诉程序使用jdbc与odbc桥创建数据库联接 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //使用DriverManager类的getConnection()方法建立联接, //第一个字符参数定义用户名,第二个字符参数定义密码 conn = DriverManager.getConnection(url, "sa", "sa"); //创建获取全部数据的Statement类 totalStmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //创建获取分页数据的Statement类,取得StudentInfor数据表的数据 StudentInfoPageStmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //创建获取分页数据的Statement类,取得HallMenu数据表的数据 HallMenuPageStmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //设置每页的记录数 StudentInfoPageStmt.setMaxRows; HallMenuPageStmt.setMaxRows; } //取得食堂菜单数据表的数据 public ResultSet getHallMenuRs() { try{ HallMenuRs = totalStmt.executeQuery("select * from HallMenu"); }catch(Exception ex){ex.printStackTrace();} return HallMenuRs; } //分页取得学生信息数据表的数据 public ResultSet getStudentInfoRs(int id) { try{ StudentInfoRs = StudentInfoPageStmt.executeQuery("select * from StudentInfo where id >= " + id); }catch(Exception ex){ex.printStackTrace();} return StudentInfoRs; } //分页取得食堂菜单数据表的数据 public ResultSet getHallMenuRs(int id) { try{ HallMenuRs = StudentInfoPageStmt.executeQuery("select * from HallMenu where id >= " + id); }catch(Exception ex){ex.printStackTrace();} return HallMenuRs; } //关闭数据库联接 public void closeConn(){ try{ conn.close(); }catch(Exception ex){ex.printStackTrace();} } } (缩略图,点击图片链接看原图) |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |