`
lf008
  • 浏览: 66990 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

分页工具条自定义标签

阅读更多
我一直以来就用这个分页工具条自定义标签,你可以往分页工具条标签类里面添加你想要的样式,在页面上只需1句话就能实现分页功能。
下面2个附件分别是分页标签类和标签描述文件。
分页标签类代码如下
package com.jn0813a.bss.commons.web;

import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * 分页工具条标签类
 * 
 * 功能:获取url地址所有参数、生成分页工具条
 * 
 * @author wuka
 * 
 */
public class PageTag extends TagSupport {

	private static final long serialVersionUID = 9091187423099882366L;

	public static final int USER_PAGESIZE = 5;// 默认每页记录数

	public static final String CLASS_STYLE_NAME = "image"; // 默认样式

	private int currentPage; // 当前页

	private int totalPage; // 总页数

	private int pageCount = 0; // 一共有多少页

	private int pageSize; // 每页显示页数

	private String action; // 请求URL

	private String className; // 样式名

	private HttpServletRequest request; // 请求

	public static final String Text = "text";

	public static final String Image = "image";

	public static final String BbsText = "bbstext";

	public static final String BbsImage = "bbsimage";

	/**
	 * 实现分页的方法.
	 */
	@Override
	public int doStartTag() throws JspException {

		JspWriter out = pageContext.getOut();
		request = (HttpServletRequest) pageContext.getRequest();

		if (new Integer(pageSize) == null) {
			throw new JspException("outpage标签中缺乏pagesize属性!");
		} else if (pageSize == 0) {
			throw new JspException("outpage标签中的pagesize属性无值!");
		}
		if (new Integer(totalPage) == null) {
			throw new JspException("outpage标签中缺乏rowcount属性!");
		}
		if (new Integer(currentPage) == null) {
			throw new JspException("outpage标签中缺乏currpagenum属性!");
		}
		if (action == null) {
			throw new JspException("outpage标签中缺乏action属性!");
		} else if (action.length() == 0) {
			throw new JspException("outpage标签中的action属性无值!");
		}

		// 判断页面边界
		if (this.currentPage == Integer.MAX_VALUE
				|| this.currentPage > getPagecount()) {
			this.currentPage = getPagecount();
		}

		// 如果页面标签中没写className属性,则应用默认的按钮样式
		if (className == null || className.length() == 0) {
			className = CLASS_STYLE_NAME;
		}

		// 获取总页数
		pageCount = this.getPagecount();

		try {
			out.println(pagetool(className));

		} catch (IOException e) {
			e.printStackTrace();
		}

		return super.doStartTag();
	}

	@Override
	public int doAfterBody() throws JspException {
		return super.doAfterBody();
	}

	@Override
	public int doEndTag() throws JspException {
		return super.doEndTag();
	}

	@Override
	public void release() {
		super.release();
	}

	/**
	 * 获取总页数.
	 * 
	 * @return int 返回总记录数.
	 */
	public int getPagecount() {
		try {
			this.pageCount = ((this.totalPage - 1) / this.pageSize) + 1;
		} catch (Exception ex) {
			this.pageCount = 0;
		}
		return this.pageCount;
	}

	/**
	 * 得到所有的参数查询字符串.
	 * 
	 * @param request
	 *            http请求.
	 * @return 返回参数字符串.
	 */
	private String getParams(HttpServletRequest request) {
		Enumeration paramnames = request.getParameterNames();
		StringBuffer sb = new StringBuffer();

		while (paramnames.hasMoreElements()) {
			String paramname = (String) paramnames.nextElement();
			if (paramname.equals("currentpage"))
				continue;
			String[] paramvalues = request.getParameterValues(paramname);
			if (null != paramvalues) {
				for (int i = 0; i < paramvalues.length; i++) {
					sb.append("&" + paramname + "=" + paramvalues[i]);
				}
			}
		}
		return sb.toString();
	}

	/**
	 * 分页工具条
	 * 
	 * @param fileName
	 *            String
	 * @return String
	 */
	public String pagetool(String flag) {
		if (flag == null)
			flag = className;
		StringBuffer str = new StringBuffer();

		String url = action + getParams(request); // getParamUrl();
													// //url?参数123...
		int ProPage = this.currentPage - 1;
		int Nextpage = this.currentPage + 1;

		// 文字的分页
		if (flag.equals(PageTag.Text)) {
			str.append("<form method='post' name='pageform' action=''>");
			str
					.append("<table width='100%' border='0' cellspacing='0' cellpadding='0'>");
			str.append("<tr>");
			str.append("<td width='3%'>&nbsp;</td>");
			str.append("<td height='26' align='right'>");
			str.append("共有记录" + this.totalPage + "条&nbsp;&nbsp;&nbsp;");
			str.append("共" + this.pageCount + "页&nbsp;&nbsp;&nbsp;");
			str.append("每页" + this.pageSize + "记录&nbsp;&nbsp;&nbsp;");
			str.append("现在" + this.currentPage + "/" + this.pageCount + "页");
			str.append("</td><td>");
			if (this.currentPage > 1) {
				str.append("&nbsp;&nbsp;&nbsp;&nbsp;<a href='" + url
						+ "&currentpage=1'>首页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
				str.append("<a href='" + url + "&currentpage=" + ProPage
						+ "'>上一页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
			} else {
				str.append("&nbsp;&nbsp;&nbsp;&nbsp;首页");
				str.append("&nbsp;&nbsp;&nbsp;");
				str.append("上一页");
				str.append("&nbsp;&nbsp;&nbsp;");
			}
			if (this.currentPage < this.pageCount) {
				str.append("<a href='" + url + "&currentpage=" + Nextpage
						+ "'>下一页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
			} else {
				str.append("下一页");
				str.append("&nbsp;&nbsp;&nbsp;");
			}
			if (this.pageCount > 1 && this.currentPage != this.pageCount) {
				str.append("<a href='" + url + "&currentpage=" + pageCount
						+ "'>尾页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
			} else {
				str.append("尾页");
				str.append("&nbsp;&nbsp;&nbsp;");
			}
			str.append("转到");
			str
					.append("<select name='currentpage' onchange='javascript:ChangePage(this.value);'>");
			for (int j = 1; j <= pageCount; j++) {
				str.append("<option value='" + j + "'");
				if (currentPage == j) {
					str.append("selected");
				}
				str.append(">");
				str.append("" + j + "");
				str.append("</option>");
			}
			str.append("</select>页");
			str.append("</td><td width='3%'>&nbsp;</td></tr></table>");
			str.append("<script language='javascript'>");
			str.append("function ChangePage(testpage){");
			str.append("document.pageform.action='" + url
					+ "&currentpage='+testpage+'';");
			str.append("document.pageform.submit();");
			str.append("}");
			str.append("</script>");
			str.append("</form>");
		} else if (flag.equals(PageTag.Image)) {
			StringBuffer buffer = new StringBuffer("");
			buffer.append(this.getStyle());
			buffer
					.append("<form method='post' name='pageform' action=''><table cellspacing='0' style='margin:0 auto;margin-top:10px;' align='right'><tr><td><div class='splitpagebox'>");

			buffer
					.append("<span class='splitpagebox_pre1'><a href='#' disabled=\"disabled\"><font color=\"gray\">每页"
							+ this.pageSize + "条记录</font></a></span>");

			buffer
					.append("<span class='splitpagebox_pre1'><a href='#' disabled=\"disabled\"><font color=\"gray\">共有"
							+ this.totalPage + "条记录</font></a></span>");

			buffer
					.append("<span class='splitpagebox_pre'><a href='#' disabled=\"disabled\">"
							+ this.currentPage
							+ "/"
							+ this.pageCount
							+ "</a></span>");

			if (this.currentPage > 1) {
				buffer
						.append("<span class='splitpagebox_pre'><a href='"
								+ url
								+ "&currentpage=1'>第一页</a></span><span class='splitpagebox_pre'><a href='"
								+ url + "&currentpage=" + ProPage
								+ "'>上一页</a></span>");
			} else {
				buffer
						.append("<span class='splitpagebox_pre'><a href=\"#1\"  disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">第一页</font> </a></span><span class='splitpagebox_pre'><a href=\"#1\" id='_preHref' disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">上一页</font> </a></span>");
			}

			int startPage = ((this.currentPage - 1) / 5 * 5) + 1;
			int endPage = ((this.currentPage - 1) / 5 * 5) + 5;

			if (endPage > this.pageCount) {
				endPage = this.pageCount;
			}

			for (int p = startPage; p <= endPage; p++) {
				if (p == this.currentPage) {
					buffer.append("<span class='splitpagebox_num_nonce'>" + p);
				} else {
					buffer.append("<span class='splitpagebox_num'>");
					buffer.append("<a href='" + url + "&currentpage=" + p
							+ "'>");
					buffer.append(p + "</a>");
				}
				buffer.append("</span>");
			}

			if (this.currentPage < this.pageCount) {
				buffer
						.append("<span class='splitpagebox_next'><a href='"
								+ url
								+ "&currentpage="
								+ Nextpage
								+ "'>下一页</a></span><span class='splitpagebox_next'><a href='"
								+ url + "&currentpage=" + pageCount
								+ "'>尾 页</a></span>");
			} else {
				buffer
						.append("<span class='splitpagebox_next'><a href=\"#1\"  disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">下一页</font> </a></span><span class='splitpagebox_next'><a href=\"#1\" id='_preHref' disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">尾 页</font> </a></span>");
			}

			buffer
					.append("<span>&nbsp;&nbsp;第<input type=\"text\"  size=\"3\" name=\"currentpage\" id=\"go_to\"/>页</span><span class='splitpagebox_num'><a  href=\"javascript:ChangePage(document.all.go_to.value);\" target='mainframe'>转入</a>&nbsp;</span>");
			// buffer.append("</td></tr></table></td></tr></table>");

			buffer.append("</div></td></tr></table>");
			buffer.append("<script language='javascript'>");
			buffer.append("function ChangePage(testpage){");
			buffer.append("if(testpage==''){alert('无效页数');return;}");
			buffer.append("if(testpage=='0'){testpage='1';}");
			buffer.append("var Number='0123456789';");
			buffer.append("for(var x=0;x<testpage.length;x++){");
			buffer.append("var c=testpage.charAt(x);");
			buffer.append("if(Number.indexOf(c)==-1){alert('无效页数');return;}");
			buffer.append("}");
			buffer.append("document.pageform.action='" + url
					+ "&currentpage='+testpage+'';");
			buffer.append("document.pageform.submit();");
			buffer.append("}");
			buffer.append("</script>");
			buffer.append("</form>");
			return buffer.toString();

		} else if (flag.equals(PageTag.BbsText)) {
			/**
			 * 论坛形式的分页[直接以数字方式体现]
			 */
			str
					.append("<table width='100%' border='0' cellspacing='0' cellpadding='0'>");
			str.append("<tr>");
			str.append("<td width='3%'>&nbsp;</td>");
			str.append("<td height='26' align='center'>");
			str.append("记录" + this.totalPage + "条&nbsp;&nbsp;");
			str.append("共" + this.pageCount + "页&nbsp;&nbsp;");
			str.append("每页" + this.pageSize + "记录&nbsp;&nbsp;");
			str.append("现在" + this.currentPage + "/" + this.pageCount + "页");
			str.append("</td><td align='left'>");
			// 设定是否有首页的链接
			if (this.currentPage > 1) {
				str.append("<a href='" + url + "&currentpage=1'>首页</a>");
				str.append("&nbsp;&nbsp;");
			}
			// 设定是否有上一页的链接
			if (this.currentPage > 1) {
				str.append("<a href='" + url + "&currentpage=" + ProPage
						+ "'>上一页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
			}
			// 如果总页数只有10的话
			if (this.pageCount <= 10) {
				for (int i = 1; i <= this.pageCount; i++) {
					if (this.currentPage == i) {
						str.append("<font color=red>[" + i
								+ "]</font>&nbsp;&nbsp;");
					} else {
						str.append("<a href='" + url + "&currentpage=" + i
								+ "'>" + i + "</a>&nbsp;&nbsp;");
					}
				}
			} else {
				// 说明总数有超过10页
				// 制定特环的开始页和结束页
				int endPage = this.currentPage + 4;
				if (endPage > this.pageCount) {
					endPage = this.pageCount;
				}
				int startPage = 0;
				if (this.pageCount >= 8 && this.currentPage >= 8) {
					startPage = this.currentPage - 5;
				} else {
					// 表示从第一页开始算
					startPage = 1;
				}
				System.out.println(startPage);
				System.out.println(endPage);
				for (int i = startPage; i <= endPage; i++) {
					if (this.currentPage == i) {
						str.append("<font color=red>[" + i
								+ "]</font>&nbsp;&nbsp;");
					} else {
						str.append("<a href='" + url + "&currentpage=" + i
								+ "'>" + i + "</a>&nbsp;&nbsp;");
					}
				}
			}
			// 设定是否有下一页的链接
			if (this.currentPage < this.pageCount) {
				str.append("<a href='" + url + "&currentpage=" + Nextpage
						+ "'>下一页</a>");
				str.append("&nbsp;&nbsp;");
			}
			// 设定是否有尾页的链接
			if (this.pageCount > 1 && this.currentPage != this.pageCount) {
				str.append("<a href='" + url + "&currentpage=" + pageCount
						+ "'>尾页</a>");
				str.append("&nbsp;&nbsp;");
			}

			str.append("</td><td width='3%'>&nbsp;</td></tr></table>");
		} else if (flag.equals(PageTag.BbsImage)) {
			/**
			 * 论坛形式的分页[以图片的方式体现]
			 */
			// 设定分页显示的CSS
			str.append("<style>");
			str
					.append("BODY {FONT-SIZE: 13px;FONT-FAMILY:宋体;WIDTH: 60%; PADDING-LEFT: 25px;}");
			str
					.append("DIV.meneame {PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 80%; PADDING-BOTTOM: 3px; MARGIN: 3px; COLOR: #ff6500; PADDING-TOP: 3px; TEXT-ALIGN: center}");
			str
					.append("DIV.meneame A {BORDER-RIGHT: #ff9600 1px solid; PADDING-RIGHT: 7px; BACKGROUND-POSITION: 50% bottom; BORDER-TOP: #ff9600 1px solid; PADDING-LEFT: 7px; BACKGROUND-IMAGE: url('"
							// + this.request.getContextPath()
							+ "/meneame.jpg'); PADDING-BOTTOM: 5px; BORDER-LEFT: #ff9600 1px solid; COLOR: #ff6500; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ff9600 1px solid; TEXT-DECORATION: none}");
			str
					.append("DIV.meneame A:hover {BORDER-RIGHT: #ff9600 1px solid; BORDER-TOP: #ff9600 1px solid; BACKGROUND-IMAGE: none; BORDER-LEFT: #ff9600 1px solid; COLOR: #ff6500; BORDER-BOTTOM: #ff9600 1px solid; BACKGROUND-COLOR: #ffc794}");
			str
					.append("DIV.meneame SPAN.current {BORDER-RIGHT: #ff6500 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #ff6500 1px solid; PADDING-LEFT: 7px; FONT-WEIGHT: bold; PADDING-BOTTOM: 5px; BORDER-LEFT: #ff6500 1px solid; COLOR: #ff6500; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ff6500 1px solid; BACKGROUND-COLOR: #ffbe94}");
			str
					.append("DIV.meneame SPAN.disabled {BORDER-RIGHT: #ffe3c6 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #ffe3c6 1px solid; PADDING-LEFT: 7px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ffe3c6 1px solid; COLOR: #ffe3c6; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ffe3c6 1px solid}");
			str.append("</style>");
			str.append("<div class=\"meneame\">");
			// 判定是否有上一页
			if (this.currentPage > 1) {
				str.append("<a href='" + url
						+ "&currentpage=1' hidefocus=\"true\">首页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
				str.append("<a href='" + url + "&currentpage=" + ProPage
						+ "' hidefocus=\"true\">上一页</a>");
				str.append("&nbsp;&nbsp;&nbsp;");
			} else {
				str.append("<span class=\"disabled\">首页</span>");
				str.append("&nbsp;&nbsp;");
				str.append("<span class=\"disabled\">上一页</span>");
				str.append("&nbsp;&nbsp;");
			}
			// 显示中间的图片
			if (this.pageCount <= 10) {
				for (int i = 1; i <= this.pageCount; i++) {
					if (this.currentPage == i) {
						str.append("<span class=\"current\">" + i + "</span>");
					} else {
						str.append("<a href='" + url + "&currentpage=" + i
								+ "' hidefocus=\"true\">" + i
								+ "</a>&nbsp;&nbsp;");
					}
				}
			} else {
				// 说明总数有超过10页
				// 制定特环的开始页和结束页
				int endPage = this.currentPage + 4;
				if (endPage > this.pageCount) {
					endPage = this.pageCount;
				}
				int startPage = 0;
				if (this.pageCount >= 8 && this.currentPage >= 8) {
					startPage = this.currentPage - 5;
				} else {
					// 表示从第一页开始算
					startPage = 1;
				}
				System.out.println(startPage);
				System.out.println(endPage);
				for (int i = startPage; i <= endPage; i++) {
					if (this.currentPage == i) {
						str.append("<span class=\"current\">" + i + "</span>");
					} else {
						str.append("<a href='" + url + "&currentpage=" + i
								+ "' hidefocus=\"true\">" + i
								+ "</a>&nbsp;&nbsp;");
					}
				}
			}

			// 判断下一页和尾页
			if (this.currentPage < this.pageCount) {
				if (this.currentPage < this.pageCount - 10) {
					str.append("...");
					str.append("<a href='" + url + "&currentpage="
							+ (this.pageCount - 1) + "' hidefocus=\"true\">"
							+ (this.pageCount - 1) + "</a>&nbsp;&nbsp;");
					str.append("<a href='" + url + "&currentpage="
							+ this.pageCount + "' hidefocus=\"true\">"
							+ this.pageCount + "</a>&nbsp;&nbsp;");
				}

				str.append("<a href='" + url + "&currentpage=" + Nextpage
						+ "' hidefocus=\"true\">下一页</a>");
				str.append("&nbsp;&nbsp;");
			} else {
				str.append("<span class=\"disabled\">下一页</span>");
				str.append("&nbsp;&nbsp;");
			}
			if (this.pageCount > 1 && this.currentPage != this.pageCount) {
				str.append("<a href='" + url + "&currentpage=" + pageCount
						+ "' hidefocus=\"true\">尾页</a>");
				str.append("&nbsp;&nbsp;");
			} else {
				str.append("<span class=\"disabled\">尾页</span>");
				str.append("&nbsp;&nbsp;");
			}
			str.append("</div>");
		}

		// url = "";
		return str.toString();
	}

	// private StringBuffer style=new StringBuffer("");
	private StringBuffer getStyle() {
		StringBuffer style = new StringBuffer("");
		style
				.append("<style type=\"text/css\">")
				.append(
						".splitpagebox{overflow:hidden; zoom:1; font-size:12px; font-family:arial,helvetica,sans-serif;}")
				.append(
						".splitpagebox span{float:left; margin-right:2px; overflow:hidden; text-align:center; background:#fff;}")
				.append(
						".splitpagebox span a{display:block; overflow:hidden; zoom:1; _float:left;}")
				.append(
						".splitpagebox span.splitpagebox_pre_nolink{border:1px #ddd solid; width:53px; height:21px; line-height:21px; text-align:center; color:#999; cursor:default;}")
				.append(
						".splitpagebox span.splitpagebox_pre{color:#3568b9; height:23px;}")
				.append(
						".splitpagebox span.splitpagebox_pre a,.splitpagebox span.splitpagebox_pre a:visited,.splitpagebox span.splitpagebox_next a,.splitpagebox span.splitpagebox_next a:visited{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; text-align:center; width:53px; cursor:pointer; height:21px; line-height:21px;}")
				.append(
						".splitpagebox span.splitpagebox_pre1 a{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; text-align:center; width:90px; cursor:pointer; height:21px; line-height:21px;}")
				.append(
						".splitpagebox span.splitpagebox_pre a:hover,.splitpagebox span.splitpagebox_pre a:active,.splitpagebox span.splitpagebox_next a:hover,.splitpagebox span.splitpagebox_next a:active{color:#363636; border:1px #2e6ab1 solid;}")
				.append(
						".splitpagebox span.splitpagebox_num_nonce{padding:0 8px; height:23px; line-height:23px; _height:21px; _line-height:21px; color:#fff; cursor:default; background:#296cb3; font-size:85%;}")
				.append(
						".splitpagebox span.splitpagebox_num{color:#3568b9; height:23px; font-size:85%;}")
				.append(
						".splitpagebox span.splitpagebox_num a,.splitpagebox span.splitpagebox_num a:visited{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; padding:0 8px; cursor:pointer; height:21px; line-height:21px;}")
				.append(
						".splitpagebox span.splitpagebox_num a:hover,.splitpagebox span.splitpagebox_num a:active{border:1px #2e6ab1 solid;color:#363636;}")
				.append(
						".splitpagebox span.splitpagebox_num_ellipsis{color:#393733; width:28px; background:none; font-size:85%; line-height:29px;}")
				.append(
						".splitpagebox span.splitpagebox_next_nolink{border:1px #ddd solid; width:53px; height:21px; line-height:21px; text-align:center; color:#999; cursor:default;}")
				.append("</style>");
		return style;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}

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

	public HttpServletRequest getRequest() {
		return request;
	}

	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

	public int getPageCount() {
		return this.getPagecount();
	}
}


标签描述文件
<?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-jsptaglibrary_1_1.dtd">

<taglib>
	<tlibversion>1.2</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>page</shortname>
	<uri>/page</uri>
	
	<!-- 分页标签 -->
	<tag>
		<name>outpage</name>
		<tagclass>com.jn0813a.bss.commons.web.PageTag</tagclass>
		<bodycontent>JSP</bodycontent>
		<attribute>
			<name>currentPage</name>  <!-- 当前页数 -->
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>totalPage</name>   <!-- 总数 -->
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>pageSize</name>  <!-- 每页条数 -->
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
		<attribute>
			<name>action</name> <!-- URL请求路径 -->
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>className</name> <!-- 样式 -->
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
	</tag>

</taglib>


在页面里这样调用
<page:outpage pageSize="5" totalPage="${requestScope.pageBean.totalPage}" currentPage="${requestScope.pageBean.currentPage}" action="${path}${requestScope.action}"></page:outpage>
1
0
分享到:
评论
3 楼 yo8237233 2013-09-05  
大侠 少一个函数啊 ~~~~~  能不能把ChangePage 贴出来啊~~~ 谢谢
2 楼 lf008 2010-01-14  
chenshuang1227 写道
分页的数据呢,你的分页标签只有一个工具条,数据也没有。

可能是我表述的有问题吧,其实就是分页工具条,分页数据是在service层调用查询工具类查出来,是不可能在分页工具条里做数据查询,这样必然导致分层不明。
1 楼 chenshuang1227 2009-10-20  
分页的数据呢,你的分页标签只有一个工具条,数据也没有。

相关推荐

    java自定义分页标签

    - 自定义标签需要生成HTML代码来呈现分页条。例如,淘宝分页样式可能包括上一页、下一页、数字链接等元素,这些都需要在Java类中动态生成。 - 考虑到不同的分页样式,可以设计多个标签,每个对应一种风格,或者...

    自定义标签分页

    总之,自定义标签是Web开发中的重要工具,尤其在处理复杂逻辑和重复任务时,能够显著提高开发效率和代码质量。对于熟悉自定义标签,不仅能够提升开发技能,还能更好地理解和优化Web应用的架构。通过学习和使用自定义...

    java自定义分页标签实现带条件的分页查询

    在JSP中,自定义标签库(Tag Library)是一种强大的工具,它可以让我们创建自己的标签,以更简洁、可读的方式来处理复杂的逻辑。对于分页查询,我们可以创建一个名为`&lt;condition-pager&gt;`的自定义标签,它接受查询...

    java企业项目开发中的自定义分页标签

    在Struts2框架中,我们可以创建一个自定义标签库,包含用于分页的TLD(Tag Library Descriptor)文件,定义标签的属性如当前页码、每页显示条数等。然后,编写对应的Action类,该类将处理分页逻辑,包括计算总页数、...

    jsp 分页工具条 插件 自己留着用给大家分享一下

    在使用这个名为`pageTag`的分页工具条插件时,开发者首先需要将其导入到项目中,然后在JSP页面中引用相关的标签库。通过配置参数,如每页显示的记录数,以及当前页码,插件会自动生成相应的HTML结构并渲染在页面上。...

    struts自制标签分页封装

    在 Struts 自制标签分页封装的场景中,我们通常是为了提高应用的可维护性和易用性,通过自定义标签来实现页面的动态分页功能。在不依赖 Struts 1.3 框架包的情况下,我们可以自己编写相关的组件来达到相同的效果。 ...

    jsp自定义标签+jpa+hibernate+struts2实现的分页

    本项目结合了JSP自定义标签、JPA(Java Persistence API)、Hibernate ORM框架以及Struts2框架,实现了高效且灵活的分页功能。下面我们将详细探讨这些技术及其在分页中的应用。 首先,JSP自定义标签(Custom Tags)...

    java分页标签

    Java 分页标签是一种自定义标签库,用于在Java Web应用程序中实现页面的分页功能。在Web开发中,当数据量庞大时,一次性加载所有...通过理解上述核心概念,开发者可以更好地利用这样的分页工具,优化他们的Web应用。

    自定义分页控件

    自定义分页控件的目的是为了满足特定项目需求,可能需要添加额外功能,如跳转到第一页、最后一页的按钮,或者每页显示条数的下拉框等。通过理解和掌握以上知识点,我们可以创建出高效且易于维护的自定义分页控件。在...

    jsp 分页显示 标签 仿百度那样的分页效果

    标题中的“jsp分页显示标签”指的是JSP中可以使用的特定标签库,如JSTL(JavaServer Pages Standard Tag Library)或自定义标签,来简化分页逻辑的实现。JSTL的`&lt;c:forEach&gt;`标签可以用于循环输出分页按钮,而`...

    自定义通用分页一行代码解决分页问题

    本主题围绕“自定义通用分页一行代码解决分页问题”展开,介绍如何通过提供的BaseDao、PageBean分页工具类以及PageBeanTag助手类实现高效且简洁的分页功能。 首先,`BaseDao`是数据库操作的基类,通常包含了基本的...

    java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现

    本文将详细介绍一个自定义的Java分页工具类`PageUtils`,并探讨其在Struts、Spring、MyBatis和JSP等框架和技术中的具体应用。 #### 二、分页工具类`PageUtils` `PageUtils`类是一个实现了`Serializable`接口的Java...

    jpager分页标签(用于jsp页面中数据分页)

    **JPager 分页标签库详解** 在Web开发中,数据分页是一项常见且重要的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,我们通常会将数据分页展示。`jpager` 是一个专为 JSP 页面设计的分页标签库,它...

    菜鸟用标签做分页

    总结起来,"菜鸟用标签做分页"是一个关于使用JSP标签实现Web应用分页功能的教学主题,它涵盖了分页的基本原理、自定义标签的使用以及前后端的交互过程。对于初学者来说,掌握这部分知识对于提升Web开发技能非常有...

    jsp分页标签JPage(HOT)

    `jsp分页标签JPage`是一个在Java Web开发中常见的自定义标签库,用于实现页面数据的分页展示。在这个项目中,作者提供了两种不同的分页样式:一种是基础的“上一页”和“下一页”的切换,另一种则是模仿百度搜索结果...

    分页组件--通用的分页标签

    在JSP中,自定义标签库(Tag Library)是一种强大的工具,可以创建可重用的UI组件,例如我们的分页组件。 分页标签通常会包含以下关键元素: 1. **总记录数**:这是数据库中待分页的数据总数,用于计算总页数。 2....

    分页工具-jsp中分页集成jar包

    本资源包“分页工具-jsp中分页集成jar包”提供了在JSP(JavaServer Pages)环境中进行分页操作的解决方案。下面将详细解释这个包中的核心组件和使用方法。 1. **pager-taglib.jar**: 这是一个包含自定义标签库的...

    jsp分页标签

    在JSP中,我们可以利用自定义标签库(Tag Library)或者第三方组件如JSTL(JavaServer Pages Standard Tag Library)的`&lt;c:forEach&gt;`和`&lt;fmt:formatNumber&gt;`等标签来实现分页。 1. **JSP自定义标签库:** 开发者...

Global site tag (gtag.js) - Google Analytics