`
qieyi28
  • 浏览: 158315 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2 java分页

 
阅读更多
  第二次修改了分页代码,解决了一些小bug,此代码还在测试中,欢迎指出问题。。。
如果你不是使用AJAX分页,请将jsp页面中超链接的js替换成action请求地址即可。
这是ajaxPageInfo.java
package com.dwh.common.sys;

import org.apache.struts2.ServletActionContext;
/*
 * 分页查找类
 * 
 * 说明,如果要应用于ajax,在数据访问层应该用上如下参数
 * 
 * 		//分页需要的一些参数
		String requestURI="queryPurchaseMuti";//应用请求地址
		String queryString="";//参数
		Iterator iter = m.entrySet().iterator();  
		while (iter.hasNext()) {  
		Map.Entry entry = (Map.Entry) iter.next(); 
		  if(!entry.getKey().equals("cur_arg")){
			Object key = entry.getKey();  
			Object val = entry.getValue(); 
			queryString+="&"+key+"="+val;
		  }
		}  
		purchase.setPageUrl(requestURI, queryString);
		purchase.setPageSize(2);//设置每页显示的数量为2
		purchase.setSumRows(8);//查出当前项目为8页
 * 
 * 
 */
public class AjaxPageInfo {
	/**当前页数*/
	private int currentPage;	
	/**每页显示数量 */
	private int pageSize =10;
	/**总共有多少页*/
	private int sumPages;
	/**总记录数*/
	private int sumRows;	
	/**点击下一页的应用地址*/
	private String pageUrl;	
	/**当前开始记录数*/
	private int startRow;	
	/**当前结束记录数*/
	private int endRow;
	
	/**前台从第几页开始显示**/
	private int beginPage;
	/**前台到第几页结束显示**/
	private int endPage;
	/**前台一次展现几个Page链接**/
	private int pageNumber=10;//前台一次展现10个页面链接

	
	/**
	 * 得到当前页码
	 * @return
	 */
	public int getCurrentPage() {
		return currentPage;
	}
	/**
	 * 设置当前页码
	 * @param currentPage
	 */
	public void setCurrentPage(String curPage) {
		if(curPage==null||curPage.equals("")){//没有指定当前页的情况下,默认为0,适应第一页
			this.currentPage=0;
		}else{
			currentPage=Integer.parseInt(curPage);
		}
		this.currentPage = currentPage < 1 ? 0 : currentPage;//当前页通过浏览器参数传过来
		this.startRow=currentPage*pageSize;				//设置起始记录数,0开始为第一页的内容
		this.endRow=startRow+pageSize;
		setPageUrl();										//启动获取页数
	}
	/**
	 * 得到每页行数
	 * @return
	 */
	public int getPageSize() {
		return pageSize;
	}
	/**
	 * 设置每页行数
	 * @param rowsPage
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	/**
	 * 得到总页数
	 * @return
	 */
	public int getSumPages() {
		return sumPages;
	}
	/**
	 * 设置总页数
	 * @param sumPages
	 */
	public void setSumPages(int sumPages) {
		this.sumPages = sumPages;
	}
	/**
	 * 得到总行数
	 * @return
	 */
	public int getSumRows() {
		return sumRows;
	}
	/**
	 * 设置总行数
	 * @param sumRows
	 */
	public void setSumRows(int sumRows) {
		this.sumRows = sumRows;
		if(sumRows%pageSize==0){//刚好整除
			this.sumPages=sumRows/pageSize;//算出总页数
		}
		if(sumRows%pageSize>0){//余数为正
			this.sumPages=sumRows/pageSize+1;
		}
		if(sumRows%pageSize<0){//余数为负
			this.sumPages=sumRows/pageSize;
		}
		
	}
	public void setSumRows(int sumRows,int begin,int end) {//设置页面展现链接规则
		this.sumRows = sumRows;
		if(sumRows%pageSize==0){//刚好整除
			this.sumPages=sumRows/pageSize;//算出总页数
		}
		if(sumRows%pageSize>0){//余数为正
			this.sumPages=sumRows/pageSize+1;//(sumRows/pageSize)+1页
		}
		if(sumRows%pageSize<0){//余数为负
			this.sumPages=sumRows/pageSize;
		}
		this.beginPage=begin;
		this.endPage=end;
		
		
		if(sumPages<pageNumber){//总页数比指定页数还小的时候
			this.pageNumber=sumPages;
		}

		//求得链接集开始页码和结束页码
		if(pageNumber<sumPages){
			if(currentPage>0){		
				this.beginPage=(currentPage/pageNumber)*pageNumber;//去除余数的整数*pageNumber
				this.endPage=beginPage+pageNumber;
			}else{
				this.beginPage=1;
				this.endPage=pageNumber;
			}
		}else{
			this.beginPage=1;
			this.endPage=pageNumber;
		}
		//点击当前分页末端链接	
		if((currentPage+1)%pageNumber==0){
			if(sumPages>pageNumber){//只有当总页数大于每页显示链接数时开始链接才累加
				this.beginPage=currentPage+1;
			}else{
				this.beginPage=begin;
			}
			if(sumPages-currentPage>pageNumber){//当前页不是第一个链接集合页
				this.endPage=currentPage+11;
			}else{
				this.endPage=sumPages;
			}
		}
		//点击当前分页最前端链接
		if(beginPage==currentPage+1&&currentPage!=0&&(currentPage+1)%pageNumber==0){
			if(currentPage+1==begin){
				if(currentPage+1!=pageNumber){//如果不为第二个链接页
				this.beginPage=(currentPage+1)-pageNumber;
				}else{
				this.beginPage=(currentPage+2)-pageNumber;	//如果要跳到第一页去
				}
				this.endPage=currentPage+1;
			}
		}
		
		if(currentPage == sumPages-1){//如果是尾页,算出页面链接的开始和结束
			if(sumPages==1){
				this.beginPage = 1;
				this.endPage =1;
			}else{
				if(sumPages>pageNumber){
					this.beginPage = sumPages - (sumPages % pageSize);//得到,总数减余数	
				}
				this.endPage = sumPages;
			}
				
		}
		
		
	//	System.out.println("开始页:"+beginPage);
	//	System.out.println("结束页:"+endPage);
		
	}
	/**
	 * 设置应用地址
	 * @return 拼接的应用地址加参数
	 */
	public String getPageUrl() {
		return pageUrl;
	}
	public void setPageUrl() {
		String pageURl =  ServletActionContext.getRequest().getRequestURI()+"?a=a";
		pageURl +="&"+ServletActionContext.getRequest().getQueryString();
		pageURl=pageURl.replaceAll("&curPage="+currentPage,"");//去除页面重复参数
		if(pageURl.contains("a=a&")){						   //去除页面重复参数
			pageURl=pageURl.replaceAll("a=a&", "");
		}else{
			pageURl=pageURl.replaceAll("a=a", "");
		}
		this.pageUrl = pageURl;
	}
	/**setPageUrl()的重载
	 * @param requestURI js截取的uri
	 * @param queryString  js截取的参数
	 * */
	public void setPageUrl(String requestURI,String queryString) {
		String pageURl =  requestURI+"?a=a";
		pageURl +="&"+queryString;
		pageURl=pageURl.replaceAll("&curPage="+currentPage,"");//去除页面重复参数
		if(pageURl.contains("a=a&")){						   //去除页面重复参数
			pageURl=pageURl.replaceAll("a=a&", "");
		}else{
			pageURl=pageURl.replaceAll("a=a", "");
		}
		this.pageUrl = pageURl;
	}

	
	public int getStartRow() {
		return startRow;
	}
	public void setStartRow(int startRow) {
		this.startRow = startRow;
	}
	public int getEndRow() {
		return endRow;
	}
	public void setEndRow(int endRow) {
		this.endRow = endRow;
	}
	public int getBeginPage() {
		return beginPage;
	}
	public int getPageNumber() {
		return pageNumber;
	}
	public void setPageNumber(int pageNumber) {
		this.pageNumber = pageNumber;
	}
	public void setBeginPage(int beginPage) {
		if(currentPage==0){//第一次运行分页代码
			this.beginPage=1;
		}
		this.beginPage = beginPage;
	}
	public int getEndPage() {
		return endPage;
	}
	public void setEndPage(int endPage) {
		if(currentPage==0){//第一次运行分页代码
			this.endPage=pageNumber;
		}
		this.endPage = endPage;
	}

}



这是pageinfo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"
	isELIgnored="false"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<head>
<style type="text/css">
DIV.scott A.actives {
	BORDER-RIGHT: #85bd1e 1px solid; BORDER-TOP: #85bd1e 1px solid; BORDER-LEFT: #85bd1e 1px solid; COLOR: #638425; BORDER-BOTTOM: #85bd1e 1px solid; BACKGROUND-COLOR: #f1ffd6; text-decoration:none;
}
</style>
</head>

<link href="${pageContext.request.contextPath}/lib/common/css/pageInfo.css" type="text/css" rel="stylesheet">

<div class="scott" id="showPage" style="height: 28px;">
	<s:if test="currentPage>0">
		<a href="javascript:ajaxQuery('${pageUrl}&currentPage=0');">首页</a>|
        <a href="javascript:ajaxQuery('${pageUrl}&currentPage=${currentPage-1}');">上一页</a>|
    </s:if>
	<s:else>首页| 上一页|</s:else>
	
	<!-- 中间分第几页显示 -->
			<s:bean name="org.apache.struts2.util.Counter" id="counter">
			<s:param name="first" value="beginPage" />
			<s:param name="last" value="endPage" />
			<s:iterator>
			<s:if test="currentPage+1==current-1">
			<a class="actives" href="javascript:ajaxQuery('${pageUrl}&currentPage=${current-2}');"><s:property /></a>
			</s:if>
			<s:else>
			<a href="javascript:ajaxQuery('${pageUrl}&currentPage=${current-2}');"><s:property /></a>
			</s:else>
			</s:iterator>
			</s:bean>

	<!-- 中间分页结束 -->
	<s:if test='currentPage+1 < sumPages'>
		<a href="javascript:ajaxQuery('${pageUrl}&currentPage=${currentPage+1}');">下一页</a>|
        <a href="javascript:ajaxQuery('${pageUrl}&currentPage=${sumPages-1}');">尾页 
		</a>
	</s:if>
	<s:else>下一页| 尾页 </s:else>

	共${sumPages}页/共${sumRows}条 第
	<input id="load" type="text" size="3" value="" onkeyup="loadUrl(this.value)">
	页
	<a href="javascript:;" onclick="loadUrl2(document.getElementById('load').value);">确定</a>
</div>

<script type="text/javascript">
//ajax 要加载的请求
	function ajaxQuery(url){
	url+="&beginPage="+${beginPage}+"&endPage="+${endPage};
		$.ajax({
			url:url,
			type:"get",
			cache:false,
			success:function(data){//对应ajax处理			
				var selectFetchType=$('#fetchType').find("option:selected").text();
				$('#content').html(data);//向指定显示内容位置写入jsp文件
				$('#queryName').html(selectFetchType);	
				$('#queryName').width(100);
			}
			});
	}
	function loadUrl(str) {
		//首先判断是否为数字,不为数字提示,输入不可非数字 
		if (window.event) {//判断事件
			var keyCode = window.event.keyCode;
			if (keyCode == 13 && str != false) {//回车事件
				//首先判断是否为数字,不为数字提示,输入不可非数字 
				var str = isNumber(str);
				if (str == false) {
					alert("页数不可以为负数或非数字");
					return false;
				}
				var sumPages = '${sumPages}';
				str = parseInt(str);
				if (str > sumPages || str < 1) {
					alert("没有这个页数 ");
					return false;
				}//oracle数据库,不用在这里str加1
				str = str - 1;//如果是ORACLE数据库,这里不用减1,下标是从1开始的 
				ajaxQuery('${pageUrl}&currentPage='+str);
			}
		}
	}
	function loadUrl2(str) {
		//首先判断是否为数字,不为数字提示,输入不可非数字 
		var str = isNumber(str);
		if (str == false) {
			alert("页数不可以为负数或非数字");
			return false;
		}
		var sumPages = '${sumPages}';
		str = parseInt(str);
		if (str > sumPages || str < 1) {
			alert("没有这个页数 ");
			return false;
		}//oracle数据库,不用在这里str加1
		str = str-1;
		ajaxQuery('${pageUrl}&currentPage='+str);
	}

	/*调整样式 */
	var currentPage = '${currentPage}';
	function showCurrent() {
		var page = document.getElementById("showPage");
		if (currentPage != "") {
			var cssPage = page.getElementsByTagName("span");
			if (currentPage < cssPage.length) {
				cssPage[currentPage].className = "current";
			}
		}
	}
	showCurrent();

	/*判断是否为数字*/
	function isNumber(str) {
		var Letters = "1234567890.";
		for ( var i = 0; i < str.length; i = i + 1) {
			var CheckChar = str.charAt(i);
			if (Letters.indexOf(CheckChar) == -1) {
				return false;
			}
		}
		return str;
	}
</script>



分享到:
评论

相关推荐

    Struts2实现分页查询

    用Struts2+mysql实现的简单信息录入,分页查询

    Struts2自定义分页标签

    Struts2作为一款流行的Java Web框架,为开发者提供了强大的MVC支持。在处理大量数据时,分页功能是必不可少的,它可以提高用户体验并减少服务器负载。本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程...

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...

    jquery java struts2 实现分页 非常好看的分页

    本教程将详细讲解如何利用jQuery、Java和Struts2框架来实现一个美观且可自定义样式的分页功能。 首先,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在分页场景...

    struts2实现分页

    ### Struts2 实现分页及 `&lt;s:bean&gt;` 标签详解 #### 一、Struts2 分页概述 在 Java Web 开发中,为了提高用户体验并减轻服务器负担,通常采用分页技术来展示数据。Struts2 框架提供了一套强大的工具和标签库来帮助...

    使用 struts2实现分页

    在Java Web开发中,Struts2是一个非常流行的MVC框架,它提供了强大的功能来构建动态、数据驱动的Web应用程序。本篇文章将详细讲解如何利用Struts2和JSP实现前端的分页功能。 分页是Web应用中常见的需求,尤其在处理...

    基于struts2 自定义标签 分页

    Struts2是一个强大的MVC框架,它在Java Web开发中被广泛应用。自定义标签是Struts2的一个重要特性,允许开发者扩展框架的功能,提供更友好的界面元素。在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨...

    Struts2 分页实现

    Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。在处理大量数据时,为了提高用户体验,分页显示是非常必要的。本实践项目旨在展示如何在Struts2中实现分页功能,适用于初学者学习和...

    hibernate+struts2分页代码

    【hibernate+struts2分页代码】是关于如何在Java Web开发中结合Hibernate ORM框架和Struts2 MVC框架实现数据分页的功能。在Web应用程序中,分页是提高用户体验的重要手段,它允许用户逐步浏览大量数据,而无需一次性...

    struts2做的分页标签

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化和高度控制的Web应用程序。在Struts2中,分页是常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要将结果分成多页显示。本文将...

    经典struts2分页方法 JAVA_WEB必备分页 源码

    经典Struts2分页方法是Java Web开发者需要掌握的核心技能之一。 分页的实现通常涉及到以下几个关键知识点: 1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含...

    struts1.2实现分页

    Struts1.2是Apache软件基金会的Jakarta项目下的一个开源框架,主要用于构建基于Java的Web应用程序。在大型数据展示时,为了提高用户体验,通常会采用分页技术来避免一次性加载大量数据导致页面响应慢或者内存溢出的...

    struts写的分页

    Struts和Hibernate是Java开发中常用的两个开源框架。Struts主要负责MVC(Model-View-Controller)架构的实现,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于处理数据库操作。当我们谈论“Struts写的分页...

    struts2分页效果第二种

    Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。在处理大量数据时,分页是必不可少的功能,它可以提高用户体验,避免一次性加载过多数据导致页面响应变慢。本文将详细介绍...

    struts2 jquery 分页

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了强大的控制层逻辑处理能力,而jQuery则是一个高效、简洁的JavaScript库,简化了DOM操作、事件处理和AJAX交互。当这两者结合时,可以...

    Struts + Hibernate 分页实现

    此外,为了在页面上显示分页效果,我们需要在JSP(Java Server Pages)中使用Struts的标签库,如`s:iterator`标签遍历查询结果,`s:url`和`s:a`标签创建链接来导航到不同的页面。同时,还需要显示当前页数、总页数、...

    Struts2分页源码技术的应用

    Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...

    struts2实现分页显示

    在Java Web开发中,Struts2是一个非常流行的MVC框架,它提供了强大的功能来构建动态、数据驱动的Web应用程序。当我们处理大量数据时,分页显示是必不可少的,它可以提高用户体验,避免一次性加载过多的数据导致页面...

    java分页。struts2标签

    根据给定的文件信息,我们将深入探讨“Java分页与Struts2标签”的知识点,以及如何在实际项目中实现分页功能。 ### Java分页原理 分页是Web开发中的常见需求,尤其当数据量庞大时,一次性加载所有数据不仅会增加...

Global site tag (gtag.js) - Google Analytics