page类
员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联建站坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供成都网站建设、成都网站设计、微信公众号开发、电商网站开发,小程序制作,软件定制开发等一站式互联网企业服务。
public class PageModel {
private int totalCount = 0;// 总记录数
private int pageCount;// 总页数
private int pageSize = 10;// 每页显示记录数
private int page = 1;// 当前页
private int num = 5;// 当前页之前和之后显示的页数个数 如:假设当前页是 6 共有11页 那么 显示分页条会显示 1 2 3 4
// 5 [6] 7 8 9 10 11
@SuppressWarnings("unchecked")
private List items = new ArrayList();// 当前页记录内容集合
private int prev;// 前一页
private int next;// 后一页
private int last;// 最后一页
private ListInteger prevPages;// 得到前num页的数据集合
private ListInteger nextPages;// 得到后num页的数据集合
/**
* 计算总页数
*
* @param totalCount
*/
public void setTotalCount(int totalCount) {
if (totalCount 0) {
this.totalCount = totalCount;
this.pageCount = (totalCount + pageSize - 1) / pageSize;
}
}
/**
* 判断是否有前一页
*
* @return boolean
*/
public boolean getIsPrev() {
if (page 1) {
return true;
}
return false;
}
/**
* 获取前一页
*
* @return int
*/
public int getPrev() {
if (getIsPrev()) {
return page - 1;
} else {
return page;
}
}
/**
* 判断是否有后一页
*
* @return boolean
*/
public boolean getIsNext() {
if (page pageCount) {
return true;
}
return false;
}
/**
* 获取后一页
*
* @return int
*/
public int getNext() {
if (getIsNext()) {
return page + 1;
}
return getPageCount();
}
/**
* 获取最后一页
*
* @return int
*/
public int getLast() {
return pageCount;
}
/**
* 当前页的前num条页 假设当前页是 6 共有11页 如:1 2 3 4 5
*
* @return ListInteger
*/
public ListInteger getPrevPages() {
ListInteger list = new ArrayListInteger();
int _frontStart = 1;
if (page num) {
_frontStart = page - num;
} else if (page = num) {
_frontStart = 1;
}
for (int i = _frontStart; i page; i++) {
list.add(i);
}
return list;
}
/**
* 当前页的后num条页 假设当前页是 6 共有11页 如:7 8 9 10 11
*
* @return ListInteger
*/
public ListInteger getNextPages() {
ListInteger list = new ArrayListInteger();
int _endCount = num;
if (num pageCount (page + num) pageCount) {
_endCount = page + _endCount;
} else if ((page + num) = pageCount) {
_endCount = pageCount;
}
for (int i = page + 1; i = _endCount; i++) {
list.add(i);
}
return list;
}
/**
* 获取每页显示记录数
*
* @return int
*/
public int getPageSize() {
return pageSize;
}
/**
* 设置每页显示记录数
*
* @param pageSize
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* 得到当前页数
*
* @return int
*/
public int getPage() {
return page;
}
/**
* 设置当前页数
*
* @param page
*/
public void setPage(int page) {
this.page = page;
}
/**
* 获取当前页之前或之后显示的页数个数
*
* @return int
*/
public int getNum() {
return num;
}
/**
* 设置当前页之前或之后显示的页数个数
*
* @param num
*/
public void setNum(int num) {
this.num = num;
}
/**
* 获取当前页记录内容集合
*
* @return List
*/
@SuppressWarnings("unchecked")
public List getItems() {
return items;
}
/**
* 设置当前页记录内容集合
*
* @param items
*/
@SuppressWarnings("unchecked")
public void setItems(List items) {
this.items = items;
}
/**
* 获取总记录数
*
* @return int
*/
public int getTotalCount() {
return totalCount;
}
/**
* 得到总页数
*
* @return int
*/
public int getPageCount() {
return pageCount;
}
}
action代码:
PageModel pageModel = new PageModel();
// 获得当前页
if (page != 0) {
pageModel.setPage(page);
}
pageModel.setPageSize(10);// 设置页面显示最大 值
pageModel.setTotalCount(baseDAO.listAll("from Art where arttype.id=10 and mark=0 order by id desc")); // 数据总条数
pageModel.setNum(5); // 设置当前页的前后距离,/**前后各显示5页**/
// 通过当前页和
ListArt aboutList = baseDAO.listAll("from Art where arttype.id=10 and mark=0 order by id desc", pageModel.getPage(),pageModel.getPageSize());
pageModel.setItems(aboutList);
request.setAttribute("count", aboutList.size());// 放置在request中
request.setAttribute("pageModel", pageModel);
request.setAttribute("page", pageModel.getPage());
jsp代码
c:forEach var = "i" items="${requestScope.pageModel.items}" varStatus="items"
li/li
/c:forEach
div class="badoo"span class="disabled"第${pageModel.page}页/共${pageModel.pageCount}页/span a href="${pageuri}page=1"首页/a
c:if test="${pageModel.page1}"
a href="${pageuri}page=${pageModel.prev}"上一页/a
/c:if
c:forEach var="pre" items="${pageModel.prevPages }"
a href="${pageuri}page=${pre }"${pre}/a
/c:forEach
span class="current"${pageModel.page }/span
c:forEach var="next" items="${pageModel.nextPages }"
a href="${pageuri}page=${next }"${next}/a
/c:forEach
c:if test="${pageModel.pagepageModel.last}"
a href="${pageuri}page=${pageModel.next}"下一页/a
/c:if
a href="${pageuri}page=${pageModel.last}"尾页/a/div
如有不懂可以找我QQ聊
以下是最简单的分页(一个方法搞定):
首先是方法:
//用于按照页数和每页显示的记录数进行图书查询
public List getBookList(int page,int pageSize)throws Exception{
List list=new ArrayList();
Connection conn=this.getConn();
String sql="select top "+page+" * from bookInfo " +
"where bookId not in" +
"(select top "+((pageSize-1)*page)+" bookId from bookInfo)";
PreparedStatement pstmt=conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
//每条数据对应一个实体类
BookInfo book=new BookInfo();
book.setBookId(rs.getInt("bookId"));
book.setBookName(rs.getString("bookName"));
book.setBookType(rs.getString("bookType"));
book.setBookStatus(rs.getString("bookStatus"));
list.add(book);
}
this.closeAll(conn, pstmt, rs);
return list;
}
2:JSP页面代码:
%@ page language="java" import="java.util.*,entity.*,operator.*" pageEncoding="gbk"%
html
head
/head
body
table border="1"
tr
td width="150"图书名称/td
td width="100"类别/td
td width="100"状态/td
/tr
%
request.setCharacterEncoding("gbk");
int pageNum=1;
String pageStr=request.getParameter("pageNum");
if(pageStr==null){
pageNum=1;
}else{
pageNum=Integer.parseInt(pageStr);
}
Operator o=new Operator();
List list=o.getBookList(6,pageNum);
for(int i=0;ilist.size();i++){
BookInfo book=(BookInfo)list.get(i);
%
tr
td%=book.getBookName() %/td
td%=book.getBookType() %/td
td%=book.getBookStatus() %/td
/tr
%
}
%
tr
td colspan="3"a href="infoList.jsp?pageNum=%=pageNum==1?pageNum:pageNum-1%"上一页/a ||
a href="infoList.jsp?pageNum=%=list.size()6?pageNum:pageNum+1 %"下一页/a/td//二元运算符,相当于if判断 上一页时如果当前页=1为true,就是当前页,否则还可以减1
//下一页如果当前页的size小于你的每一页设置的条数为true,那么就是是当前页,否则就+1;
/tr
/table
/body
/html
CREATE PROCEDURE [up_ARCH_DCFJ_Paged]
@pagesize int, --每页显示的记录数
@pageindex int, --当前页索引,最小值为1
@RecordCount int output --总记录数,0时不统计结果记录
AS
SET NOCOUNT ON
DECLARE @indextable TABLE(rowid INT IDENTITY(1,1),nid INT)
INSERT INTO @indextable(nid) --将符合的记录插入到临时表中
SELECT [FileID]
FROM [ARCH_DCFJ]
ORDER BY [FileID] DESC
IF(@RecordCount0)
BEGIN
SELECT @RecordCount= Count(1) FROM @indextable
END
DECLARE @PageLowerBound INT
DECLARE @PageUpperBound INT
SET @PageLowerBound=(@pageindex-1)*@pagesize
SET @PageUpperBound=@PageLowerBound+@pagesize
SET ROWCOUNT @PageUpperBound--最多执行行数 若下面还有超过此值的行数,请注释此行
SELECT a.*
FROM [ARCH_DCFJ] a,@indextable t
WHERE a.[FileID]=t.nid and t.rowid@PageLowerBound and t.rowid=@PageUpperBound
ORDER BY t.rowid
SET NOCOUNT OFF
GO
可以把要从数据库里查询出的数据条数用sql语句写出来。
int rowBegin=0;
if(page1)
rowBegin=10*(page-1); 10就是你要显示的行数
String sql="select top 10 * from table where id not in(select top+"+rowBegin+" id from table )";
按下页时直接传参就可以了