java分页代码
㈠ java分页
分页想清楚了就没什么难的了。一般有两种(我就知道两种):
1.数据库分页:
/**
* @param pageItems:一页显示条数 currentPage:当前第几页
* @autor godelegant
*/
public List findAll(int pageItems,int currentPage){
StringBuffer sqlStr = new StringBuffer("select * from Proct limit ?,?");
...
...
int startIndex = (currentPage-1)*pageItems;);//(currentPage-1)*pageItems能过当前页和页面记录数得到应该从哪条开始取
int endIndex = startIndex+pageItems;
db.getPstmt().setInt(1,startIndex);
db.getPstmt().setInt(2,endIndex);
ResultSet rs = db.getPstmt().executQuery();//假设你已经得到了数据库连接
//以上为MYSQL的JDBC分页,下面是ORALCE的,差别只在于SQL,所以你换一下SQL就OK:
StringBuffer sqlStr = new StringBuffer("select *,rownum rn from (select * from Proct) where rn <=? and rownum >=?");
}
求总页数的方法很简单,查出所有记录数,除一页显示数。就可以得到
以上是JDBC的,如果使用hibernate等,数据库分页将会变得很简单,只需要设置两个参数,就是从哪取和取多少。
2.代码分页
思路是将数据库中的所有记录都取出来,然后再分页。
/**
* @para items:数据库中的所有记录,你可以使用另一个方法得到,如何查询得到我就不用说了吧
* @autor godelegant
*/
public List findAll(List items,int pageItems,int currentPage){
int startIndex = (currentPage-1)*pageItems;//从哪里开始取
int offset = items.size()-startIndex;//还有多少没有取过
int pageCount = offset>pageItems?pageItems:offset;//如果没有取过的大于需要显示的数,则实现显示数pageCount=pageItems,反之然;
List<Proct> pageList = new ArrayList();
for(int i=startIndex,i<startIndex+pageCount,i++){
pageList.add(items.get(i));
}
return pageList;
}
写了40分钟,希望对你有用
㈡ 怎样用java实现分页显示
实现原理很简单,就是建立一个Page类,里面放当前访问的页数码迟和每一页显示的记录行数。然后通过分页计算就可以得出下列数据。
总页数 = 总记录数/每页大小陪敬,如果0!=总记录数%每页大小,那么总页数再+1。
当前页数。
表记录的起始位置=(当前页数-1)*每页大小。
总记录数(select count(*) from [表名] [where [条件]]。从数据库中查询得到)
每页大小,可以固定,也可以从页面传过来有了这几个参数之后,就用sql语句查出对应的记录就可以了。
㈢ JAVA项目中的真分页与假分页的代码怎么写~
真分页:每次从数据历穗库里按照排序方法,取一段数据,比如每页20条,第一页就是1-20 ,第二页就是21-40。它是每次都从数据库里查询。都是最新的。假分页:一次从数据库里得到很多页的数据,然后缓存起来。比如每页20条,一次取了100条,缓存起来。第一页依然是1-20 ,第二页就是21-40。到第6页的时候,再从数据库里取101-200条,在缓存起来。只不过,取数据的时候不是从数据库里取了,而是在缓存里取。但是简烂轿这个数据有可能不是最新的,因为不是直接从数据库里查询的。这种多拦肆用在更新不多的数据上。
㈣ 如何用java实现分页效果(eclipse工具)
package dl.wsxx.base;
public class Pager {
private int totalRows; // 总行数
private int pageSize; // 每页显示的行数
private int currentPage; // 当前页号
private int totalPages; // 总页数
private int startRow; // 当前页在数据库中的起始行
private int pageStartRow; // 当前页开始行
private int pageEndRow; // 当前页结束行
private int hasNextPage; // 下一页存在标识[0:不存在,1:存在]
private int hasPreviousPage; // 前一页存在标识[0:不存在,1:存在]
public Pager() {
}
public Pager(int _totalRows,int _pageSize) {
pageSize = _pageSize;
totalRows = _totalRows;
totalPages = totalRows / pageSize;
int mod = totalRows % pageSize;
if (mod > 0) {
totalPages++;
}
currentPage = 1;
startRow = 0;
}
public int getStartRow() {
return startRow;
}
public int getpageStartRow() {
return pageStartRow;
}
public int getpageEndRow() {
return pageEndRow;
}
public int getTotalPages() {
return totalPages;
}
public int getCurrentPage() {
return currentPage;
}
public int getPageSize() {
return pageSize;
}
public int getHasNextPage() {
return hasNextPage;
}
public int getHasPreviousPage() {
return hasPreviousPage;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public void setPageEndRow(int pageEndRow) {
this.pageEndRow = pageEndRow;
}
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(int hasNextPage) {
this.hasNextPage = hasNextPage;
}
public void setHasPreviousPage(int hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public int getTotalRows() {
return totalRows;
}
public void first() {
currentPage = 1;
startRow = 0;
pageStartRow = startRow + 1;
this.hasFlagSet(currentPage, totalPages);
if (this.hasNextPage == 0) {
pageEndRow = totalRows;
} else {
pageEndRow = startRow + pageSize;
}
}
public void previous() {
if (currentPage == 1) {
return;
}
currentPage--;
startRow = (currentPage - 1) * pageSize;
pageStartRow = startRow + 1;
this.hasFlagSet(currentPage, totalPages);
if (this.hasNextPage == 0) {
pageEndRow = totalRows;
} else {
pageEndRow = startRow + pageSize;
}
}
public void next() {
if (currentPage < totalPages) {
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
pageStartRow = startRow + 1;
this.hasFlagSet(currentPage, totalPages);
if (this.hasNextPage == 0) {
pageEndRow = totalRows;
} else {
pageEndRow = startRow + pageSize;
}
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
pageStartRow = startRow + 1;
this.hasFlagSet(currentPage, totalPages);
if (this.hasNextPage == 0) {
pageEndRow = totalRows;
} else {
pageEndRow = startRow + pageSize;
}
}
public void refresh(int _currentPage) {
currentPage = _currentPage;
if (currentPage > totalPages) {
last();
}
this.hasFlagSet(currentPage, totalPages);
}
private void hasFlagSet(int currentPage, int totalPages) {
if (currentPage == totalPages) {
if (currentPage == 1) {
this.hasPreviousPage = 0;
this.hasNextPage = 0;
} else {
this.hasPreviousPage = 1;
this.hasNextPage = 0;
}
} else {
if (currentPage == 1) {
this.hasPreviousPage = 0;
this.hasNextPage = 1;
} else {
this.hasPreviousPage = 1;
this.hasNextPage = 1;
}
}
}
}
这是我的工程里的分页核心代码,希望对你有用,还有ssh分页文档,可以参照研究一下。
㈤ java分页显示代码,在页面有每页显示的条数pageSize和当前页pageNow两个参数要传递
<a href="PagingServlet?pageNow=${pageNows}-1&pageSize=
$(‘a’).click(function(){
var b="$("input").val();
return b;
});
">扰老漏上一页</a>,此处的a代表超链接,inut代表你的那个输入框含困,你最好给他们加上ID,然后代缓烂替掉他们
㈥ 在Java中,用三元运算符实现分页功能
实现原理很简单,就是建立一个Page类,里面放当前访问的页数(这个是从客户浏览器传到后台的数据,所以你的分页需要用它来定位记录的条目)和每一页显示的记录行数。然后通过分页计算就可以得出下列数据。
(假定你的页数从1开始)
1、总页数 = 总记录数/每页大小,如果0!=总记录数%每页大小,那么总页数再+1
2、当前页数(从浏览器传递的参数中获得)
3、表记录的起始位置=(当前页数-1)*每页大小
4、总记录数(select count(*) from [表名] [where [条件]],从数据库中查询得到)
5、每页大小,可以固定,也可以从页面传过来
有了这几个参数之后,就用sql语句查出对应的记录就可以了。
mysql数据库用limit 表记录的起始位置,每页大小 语句添加到你的查询语句最后面
sqlserver数据库用top语句和not in 来做
oracle数据库用rownum来做
再给你一段分页对象代码,你自己先读一下
<pre t="code" l="java">public class Page {
private long totalCount = 0;// 总记录数
private int pageNumber = 1;// 当前页号,默认显示第一页
private int pageSize = 20; // 每页大小,默认每页20条
private int totalPage = 0;// 总页数,默认为0
private int startRow = 0;// 起始记录行号,默认为从表头开始
/**
* 分页计算方法,由setTotalCount调用
*/
public void pagination() {
// 计算总页数
if (this.totalCount % pageSize == 0)
this.totalPage = new Long(this.totalCount / pageSize).intValue();
else
this.totalPage = new Long(this.totalCount / pageSize).intValue() + 1;
// 排除错误页号
if (this.pageNumber < 1)
this.pageNumber = 1;
if (this.pageNumber > this.totalPage)
this.pageNumber = this.totalPage;
// 计算起始行号
this.startRow = (this.pageNumber - 1) * this.pageSize;
}
public long getTotalCount() {
return totalCount;
}
public void setTotalCount(long totalCount) {
this.totalCount = totalCount;
this.pagination();
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getStartRow() {
return startRow;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
}
㈦ 谁能给我个完整的java 分页代码 谢谢了
分页思想应该就是当前页面信息(包括当前页,页大小)和后台恰当数据(可能是要求上一页、下一页等)索取,页面主要由JS控制。当然对于后台数据索取方式不同可能对性能、效果带来不同的结果
㈧ java 如何分页
分页你需要定义4个变量,信息总条数allCount,每页的信息条数pageSize,当告枯前页curPage,总页数allPageCount,利用这4个变量即可以分页;
总页数allPageCount的算法allPageCount=(allCount-1)/pageSize+1;
然后再写分页的逻辑,首页即当前页为1,上一页下一页,末页即樱银curPage=allPageSize,写上一页下一页脊友宴的时候只要判断一下当前页与总页数的关系既可
总体思路是这样的,当然从数据库取出数据的时候要找出当前页面显示的信息
㈨ java 怎么分页
通过rs.next()进行分页,首先用rs.absolute(0)定位到某条记录。然后循环取数例如:1-10 可以for(int i=0;i<10;i++){rs.next()}
㈩ java中如何实现百度中的分页
/**
*分页代码
*
*@authorStar
*@version1.02008/07/08
*/
{
privatestaticLoglog=LogFactory.getLog(CutPage.class);
privateintcurPageNo=0;//当前页数,从0开始
privateintsize=0;//所有数据条数
privateStringurl;//页面跳转的路径
privateListshowList;//当前页面需要显示的数据列表
privateintpageSize=20;//每页显示的数据条数
privateintgroupSize=1;//多少页为一组
privateStringpageNavigation;//导航条
/**
*每次通过sql语句从数据库里面分组取出需要显示的数据
*
*@paramrequest
*javax.servlet.http.HttpServletRequest对象
*@paramsql
*String查询数据库的sql语句
*@parampageSize
*int每页显示的条数
*@paramgroupSize
*int分成多少组
*@paramurl
*String页面跳转的路径,若没有特殊的参数传递,可以传入null或"",
*如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径
*/
publicvoidinit(HttpServletRequestrequest,Stringsql,intpageSize,
intgroupSize,intpageNo,Stringurl){
//上一页、下一页跳转路径
if(url!=null){
this.url=url;
}else{
this.url=request.getRequestURL()+"";
}
if(pageSize>0)
this.pageSize=pageSize;//每页多少条记录
if(groupSize>0)
this.groupSize=groupSize;
//当前第几页
if(pageNo<0){
this.curPageNo=0;
}else{
this.curPageNo=pageNo;
}
intcurGroup=this.curPageNo/this.groupSize+1;
//是否是新的一组数据,如果是则到数据库取数据
this.size=parseInt(request.getSession().getAttribute("page_all_size")
+"",0);
if(this.curPageNo%this.groupSize==0
||(request.getSession().getAttribute("cur_group")!=null&&parseInt(
""+request.getSession().getAttribute("cur_group"),1)!=curGroup)
||this.size==0||request.getParameter("reload")!=null){
request.getSession().setAttribute("cur_group",curGroup);
if(pageNo>0
&&request.getSession().getAttribute("page_sql")!=null){
sql=request.getSession().getAttribute("page_sql")+"";
}else{
request.getSession().setAttribute("page_sql",sql);
}
this.size=getTotalCount(sql);
Listlist=getPageData(sql,(this.curPageNo/this.groupSize)
*this.pageSize*this.groupSize,this.pageSize
*this.groupSize);
request.getSession().setAttribute("page_all_size",this.size);
request.getSession().setAttribute("page_cur_list",list);
this.setShowList(list);//设置页面上的显示数据
}else{
this.setShowList((List)request.getSession().getAttribute(
"page_cur_list"));//设置页面上的显示数据
}
}
/**
*每次通过sql语句从数据库里面分组取出需要显示的数据
*
*@paramrequest
*javax.servlet.http.HttpServletRequest对象
*@paramsql
*String查询数据库的sql语句
*@parampageSize
*int每页显示的条数
*@paramgroupSize
*int分成多少组
*@paramurl
*String页面跳转的路径,若没有特殊的参数传递,可以传入null或"",
*如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径
*/
publicvoidinit(HttpServletRequestrequest,Stringsql,intpageSize,
intgroupSize,Stringurl){
//当前第几页
StringcurPage=request.getParameter("pageNo");
init(request,sql,pageSize,groupSize,parseInt(curPage,-1),url);
}
/**
*每次通过sql语句从数据库里面分组取出需要显示的数据
*
*@paramrequest
*javax.servlet.http.HttpServletRequest对象
*@paramsql
*String查询数据库的sql语句
*@parampageSize
*int每页显示的条数
*@paramgroupSize
*int分成多少组
*@paramurl
*String页面跳转的路径,若没有特殊的参数传递,可以传入null或"",
*如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径
*/
publicvoidinit(HttpServletRequestrequest,Stringsql,intpageSize,
intgroupSize,intpageNo){
init(request,sql,pageSize,groupSize,pageNo,"");
}
太多了,贴不下,见附件