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>