如何用JS将数据在页面上分页显示出来

如何用JS将数据在页面上分页显示出来,第1张

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

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

req.setAttribute("pageCtl",pageCtl)

说明:yourBusinessObject封装了商业逻辑,是位于Business Logic Layer中的一个对象,运用OOAD的方法,封装商业对象,在Persistent Layer之上组建坚实的Business Logic Layer同样是构建大型电子商务架构的关键所在。本文的关注点只是分页处理,暂不详细论述.

在每个想要实现翻页显示数据的jsp页面中,我们的工作也很简单,其代码是公式化的:

<jsp:useBean id="pageCtl" class="yourpackage.PageControl" scope="request"></jsp:useBean>

<%if(pageCtl.maxPage!=1)){%>

<form name="PageForm"  action="/servlet/yourpackage.yourservlet" method="post">

<%@ include file="/yourpath/pageman.jsp"%>

</form>

<%}%>

说明:

if(pageCtl.maxPage!=1)实现了这样一个逻辑:如果所取得数据不足一页,那么就不用进行翻页显示。

我们注意到<%@ include file="/yourpath/pageman.jsp"%>这使得真正的翻页部分完全得到了重用.

那么pageman.jsp到底做了些什么呢?它实现了经常做翻页处理的人耳熟能详的逻辑 

(A)第一页时不能再向前翻; 

(B)最后一页时不能再向后翻; 

同时能够进行页面任意跳转,具体代码如下:

每页<%=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>页

最后附上用于页面跳转的javascript公共函数:

function Jumping(){

 document.PageForm.submit()

 return

}

function gotoPage(pagenum){

 document.PageForm.jumpPage.value = pagenum

 document.PageForm.submit()

 return

}

运行效果:

在获取完所有的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()//得到所需要的结果集

}

需要三个步骤:第一步,用php连接数据库;

第二步,用sql语句查询数据并把查询出来的结果存入到一个数组或对象中。

第三步,显示数据。

下面我就用面向过程的编程方式来显示数据。这里我用网页中的表格来显示数据。你可以根据你自己的需要来选择显示的方式。

?php

$conn=mysql_connect("localhost","用户名",”密码“)

//连接数据库,用户名、密码即数据库的用户名和密码

mysql_select_db("数据库名")

//选择你要查询的数据库的名称

mysql_query(”set

names

'gbk'“)

//设置查询的数据库数据编码,根据数据库的编码设置

$sql="select

*

from

user"

//比如说你要查询一个用户表user,假设它有三个字段,用户id,用户名username,密码password,

$rs=mysql_query($sql)

?

用户id

用户名

密码

?php

while($row=mysql_fetch_assoc($rs)){

?

?php

echo

$row['id']?

?php

echo

$row['username']?

?php

echo

$row['password']?

?php

}

?


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

原文地址: http://outofmemory.cn/sjk/9235669.html

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

发表评论

登录后才能评论

评论列表(0条)

保存