page.java類
import java.util.List;
public class Page {
/** 當前頁 */
private int curPage;
/** 總頁數 */
private int total;
/** 總的記錄數 */
private int sum;
/** 結果集 */
private List result;
public Page() {
}
public Page(int curPage, int sum) {
this.curPage = curPage;
this.sum = sum;
int totalPage = (int) Math.ceil(sum
/ Double.parseDouble(Conv.pageSize + ""));
if (totalPage == 0)
totalPage = 1;
this.total = totalPage;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
}
PageTag.java
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
public class PagerTag extends TagSupport {
private static final long serialVersionUID = 183373550159351609L;
private Page pager;
private String urlstart;
private String urlend;
public PagerTag() {
}
public int doStartTag() throws JspException {
try {
String bar = getNavigatorBar();
pageContext.getOut().write(bar);
return SKIP_BODY;
} catch (IOException e) {
e.printStackTrace();
throw new JspException(e);
}
}
private String getNavigatorBar() {
StringBuffer bar = new StringBuffer();
bar.append("<div class='box'>");
if (pager == null) {
pager = new Page();
pager.setCurPage(1);
}
int curpage = pager.getCurPage();// 當前頁
int pages = pager.getTotal();// 總頁數
/**
* 第一頁
*/
// 如果是第一頁
if (curpage == 1) {
bar.append(
"<span>共" + pager.getSum()
+ "條</span><span class='current prev'>上一頁</span>")
.append("<span class='current'>1</span>");
} else {
bar.append(
"<span>共" + pager.getSum() + "條</span><a href='" + urlstart
+ (curpage - 1) + urlend + "'>上一頁</a>").append(
"<a href='" + urlstart + 1 + urlend + "'>1</a>");
}
/**
* 結束(第一頁)
*/
// 如果總頁數小於11
if (pages <= 11) {
for (int i = 2; i < pages; i++) {
if (curpage == i) {
bar.append("<span class='current'>" + i + "</span>");
} else {
bar.append("<a href='" + urlstart + i + urlend + "'>" + i
+ "</a>");
}
}
} else {// 總頁數大於8
if (curpage <= 6) { // 當前頁小頁等於6時 (頁碼要與前面的街上)
for (int i = 2; i <= 7; i++) {
if (curpage == i) {
bar.append("<span class='current'>" + i + "</span>");
} else {
bar.append("<a href='" + urlstart + i + urlend + "'>"
+ i + "</a>");
}
}
bar.append("<span>....</span>");
bar.append("<a href='" + urlstart + (pages - 1) + urlend + "'>"
+ (pages - 1) + "</a>");
} else if (curpage >= pages - 5) { // 當前頁大於最大頁-5時 要與後面的接上
bar.append("<a href='" + urlstart + 2 + urlend + "'>" + 2
+ "</a>");
bar.append("<span>....</span>");
for (int i = pages - 5 - 3; i <= pages - 1; i++) {
if (curpage == i) {
bar.append("<span class='current'>" + i + "</span>");
} else {
bar.append("<a href='" + urlstart + i + urlend + "'>"
+ i + "</a>");
}
}
} else {
bar.append("<a href='" + urlstart + 2 + urlend + "'>" + 2
+ "</a>");
bar.append("<span>....</span>");
for (int i = curpage - 3; i <= curpage + 3; i++) {
if (curpage == i) {
bar.append("<span class='current'>" + i + "</span>");
} else {
bar.append("<a href='" + urlstart + i + urlend + "'>"
+ i + "</a>");
}
}
bar.append("<span>....</span>");
bar.append("<a href='" + urlstart + (pages - 1) + urlend + "'>"
+ (pages - 1) + "</a>");
}
}
/**
* 最後一頁
*/
// 如果是最後一頁
if (pages == 0 || pages == 1) {
bar.append("<span class='current next'>下一頁</span>");
} else if (curpage == pages) {
bar.append("<span class='current'>" + pages + "</span>").append(
"<span class='current next'>下一頁</span>");
} else {
bar.append(
"<a href='" + urlstart + pages + urlend + "'>" + pages
+ "</a>").append(
"<a href='" + urlstart + (curpage + 1) + urlend
+ "'>下一頁</a>");
}
bar
.append("<select style='height:26px;text-align: center;padding: 0.3em 0.5em;' οnchange=\"location.href='"
+ urlstart + "'+this.value+'" + urlend + "'\">");
for (int i = 1; i <= pages; i++) {
if (curpage == i) {
bar.append("<option value='" + i + "' selected='selected'>")
.append("第" + i + "頁").append("</option>");
} else {
bar.append("<option value='" + i + "'>").append("第" + i + "頁")
.append("</option>");
}
}
bar.append("</select>");
bar.append("</div>");
return bar.toString();
}
public int doEndTag() throws JspTagException {
return EVAL_PAGE;
}
public Page getPager() {
return pager;
}
public void setPager(Page pager) {
this.pager = pager;
}
public String getUrlend() {
return urlend;
}
public void setUrlend(String urlend) {
this.urlend = urlend;
}
public String getUrlstart() {
return urlstart;
}
public void setUrlstart(String urlstart) {
this.urlstart = urlstart;
}
}
pages.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>papa</shortname>
<!--====================pager:pagebar=====================-->
<tag>
<name>pager</name>
<tagclass>com.xinfeijinxin.qy.util.PagerTag</tagclass>
<bodycontent>JSP</bodycontent>
<info>pager tag provide the frame of the page divider</info>
<attribute>
<name>pager</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>urlstart</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>urlend</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>css</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
jsp
<%@ taglib prefix="pages" uri="/WEB-INF/pages.tld"%>
<div class="pagination">
<pages:pager pager="${page}"
urlstart="personal/Personal_getReportList.action?page.curPage="
urlend="&userid=${uid}&zwid=${zw}&dwid=${dwid}&bmid=${bmid}&xm=${xm}&begindate=${begindate}&enddate=${enddate}&sfpl=${sfpl}&rblx=${rblx }"></pages:pager>
</div>
action
public String getReportList(){
//職位
String zw = request.getParameter("zwid");
request.setAttribute("zw", zw);
//用戶id
String userid = request.getParameter("userid");
this.getRequest().setAttribute("uid", userid);
//部門id
String bmid = request.getParameter("bmid");
request.setAttribute("bmid", bmid);
//單位id
String dwid = request.getParameter("dwid");
request.setAttribute("dwid", dwid);
//開始時間
String begindate = request.getParameter("begindate");
this.getRequest().setAttribute("begindate", begindate);
//結束時間
String enddate = request.getParameter("enddate");
this.getRequest().setAttribute("enddate", enddate);
//是否提交
String sfpl = request.getParameter("sfplselect");
request.setAttribute("sfpl", sfpl);
//姓名
String xm = request.getParameter("xm");
request.setAttribute("xm", xm);
//日報類型
String rblx = request.getParameter("rblx");
request.setAttribute("rblx", rblx);
Map<String, Object> params = new HashMap<String, Object>();
params.put("zw", zw);
if(userid != null && !userid.equals("")){
params.put("userid", Integer.valueOf(userid));
}else{
params.put("userid", null);
}
if(bmid != null && !bmid.equals("")){
params.put("bmid", Integer.valueOf(bmid));
}else{
params.put("bmid", null);
}
params.put("dwid", dwid);
params.put("begindate", begindate);
params.put("enddate", enddate);
params.put("rblx", rblx);
if(sfpl != null && !sfpl.equals("")){
params.put("sfpl", Integer.valueOf(sfpl));
}else{
params.put("sfpl", null);
}
params.put("xm", xm);
// 分頁信息設置
if (page == null)
page = new Page();
// 如果當前頁爲0,則設置當前頁爲1
if (page.getCurPage() == 0) {
page.setCurPage(1);
}
page = this.personalService.queryReportList(params, page.getCurPage(), Conv.pageSize);
return SUCCESS;
}
service
public Page queryReportList(Map<String, Object> params,int start,int limit){
List<QyRbxx> list = null;
int count=0;
try{
list=pageDaoUtil.selectList("com.xinfeijinxin.qy.dao.IpersonalDao.queryReportList", params,new RowBounds((start-1)*Conv.pageSize, limit));
Tools.getChinaseQyRbxx(list); //過濾標籤
count=this.manager.queryReportcount(params);
}catch(Exception e){
LOG.error(e.getMessage());
e.printStackTrace();
}
Page page=new Page(start,count); //初始化分頁數據
page.setResult(list); //封裝對象
return page;
}