欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jsp分页显示的实现代码

程序员文章站 2022-10-10 19:10:01
最近这几天在做jsp留言板设计的过程中,遇到了一个问题。先看一张截图:  这是随便在一个新闻的留言页面截的图,假如留言条数太多,那整个页面得排好长好长,这就直接...

最近这几天在做jsp留言板设计的过程中,遇到了一个问题。先看一张截图:
jsp分页显示的实现代码

 这是随便在一个新闻的留言页面截的图,假如留言条数太多,那整个页面得排好长好长,这就直接给用户造成了麻烦、不舒服的感受,所以,解决这个问题,通常采用分页显示的方法。
       要把页面显示方式设计成这样的方式,通常需要用到这几个基本变量:pagesize(每个页面所显示的记录数)、pagecount(一共有多少个页面)、showpage(目前显示第几页)、recordcount(总的记录数),为了方便理解,画了一张图:

jsp分页显示的实现代码

如果想要把页面显示做成这样的效果,在这张图中pagesize=4,pagecount=3,showpage=1,recordcount=12。思路是,如果要显示那个页面,就要先算出来每个页面第一条记录是所有记录中的第几条记录,假设每页的第一条记录是总记录中的第position条记录,那么position=(showpage - 1)×pagesize+1。比如上图这个例子,如果要显示第一页,就要计算出第一页中的第一条记录是总的记录中的第一条记录;如果要显示第二页,就要计算出第二页中的第一条记录是总的记录中的第四条记录;如果要显示第三页,就要计算出第一页中的第一条记录是总的记录中的第九条记录。
       在jsp中的核心代码为如下(用的数据库为mysql):

复制代码 代码如下:

<%!  int pagesize=4;
 int pagecount;
 int showpage;
 %>

<!-- 连接数据库并从数据库中调取记录-->
<%
 connection con;
 statement sql;
 resultset rs;

 try{class.forname("com.mysql.jdbc.driver");
 }catch(classnotfoundexception e){
 }

 try{con=drivermanager.getconnection("jdbc:mysql://localhost:3306/message board","root","123456");
  sql=con.createstatement(resultset.type_scroll_sensitive,resultset.concur_read_only);
  //返回可滚动的结果集
  rs=sql.executequery("select * from messageinfo");
  //将游标移到最后一行
  rs.last();
  //获取最后一行的行号
  int recordcount=rs.getrow();
  //计算分页后的总数
  pagecount=(recordcount%pagesize==0)?(lastrow/pagesize):(lastrow/pagesize+1);

  //获取用户想要显示的页数:
  string integer=request.getparameter("showpage");
  if(integer==null){
   integer="1";
  }
  try{showpage=integer.parseint(integer);
  }catch(numberformatexception e){
   showpage=1;
  }
  if(showpage<=1){
   showpage=1;
  }
  if(showpage>=pagecount){
   showpage=pagecount;
  }

  //如果要显示第showpage页,那么游标应该移动到的position的值是:
  int position=(showpage-1)*pagesize+1;
  //设置游标的位置
  rs.absolute(position);
  //用for循环显示本页中应显示的的记录
  for(int i=1;i<=pagesize;i++){  
 %>
   <table>
    <tr>
     <th><%=rs.getstring("username") %></th>
     <td>发表于:<%=rs.getstring("datetime") %></td>
    </tr>
    <tr >
     <th colspan="3"><textarea><%=rs.getstring("content") %></textarea></th>
    </tr>
   </table>

 <%  
   rs.next();
  } 
  rs.close();
  con.close();
  }
  catch(exception e){
  e.printstacktrace();}
 %>
 <br>
 第<%=showpage %>页(共<%=pagecount %>页)
 <br>
 <a href="showmessages.jsp?showpage=1">首页</a>
 <a href="showmessages.jsp?showpage=<%=showpage-1%>">上一页</a>
<% //根据pagecount的值显示每一页的数字并附加上相应的超链接
  for(int i=1;i<=pagecount;i++){
 %>
   <a href="showmessages.jsp?showpage=<%=i%>"><%=i%></a>
<% }
 %> 
 <a href="showmessages.jsp?showpage=<%=showpage+1%>">下一页</a>
 <a href="showmessages.jsp?showpage=<%=pagecount%>">末页</a>
 <!-- 通过表单提交用户想要显示的页数 -->
 <form action="" method="get">
  跳转到第<input type="text" name="showpage" size="4">页
  <input type="submit" name="submit" value="跳转">
 </form> 

运行结果如下(为了简化代码,已经网页布局相关代码去掉,此处仅指功能):

jsp分页显示的实现代码

可以跳转到首页、上一页、下一页、末页,可以手动在数字上指定页数,也可以在输入框中输入要显示的页数。