java中如何实现百度中的分页/**
* 分页代码
*
* @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 (pageSize0)
this.pageSize = pageSize;// 每页多少条记录
if (groupSize0)
this.groupSize = groupSize;
// 当前第几页
if (pageNo0) {
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") != nullparseInt(
"" + request.getSession().getAttribute("cur_group"), 1) != curGroup)
|| this.size == 0 || request.getParameter("reload") != null) {
request.getSession().setAttribute("cur_group", curGroup);
if (pageNo0
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);
}
推荐阅读
- 坤沙酒一箱价格表代理平台,坤沙酒53度价格表
- redis大key删除原理,redis删除key的机制
- whilesqlserver的简单介绍
- odp.net安装到哪里,odl安装
- mysql怎么做计算 mysql如何计算减法
- C语言求一个整数串奇数位和,c语言求奇数的个数
- phpcms获取标题长度,php获取网页标题
- 微信如何做直播,微信如何做直播带货
- java写代码的设计原则 java写代码的设计原则有哪些