package page;
import java.util.List;
import java.util.Vector;
public class Pagination {
private int sumPageNumber;
private int sumItemNumber;
private int pageNumber;
private int showItemNumber;
private String visitPageURL;
private String pageHTML;
public List interceptListByStarItemNumber(List itemList) {
int startItem = (pageNumber-1)*showItemNumber;
List tpItemList = new Vector();
if (itemList == null) {
return null;
}
sumItemNumber=itemList.size();
if(sumItemNumber%showItemNumber==0){
sumPageNumber =sumItemNumber/showItemNumber;
}else{
sumPageNumber =sumItemNumber/showItemNumber+1;
}
for (int i = 0; i < itemList.size(); i++) {
// 不要超过截取的最大条数,
if ((i) == (startItem + showItemNumber)) {
break;
}
// 当循环到开始条数的时候,将对象添加到新的列表里面。
if ((i) >= startItem) {
tpItemList.add(itemList.get(i));
}
}
return tpItemList;
}
public String buildHTML(String tWidth) {
String tableWidth=tWidth;
String visitFirstPageURL="";
String visitNextPageURL="";
String visitPreviousURL="";
String visitEndURL="";
visitPageURL=visitPageURL+"&showItemNumber="+showItemNumber+"&pageNumber=";
if(pageNumber==1){
visitFirstPageURL="[首页] ";
visitPreviousURL="[上一页] ";
}else{
visitFirstPageURL="<a href='"+visitPageURL+"1'>[首页]</a> ";
visitPreviousURL="<A href='"+visitPageURL+(pageNumber-1)+"'>[上一页]</A> ";
}
if(pageNumber==sumPageNumber){
visitNextPageURL="[下一页] ";
visitEndURL="[尾页] ";
}else{
visitNextPageURL="<a href='"+visitPageURL+(pageNumber+1)+"'>[下一页]</a> ";
visitEndURL="<a href='"+visitPageURL+sumPageNumber+"'>[尾页]</a>";
}
StringBuffer sb = new StringBuffer();
sb.append("<table width="+tableWidth);
sb.append("><tr><td align=right>");
sb.append("当前是第["+pageNumber+"]页 ");
sb.append("共["+sumPageNumber+"]页 "+"共["+sumItemNumber+"]条 ");
sb.append(visitFirstPageURL);
sb.append(visitPreviousURL);
sb.append(visitNextPageURL);
sb.append(visitEndURL);
sb.append("</td> </tr></table>");
return sb.toString();
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getShowItemNumber() {
return showItemNumber;
}
public void setShowItemNumber(int showItemNumber) {
this.showItemNumber = showItemNumber;
}
public int getSumItemNumber() {
return sumItemNumber;
}
public int getSumPageNumber() {
return sumPageNumber;
}
public String getVisitPageURL() {
return visitPageURL;
}
public void setVisitPageURL(String visitPageURL) {
this.visitPageURL = visitPageURL;
}
public String getPageHTML() {
return pageHTML;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
lucene查询结果集分页代码
共3个文件
jsp:1个
java:1个
html:1个
5星 · 超过95%的资源 需积分: 28 247 下载量 167 浏览量
2008-12-14
20:26:37
上传
评论 1
收藏 3KB ZIP 举报
温馨提示
在lucene搜索分页过程中,可以有两种方式 一种是将搜索结果集直接放到session中,但是假如结果集非常大,同时又存在大并发访问的时候,很可能造成服务器的内存不足,而使服务器宕机 还有一种是每次都重新进行搜索,这样虽然避免了内存溢出的可能,但是,每次搜索都要进行一次IO操作,如果大并发访问的时候,你要保证你的硬盘的转速足够的快,还要保证你的cpu有足够高的频率 而我们可以将这两种方式结合下,每次查询都多缓存一部分的结果集,翻页的时候看看所查询的内容是不是在已经存在在缓存当中,如果已经存在了就直接拿出来,如果不存在,就进行查询后,从缓存中读出来. 比如:现在我们有一个搜索结果集 一个有100条数据,每页显示10条,就有10页数据. 安装第一种的思路就是,我直接把这100条数据缓存起来,每次翻页时从缓存种读取 而第二种思路就是,我直接从搜索到的结果集种显示前十条给第一页显示,第二页的时候,我在查询一次,给出10-20条数据给第二页显示,我每次翻页都要重新查询 第三种思路就变成了 我第一页仅需要10条数据,但是我一次读出来50条数据,把这50条数据放入到缓存当中,当我需要10--20之间的数据的时候,我的发现我的这些数据已经在我的缓存种存在了,我就直接存缓存中把数据读出来,少了一次查询,速度自然也提高了很多. 如果我访问第六页的数据,我就把我的缓存更新一次.这样连续翻页10次才进行两次IO操作 同时又保证了内存不容易被溢出.而具体缓存设置多少,要看你的服务器的能力和访问的人数来决定
资源推荐
资源详情
资源评论
收起资源包目录
pagination433.zip (3个子文件)
pagination433
lucene.html 429B
Pagination.java 3KB
search.jsp 4KB
共 3 条
- 1
qqaqqw
- 粉丝: 6
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页