分页,用到了两个request,但是只能显示第一页的

THJsword 2004-10-13 03:01:15
程序如下
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>

<%@ page contentType="text/html;charset=GB2312"%>
<body bgcolor="#FFF8DF">
<center>

<%

int pagesize=2;//每页要显示的记录数
int recordcount=0;//记录总数
int pagecount=0;//总页数
int pageid=1;//待要显示的页码

try{
Connection con;
Statement stmt;
ResultSet rs;

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());

String dbUrl= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testdb";
String dbUser="sa";
String dbPwd="thjkl800216";
con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
//stmt=con.createStatement();
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//创建一个滚动的只读sql对象
String city=request.getParameter("cityname");
//第一个request

city=new String(city.getBytes("ISO-8859-1"),"GBK");
rs=stmt.executeQuery("Select title,describe,cityname,depart,author,pdate from xinxi_table where cityname='"+city+"' order by id desc");
%>
<%=city%>市林业信息上报汇总
<%
rs.last();
recordcount=rs.getRow();//获得记录总数
pagecount=(recordcount%pagesize==0)?(recordcount/pagesize):((recordcount/pagesize)+1);//取的总的页面数
int count=1;
String strpage=request.getParameter("pageid");
//第2个request

if(strpage==null) pageid=1;
else
pageid=Integer.parseInt(strpage);//将得到的数转换为整型
if(pageid>recordcount) pageid=recordcount;
if(recordcount>0){
int j=(pageid-1)*pagesize;
if(j==0)
rs.beforeFirst();
else
rs.absolute(j);
}
int i=0;

%>

<%
while (rs.next()&&count<=pagesize)
{
count++;
i++;
String col1=rs.getString(1);
String col2=rs.getString(2);
String col3=rs.getString(3);
String col4=rs.getString(4);
String col5=rs.getString(5);
String col6=rs.getString(6);

out.println("<table border=1 width=500>"+"<tr><td width=80>标   题:"+"</td><td>"+col1+"</td></tr><tr><td>内  容:"+"</td><td>"+col2+"</td></tr><tr><td>上报地区:"+"</td><td>"+col3+"</td></tr><tr><td>上报单位:"+"</td><td>"+col4+"</td></tr><tr><td>上报人:"+"</td><td>"+col5+"</td></tr><tr><td>上报时间:"+"</td><td>"+col6+"</td></tr>");
out.println("</table>");
out.println("<br>");
}

out.print("共");
out.print(pagecount);
out.print("页");

out.print("共");
out.print(recordcount);
out.print("条");

out.print("第");
out.print(pageid);
out.print("页");

// out.print("<br>");
if(pageid<pagecount)
{
out.print("<a href=xinxixianshigo.jsp?pageid=");
out.print(pageid+1);

out.print(">下一页</a>");
}
if(pageid>1){
out.print("<a href=xinxixianshigo.jsp?pageid=");
out.print(pageid-1);
out.print(">上一页</a>");}
out.print("<br>");
for(int j=1;j<=pagecount;j++){
out.print("<a href=xinxixianshigo.jsp?pageid=");
out.print(j);
out.print(">");
out.print(j);
out.print("</a>");}


rs.close();
stmt.close();
con.close();
}
catch(Exception e){out.println(e.getMessage());}
%>

<hr>
<a href="xinxixianshi.jsp">返回</a>
</center>
</body>

程序大致是这样的,从前面页面中得到一个值,根据这个值来查询数据库,然后分页。当中用到了两个request.getParameter();程序执行后,只能显示第一页的数据,第2页的数据是null。但是显示出来的所有的记录数是正确的,所以访问数据库的时候是没有错误的。我想大概是两个request传值引起了冲突。请问该怎么解决。
...全文
208 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
THJsword 2004-10-13
  • 打赏
  • 举报
回复
大家看看这个
if(pageid>1){
out.print("<a href=xinxixianshigo.jsp?pageid="+(pageid-1)+"&cityname=");
out.print(city);
out.print(">上一页</a>");}
这是返回到上一页的代码,可是执行后,能从最后一页返回到倒数第2页,但是从倒数第2页确再也没法返回到倒数第3页,显示的仍然是倒数第2页的内容,我从底下的任务栏里看到pageid仍然是当前页而没有进行刷新。倒数第4页也没能返回到倒数第5页,后面的都是这样。更加奇怪的是,在第1页上竟然输出了上一页这三个字。
THJsword 2004-10-13
  • 打赏
  • 举报
回复
对,是下一次执行时cityname没传过去。谢谢大家了
成都清香白莲 2004-10-13
  • 打赏
  • 举报
回复
下一次执行时,cityname没传过来为null
mlovex 2004-10-13
  • 打赏
  • 举报
回复
String city=request.getParameter("cityname");
//第一个request

city=new String(city.getBytes("ISO-8859-1"),"GBK");
rs=stmt.executeQuery("Select title,describe,cityname,depart,author,pdate from xinxi_table where cityname='"+city+"' order by id desc");
如你所说 “cityname 另一个页面中的form表单中传过来的啊。”第一次进入这个页面的时候city会有值 第二次进来的时候 值就没了 所以sql语句查询就出错 抛异常 然后执行catche 什么也没查大 所以是null


mlovex 2004-10-13
  • 打赏
  • 举报
回复
int i=0;

%>

<%
while (rs.next()&&count<=pagesize)
{
count++;
i++;



其中的i++ 是来控制什么的
MARS.nEIL 2004-10-13
  • 打赏
  • 举报
回复
是的,你的下一页的链接只传了pageid而没有传cityname,所以查询到的结果为NULL
MARS.nEIL 2004-10-13
  • 打赏
  • 举报
回复
可能是这个地方的问题
if(recordcount>0){
int j=(pageid-1)*pagesize;
if(j==0)
rs.beforeFirst();
else
rs.absolute(j);
}
qiyongjun2003 2004-10-13
  • 打赏
  • 举报
回复
out.print("<a href=xinxixianshigo.jsp?pageid="+(++pageid)+"&cityname="+city);
out.print(">下一页</a>");

下一页是要把cityname传过去
THJsword 2004-10-13
  • 打赏
  • 举报
回复
另一个页面中的form表单中传过来的啊。
mlovex 2004-10-13
  • 打赏
  • 举报
回复
cityname 是怎么传过来得????

81,094

社区成员

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

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