JSP中如何将查询数据库返回的数据分页显示在页面中

JSP中如何将查询数据库返回的数据分页显示在页面中,第1张

在获取完所有的list后只需要截取你所需要的一部分list就可以了,所以要知道你所需要的是从哪里开始,到哪里结束。

有很多种方法,如果只是JSP里的话可以再次遍历获取的所有list集合,然后把满足条件的截取出来,开始的list下标应该是:(你要查询的页数-1)*页面要显示的数据条数,也就是你这里的(page-1)*pageRows,结束的地方也就是page*pageRows-1了。//这样应该可以写出来了吧

建议把这个方法封装到一个类里面,一个方法就实现一种功能。

当然这是比较麻烦的,现在流行框架,以后会学到的,在hibernate框架里用query语句很容易就实现了,现在时间多,

多看看hibernate框架吧,推荐你一本书,hibernate

in

action,有中文版的。这个是你们以后入门了hibernate后看的。

public

List

listOrderByItem(int

pageRows,int

page)

{

//page是要显示的页数,pageRows是你要显示的行数

Session

session

=

this.getSession()//获取hibernate的session,hibernate自动生成的DAO里包含

String

hql

=

"from

TBL_storage

as

tbl_s

order

by

item"//hql语句

Query

query

=

session.createQuery(hql)//hibernate的query,通过session创建

query.setFirstResult((page-1)*pageRows)//设置开始的下标

query.setMaxResults(pageRows)//设置每页显示的行数

return

query.list()//得到所需要的结果集

}

jsp中分页显示查询到的数据是通过foreach标签控制的,一般是显示首页,下一页,上一页,尾页这些连接项。

1、构建一个PageControl对象将分页所涉及到的一些关键的"控制数据"予以封装.

具体说明如下:

public int curPage //当前是第几页

public int maxPage //一共有多少页

public int maxRowCount //一共有多少行

public int rowsPerPage //每页有多少行

public yourDataType yourdata //装载每页的数据 关于每页所要显示的"实体数据"的载体,其实现方式多种多样,比如说在IBM电子商务系统MPE中是以bean的形式,这是一种面向对象的实现,比较的简略的实现可用java.util.Vector等,为了避免分散对核心问题的的注意力,这里用youDataType予以抽象.

public void countMaxPage() {   //根据总行数计算总页数

if (this.maxRowCount % this.rowsPerPage==0){

this.maxPage = this.maxRowCount/this.rowsPerPage

}else{

this.maxPage = this.maxRowCount/this.rowsPerPage + 1

}

}

this.rowsPerPage其实应从配置文件中获得,这样做的好处是程序能在运行中读取从而实现动态(再)配置,简略的做法是直接写在程序中。

2、在servlet的service()方法中只需进行如下 *** 作:

PageControl  pageCtl = yourBusinessObject.listData(req.getParameter("jumpPage"))

req.setAttribute("pageCtl",pageCtl)获取到显示第几页控制参数

3、pageman.jsp页面的控制输出代码

每页<%=pageCtl.rowsPerPage%>行

共<%=pageCtl.maxRowCount%>行

第<%=pageCtl.curPage%>页

共<%=pageCtl.maxPage%>页

<BR>

<%if(pageCtl.curPage==1){ out.print(" 首页 上一页")  }else{  %> 

<A HREF="javascript:gotoPage(1)">首页</A>

<A HREF="javascript:gotoPage(<%=pageCtl.curPage-1%>)">上一页</A>

<%}%>

<%if(pageCtl.curPage==pageCtl.maxPage){ out.print("下一页 尾页")  }else{  %> 

<A HREF="javascript:gotoPage(<%=pageCtl.curPage+1%>)">下一页</A>

<A HREF="javascript:gotoPage(<%=pageCtl.maxPage%>)">尾页</A>

<%}%>

转到第<SELECT name="jumpPage" onchange="Jumping()">

<% for(int i=1i<=pageCtl.maxPagei++)  {

if (i== pageCtl.curPage){

%>

<OPTION selected value=<%=i%>><%=i%></OPTION>

<%}else{%>

<OPTION value=<%=i%>><%=i%></OPTION>

<%}}%>

</SELECT>页

在页面上会呈现出形如下图:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10822738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存