`
xiang04551ran
  • 浏览: 5805 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

struts自定义分页标签

阅读更多
标签文件(放到WEB-INF目录下):
<?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>
	<tlib-version>2.2.3</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>pageTag</short-name>
	<uri>/pageTag</uri>
	<display-name>"pageTag"</display-name>
	<description><![CDATA[用于jsp文件中的分页功能]]></description>

	<tag>
		<name>pages</name>
		<tag-class>kaiqi.helpu.common.PageTag</tag-class>
		<body-content>JSP</body-content>
		<description><![CDATA[分页标签,只负责显示分页]]></description>
		<attribute>
			<name>currentPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[当前页]]></description>
		</attribute>
		<attribute>
			<name>totalPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[总页数]]></description>
		</attribute>
		<attribute>
			<name>url</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[请求的url地址]]></description>
		</attribute>
		<attribute>
			<name>cssClass</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[CSS的样式类名]]></description>
		</attribute>
		<attribute>
			<name>currentCssClass</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[当前页CSS的样式类名]]></description>
		</attribute>
		<attribute>
			<name>showPageNumber</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[分页时需要显示的数字页码个数]]></description>
		</attribute>

		<attribute>
			<name>firstPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[第一页]]></description>
		</attribute>
		<attribute>
			<name>endPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[最后页]]></description>
		</attribute>
		<attribute>
			<name>prePage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[下一页]]></description>
		</attribute>
		<attribute>
			<name>nextPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description><![CDATA[上一页]]></description>
		</attribute>
	</tag>
</taglib>

标签类:

/**
 * 分页标签
 * 
 */
public class PageTag extends ComponentTagSupport
{
	private String	currentPage = "1";	// 当前页
	private String	totalPage = "1";		// 总页数
	private String	url;			// 请求地址
	private String	cssClass = "pagination";		// CSS样式类
	private String currentCssClass = "current";	//当前页的CSS样式
	private String	showPageNumber = "5"; // 需要显示的页码数
									
	// 指定首页,末页,上一页,下一页在页面上显示时的字符串
	private String	firstPage = "第一页";
	private String	endPage = "最后页";
	private String	prePage = "<<";
	private String	nextPage = ">>";
	
	
	public void setCurrentPage(String currentPage)
	{
		this.currentPage = currentPage;
	}
	
	public void setTotalPage(String totalPage)
	{
		this.totalPage = totalPage;
	}
	
	public void setUrl(String url)
	{
		this.url = url;
	}
	
	public void setCssClass(String cssClass)
	{
		this.cssClass = cssClass;
	}
	
	public void setShowPageNumber(String showPageNumber)
	{
		this.showPageNumber = showPageNumber;
	}
	
	public void setFirstPage(String firstPage)
	{
		this.firstPage = firstPage;
	}
	
	public void setEndPage(String endPage)
	{
		this.endPage = endPage;
	}
	
	public void setPrePage(String prePage)
	{
		this.prePage = prePage;
	}
	
	public void setNextPage(String nextPage)
	{
		this.nextPage = nextPage;
	}
	
	public void setCurrentCssClass(String currentCssClass) {
		this.currentCssClass = currentCssClass;
	}

	@Override
	public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2)
	{
		return new PageManage(arg0); // 返回Pages Component,分页的逻辑处理都在这个Component中
	}
	
	// 获得参数
	protected void populateParams()
	{
		super.populateParams();
		
		PageManage pages = (PageManage) component;
		pages.setCssClass(cssClass);
		pages.setCurrentCssClass(currentCssClass);
		pages.setCurrentPage(currentPage);
		pages.setShowPageNumber(showPageNumber);
		pages.setTotalPage(totalPage);
		pages.setUrl(url);
		pages.setFirstPage(firstPage);
		pages.setEndPage(endPage);
		pages.setNextPage(nextPage);
		pages.setPrePage(prePage);
	}
}


分页逻辑处理类:
/**
 * * 分页逻辑
 * 
 */
public class PageManage extends Component {
	private String currentPage;
	private String totalPage;
	private String url;
	private String cssClass;
	private String currentCssClass;
	private String showPageNumber;
	private String firstPage;
	private String endPage;
	private String prePage;
	private String nextPage;

	public String getCurrentPage() {
		return currentPage;
	}

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

	public void setCurrentCssClass(String currentCssClass) {
		this.currentCssClass = currentCssClass;
	}

	public String getTotalPage() {
		return totalPage;
	}

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

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getCssClass() {
		return cssClass;
	}

	public void setCssClass(String cssClass) {
		this.cssClass = cssClass;
	}

	public String getShowPageNumber() {
		return showPageNumber;
	}

	public void setShowPageNumber(String showPageNumber) {
		this.showPageNumber = showPageNumber;
	}

	public void setFirstPage(String firstPage) {
		this.firstPage = firstPage;
	}

	public void setEndPage(String endPage) {
		this.endPage = endPage;
	}

	public void setPrePage(String prePage) {
		this.prePage = prePage;
	}

	public void setNextPage(String nextPage) {
		this.nextPage = nextPage;
	}

	public PageManage(ValueStack arg0) {
		super(arg0);
	}

	@Override
	public boolean start(Writer writer) {
		boolean result = super.start(writer);

		totalPage = parse(totalPage);
		currentPage = parse(currentPage);
		cssClass = parse(cssClass);
		currentCssClass = parse(currentCssClass);
		showPageNumber = parse(showPageNumber);
		endPage = parse(endPage);
		firstPage = parse(firstPage);
		prePage = parse(prePage);
		nextPage = parse(nextPage);

		return result;
	}
	
	private String parse(String value) {

		String actualValue = null;

		if (altSyntax()) {
			if (value.startsWith("%{") && value.endsWith("}")) {
				value = value.substring(2, value.length() - 1);
			}
		}

		actualValue = (String) getStack().findValue(value, String.class);
		if(actualValue == null) {
			actualValue = value;
		}
		return actualValue;
	}

	@Override
	public boolean end(Writer writer, String body) {
		try {
			StringBuilder outputStringBuilder = new StringBuilder();
			StringBuilder paramStringBuilder = new StringBuilder();
			boolean isValid = true;

			// 从ValueStack中取出数值
			if (isValid) {
				Set<String> keys = getParameters().keySet();

				for (String key : keys) {
					paramStringBuilder.append("&");
					paramStringBuilder.append(key);
					paramStringBuilder.append("=");
					//转换编码,否则会出现乱码
					paramStringBuilder.append(java.net.URLEncoder.encode(getParameters().get(key).toString(),"utf-8"));
				}
			}

			if (isValid) {
				Integer currentPageInt = Integer.valueOf(currentPage);
				Integer totalPageInt = Integer.valueOf(totalPage);
				Integer showPageNumberInt = Integer.valueOf(showPageNumber);
				String current = "";
				String param = paramStringBuilder.toString();

				if (totalPageInt != 0) {

					if (totalPageInt <= showPageNumberInt) { // 总的页数小于可以被显示的页码数
						if (currentPage.equals(totalPage)) { // 当前页等于总数页
							if ("1".equals(totalPage)) {
								// 如果totalPage = 1,则无需分页,不显示分页信息
							} else { // 总数页大于1
								outputStringBuilder.append("<ol class='" + cssClass + "'>");
								outputStringBuilder.append("<li>");
								outputStringBuilder.append("<a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=1" + param);
								outputStringBuilder.append("'>" + firstPage + "</a></li><li><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt - 1) + param);
								outputStringBuilder.append("'>" + prePage + "</a></li>");
								for (int i = 1; i <= totalPageInt; i++) {
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
								outputStringBuilder.append("</ol>");
							}
						} else { // 当前页不等于总数页
							if ("1".equals(currentPage)) { // 当前页为第一页
								outputStringBuilder.append("<ol class='" + cssClass + "'>");
								for (int i = 1; i <= totalPageInt; i++) {
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
								outputStringBuilder.append("<li><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt + 1) + param);
								outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
								outputStringBuilder.append("'>" + endPage + "</a></li></ol>");
							} else { // 当前页不为第一页
								outputStringBuilder.append("<ol class='" + cssClass + "'>");
								outputStringBuilder.append("<li>");
								outputStringBuilder.append("<a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=1" + param);
								outputStringBuilder.append("'>" + firstPage + "</a></li><li><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt - 1) + param);
								outputStringBuilder.append("'>" + prePage + "</a></li>");
								for (int i = 1; i <= totalPageInt; i++) {
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
								outputStringBuilder.append("<li><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt + 1) + param);
								outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
								outputStringBuilder.append("'>" + endPage + "</a></li></ol>");
							}
						}
					} else { // 总页数大于可以显示的页码数
						if (currentPage.equals(totalPage)) { // 当前页等于最后页
							outputStringBuilder.append("<ol class='" + cssClass + "'>");
							outputStringBuilder.append("<li>");
							outputStringBuilder.append("<a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=1" + param);
							outputStringBuilder.append("'>" + firstPage + "</a></li><li><a href='");
							outputStringBuilder.append(url);
							if((totalPageInt % showPageNumberInt) == 0) {//最后一页显示了showPageNumberInt条
								outputStringBuilder.append("?" + "currentPage=" + (totalPageInt-showPageNumberInt) +param);
							} else {//最后一页显示了不到showPageNumberInt条
							    outputStringBuilder.append("?" + "currentPage=" + (totalPageInt-(totalPageInt %showPageNumberInt)) +param);
							}
							outputStringBuilder.append("'>" + prePage + "</a></li>");
							/*显示可见页*/
							if((totalPageInt % showPageNumberInt) == 0) {
								for (int i = totalPageInt - showPageNumberInt +1;  i <= totalPageInt; i++) {
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
							    outputStringBuilder.append("</ol>");
							} else {
								for (int i = totalPageInt - totalPageInt % showPageNumberInt +1;  i <= totalPageInt; i++) {
									
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
							    outputStringBuilder.append("</ol>");
							}
							
						} else if(currentPage.equals("1")) { // 当前页为第一页
							outputStringBuilder.append("<ol class='" + cssClass + "'>");
							for (int i = 1; i <= showPageNumberInt; i++) {
								current = "";
								if (i == currentPageInt) {
									current = " class='"+currentCssClass+"' ";
								}
								outputStringBuilder.append("<li" + current + "><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + i + param);
								outputStringBuilder.append("'>" + i + "</a></li>");
							}
							outputStringBuilder.append("<li><a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=" + (1 + showPageNumberInt) + param);
							outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
							outputStringBuilder.append("'>" + endPage + "</a></li></ol>");
						
						} else if((currentPageInt - showPageNumberInt ) < 1) {//当前页在第一大页中
							outputStringBuilder.append("<ol class='" + cssClass + "'>");
							outputStringBuilder.append("<li>");
							outputStringBuilder.append("<a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=1" + param);
							outputStringBuilder.append("'>" + firstPage + "</a></li><li><a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=" + (currentPageInt - 1) + param);
							outputStringBuilder.append("'>" + prePage + "</a></li>");
							/*显示可见页*/
							for (int i = 1; i <= showPageNumberInt; i++) {
								current = "";
								if (i == currentPageInt) {
									current = " class='"+currentCssClass+"' ";
								}
								outputStringBuilder.append("<li" + current + "><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + i + param);
								outputStringBuilder.append("'>" + i + "</a></li>");
							}
							outputStringBuilder.append("<li><a href='");
							outputStringBuilder.append(url);
							/*显示下一大页*/
							if((currentPageInt % showPageNumberInt) == 0) {//当前页为该大页(第一大页)最后一页
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt + 1) + param);
							} else {//当前页不为该大页(第一大页)最后一页
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt + (showPageNumberInt- currentPageInt % showPageNumberInt)+ 1) + param);
							}
							
							outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
							outputStringBuilder.append("'>" + endPage + "</a></li></ol>");
						
						} else if ((currentPageInt - showPageNumberInt ) >= 1 && (currentPageInt + showPageNumberInt ) <= totalPageInt) {//当前页不在第一大页也不在最后一大页中	
							outputStringBuilder.append("<ol class='" + cssClass + "'>");
							outputStringBuilder.append("<li>");
							outputStringBuilder.append("<a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=1" + param);
							outputStringBuilder.append("'>" + firstPage + "</a></li><li><a href='");
							outputStringBuilder.append(url);
							/*显示前一大页*/
							if((currentPageInt % showPageNumberInt) == 0) {//当前页为该大页最后一页
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt - showPageNumberInt) + param);
							} else {//当前页不为该大页最后一页
								outputStringBuilder.append("?" + "currentPage=" + ((currentPageInt - (currentPageInt % showPageNumberInt))) + param);
							}
							outputStringBuilder.append("'>" + prePage + "</a></li>");
							
							if((currentPageInt % showPageNumberInt)!= 0) { //当前页不为该大页最后一页
								/*显示可见页*/
								for (int i = currentPageInt + (showPageNumberInt-currentPageInt % showPageNumberInt) + 1 - showPageNumberInt; i < currentPageInt + (showPageNumberInt-currentPageInt % showPageNumberInt) + 1; i++) {
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
								/*显示下一大页*/
								outputStringBuilder.append("<li><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt + (showPageNumberInt-currentPageInt % showPageNumberInt) + 1) + param);
								outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
								/*显示最后一页*/
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
								outputStringBuilder.append("'>" + endPage + "</a></li></ol>");
							}else { //当前页为该大页最后一页
								for (int i = currentPageInt - showPageNumberInt + 1; i <= currentPageInt ; i++) { //显示可见页
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
								outputStringBuilder.append("<li><a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt +  1) + param);
								
								outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
								outputStringBuilder.append(url);
								outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
								outputStringBuilder.append("'>" + endPage + "</a></li></ol>");
							}
						} else if ((totalPageInt - currentPageInt ) < showPageNumberInt) { //当前页在最后一大页中
							outputStringBuilder.append("<ol class='" + cssClass + "'>");
							outputStringBuilder.append("<li>");
							outputStringBuilder.append("<a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=1" + param);
							outputStringBuilder.append("'>" + firstPage + "</a></li><li><a href='");
							outputStringBuilder.append(url);
						
							
							/*显示前一大页*/
							if((currentPageInt % showPageNumberInt) == 0) {//当前页为该大页(最后一大页)最后一页
								outputStringBuilder.append("?" + "currentPage=" + (currentPageInt - showPageNumberInt) + param);
							} else {//当前页不为该大页(最后一大页)最后一页
								outputStringBuilder.append("?" + "currentPage=" + ((currentPageInt - (currentPageInt % showPageNumberInt))) + param);
							}
							outputStringBuilder.append("'>" + prePage + "</a></li>");
							
							if((currentPageInt % showPageNumberInt)!= 0) { //当前页不为该大页(最后一大页)的最后一页
								/*显示可见页*/
								for (int i = currentPageInt + (showPageNumberInt-currentPageInt % showPageNumberInt) + 1 - showPageNumberInt; i < totalPageInt+1; i++) {
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
							} else { //当前页为该大页最后一页
								for (int i = currentPageInt - showPageNumberInt + 1; i <= currentPageInt ; i++) { //显示可见页
									current = "";
									if (i == currentPageInt) {
										current = " class='"+currentCssClass+"' ";
									}
									outputStringBuilder.append("<li" + current + "><a href='");
									outputStringBuilder.append(url);
									outputStringBuilder.append("?" + "currentPage=" + i + param);
									outputStringBuilder.append("'>" + i + "</a></li>");
								}
							}
							/*显示下一页*/
							outputStringBuilder.append("<li><a href='");
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=" + (currentPageInt + 1) + param);
							outputStringBuilder.append("'>" + nextPage + "</a></li><li> <a href='");
							/*显示最后一页*/
							outputStringBuilder.append(url);
							outputStringBuilder.append("?" + "currentPage=" + totalPage + param);
							outputStringBuilder.append("'>" + endPage + "</a></li></ol>");

						
						}
					}
				}
			}

			writer.write(outputStringBuilder.toString());

		} catch (IOException e) {
			Logger.getLogger(PageManage.class.getName()).log(Level.SEVERE, null, e);
		}
		return super.end(writer, body);
	}

}


jsp文件:
<%@ taglib prefix="p" uri="/pageTag"%>
<p:pages currentPage="%{currentPage}" showPageNumber="3" totalPage="%{totalPage}" url="xxx.action" currentCssClass="current">
			<s:param name="condition" value="condition"></s:param>
		</p:pages>

其中totalPage和currentPage需要在action中设置。
分享到:
评论

相关推荐

    Struts2自定义分页标签

    本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...

    基于struts2 自定义标签 分页

    在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...

    自定义分页标签源代码

    开发者可能结合Struts1标签库与自定义分页标签一起使用,实现更复杂的业务逻辑。 4. **实例化分页类**: 分页标签可能需要一个分页类的实例,这个类通常会包含当前页数、总页数、每页大小等属性,以及相关的计算...

    自定义struts2 分页标签

    本教程将详细介绍如何在Struts2中自定义分页标签。 在传统的网页开发中,分页通常通过服务器端脚本或JavaScript实现,但在Struts2框架中,我们可以创建自定义标签来完成这一任务,使得代码更加模块化和易于维护。...

    Struts2中实现自定义分页标签 --功能扩充

    本篇文章将探讨如何在Struts2中实现自定义分页标签,这是一项非常实用的功能,尤其对于处理大量数据展示时,能显著提高用户体验。我们将深入源码,了解其工作原理,并提供一个自定义分页标签的实现过程。 首先,...

    Struts2分页-自定义标签-类似百度分页

    通过对`TagDemo`的分析和学习,你可以更好地理解和应用Struts2自定义标签实现分页功能。 总之,Struts2自定义标签提供了一种灵活的方式,使得开发者能够在JSP页面中方便地实现分页效果。通过自定义标签,我们可以将...

    自定义分页标签struts2,spring

    本项目"自定义分页标签struts2,spring"是针对Struts2和Spring框架的一个自定义标签实现,旨在简化开发过程,提高代码的可复用性和可维护性。下面我们将详细探讨这个项目中的关键技术点。 首先,Struts2是一个非常...

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

    本项目以SSH(Struts2、Spring、Hibernate)经典框架为基础,通过自定义分页标签实现了这一功能。下面将详细介绍自定义分页标签在项目中的应用及其核心知识点。 首先,SSH框架是Java Web开发中广泛使用的三大组件。...

    Struts 2 自定义标签分页

    8. **页面展示**:最后,在JSP页面中,我们可以使用Struts 2的内置标签结合自定义分页标签来展示数据和分页控件。 总结一下,实现Struts 2 自定义标签分页需要对Struts 2框架有深入理解,包括标签库的创建、Java类...

    struts2自定义标签案例详解

    例如,在示例中创建了一个名为`tangs.tld`的文件,其中包含了对自定义分页标签`pages`的定义。TLD文件遵循JSP Tag Library 1.2的DTD规范,使得Web服务器可以解析并理解自定义标签的结构。 ```xml &lt;!-- tangs.tld --...

    自定义标签代替Struts标签实现分页

    在Java Web开发中,Struts框架是常用的MVC框架之一...这种方式比直接使用Struts的分页标签更加灵活,但需要更多的编码工作。总的来说,自定义标签是Java Web开发中的一个重要技能,能够提升应用的可维护性和可扩展性。

    Struts2+jsp自定义分页组件以及源码

    本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...

    JSP自定义标签分页

    JSP自定义标签分页+Struts1.x标签,包含标签分页类、标签tld文件、web.xml配置和调用例子,非常地简单。 只要在Action传request.setAttribute("listUser", listUser);到JSP即可实现自动分页,输出分页样式可以自己去...

    tag struts2的自定义标签实例

    在Struts2框架中,自定义标签是扩展和优化应用功能的重要手段,它允许开发者创建符合业务逻辑且...在实际项目中,根据业务需求,可以创建各种自定义标签,例如分页标签、数据表标签等,进一步优化开发效率和用户体验。

    struts2自定义标签

    最后,在JSP页面中,我们可以像使用其他Struts2标签一样使用自定义的分页标签,通过属性传递参数。 ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ${currentPage}" total="${totalPages}" url="list....

    利用Struts和自定义标签实现分页,包括类库、例题、使用说明

    本教程将详细介绍如何在Struts框架中利用自定义标签实现分页。 首先,我们需要了解分页的基本原理。分页通常是通过在数据库查询中限制返回结果的数量来实现的。例如,如果每页显示10条记录,那么第一页将请求1到10...

    struts2做的分页标签

    本文将详细介绍如何在Struts2中实现分页标签,并提供一个简洁易懂的项目示例。 1. **Struts2分页概念**: 分页是将大量数据分割成若干小块,每次只加载一部分数据到页面上,使得用户可以逐页浏览,减轻服务器压力...

Global site tag (gtag.js) - Google Analytics