求教jsp分页显示的问题,如何循环并分页取得参数?

求教jsp分页显示的问题,如何循环并分页取得参数?,第1张

这个是一个可用的分页代码,如何调用就不说了吧,但是在用之前要先指明ResultSet的值

import java.sql.ResultSet

public class rsFenYe {

ResultSet rs=null //要分页处理的记录数

int currentPage=1 //当前页码

int pageSize=10 //每页记录的条数,默认为10

/**

* 得到分页字串,并把记录指针移到当前页的第一条记录的前面的位置

* 输入:返回的JSP页面,refName 数组为超链接中继 currentPage 之后的参数名,refValue为对应值

* 输出:字符串“共2页,当前第1页 下一页 末页”

*/

public String earn_fenye_string(String returnJSP){

String returnString=new String("")

if(rs==null){

return returnString

}

int pageCount=0 //总页数

int rowCount=0 //rs的总记录条数

if(pageSize<=0){ //每页记录条数不正确

return returnString

}

try {

//------得到记录总条数--------

rs.last()

rowCount=rs.getRow()

rs.beforeFirst()

//------记录指针移位----------

int RecordPosition=(currentPage-1)*pageSize

if(RecordPosition==0){

rs.beforeFirst()

}else{

rs.absolute(RecordPosition)

}

}catch(Exception e){

System.out.println(e)

return returnString

}

//-------得到总页数-----

if(rowCount%pageSize==0){

pageCount=rowCount/pageSize

}else{

pageCount=rowCount/pageSize+1

}

//-------得到返回字符串--------

returnString="共"+pageCount+"页,当前第"+currentPage+"页  "

if(currentPage!=1 &&pageCount!=0){ //不是首页且总页数不为0

returnString=returnString+"<a href='"+returnJSP+"?currentPage=1"

returnString=returnString+"'>首页</a> "

returnString=returnString+"<a href='"+returnJSP+"?currentPage="+(currentPage-1)

returnString=returnString+"'>上一页</a> "

}

if(currentPage!=pageCount&&pageCount!=0){ //不是末页且总页数不等于0

returnString=returnString+"<a href='"+returnJSP+"?currentPage="+(currentPage+1)

returnString=returnString+"'>下一页</a> "

returnString=returnString+"<a href='"+returnJSP+"?currentPage="+pageCount

returnString=returnString+"'>末页</a> "

}

return returnString

}

public ResultSet getRs() {

return rs

}

public void setRs(ResultSet rs) {

this.rs = rs

}

public int getCurrentPage() {

return currentPage

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage

}

public int getPageSize() {

return pageSize

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize

}

}

在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

}

运行效果:


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存