怎么把分页程序放到javabean或是标签来实现,每次只是调用就行。

freemao 2004-09-07 03:39:55
怎么把分页程序放到javabean或是标签来实现,每次只是调用就行。
...全文
246 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
baffling 2004-11-02
gz
回复
Ronanljy 2004-09-08
不好意思记错了,应该是"共几页、每页几项、当前第几页",出来就是一个页面显示的html代码的字符串。

To:liuyb94242() 我的方法比较粗,但是已经够用了。每次都要查数据库,查出所有数据。

这里是可以得到总记录条数的语句:
ResultSet rs = stmt.executeQuery(query);
rs.last();
int result = rs.getRow();
除一下就是总页数。

数据库操作:
ResultSet rs = stmt.executeQuery(query);
int index = (page - 1) * pageSize;
if (index > 0)
{
rs.absolute(index);
}
for (int i = 0; i < pageSize && rs.next(); i++)
{
封装到Vector;
}
rs.close();
回复
jfy3d 2004-09-07
package com;

import conn.DBConnManager;
import java.sql.*;
import java.util.*;

public class ResultGatherPro
{
String sql;
int intPageSize; //每页行数
public int intRowCount;
int intPageCount;
int intPage; //页号
String Counter;

public ResultGatherPro(String sqlcom,int rownum,int pagenum,String counter)
{
sql=sqlcom;
intPageSize = rownum;
intPage = pagenum;
Counter = counter;
}
public List selectRS()
{
List rsall = new ArrayList();
Map rsTree;
try{
DBConnManager conn = new DBConnManager();
Connection con = conn.getConnection("mssql");
Statement st = con.createStatement();
ResultSet rsc=st.executeQuery(Counter);
while(rsc.next())
{
intRowCount=rsc.getInt("allrow");
}
rsc.close();
st.close();
CallableStatement stmt = con.prepareCall("{call p_show(\""+sql+"\","+intPageSize+","+intPage+")}");
ResultSet rs = stmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
Object[] aa = new Object[numberOfColumns-1];
intPageCount = (intRowCount+intPageSize-1)/intPageSize;
while(rs.next())
{
rsTree = new HashMap(numberOfColumns);
for(int r=1;r<numberOfColumns+1;r++)
{
rsTree.put(rsmd.getColumnName(r),rs.getObject(r));
}
rsall.add(rsTree);
}
rs.close();
stmt.close();
conn.releaseConnection("mssql",con);
}catch(java.lang.Exception ex){
ex.printStackTrace();
}
return rsall;
}
public String ChangePage(String pagename,String url)
{
String urlchange=null;
if(intPage>1 && intPage<intPageCount)
{
urlchange="<a href="+pagename+"?pagenum="+(intPage-1)+url+">上一页</a><a href="+pagename+"?pagenum="+(intPage+1)+url+"> 下一页</a> 第"+intPage+"页 共"+intPageCount+"页 共"+intRowCount+"条";
}else if(intPage==1 && intRowCount<=intPageSize){
urlchange="上一页 下一页 第"+intPage+"页 共"+intPageCount+"页 共"+intRowCount+"条";
}else if(intPage==intPageCount && intPage!=1){
urlchange="<a href="+pagename+"?pagenum="+(intPage-1)+url+">上一页</a> 下一页 第"+intPage+"页 共"+intPageCount+"页 共"+intRowCount+"条";
}else if(intPage==1 && intRowCount>=intPageSize){
urlchange="上一页 <a href="+pagename+"?pagenum="+(intPage+1)+url+"> 下一页</a> 第"+intPage+"页 共"+intPageCount+"页 共"+intRowCount+"条";
}
return urlchange;
}
}

自己写的
回复
sunboyyq 2004-09-07
分页是比较麻烦的,多学习javabean吧,偶也关注。
回复
tangbow 2004-09-07
研究一下struts 的分页方式
回复
liuyb94242 2004-09-07
to Ronanljy(心灵风暴)
你之前查询数据库时把所有的结果查出来了保存起来吗,
每次翻页时都要调用后台这个类,每次用不用查数据库?
回复
a_tong 2004-09-07
public class ChangePageDAO {
private static ChangePageDAO _self;
public static ChangePageDAO getInstance() {
if (_self == null) {
_self = new ChangePageDAO();
}
return _self;
}

public ChangePage getChangePageInfo(int pageIndex, int type, int rowCount,int allCount) {
ChangePage changePage = null;
int maxPage=allCount/rowCount;
if (pageIndex >= 0 && type >= 0 && rowCount >= 0) {
changePage=new ChangePage();
changePage.setMaxPage(maxPage);
if(allCount % rowCount==0&&allCount>0){
maxPage=maxPage-1;
}
switch (type) {
case 1:
changePage.setPageIndex(0);
changePage.setStart(0);
changePage.setEnd(rowCount);
changePage.setFirstStatus(false);
changePage.setForwardSatus(false);
pageIndex=0;
if(pageIndex==maxPage){
changePage.setNextStatus(false);
}
else{
changePage.setNextStatus(true);
}
if(pageIndex==maxPage){
changePage.setLastStatus(false);
}
else{
changePage.setLastStatus(true);
}
break;
case 2:
if(pageIndex>0){
pageIndex=pageIndex-1;
}
changePage.setPageIndex(pageIndex);
changePage.setStart(pageIndex*rowCount);
changePage.setEnd(changePage.getStart()+rowCount);
if(pageIndex==0){
changePage.setFirstStatus(false);
}
else{
changePage.setFirstStatus(true);
}
if(pageIndex==0){
changePage.setForwardSatus(false);
}
else{
changePage.setForwardSatus(true);
}
if(pageIndex==maxPage){
changePage.setNextStatus(false);
}
else{
changePage.setNextStatus(true);
}
if(pageIndex==maxPage){
changePage.setLastStatus(false);
}
else{
changePage.setLastStatus(true);
}
break;
case 3:
if(pageIndex>=0&&pageIndex<maxPage){
pageIndex=pageIndex+1;
}
changePage.setPageIndex(pageIndex);
changePage.setStart(pageIndex*rowCount);
changePage.setEnd(changePage.getStart()+rowCount);
if(changePage.getEnd()>allCount){
changePage.setEnd(allCount);
}
if(pageIndex==0){
changePage.setFirstStatus(false);
}
else{
changePage.setFirstStatus(true);
}
if(pageIndex==0){
changePage.setForwardSatus(false);
}
else{
changePage.setForwardSatus(true);
}

if(pageIndex==maxPage){
changePage.setNextStatus(false);
}
else{
changePage.setNextStatus(true);
}
if(pageIndex==maxPage){
changePage.setLastStatus(false);
}
else{
changePage.setLastStatus(true);
}
break;

case 4:
changePage.setPageIndex(maxPage);
changePage.setStart(maxPage*rowCount);
changePage.setEnd(allCount);
pageIndex=maxPage;
if(pageIndex==0){
changePage.setFirstStatus(false);
}
else{
changePage.setFirstStatus(true);
}
if(pageIndex==0){
changePage.setForwardSatus(false);
}
else{
changePage.setForwardSatus(true);
}
changePage.setNextStatus(false);
changePage.setLastStatus(false);
break;
case 5:
changePage.setPageIndex(0);
changePage.setStart(0);
changePage.setEnd(allCount);
changePage.setFirstStatus(false);
changePage.setForwardSatus(false);
changePage.setNextStatus(false);
changePage.setLastStatus(false);
changePage.setAllView(false);
break;
case 6:
changePage.setPageIndex(pageIndex);
changePage.setStart(pageIndex*rowCount);
changePage.setEnd(changePage.getStart()+rowCount);
if(changePage.getEnd()>allCount){
changePage.setEnd(allCount);
}
if(pageIndex==0){
changePage.setFirstStatus(false);
}
else{
changePage.setFirstStatus(true);
}
if(pageIndex==0){
changePage.setForwardSatus(false);
}
else{
changePage.setForwardSatus(true);
}
if(pageIndex==maxPage){
changePage.setNextStatus(false);
}
else{
changePage.setNextStatus(true);
}
if(pageIndex==maxPage){
changePage.setLastStatus(false);
}
else{
changePage.setLastStatus(true);
}
break;
default:
changePage.setPageIndex(0);
changePage.setStart(0);
changePage.setEnd(rowCount);
if(changePage.getEnd()>allCount){
changePage.setEnd(allCount);
}
changePage.setFirstStatus(false);
changePage.setForwardSatus(false);
if(pageIndex==maxPage){
changePage.setNextStatus(false);
}
else{
changePage.setNextStatus(true);
}
if(pageIndex==maxPage){
changePage.setLastStatus(false);
}
else{
changePage.setLastStatus(true);
}
break;
}
}
return changePage;
}

這兩個類,
回复
a_tong 2004-09-07
給分
public class ChangePage {
private int pageIndex = 0;
private int viewType = 0;
private boolean firstStatus = false;
private boolean forwardSatus = false;
private boolean nextStatus = false;
private boolean lastStatus = false;
private boolean allView = true;
private int start=0;
private int end=0;
private int maxPage=0;

public void ChangePage() {

}

public int getPageIndex() {
return pageIndex;
}

public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}

public int getViewType() {
return viewType;
}

public void setViewType(int viewType) {
this.viewType = viewType;
}

public boolean isFirstStatus() {
return firstStatus;
}

public void setFirstStatus(boolean firstStatus) {
this.firstStatus = firstStatus;
}

public boolean isForwardSatus() {
return forwardSatus;
}

public void setForwardSatus(boolean forwardSatus) {
this.forwardSatus = forwardSatus;
}

public boolean isNextStatus() {
return nextStatus;
}

public void setNextStatus(boolean nextStatus) {
this.nextStatus = nextStatus;
}

public boolean isLastStatus() {
return lastStatus;
}

public void setLastStatus(boolean lastStatus) {
this.lastStatus = lastStatus;
}

public boolean isAllView() {
return allView;
}

public void setAllView(boolean allView) {
this.allView = allView;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getMaxPage() {
return maxPage;
}
public void setMaxPage(int maxPage) {
this.maxPage = maxPage;
}
}


回复
Ronanljy 2004-09-07
你把分页在后台封装起来,传三个参数进去:共几条记录、每页几项、当前第几页,传出的是一个字符串,在页面上显示出来为分页的内容。(当然查询数据库要在这之前另外做)

不知道说得清楚不?我们公司就是这样分页的。
回复
wangnewton 2004-09-07
直接写一个公用的类(javabean)

到时直接调用就可以了

至于如何写javabean,一句两句也说不清楚,可以参考相关书籍看看
如何使用标签,这个偶正在研究中,有点底子之后欧会发文的
赫赫
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-07 03:39
社区公告
暂无公告