`
lvning
  • 浏览: 10362 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2自定义分页标签

阅读更多
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'>&nbsp;&nbsp;共有 " +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 自定义标签 分页

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

    struts2自定义标签案例详解

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

    Struts 2 自定义标签分页

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

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

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

    自定义分页标签源代码

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

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

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

    tag struts2的自定义标签实例

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

    自定义struts2 分页标签

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

    自定义分页标签struts2,spring

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

    struts2自定义标签

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

    struts2做的分页标签

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

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

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

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

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

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

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

    Struts+Hibernate分页标签

    1. **配置Struts2分页标签**: 在Struts2的配置文件(struts.xml)中,需要声明这个自定义标签的namespace、action和result。同时,需要配置拦截器栈,确保分页相关的参数能够正确传递。 2. **编写自定义标签库**: ...

    struts2 完美实现 标签分页

    在JSP页面中,你可以这样使用自定义分页标签: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; &lt;!-- 显示数据 --&gt; ${yourList}" var="item"&gt; &lt;!-- 表格内容 --&gt; &lt;!-- 分页 --&gt; ${yourAction}" ...

Global site tag (gtag.js) - Google Analytics