关于JSP的分页问题

fishhing 2009-06-19 01:53:11
数据库ACCESS JSP页面display.jsp 页面代码如下

<%@ page language="java" import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext, java.util.*,org.Content,org.product_bean" pageEncoding="UTF-8"%>

<%
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:huangxianwu";
String username = "";
String password = "";
Class.forName(driver);
Connection cc =
(Connection) DriverManager.getConnection(
url,
username,
password);
int intPageSize = 6; //一页显示的记录数
int intRowCount ; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
String strPage;
int i=0 ; //设置一页显示的记录数
strPage = request.getParameter("page");
if(strPage==null){ //表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}else{ //将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
HashMap hm=new HashMap();
int count_product = 0;
String topic = "";
String id = request.getParameter("id");
Statement stm=cc.createStatement();

StringBuffer sbf=new StringBuffer();
sbf.append("select * from info_zhuye where id='display' and type='index_top'");
ResultSet rs=stm.executeQuery(sbf.toString());
if(rs.next()){
topic = rs.getString(Content.language);
}

StringBuffer sb=new StringBuffer();
sb.append("select * from product_type where type='"+id+"' order by id desc");
stm = cc.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句
rs=stm.executeQuery(sb.toString());

System.out.println("intPage>1 = "+rs.next());

rs.last();//光标在最后一行
intRowCount = rs.getRow();//获得当前行号
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount){
intPage = intPageCount;
}
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>company_info</title>
</head>
<body>
<font size="5" face="宋体" color="#73bcf1"><%=topic%></font><br>
<td colspan="3"><HR align="LEFT" size="2" width="740" color="#73bcf1" noshade></td>

<form method="POST" action="display.jsp">
第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){ %>
<a href="display.jsp?page=<%=(intPage+1)%>">下一页</a>

<%}%>
<%if(intPage>1){%>
<a href="display.jsp?page=<%=(intPage-1)%>">上一页</a>
<%}%>
转到第:<input type="text" name="page" size="8"> 页
<span><input type="submit" value="GO" name="cndok"></span>
</form>

<table align="center" width="980">
<%if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage-1) * intPageSize + 1); //显示数据
i = 0;
while(i<intPageSize && !rs.isAfterLast()){
String product_id = rs.getString("id");
String product_name = rs.getString(Content.language);
String image = rs.getString("image");
product_bean p = new product_bean(product_id,product_name,image);
String count =""+i;
hm.put(count,p);
rs.next();
i++;
}
}
%>
<%int choose = 0;
if(i>3){
choose = 2;
}else if(i<=3&&i>0){
choose = 1;
}else{
choose = 0;
}
for(int j=0;j<choose;j++){%>
<tr>
<% for(int k=0;k<3;k++){ %>
<td align=left width="33%">
<% if( (choose==1 && k<i)||( choose==2&&(k-3)<i ) ){%>
<table>
<tr>
<td><image src="<%=((product_bean)hm.get(""+j)).getImage_path()%>"></td>
</tr>
<tr>
<td><%=((product_bean)hm.get(""+j)).getProduct_name()%></td>
</tr>
</table>
<%} else{%>
 
<%} %>
</td>
<% } %>
</tr>
<% } %>
</table>
</body>
</html>
<%
//关闭结果集
rs.close();
//关闭SQL语句对象
stm.close();
//关闭数据库
cc.close();
%>
这个当点击下一页,或者上一页,页面提交以后,里面的记录就空了,里面的 ResultSet rs为空,页面中的数值都被重新初始化了,应该怎么才能保存住?或者提交的文件错了?
...全文
14 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishhing 2009-06-22
  • 打赏
  • 举报
回复
分数给5楼了
fishhing 2009-06-22
  • 打赏
  • 举报
回复
谢谢大家了,我找到问题了,里面一个接收的属性id是从别的页面接收到的,所以当点击下一步的时候它是null,查不到数据了
robyjeffding 2009-06-19
  • 打赏
  • 举报
回复
顶一下!
shmilycharlene 2009-06-19
  • 打赏
  • 举报
回复
 <%! int currentPage = 1; String sql;%>
<% String sql1 = request.getParameter("sql");
if(sql1 != null)
sql = sql1;
String pageIndex = request.getParameter("page");
if (pageIndex != null && !pageIndex.equals("")) {
currentPage = Integer.parseInt(pageIndex);
} else {
currentPage = 1;
}
%>
<table width="100%" align="center" bgcolor="#66CCFF" cellspacing="1">
<tr>
<td align="center" colspan="8"><h3>书籍管理</h3></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center" width="45">编号</td>
<td align="center">书名</td>
<td align="center">价格</td>
<td align="center">类型</td>
<td align="center">出版商</td>
<td align="center">描述</td>
<td align="center">上架日期</td>
<td align="center">销售量</td>
<td align="center">销售状态</td>
<td align="center" width="90">操作</td>
</tr>
<% dao.setSql(sql);
List list = dao.getBooksList(currentPage);
for (Object obj : list) {
BookBean bean = (BookBean) obj;%>
<tr bgcolor="#FFFFFF">
<td align="center"><%=bean.getBookID()%></td>
<td><%=bean.getBookName() %></td>
<td><%=bean.getPrice()%></td>
<td><%=bean.getType()%></td>
<td><%=bean.getPublisher() %></td>
<td><%=bean.getBookDesc()%></td>
<td><%=bean.getOnsaleDate()%></td>
<td><%=bean.getBuyCount()%></td>
<td><%=bean.getOnsales()%></td>
<td align="center">
<a href="bookinfo.jsp?id=<%=bean.getBookID()%>&page=<%=currentPage%>">详细</a> |
<% if(bean.getOnsales().equals("销售中")){
out.println("<a href=\"../servlet/ChangeSalesStatusServlet?bookid="+bean.getBookID()+"&page="+currentPage+"\">停售</a>");
}else{
out.println("<a href=\"../servlet/ChangeSalesStatusServlet?bookid="+bean.getBookID()+"&page="+currentPage+"\">上架</a>");
}
%>
</td>
</tr>
<% }
%>
<tr bgcolor="#FFFFFF">
<td colspan="10" align="right">
共有 <%=dao.getCount()%> 条记录 共有 <%=dao.getPageCount()%> 页 当前第 <%=currentPage%> 页
<%
if (currentPage == 1) {
out.println(" [首页] ");
out.println(" [上一页] ");
} else {
out.println("<a href=\"managebook.jsp\">[首页]</a>");
out.println("<a href=\"managebook.jsp?page=" + (currentPage - 1) + "\">[上一页]</a>");
}
if (currentPage == dao.getPageCount()) {
out.println(" [下一页] ");
out.println(" [末页] ");
} else {
out.println("<a href=\"managebook.jsp?page=" + (currentPage + 1) + "\">[下一页]</a>");
out.println("<a href=\"managebook.jsp?page=" + dao.getPageCount() + "\"> [末页] </a>");
}
%>
</td>
</tr>
</table>

简单的分页.主要是要保存你的查询条件,避免查询条件丢失
vampirewp 2009-06-19
  • 打赏
  • 举报
回复
<a href="display.jsp?page= <%=(intPage+1)%>">下一页 </a>
这些翻页链接加上查询参数id,如:
<a href="display.jsp?page= <%=(intPage+1)%>&id=<%=id%>">下一页 </a>
yyandlh 2009-06-19
  • 打赏
  • 举报
回复
帮lz顶下
fishhing 2009-06-19
  • 打赏
  • 举报
回复
stm = cc.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句
rs=stm.executeQuery(sb.toString());
rs的结果是空,这个只有第一次才有数据吗,要是参数回传,这个语句不还是要执行吗?能说具体怎么改吗
shuai45 2009-06-19
  • 打赏
  • 举报
回复
参数回传啊

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧