说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

编辑:说三道四文库 发布时间:2018-07-23 03:52
HTML文档下载 WORD文档下载 PDF文档下载
程序如下
<%@ 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>标&nbsp;&nbsp;&nbsp;题:"+"</td><td>"+col1+"</td></tr><tr><td>内&nbsp;&nbsp;容:"+"</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传值引起了冲突。请问该怎么解决。
cityname  是怎么传过来得????
另一个页面中的form表单中传过来的啊。
out.print("<a href=xinxixianshigo.jsp?pageid="+(++pageid)+"&cityname="+city);
out.print(">下一页</a>");

下一页是要把cityname传过去
可能是这个地方的问题
if(recordcount>0){
  int j=(pageid-1)*pagesize;
  if(j==0)
      rs.beforeFirst();
  else    
  rs.absolute(j);
  }
是的,你的下一页的链接只传了pageid而没有传cityname,所以查询到的结果为NULL
int i=0;

%>

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



其中的i++  是来控制什么的
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


下一次执行时,cityname没传过来为null
对,是下一次执行时cityname没传过去。谢谢大家了
大家看看这个
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页上竟然输出了上一页这三个字。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘