注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hurt0759的个人主页

人生常态--跋涉.人生暂态--歇息.

 
 
 

日志

 
 

jsp动态分页  

2011-12-14 11:54:06|  分类: IT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
<%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="UTF-8"%>  <%@ page import="java.sql.*,db.*" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <title>查询所有新闻</title>  </head>  <body>  <%    int total_Count=0;//数据库中表总记录数    int page_Size=10;//每页显示的记录数为10    int page_Count=0;//数据总的页面数    String sql="select count(*) as t from news";    DBCon dbc=new DBCon();      ResultSet rs=dbc.do_query(sql);    if(rs.next()) total_Count=rs.getInt("t");    page_Count=(total_Count/page_Size==0)?(total_Count/page_Size):(total_Count/page_Size+1);    String str=request.getParameter("page");    if(str==null) str="1";        int p=Integer.parseInt(str);    if(p<1)     p=1;    if(p>page_Count)     p=page_Count;    sql="select * from news limit "+(p-1)*page_Size+","+page_Size;    rs=dbc.do_query(sql);    %>  <table border="1" bgcolor="yellow">  <%while(rs.next()){ %>  <tr>  <td><%=rs.getInt("id") %></td>  <td><%=rs.getString("title") %></td>  <td><%=rs.getString("body") %></td>  <td><%=rs.getString("adddate") %></td>  <td><a href="update.jsp?id=<%=rs.getInt("id") %>">更新</a></td>  </tr>    <%} %>  </table>    <%     if(p>=1){      %>  <a href="do_query.jsp?page=1">第一页</a>  <a href="do_query.jsp?page=<%=p-1%>">上一页</a>  <%} %>    <%     if(p>=1){      %>  <a href="do_query.jsp?page=<%=p+1%>">下一页</a>  <a href="do_query.jsp?page=<%=page_Count%>">最后一页</a>  <%} %>  <a href="insert.jsp">添加新闻</a>  </body>  </html>  


 

sql2005

既然是jsp动态分页显示数据,顾名思义,上一页、下一页都是jsp本页面的超链接,无论用户怎么点击,其实都是在本jsp页面上,所以,你的代码, String str=request.getParameter("page");
  if(str==null) str="1";  
  int p=Integer.parseInt(str);
。。。
。。。
这样写就注定会出现逻辑错误,当超链接时,jsp代码又会重新加载运行,p永远是1,我建议:利用Cookie、request和表单来解决。
大致过程:在上一页、下一页区域用form表单,其中的actio="do_query.jsp",如果不追求那么完美界面,上一页、下一页就设置为<input type="submit" >,其中的name,value是关键,判断转至此界面时,等同于刷新,但是刷新没有提交表单时中数据,你就在 jsp最前面,判断是否有request中的name.value,如果都没有就说明是刷新,如果有一个,再做相应的判断;然后如若是表单提交的刷新,就根据相应的情形在cookie中的进行相应的操作;如果单纯的刷新或者登陆此界面(等同于刷新),就将的cookie属性赋于"1"(注,设置对象Cookie的实例cookie是来标识客户是否访问过此网页);这样,通过COOKIED属性对应的值来对P赋值.

 

相关参数的理解:

页数=总记录数/每页显示的记录数(PageSize) 
然后再每一个页面序号上传递要显示第几页这个参数,
如第5页的链接这样设计<a href="**.aspx?page=5">5</a>
页面加载的时候,取得page这个变量,如果没有设置就显示第一页,否者计算显示从多少条到多少条,如你设计的pagesize=8,则显示从32条道40,直接从数据读取32到40显示就可以了

  评论这张
 
阅读(1057)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017