packagegetui.util;importjava.io.IOException;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.JspWriter;importjavax.servlet.jsp.tagext.TagSupport;/***
* 分页控件
*
*@authorAnny*/
public class Pager extendsTagSupport {private Integer curPage; //当前页码
private Integer totalPage; //总页数
private Integer pageSize = 10; //一页显示的记录数
private Integer totalCount = 0; //记录总数
private String formId; //请求的action name
private Integer lastIndex; //结束索引
public int doStartTag() throwsJspException {
StringBuffer buffer=newStringBuffer();
JspWriter out=pageContext.getOut();int pageNumber = 0;if (totalPage % pageSize == 0) {
pageNumber= totalPage /pageSize;
}else{
pageNumber= (totalPage / pageSize) + 1;
}if (curPage < 1) {
curPage= 1;
}try{if (pageNumber > 0) {
buffer.append("
buffer.append("function go(pageNum)");
buffer.append("{");//{start
buffer.append("var f = document.getElementById('" + formId + "');");
buffer.append("f.action = f.action + '?pageNum=' + pageNum + '&pageSize="+pageSize + "';");
buffer.append("f.submit();");
buffer.append("}");//}end
buffer.append("");//script-end
out.print(buffer.toString());
out.append("
out.print("
- ");//添加Bootstrap分页的样式pagination
int start = 1;int end =totalPage;for (int i = 4; i >= 1; i--) {if ((curPage - i) >= 1) {
start= curPage -i;break;
}
}for (int i = 4; i >= 1; i--) {if ((curPage + i) <=totalPage) {
end= curPage +i;break;
}
}//如果小于9则右侧补齐
if (end - start + 1 <= 9) {
Integer padLen= 9 - (end - start + 1);for (int i = padLen; i >= 1; i--) {if ((end + i) <=totalPage) {
end= end +i;break;
}
}
}//如果还小于9左侧补齐
if (end - start + 1 <= 9) {
Integer padLen= 9 - (end - start + 1);for (int i = padLen; i >= 1; i--) {if ((start - i) >= 1) {
start= start -i;break;
}
}
}if (curPage > 1) {if (start > 1) {
out.print("
首页");}
out.print("
上一页");}for (int i = start; i <= end; i++) {if (i ==curPage) {
out.print("
" + i + "");}else{
out.print("
" + i + "");}
}if (curPage
out.print("
下一页");if (endout.print("
尾页");}
}
out.print("
共" + totalPage + "页" + this.totalCount + "条");out.print("
");out.print("
}
}catch(IOException e) {
e.printStackTrace();
}return super.doStartTag();
}/*** 算开始索引
*
*@parampageNum -
*@parampageSize
*@return
*/
public staticInteger getStartIndex(Integer pageNum, Integer pageSize) {
Integer res= 0;if (pageNum > 0) {
res= (pageNum - 1) *pageSize;
}returnres;
}/*** 算结束索引 -- 方法暂时未用
*
*@parampageSize
*@paramtotalCount
*@paramtotalPage
*@parampageNum
*@return
*/
public staticInteger getLastIndex(Integer pageSize,Integer totalCount,Integer totalPage,Integer pageNum){//计算结束时候的索引
Integer lastIndex =0;if( totalCount
lastIndex=totalCount;
}else if((totalCount % pageSize == 0) || (totalCount % pageSize != 0 && pageNum
lastIndex= pageNum *pageSize;
}else if(totalCount % pageSize != 0 && pageNum == totalPage){//最后一页
lastIndex =totalCount ;
}returnlastIndex;
}publicInteger getLastIndex() {returnlastIndex;
}public voidsetLastIndex(Integer lastIndex) {this.lastIndex =lastIndex;
}public voidsetCurPage(Integer curPage) {this.curPage =curPage;
}public voidsetPageSize(Integer pageSize) {this.pageSize =pageSize;
}public voidsetTotalPage(Integer totalPage) {this.totalPage =totalPage;
}public voidsetFormId(String formId) {this.formId =formId;
}publicInteger getTotalCount() {returntotalCount;
}public voidsetTotalCount(Integer totalCount) {this.totalCount =totalCount;
}
}