java中如何实现百度中的分页
发布网友
发布时间:2022-04-29 20:11
我来回答
共6个回答
热心网友
时间:2022-04-13 14:45
/**
* 分页代码
*
* @author Star
* @version 1.0 2008/07/08
*/
public class CutPage implements Serializable{
private static Log log = LogFactory.getLog(CutPage.class);
private int curPageNo = 0; // 当前页数,从0开始
private int size = 0; // 所有数据条数
private String url; // 页面跳转的路径
private List showList; // 当前页面需要显示的数据列表
private int pageSize = 20;// 每页显示的数据条数
private int groupSize = 1;// 多少页为一组
private String pageNavigation;// 导航条
/**
* 每次通过sql语句从数据库里面分组取出需要显示的数据
*
* @param request
* javax.servlet.http.HttpServletRequest对象
* @param sql
* String 查询数据库的sql语句
* @param pageSize
* int 每页显示的条数
* @param groupSize
* int 分成多少组
* @param url
* String 页面跳转的路径,若没有特殊的参数传递,可以传入null或"",
* 如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径
*/
public void init(HttpServletRequest request, String sql, int pageSize,
int groupSize, int pageNo, String url) {
// 上一页、下一页跳转路径
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;
}
int curGroup = 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);
List list = 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语句从数据库里面分组取出需要显示的数据
*
* @param request
* javax.servlet.http.HttpServletRequest对象
* @param sql
* String 查询数据库的sql语句
* @param pageSize
* int 每页显示的条数
* @param groupSize
* int 分成多少组
* @param url
* String 页面跳转的路径,若没有特殊的参数传递,可以传入null或"",
* 如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径
*/
public void init(HttpServletRequest request, String sql, int pageSize,
int groupSize, String url) {
// 当前第几页
String curPage = request.getParameter("pageNo");
init(request, sql, pageSize, groupSize, parseInt(curPage, -1), url);
}
/**
* 每次通过sql语句从数据库里面分组取出需要显示的数据
*
* @param request
* javax.servlet.http.HttpServletRequest对象
* @param sql
* String 查询数据库的sql语句
* @param pageSize
* int 每页显示的条数
* @param groupSize
* int 分成多少组
* @param url
* String 页面跳转的路径,若没有特殊的参数传递,可以传入null或"",
* 如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径
*/
public void init(HttpServletRequest request, String sql, int pageSize,
int groupSize, int pageNo) {
init(request, sql, pageSize, groupSize, pageNo, "");
}
太多了,贴不下,见附件
热心网友
时间:2022-04-13 16:03
1. 前台JS使用的分页代码如下:
2. jsp是servlet代码,就是java,代码见附件。
<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<style type="text/css">
.on {
color: red
}
.off {
color: black
}
body {
font-family: "Courier New"
}
ul li {
color: red
}
</style>
<script type="text/javascript">
window.onload = function() {
Page.arr = Page.pushArr();
Page.setClickPageNum();
Page.allContent("null");
}
var Page = {
defaultPerPageNum: 4,
arr: null,
removedBlankStr: function(str) {
var regex = /^\s*|\s*$/g;
return str.replace(regex, "");
},
setTotalPageNums: function() {
var pp = Number(Page.perPageNum('t1'));
var pnums = Page.arr.length / pp > parseInt(Page.arr.length / pp) ? parseInt(Page.arr.length / pp) + 1 : Page.arr.length / pp;
var div = document.getElementById('pagenum');
div.innerHTML = "";
for (var i = 0; i < pnums; i++) {
var a = document.createElement('a');
a.href = "#";
a.innerHTML = i + 1;
a.setAttribute('class', 'off');
div.appendChild(a);
div.innerHTML += " ";
}
Page.setClickPageNum();
},
perPageNum: function(PerPageNum) {
var pv = document.getElementById(PerPageNum).value;
pv = Page.removedBlankStr(pv);
if ("" == pv || isNaN(pv) || (new RegExp(/^[-]*[0]+.*?$/g).test(pv)) || pv < 0) {
pv = Page.defaultPerPageNum;
document.getElementById(PerPageNum).value = pv;
}
document.getElementById('p1').innerHTML = pv;
return pv;
},
getClickPageNum: function(diva) {
return parseFloat(diva.innerHTML);
},
setClickPageNum: function() {
var divx = document.getElementById('pagenum');
var a = divx.children;
var len = a.length;
for (var i = 0; i < len; i++) {
a[i].onclick = function() {
this.className = "on";
Page.allContent(this);
};
}
},
pushArr: function() {
var arr = new Array();
var ul = document.getElementById('ul1');
var len = ul.children.length;
for (var i = 0; i < len; i++) {
arr.push(ul.children[i]);
}
return arr;
},
allContent: function(divb) {
var ul = document.getElementById('ul1');
ul.innerHTML = "";
var pp = parseFloat(this.perPageNum('t1'));
if ("null" == divb) {
divb = document.getElementById('pagenum').children[0];
divb.className = "on";
}
var pg = this.getClickPageNum(divb); // 1 2 3
var ppj = pp * (pg - 1); // 0 4 8
var end = ppj + pp; // 4 8 12
var arr = this.arr;
var pnums = arr.length / pp > parseInt(arr.length / pp) ? parseInt(arr.length / pp) + 1 : arr.length / pp;
for (var i = ppj; i < end; i++) {
var a = arr[i];
if (null != a) {
ul.appendChild(a);
}
}
},
doAction: function() {
Page.perPageNum('t1');
Page.setTotalPageNums();
Page.allContent("null");
}
};
</script>
</HEAD>
<BODY>
<div id='content'>
<ul id="ul1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
<div id="pagenum"><a href="#" class="on">1</a> <a href="#">2</a> <a href="#">3</a>
</div>
<input type="text" value="4" id="t1" />
<input type="button" value="set" onclick="Page.doAction();" /> Each Page
<a id="p1"></a>Records</div>
</BODY>
</HTML>
热心网友
时间:2022-04-13 17:38
java中实现分页本质就是你在数据库查询的时候,获取出该页的数据,然后呈现到前台,首先你需要一下这几个变量:
int PageNow;//当前页码
int PageNum;//一共有多少页
int PageSize;//一页共有多少记录
获取到这些值以后,在数据库中查找;
Select top PageSize * from 数据库名
where not in (Select top (PageNow-1)*PageSize * from 数据库名)
即可取出你现在要查询的当前页的那些内容。
热心网友
时间:2022-04-13 19:29
百度中的分页具体说什么。一般网页数据分页有两种方式。
利用编写分页类pagebean,设置分页的总页码,当前页,页号,数据集合等,简单来说就是:
首先在数据库中查询所需要的数据的数目,然后除以设定的每页条数得到总页数,然后 在首页显示前几条(第一页),想要跳转到下一页或者第n页时,则需要通过java类来 选定数据集的某一页(n)的第一个数据,进行第n页的显示,同时将当前第几页传回后 台,方便下一次页面选定,操作比较复杂。
2. 利用网页插件,比如ext,easyui,等等。利用这些工具。比如利用ext中,可以在页 面 中工具设计好的数据集显示的plane中设置参数pagesize。不但前台页面美观,而且分 页方便。不过需要对该工具有一定了解。
热心网友
时间:2022-04-13 21:37
通过SQL批量查询数据!
热心网友
时间:2022-04-14 00:02
不懂你说的什么意思