struts+hibernate分页 有这些功能:共有_条记录,_条记录/页,首页,上一页,下一页,尾页,当前_页和 转至_页 GO。上网找了很多,但是没能找到“转至_页”,即使有代码也不好用。网上的文章都是copy的,真叫人郁闷啊~希望哪位大哥帮帮小弟,感激不尽!!~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lz 为什么不自己写呢 又不难 你也太想偷工减料了吧 介意lz去读懂一个分页代码 在自己写吧 关键给你一个,你也需要改。也很费时间。给你个思路。分页sql,是个循环嵌套select tt.* from(select * from ( select * from t rownum<n) tt) rownum>m 然后把在action中定义两个变量m,n 定义一个page类,有上一页,下一页。。 在action中,第一次访问是n假定10,m为0。把数据条数查出来,new page(数据条数),page中计算上一页,下一页,最后页。最后在页面上显示结果。点击下一页,把下一页传过来,转换成m,n,再查数据,展示。 package com.esms.util.page;public class Pager{ private int totalRows; //总行数 private int pageSize; //每页显示的行数 private int currentPage=1; //当前页号 private int totalPages; //总页数 private int startRow=0; //当前页在数据库中的起始行 private int endRow=0; private boolean hasNextPage=false; //是否有下一页 private boolean hasPreviousPage=false; //是否有前一页 private boolean hasFirstPage=true; private boolean hasLastPage=true; public Pager(){ pageSize=20; currentPage=1; startRow=0; endRow=0; } public Pager(int Size){ pageSize=Size; currentPage=1; startRow=0; endRow=0; } public void start(int totalRows){ this.totalRows=totalRows; totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; } } public int getStartRow(){ return startRow; } public int getEndtRow(){ return endRow; } public int getTotalPages(){ return totalPages; } public int getCurrentPage(){ return currentPage; } public int getPageSize(){ return pageSize; } public int getTotalRows(){ return totalRows; } public boolean isHasNextPage(){ return hasNextPage; } public boolean isHasPreviousPage(){ return hasPreviousPage; } public boolean isHasFirstPage(){ return hasFirstPage; } public boolean isHasLastPage(){ return hasLastPage; } public void setTotalRows(int totalRows){ this.totalRows=totalRows; } public void setStartRow(int startRow){ this.startRow=startRow; } public void setEndRow(int endRow){ this.endRow=endRow; } public void setTotalPages(int totalPages){ this.totalPages=totalPages; } public void setCurrentPage(int currentPage){ this.currentPage=currentPage; } public void setPageSize(int pageSize){ this.pageSize=pageSize; } public void setHasNextPage(boolean hasNextPage) { this.hasNextPage = hasNextPage; } public void setHasPreviousPage(boolean hasPreviousPage){ this.hasPreviousPage = hasPreviousPage; } public void setHasFirstPage(boolean hasFirstPage){ this.hasFirstPage = hasFirstPage; } public void setHasLastPage(boolean hasLastPage){ this.hasLastPage = hasLastPage; } public void first(){ currentPage=1; startRow=0; endRow=0; if(totalRows>pageSize){ hasNextPage=true; endRow=pageSize; } else{ hasNextPage=false; endRow=totalRows; } hasPreviousPage=false; } public void previous(){ currentPage--; if (currentPage==0){ currentPage =1; } startRow=(currentPage-1)*pageSize; endRow=0; if(currentPage>=totalPages){ hasNextPage=false; } else{ hasNextPage=true; } if((currentPage-1)>0){ hasPreviousPage=true; } else{ hasPreviousPage=false; } endRow=startRow+pageSize-1; } public void next(){ currentPage++; if(currentPage>=totalPages){ currentPage=totalPages; hasNextPage=false; } startRow=(currentPage-1)*pageSize; if (currentPage>=totalPages){ hasNextPage=false; endRow=totalRows; } else{ hasNextPage=true; endRow=startRow+pageSize-1; } if((currentPage-1)>0){ hasPreviousPage=true; } else{ hasPreviousPage=false; } } public void last(){ currentPage=totalPages; startRow=(currentPage-1)*pageSize; endRow=0; if(totalRows>pageSize){ hasPreviousPage=true; } else{ hasPreviousPage=false; } endRow=totalRows; hasNextPage=false; } public void find(int page){ currentPage=page; startRow=(currentPage-1)*pageSize; endRow=0; if (currentPage>=totalPages){ hasNextPage=false; endRow=totalRows; } else{ hasNextPage=true; endRow=startRow+pageSize-1; } if((currentPage-1)>0){ hasPreviousPage=true; } else{ hasPreviousPage=false; } }}find 方法就是你用来得到 startRow 和 endRow 的也就是你用来接收转到第_页的参数的。 不要说不能用啊。我这里可正用着,主要是下班了,要不然我就给你整出来一个demo 真对不起,我太菜了,有好多地方没有看懂啊!比如comlist = dao.getQueryResult(hql, map, startRow, pageSize);hql和map是什么啊,应该在哪里写啊。还有就是jsp页面的上一页下一页的action.do应该怎么写啊。链接数据库的语句写在哪啊?劳烦您了…… 我晕,那个方法是一个封装好的,用来分页查询的。这个你可以自己写一个类似的方法,不要跟我发给你的一样的。你不是做好了一个能够分页查询的吗?改改不就成了。算了,我再看看,能不能给你整出一个DEMO来。明天给你吧,现在我还在忙。 发了。这是一个完整的工程,导入后需要运行在JDK1.5以上的版本(不然会报错的)。我的这个是1.6的版本。如果你装的是JDK1.5,需在进行如下设置。windows-preference-java-compliler - config project ....--选中这个工程,把它改成和你的机子上的一样的。然后建数据库。你也可以在配置文件里改一下,可以不建的。然后这里面的东西,可以直接进行测试的。浏览器中输入Http://localhost:8080/JavaScript/csdn.do代码里我很少加注释,我的编码习惯不好,不过应该能看得懂的,代码很少。 这位liang_大侠 ,能不能给我发一份啊 谢谢啊 急求啊 [email protected] jsp等待页面的代码怎么写啊? schema求助 在eclipse下启的服务,一改后台代码就自动重启服务,怎么能不让它重启? [求助]有关JSP的select标签用法 对于 java的一个小问题 求解~~~ 两个时间比较的问题. 请教:使用JSP+Tomcat如何连接Oracle数据库? 在线急等,请问那个会做微软公司的下拉菜单。谢谢! struts 标签使用 高兴了,散分,顺便求书 正则表达式匹配 请大家看看这些参数是电信的还是移动的 怎么才能获取能使用的参数
介意lz去读懂一个分页代码 在自己写吧
给你个思路。
分页sql,是个循环嵌套
select tt.* from(
select * from (
select * from t rownum<n
) tt
) rownum>m
然后把在action中定义两个变量m,n
定义一个page类,有上一页,下一页。。
在action中,第一次访问是n假定10,m为0。把数据条数查出来,new page(数据条数),page中计算上一页,下一页,最后页。
最后在页面上显示结果。点击下一页,把下一页传过来,转换成m,n,再查数据,展示。
package com.esms.util.page;public class Pager{
private int totalRows; //总行数
private int pageSize; //每页显示的行数
private int currentPage=1; //当前页号
private int totalPages; //总页数
private int startRow=0; //当前页在数据库中的起始行
private int endRow=0;
private boolean hasNextPage=false; //是否有下一页 private boolean hasPreviousPage=false; //是否有前一页 private boolean hasFirstPage=true;
private boolean hasLastPage=true;
public Pager(){
pageSize=20;
currentPage=1;
startRow=0;
endRow=0;
}
public Pager(int Size){
pageSize=Size;
currentPage=1;
startRow=0;
endRow=0;
}
public void start(int totalRows){
this.totalRows=totalRows;
totalPages=totalRows/pageSize;
int mod=totalRows%pageSize;
if(mod>0){
totalPages++;
}
}
public int getStartRow(){
return startRow;
}
public int getEndtRow(){
return endRow;
}
public int getTotalPages(){
return totalPages;
}
public int getCurrentPage(){
return currentPage;
}
public int getPageSize(){
return pageSize;
}
public int getTotalRows(){
return totalRows;
}
public boolean isHasNextPage(){
return hasNextPage;
}
public boolean isHasPreviousPage(){
return hasPreviousPage;
}
public boolean isHasFirstPage(){
return hasFirstPage;
}
public boolean isHasLastPage(){
return hasLastPage;
}
public void setTotalRows(int totalRows){
this.totalRows=totalRows;
}
public void setStartRow(int startRow){
this.startRow=startRow;
}
public void setEndRow(int endRow){
this.endRow=endRow;
}
public void setTotalPages(int totalPages){
this.totalPages=totalPages;
}
public void setCurrentPage(int currentPage){
this.currentPage=currentPage;
}
public void setPageSize(int pageSize){
this.pageSize=pageSize;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public void setHasPreviousPage(boolean hasPreviousPage){
this.hasPreviousPage = hasPreviousPage;
}
public void setHasFirstPage(boolean hasFirstPage){
this.hasFirstPage = hasFirstPage;
}
public void setHasLastPage(boolean hasLastPage){
this.hasLastPage = hasLastPage;
}
public void first(){
currentPage=1;
startRow=0;
endRow=0;
if(totalRows>pageSize){
hasNextPage=true;
endRow=pageSize;
}
else{
hasNextPage=false;
endRow=totalRows;
}
hasPreviousPage=false;
}
public void previous(){
currentPage--;
if (currentPage==0){
currentPage =1;
}
startRow=(currentPage-1)*pageSize;
endRow=0;
if(currentPage>=totalPages){
hasNextPage=false;
}
else{
hasNextPage=true;
}
if((currentPage-1)>0){
hasPreviousPage=true;
}
else{
hasPreviousPage=false;
}
endRow=startRow+pageSize-1;
}
public void next(){
currentPage++;
if(currentPage>=totalPages){
currentPage=totalPages;
hasNextPage=false;
}
startRow=(currentPage-1)*pageSize;
if (currentPage>=totalPages){
hasNextPage=false;
endRow=totalRows;
}
else{
hasNextPage=true;
endRow=startRow+pageSize-1;
}
if((currentPage-1)>0){
hasPreviousPage=true;
}
else{
hasPreviousPage=false;
}
}
public void last(){
currentPage=totalPages;
startRow=(currentPage-1)*pageSize;
endRow=0;
if(totalRows>pageSize){
hasPreviousPage=true;
}
else{
hasPreviousPage=false;
}
endRow=totalRows;
hasNextPage=false;
}
public void find(int page){
currentPage=page;
startRow=(currentPage-1)*pageSize;
endRow=0;
if (currentPage>=totalPages){
hasNextPage=false;
endRow=totalRows;
}
else{
hasNextPage=true;
endRow=startRow+pageSize-1;
}
if((currentPage-1)>0){
hasPreviousPage=true;
}
else{
hasPreviousPage=false;
}
}
}
find 方法就是你用来得到 startRow 和 endRow 的
也就是你用来接收转到第_页的参数的。
比如comlist = dao.getQueryResult(hql, map, startRow, pageSize);hql和map是什么啊,应该在哪里写啊。
还有就是jsp页面的上一页下一页的action.do应该怎么写啊。链接数据库的语句写在哪啊?
劳烦您了……
这个你可以自己写一个类似的方法,不要跟我发给你的一样的。
你不是做好了一个能够分页查询的吗?
改改不就成了。
算了,我再看看,能不能给你整出一个DEMO来。
明天给你吧,现在我还在忙。
这是一个完整的工程,导入后需要运行在JDK1.5以上的版本(不然会报错的)。我的这个是1.6的版本。
如果你装的是JDK1.5,需在进行如下设置。
windows-preference-java-compliler - config project ....--选中这个工程,把它改成和你的机子上的一样的。
然后建数据库。
你也可以在配置文件里改一下,可以不建的。
然后这里面的东西,可以直接进行测试的。
浏览器中输入Http://localhost:8080/JavaScript/csdn.do
代码里我很少加注释,我的编码习惯不好,不过应该能看得懂的,代码很少。