package com.test.page; import java.io.IOException; import java.io.Writer; import javax.servlet.http.HttpServletRequest;package com.test.page; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.components.Component; import org.apache.struts2.views.jsp.ComponentTagSupport; import com.opensymphony.xwork2.util.ValueStack; public class PageTag extends ComponentTagSupport { private static final long serialVersionUID = -5371048231966321759L; private int pageCount; /**当前页码**/ private int pageIndex; /**每页记录数**/ private int pageSize = 10; /**总记录数**/ private int totalCount; /**页码上的地址**/ private String url; @Override public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) { return new Page(arg0); } /** * @return the pageCount */ public int getPageCount() { return pageCount; } /** * @return the pageIndex */ public int getPageIndex() { return pageIndex; } /** * @return the pageSize */ public int getPageSize() { return pageSize; } /** * @return the totalCount */ public int getTotalCount() { return totalCount; } /** * @return the url */ public String getUrl() { return url; } //获得参数 @Override protected void populateParams() { super.populateParams(); Page pages = (Page)component; pages.setPageIndex(this.pageIndex);//当前页 pages.setPageSize(this.pageSize);//每页记录数 pages.setTotalCount(this.totalCount);//总记录数 pages.setPageCount(this.pageCount);//总页数 pages.setUrl(this.url); } /** * @param pageCount the pageCount to set */ public void setPageCount(int pageCount) { this.pageCount = pageCount; } /** * @param pageIndex the pageIndex to set */ public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } /** * @param pageSize the pageSize to set */ public void setPageSize(int pageSize) { this.pageSize = pageSize; } /** * @param totalCount the totalCount to set */ public void setTotalCount(int totalCount) { this.totalCount = totalCount; } /** * @param url the url to set */ public void setUrl(String url) { this.url = url; } }package com.test.page; import org.apache.log4j.Logger; public class PageUtil { /** * logger:日志对象 */ private static final Logger logger = Logger.getLogger(PageUtil.class); public static PageBean getPage(Object obj[], Object objValue[], int pageIndex,int pageSize, String uri) { if (logger.isDebugEnabled()) { logger.debug("Begin to getPage"); } //获取请求路径 String reqeustURL = uri; StringBuffer urlBuffer = new StringBuffer(); if (obj != null && objValue != null && obj.length > 0) { for (int i = 0; i < obj.length; i++) { for (int j = i; j == i; j++) { String strValue=String.valueOf(objValue[j]); if (i == 0) { urlBuffer.append("?" + obj[i] + "=" + repliceValue(strValue)); }else { urlBuffer.append("&" + obj[i] + "=" + repliceValue(strValue)); } } } } String URL = urlBuffer.toString(); if (null != URL) { reqeustURL = reqeustURL + URL; } //Page()构造方法参数:1:pageIndex 当前页,2:pagesize 每页数据;3:RUL 请求路径 PageBean pageBean = new PageBean(pageIndex, pageSize, reqeustURL); if (logger.isDebugEnabled()) { logger.debug("End to getPage"); } return pageBean; } private static Object repliceValue(Object obj){ try { if(StringUtil.isEmpty(obj)){ obj=String.valueOf(obj).replaceAll(String.valueOf(obj), ""); } } catch (Exception e) { logger.warn(e.getMessage(),e); } return obj; } }package com.surfilter.accesspoint.pageutil; import javax.servlet.http.HttpServletRequest; public class WebUtil { public static int getIntByRequestParament(final HttpServletRequest request, final String param, final int defaultvalue) { try { return Integer.parseInt(request.getParameter(param)); } catch (Exception e) { return defaultvalue; } } }import org.apache.log4j.Logger; import org.apache.struts2.ServletActionContext; import org.apache.struts2.components.Component; import com.opensymphony.xwork2.util.ValueStack; public class Page extends Component { /**当前页码的显示样式 如果外面不指定,将默认为显示**/ private String curPageNumberStyle = "pagenumbervisited"; /**带链接的页码的显示样式 如果外面不指定,将按默认值 **/ private String linkPageNumberStyle = "pagenumber"; private int pageCount; /**当前页码**/ private int pageIndex; /**每页记录数**/ private int pageSize = 10; /**总记录数**/ private int totalCount; /**页码上的地址**/ private String url; //获取值栈中的参数值 public Page(ValueStack stack) { super(stack); } /******************辅助方法*****************/ private String conversionUrl(final String url, final int pageIndex) { if (url == null || url.length() < 1) { return "login.jsp"; } if (url.indexOf('*') > -1) { return url.replace("*", String.valueOf(pageIndex)); } else { StringBuffer sb = new StringBuffer(url); if (sb.indexOf("?") > -1) { char c = sb.charAt(sb.length() - 1); if (c == '?' || c == '&') { sb.append("pageIndex=" + pageIndex); } else { sb.append("&pageIndex="+ pageIndex); } } else { sb.append("?pageIndex=" + pageIndex); } return sb.toString(); } } /** * @return the curPageNumberStyle */ public String getCurPageNumberStyle() { return curPageNumberStyle; } /** * @return the linkPageNumberStyle */ public String getLinkPageNumberStyle() { return linkPageNumberStyle; } /** * @return the pageCount */ public int getPageCount() { return pageCount; } /** * @return the pageIndex */ public int getPageIndex() { return pageIndex; } /** * @return the pageSize */ public int getPageSize() { return pageSize; } /** * @return the totalCount */ public int getTotalCount() { return totalCount; } /** * @return the url */ public String getUrl() { return url; } /** * @param curPageNumberStyle the curPageNumberStyle to set */ public void setCurPageNumberStyle(String curPageNumberStyle) { this.curPageNumberStyle = curPageNumberStyle; } /** * @param linkPageNumberStyle the linkPageNumberStyle to set */ public void setLinkPageNumberStyle(String linkPageNumberStyle) { this.linkPageNumberStyle = linkPageNumberStyle; } /** * @param pageCount the pageCount to set */ public void setPageCount(int pageCount) { this.pageCount = pageCount; } /** * @param pageIndex the pageIndex to set */ public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } /** * @param pageSize the pageSize to set */ public void setPageSize(int pageSize) { this.pageSize = pageSize; } /** * @param totalCount the totalCount to set */ public void setTotalCount(int totalCount) { this.totalCount = totalCount; } /** * @param url the url to set */ public void setUrl(String url) { this.url = url; } @Override public boolean start(Writer writer) { //在标签类中定义Request对象 HttpServletRequest request =ServletActionContext.getRequest(); String curPath = request.getContextPath(); boolean result = super.start(writer); try { StringBuilder str = new StringBuilder(); str.append("<table width='100%' border='0' cellspacing='0' cellpadding='0'>"); str.append("<tr>"); str.append("<td class='STYLE4'> 共有 " +this.pageCount + " 页,当前第 "); str.append(this.pageIndex + "页共" +this.totalCount + "条每页" + this.pageSize+ "条</td>"); str.append("<td>"); str .append("<table border='0' align='right' cellpadding='0' cellspacing='0'>"); str.append("<tr>"); // 如果当前页码大于1时,应该输出开始一页和上一页的连接 if (this.pageIndex > 1) { // 首页 String firstPageURL = this.conversionUrl(this.url, 1); String firstHref = "<a title='首页' href=" + firstPageURL + " style='text-decoration: none;'>"; String firstImg = "<img src='"+curPath+"/images/table/first.gif' width='37' height='15' border='0'/></a>"; str.append("<td width='40'>" + firstHref + firstImg + "</td>"); // 上一页 String backPageURL = this.conversionUrl(this.url, this.pageIndex - 1); String backHref = "<a title='上一页' href=" + backPageURL + " style='text-decoration: none;'>"; String backImg = "<img src='"+curPath+"/images/table/back.gif' width='43' height='15' border='0'/></a>"; str.append("<td width='45'>" + backHref + backImg + "</td>"); } // 只要没有进到最后一页,都应该输出下一面和最后一页连接 if (this.pageIndex <this.pageCount) { // 下一页 String nextPageURL = this.conversionUrl(this.url, this.pageIndex + 1); String nextHref = "<a title='下一页' href=" + nextPageURL + " style='text-decoration: none;'>"; String nextImg = "<img src='"+curPath+"/images/table/next.gif' width='43' height='15' border='0'/></a>"; str.append("<td width=\"45\">" + nextHref + nextImg + "</td>"); // 最后一页 String lastPageURL = this.conversionUrl(this.url, this.pageCount); String lastHref = "<a title='最后一页' href=" + lastPageURL + " style='text-decoration: none;'>"; String lastImg = "<img src='"+curPath+"/images/table/last.gif' width='37' height='15' border='0'/></a>"; str.append("<td width=\"40\">" + lastHref + lastImg + "</td>"); } str.append("</tr>"); str.append("</table>"); str.append("</td>"); str.append("</tr>"); str.append("</table>"); writer.write(str.toString()); } catch (IOException ex) { Logger.getLogger(Page.class.getName()).log(null, ex); } return result; } }
package com.test.page; public class PageBean{ /**URL上页码参数**/ public static String pageNumberParameterName = "pageIndex"; /**当前页码**/ private int pageIndex; /**每页记录数**/ private int pageSize = 10; /** * @Fields pageTotalCount :总页数 */ private int pageTotalCount; /**总记录数**/ private int totalCount; /**页码上的地址**/ private String url; public PageBean() { } /** * Index starts from 1, 2, 3... */ public PageBean(final int pageIndex) { this.pageIndex = pageIndex; } /** * Index starts from 1, 2, 3... */ public PageBean(final int pageIndex, final int pageSize) { this.pageIndex = pageIndex; this.pageSize = pageSize; } /** * 带URL地址构造方法,最常用的一种 * @param pageIndex 当前页 * @param pageSize 每页记录数 * @param url URL地址 */ public PageBean(final int pageIndex, final int pageSize, final String url) { this.pageIndex = pageIndex; this.pageSize = pageSize; this.url = url; } /** * 开始页 * @return */ public int getFirstIndex() { return (this.pageIndex - 1) * this.pageSize; } public boolean getHasNext() { return this.pageIndex < this.getPageCount(); } public boolean getHasPrevious() { return this.pageIndex > 1; } public int getLastIndex() { int n = this.getFirstIndex() + this.pageSize; if (n > this.totalCount) { n = this.totalCount; } return n; } public int getPageCount() { if (this.totalCount == 0) { return 0; } int pageCount=this.totalCount / this.pageSize+ (this.totalCount % this.pageSize == 0 ? 0 : 1); setPageTotalCount(pageCount); return pageCount; } public int getPageIndex() { return this.pageIndex; } public int getPageSize() { return this.pageSize; } /** * @return the pageTotalCount */ public int getPageTotalCount() { return pageTotalCount; } public int getTotalCount() { return this.totalCount; } public String getUrl() { return this.url; } public boolean isEmpty() { return this.totalCount == 0; } public void setPageIndex(final int pageIndex) { this.pageIndex = pageIndex; } /** * @param pageTotalCount the pageTotalCount to set */ public void setPageTotalCount(int pageTotalCount) { this.pageTotalCount = pageTotalCount; } public void setTotalCount(final int totalCount) { this.totalCount = totalCount; } public void setUrl(final String url) { this.url = url; } }
- struts2分页.rar (7 KB)
- 下载次数: 31
相关推荐
在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...
例如,在示例中创建了一个名为`tangs.tld`的文件,其中包含了对自定义分页标签`pages`的定义。TLD文件遵循JSP Tag Library 1.2的DTD规范,使得Web服务器可以解析并理解自定义标签的结构。 ```xml <!-- tangs.tld --...
8. **页面展示**:最后,在JSP页面中,我们可以使用Struts 2的内置标签结合自定义分页标签来展示数据和分页控件。 总结一下,实现Struts 2 自定义标签分页需要对Struts 2框架有深入理解,包括标签库的创建、Java类...
本篇文章将探讨如何在Struts2中实现自定义分页标签,这是一项非常实用的功能,尤其对于处理大量数据展示时,能显著提高用户体验。我们将深入源码,了解其工作原理,并提供一个自定义分页标签的实现过程。 首先,...
开发者可能结合Struts1标签库与自定义分页标签一起使用,实现更复杂的业务逻辑。 4. **实例化分页类**: 分页标签可能需要一个分页类的实例,这个类通常会包含当前页数、总页数、每页大小等属性,以及相关的计算...
通过对`TagDemo`的分析和学习,你可以更好地理解和应用Struts2自定义标签实现分页功能。 总之,Struts2自定义标签提供了一种灵活的方式,使得开发者能够在JSP页面中方便地实现分页效果。通过自定义标签,我们可以将...
在Struts2框架中,自定义标签是扩展和优化应用功能的重要手段,它允许开发者创建符合业务逻辑且...在实际项目中,根据业务需求,可以创建各种自定义标签,例如分页标签、数据表标签等,进一步优化开发效率和用户体验。
本教程将详细介绍如何在Struts2中自定义分页标签。 在传统的网页开发中,分页通常通过服务器端脚本或JavaScript实现,但在Struts2框架中,我们可以创建自定义标签来完成这一任务,使得代码更加模块化和易于维护。...
本项目"自定义分页标签struts2,spring"是针对Struts2和Spring框架的一个自定义标签实现,旨在简化开发过程,提高代码的可复用性和可维护性。下面我们将详细探讨这个项目中的关键技术点。 首先,Struts2是一个非常...
最后,在JSP页面中,我们可以像使用其他Struts2标签一样使用自定义的分页标签,通过属性传递参数。 ```jsp <%@ taglib prefix="s" uri="/struts-tags" %> ${currentPage}" total="${totalPages}" url="list....
本文将详细介绍如何在Struts2中实现分页标签,并提供一个简洁易懂的项目示例。 1. **Struts2分页概念**: 分页是将大量数据分割成若干小块,每次只加载一部分数据到页面上,使得用户可以逐页浏览,减轻服务器压力...
本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...
在Java Web开发中,Struts框架是常用的MVC框架之一...这种方式比直接使用Struts的分页标签更加灵活,但需要更多的编码工作。总的来说,自定义标签是Java Web开发中的一个重要技能,能够提升应用的可维护性和可扩展性。
本项目以SSH(Struts2、Spring、Hibernate)经典框架为基础,通过自定义分页标签实现了这一功能。下面将详细介绍自定义分页标签在项目中的应用及其核心知识点。 首先,SSH框架是Java Web开发中广泛使用的三大组件。...
1. **配置Struts2分页标签**: 在Struts2的配置文件(struts.xml)中,需要声明这个自定义标签的namespace、action和result。同时,需要配置拦截器栈,确保分页相关的参数能够正确传递。 2. **编写自定义标签库**: ...
在JSP页面中,你可以这样使用自定义分页标签: ```jsp <%@ taglib prefix="s" uri="/struts-tags" %> <!-- 显示数据 --> ${yourList}" var="item"> <!-- 表格内容 --> <!-- 分页 --> ${yourAction}" ...