package com.dbtemplate.tag;import java.io.IOException;import javax.servlet.http.HttpSession;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;import org.apache.log4j.Logger;import com.dbtemplate.domain.PageInfo;/** *//** * <pre> * PaginationTag是一个JSP自定义标签,它的功能如下: * ·为页面提供分页信息 * * 它的处理流程如下: * ·获取存放在Session中的PageInfo对象 * ·根据PageInfo中的一系列标志打印分页信息 * * </pre> * * @author peng * */public class PaginationTag extends TagSupport ...{ static Logger logger = Logger.getLogger(PaginationTag.class.getName()); static final String baseUrl = "<a href = "user.jsp?"; static final String endTag = "</a>"; /**//* * 第<%=intPage%>页 共<%=intPageCount%>页(共<%=intRowCount%>条记录) * * <!--显示首页链接--> <a href = "user.jsp?">首页</a> * * <!--显示上一页链接--> <% if(intPage>1){ %> <a href = "user.jsp?page=<%=intPage-1%>">上一页</a> * <%}%> * * <!--显示下一页链接--> <% if(intPage<intPageCount){%> <a href = "user.jsp?page=<%=intPage+1%>">下一页</a> * <%}%> * * <!--显示末页链接--> <a href = "user.jsp?page=<%=intPageCount%>">末页</a> * * <!--显示刷新数据链接--> <a onclick = "javascipt:window.location.reload();" * onmouseover = "this.style.textDecoration = 'underline';" onmouseout = * "this.style.testDecoration = 'none';" style = "cursor:hand;" >刷新数据</a> */ public int doEndTag() throws JspException ...{ logger.debug("Start to handle Pagination infomatin."); // 获取保存在Session中的PageInfo对象 HttpSession session = pageContext.getSession(); PageInfo pageInfo = (PageInfo) session.getAttribute("page"); // 根据PageInfo中的信息显示分页信息 JspWriter writer = pageContext.getOut(); StringBuffer output = new StringBuffer(); // 页数显示 output.append(" 第").append(pageInfo.getCurrentPageNo()).append("页 "); output.append(" (共").append(pageInfo.getTotalRecords()).append("条记录)"); // 首页链接 output.append(baseUrl).append("">").append("首页").append(endTag); // 上一页链接 if (pageInfo.isHasPreviousPage()) ...{ output.append(baseUrl).append("page=").append( pageInfo.getPreviousPageNo()).append("">").append("上一页") .append(endTag); } // 下一页链接 if (pageInfo.isHasNextPage()) ...{ output.append(baseUrl).append("page=").append( pageInfo.getNextPageNo()).append("">").append("下一页") .append(endTag); } // 末页链接 output.append(baseUrl).append("page=").append(pageInfo.getTotalPages()) .append("">").append("末页").append(endTag); // 刷新页面链接 output.append("<a onclik = "javascript:window.location.reload();""); output .append(" onmouseover = "this.style.textDecoration = 'underline;""); output.append(" onmouseout = "this.style.textDecoration = 'none';""); output.append(" style = "cursor:hand;""); output.append("刷新"); output.append(endTag); // 打印分页信息 try ...{ writer.println(output); } catch (IOException ioe) ...{ logger.error("Error occured when handle paginatin informatin."); throw new JspException(ioe.getMessage()); } return SKIP_BODY; }}