java 自定义分页标签

java 分页代码

 

分页模型代码

 

/**     
 * @{#} 类名称: PageModel.java
 *    创建时间: Aug 20, 2009 11:33:16 AM     
 *         
 */      
package com.zyf.pagemodel;      

import java.io.Serializable;
     
/**     
 * @作者 <a href="http://qing393260529.iteye.com">昨夜风</a>    
 * @版本 1.0     
 */

public class PageModel implements Serializable
{
 private static final long serialVersionUID = 3696238332059708804L;
 private String pageCount="";
 private String pageIndex="";
 private String params= "";
 private String indexColor="";
 private String countColor="";
 
 public String getCountColor()
 {
  return countColor;
 }
 
 public void setCountColor(String countColor)
 {
  this.countColor = countColor;
 }
 public String getIndexColor()
 {
  return indexColor;
 }
 public void setIndexColor(String indexColor)
 {
  this.indexColor = indexColor;
 }
 public String getParams()
 {
  return params;
 }
 public void setParams(String params)
 {
  this.params = params;
 }
 public String getPageCount()
 {
  return pageCount;
 }
 public void setPageCount(String pageCount)
 {
  this.pageCount = pageCount;
 }
 public String getPageIndex()
 {
  return pageIndex;
 }
 public void setPageIndex(String pageIndex)
 {
  this.pageIndex = pageIndex;
 }
 
}

  

 

分页标签代码

 

/**     
 * @{#} 类名称: PageModelTag.java
 *    创建时间: Aug 20, 2009 11:34:50 AM     
 *         
 */      
package com.zyf.pagemodel;      

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
     
/**     
 * @作者 <a href="http://qing393260529.iteye.com">昨夜风</a>    
 * @版本 1.0     
 */

public class PageModelTag extends BodyTagSupport
{
 private static final long serialVersionUID = -4247241487535299862L;

 private String indexColor = "";

 private String countColor = "";

 private String navigationUrl = "";

 private int pageIndex;

 private int pageCount;
 // 自定义参数
 private String params = "";

 public int getPageCount()
 {
  return pageCount;
 }

 public void setPageCount(int pageCount)
 {
  this.pageCount = pageCount;
 }

 public int getPageIndex()
 {
  return pageIndex;
 }

 public void setPageIndex(int pageIndex)
 {
  this.pageIndex = pageIndex;
 }

 public int doStartTag() throws JspException
 {
  // 获取url
  navigationUrl = getParameterUrl();
  // 设置显示页数的颜色
  getColor();
  StringBuffer strb = new StringBuffer();

  // 分页
  int front = pageIndex - 4; // 前面一截
  int back = pageIndex + 4; // 后面一截

  if (pageIndex == 1)
  {
   strb.append(" 首页 ");
   strb.append(" 上一页 ");
  }
  else
  {
   strb.append("<a href=" + navigationUrl + "pageIndex=1> 首页 </a>");
   strb.append("<a href=" + navigationUrl + "pageIndex="
     + (pageIndex - 1) + "> 上一页 </a> ");
  }

  if (pageIndex < 5) // 如果索引在前5页
  {
   if (pageCount <= 10) // 总页数不够10页
   {
    for (int i = 1; i <= pageCount; i++)
    {
     if (i == pageIndex)
      strb.append(" " + pageIndex + " ");
     else
      strb.append("<a href=" + navigationUrl + "pageIndex="
        + i + ">[" + i + "]</a>");
    }
   }
   else
   {
    for (int i = 1; i < 10; i++)
    {
     if (i == pageIndex)
      strb.append(" " + pageIndex + " ");
     else
      strb.append("<a href=" + navigationUrl + "pageIndex="
        + i + ">[" + i + "]</a>");
    }
   }
  }
  else
  {
   if (front >= 1)
   {
    for (int i = 4; i > 0; i--)
     strb.append("<a href=" + navigationUrl + "pageIndex="
       + (pageIndex - i) + ">[" + (pageIndex - i)
       + "]</a>");
   }
   else
   {
    for (int i = 1; i < pageIndex; i++)
     strb.append("<a href=" + navigationUrl + "pageIndex=" + i
       + ">[" + i + "]</a>");
   }

   strb.append(" " + pageIndex + " "); // 分界线 eg: 5
   // ,前面一截就是1234,后面一截就是6789

   if (back <= pageCount)
   {
    for (int i = 1; i < 5; i++)
     strb.append("<a href=" + navigationUrl + "pageIndex="
       + (pageIndex + i) + ">[" + (pageIndex + i)
       + "]</a>");
   }
   else
   {
    for (int i = 1; i < pageCount - pageIndex + 1; i++)
     strb.append("<a href=" + navigationUrl + "pageIndex="
       + (pageIndex + i) + ">[" + (pageIndex + i)
       + "]</a>");
   }
  }

  if (pageIndex == pageCount)
  {
   strb.append(" 下一页 ");
   strb.append(" 最后一页 ");
  }
  else
  {
   strb.append(" <a href=" + navigationUrl + "pageIndex="
     + (pageIndex + 1) + "> 下一页 </a>");
   strb.append("<a href=" + navigationUrl + "pageIndex=" + pageCount
     + "> 最后一页 </a>");
  }
  strb.append("  <font color=" + indexColor + ">" + pageIndex
    + "</font>/<font color=" + countColor + ">" + pageCount
    + "</font>");
  JspWriter out = pageContext.getOut();
  try
  {
   out.println(strb.toString());
  }
  catch (IOException e)
  {
   e.printStackTrace();
  }
  return EVAL_PAGE;
 }

 private void getColor()
 {
  if (indexColor.equals(""))
   indexColor = "red";
  if (countColor.equals(""))
   countColor = "blue";
 }

 private String getParameterUrl()
 {
  System.out.println("params | "+params);
  // 没有自定义参数
  if (params.equals(""))
   return navigationUrl;
  StringBuffer url = new StringBuffer();
  url.append(navigationUrl).append("?").append(params).append("&");
  return url.toString();
 }

 public String getNavigationUrl()
 {
  return navigationUrl;
 }

 public void setNavigationUrl(String navigationUrl)
 {
  this.navigationUrl = navigationUrl;
 }

 public String getCountColor()
 {
  return countColor;
 }

 public void setCountColor(String countColor)
 {
  this.countColor = countColor;
 }

 public String getIndexColor()
 {
  return indexColor;
 }

 public void setIndexColor(String indexColor)
 {
  this.indexColor = indexColor;
 }

 public String getParams()
 {
  return params;
 }

 public void setParams(String params)
 {
  this.params = params;
 }

}
  

 

tld 代码

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
 <tlib-version>1.1</tlib-version>
 <jsp-version>1.2</jsp-version>
 <short-name>n</short-name> 
 <tag>
  <name>nav</name>
  <tag-class>com.zyf.pagemodel.PageModelTag</tag-class>
  <body-content>jsp</body-content>
  <attribute>
   <name>pageIndex</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>int</type>
   <description>当前的页数</description>
  </attribute>
  <attribute>
   <name>pageCount</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <description>总页数</description>
  </attribute>
  <attribute>
   <name>navigationUrl</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <description>URL</description>
  </attribute>
  <attribute>
   <name>params</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
   <description>url自定义参数</description>
  </attribute>
  <attribute>
   <name>indexColor</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
   <description>当前所在页的参数</description>
  </attribute>
  <attribute>
   <name>countColor</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
   <description>总页数的参数</description>
  </attribute>
 </tag>
</taglib>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值