`
xuming9
  • 浏览: 26338 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

show下我的分页类

阅读更多
package com.xm.utils;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.kangsheng.cus.common.dbconn.DaoFactory;

// Referenced classes of package com.sihitech.tools:
//            DaoFactory

public class PageRoll {
	private String currentUrl;

	// private PageContext page;

	private DaoFactory pv;

	private HttpServletRequest request;

	private HttpServletResponse response;

	private String strParams;

	private String strlink;

	public PageRoll(HttpServletRequest request, HttpServletResponse response,
			DaoFactory pv) {
		currentUrl = "";
		strParams = "";
		this.request = request;
		this.response = response;
		this.pv = pv;
		currentUrl = request.getRequestURL().toString();

		strParams = GetParamsFromCurrentUrl();
	}

	private String GetParamsFromCurrentUrl() {
		String str1 = "";
		String paraValue = "";
		for (Enumeration enu = request.getParameterNames(); enu
				.hasMoreElements();) {
			String paraName = (String) enu.nextElement();
			paraValue = request.getParameter(paraName);
			if (!paraName.equals("page"))
				str1 = str1 + "&" + paraName + "=" + paraValue;
		}

		return str1;
	}

	public void Show(boolean allRecord, boolean pageInfo, boolean pageNav,
			boolean jumpPage) {
		// PrintWriter out = response.getWriter();
		// out.print("<table border=0> <tr><td>");
		String link = "";
		if (allRecord)
			link = link + ShowTotalRecord();
		if (pageInfo)
			link = link + ShowPageInfo();
		if (pageNav)
			link = link + ShowPageNav();
		if (jumpPage)
			link = link + ShowJumpPage();
		this.strlink = link;
		// out.print("</td></tr></table>");
	}

	private String ShowJumpPage() {
		// PrintWriter out = response.getWriter();
		String link = "";
		link = link
				+ "转到第<input type='text' name='page' size='1'><span>页</span><input type=button value='GO' onclick='goToPage()'>";
		link = link + "<script language='javascript'>";
		link = link + "function goToPage(){";
		link = link + "value=document.all.page.value;";
		link = link
				+ "if(value.indexOf(\".\")==-1 && value.indexOf(\"-\")==-1 && value!==\"\" && !isNaN(value) && value>0 && value<"
				+ (pv.GetTotalPage() + 1) + "){";
		link = link + "location.assign('" + currentUrl + "?page='+value+'"
				+ strParams + "')";
		link = link + "}";
		link = link + "}";
		link = link + "</script>";
		return link;
	}

	private String ShowPageInfo() {
		// PrintWriter out = response.getWriter();
		String link = "第" + pv.GetCurrentPage() + "/" + pv.GetTotalPage()
				+ "页&nbsp";
		return link;
	}

	private String ShowPageNav() {
		// PrintWriter out = response.getWriter();
		String link = "";
		if (pv.GetTotalPage() > 1)
			link = "<a href='" + currentUrl + "?page=1" + strParams
					+ "'><span>首页</span></a>&nbsp;";
		else
			link = "<span>首页&nbsp;</span>";
		//
		if (pv.GetHasPrev())
			link = link + "<a href='" + currentUrl + "?page="
					+ pv.GetPrevPageNumber() + strParams + "'><span>上页</span></a>&nbsp;";
		else
			link = link + "<span>上页&nbsp;</span>";
		//
		if (pv.GetHasNext())
			link = link + "<a href='" + currentUrl + "?page="
					+ pv.GetNextPageNumber() + strParams + "'><span>下页</span></a>&nbsp;";
		else
			link = link + "<span>下页&nbsp;</span>";
		//
		if (pv.GetTotalPage() > 1) {
			link = link + "<a href='" + currentUrl + "?page="
					+ pv.GetTotalPage() + strParams + "'><span>尾页</span></a>&nbsp;";
			return link;
		} else {
			link = link + "<span>尾页&nbsp;</span>";
			return link;
		}
	}

	private String ShowTotalRecord() {
		// PrintWriter out = response.getWriter();
		String link = "<span>共" + pv.GetTotalRecord() + "条记录&nbsp;</span>";
		return link;
	}

	public String getStrlink() {
		return strlink;
	}

	public void setStrlink(String strlink) {
		this.strlink = strlink;
	}

}


使用时,在action中建立该类的对象pr,并执行public void Show(boolean allRecord, boolean pageInfo, boolean pageNav,boolean jumpPage),将该对象放入ModelAndView,在页面使用${pr.strlink }就可以实现分页,如图


本人从事JAVA才1年,希望达到抛砖引玉的效果,大家把自己的工具拿出来show show,共同研究下,学习下
也建议版主弄一个工具包专题
  • 大小: 4 KB
分享到:
评论
68 楼 gundumw100 2009-10-08  
不值得推荐!!!
67 楼 kaki 2008-12-19  
感谢楼主和大家分享,我还不如你。
66 楼 cissco 2008-11-20  
现在都转行搞Linux下的C/C++开发了,呵~
65 楼 our651 2008-11-20  
我觉得分页也应该与MVC、分层的思想一致,同时做到好的封装
代码我没有,我只有思路:
1、分页功能应该是业务层与数据层之间的一个类似filter的东西,比如你业务类向数据层要数据时要经过分页功能的过滤,把数据包装成分好的页面再传给业务类。
2、流程类似 请求-->ACTION-->业务代码-->分页类
3、应该不止是一个类,如至少要一个Paging类,根据业务类给出的条件做分页处理,生成一个Page类放入scope,由页面表示层排版显示。同时为了不要每次都要在Page类中设定页面大小等参数,可以考虑用一个app scope的单列类来载入一些固定的设定。
4、最后要特别注意的是:业务类调用分页类是,条件怎么表示(也就是它们的耦合程度多高)--这个是重点
5、为了公用,分页组件与数据库相关的操作都应该通过DAO来处理
64 楼 ahuango 2008-11-19  
在AJAX流行的年代,不要用后台代码实现分页,这样很复杂。在前台分页,后台只负责生成相应的SQL来获取数据。这样在前台还能实现数据缓存,对已经浏览过的数据不需要再次请求。而且可以很容易的构造请求参数。
63 楼 mikab 2008-11-19  
代码没有好坏,合适最好。

没准楼主的整个框架里就是需要而且只能这么用分页类呢?
62 楼 anson_xu 2008-11-19  
砖就拍过了,可是我还没看大一个大家认可的分页类或者多个分页辅助类.
61 楼 woleve 2008-11-19  
不管怎样,简单,易于修改,便于复用,符合需求是目的。显然LZ代码不符合要求
60 楼 ylpp108 2008-11-19  
我觉得楼主把这个类所在的使用环境说清楚会好点~~
这样大家才能有针对的讨论~
59 楼 bubble 2008-11-19  
EXvision 写道
bubble 写道
支持一下楼主,给你贴一个我最近写的一个分页:
package org.base;

import java.util.List;
/**
 * 
 * @author Bubble zheshexian@gmail.com
 *
 */
public class Page {

......



楼上的也是在拼html。拜倒了。就一个你人支持楼主。。。看看别人回帖先。。

拼不拼html不重要,重要的是不能把样式写进去就好,我写的只是我自己用的爽,呵呵
有的人喜欢把数据拿到页面上再拼,那就慢慢拼被,谁也没反对
58 楼 ttitfly 2008-11-19  
恩, 支持show代码:)少点谩骂声。多点鼓励会更好。
57 楼 lkjust08 2008-11-19  
sjwiner 写道
不要总是批评人家写的程序不好,如果你们觉得自己写的水平高,也拿出来让大家学习学习啊。


楼上说的对,不要总是批评人家写的程序不好,如果你们觉得自己写的水平高,也拿出来让大家学习学习啊。
56 楼 maomao113 2008-11-19  
至少是别人自己写的·····
55 楼 yuan_zwen 2008-11-19  
貌似autoJava里的分页方法
54 楼 wnick 2008-11-19  
http://wnick.iteye.com/blog/242945
类似的用的是 tld
53 楼 xiaoxiangli1 2008-11-19  
不要拼代码,
有"上一页""下一页"字样的最好写在JSP里面
要想想后期的维护和修改!!!
可不能一味的追求当时的快感.
52 楼 raojl 2008-11-19  
我觉得敢拿出来让人评就是很好的!为什么每个人不都拿出来看看呢?
51 楼 kaipingk 2008-11-19  
实际效果:
http://zhuangxiu007.com/
50 楼 kaipingk 2008-11-19  
演示一下我的分页哈,我的分页主要用于网页开发哈,这个是个用jsp的tag文件实现了,数据通过在jsp里面传过来。这样数据和显示都分离了。
<%@ tag body-content="scriptless" pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ tag import="java.lang.Integer" %>
<%@ attribute name="totalSize" required="true" type="java.lang.Integer"%>
<%@ attribute name="pageSize" required="true" type="java.lang.Integer"%>
<%@ attribute name="itemCount" type="java.lang.Integer"%>
<%@ attribute name="id" type="java.lang.String"%>
<%@ attribute name="recordName" type="java.lang.String"%>
<%@ attribute name="barClass" type="java.lang.String"%>
<%@ attribute name="barStyle" type="java.lang.String"%>
<%@ attribute name="startName" type="java.lang.String"%>
<%@ attribute name="sizeName" type="java.lang.String"%>

<c:if test="${empty recordName}">
	<c:set var="recordName" scope="page" value="记录" />
</c:if>
<c:if test="${empty itemCount or itemCount<=0}">
	<c:set var="itemCount" scope="page" value="6" />
</c:if>
	<c:set var="startName" value="START" />
	<c:set var="sizeName" value="SIZE" />
<%
	startName = startName==null? "START" : startName;
	sizeName = sizeName==null? "SIZE" : sizeName;
	int start = 0;
	if(request.getParameter(startName) != null){
		start = Integer.parseInt(request.getParameter(startName));
	}
	if(request.getParameter(sizeName) != null){
		pageSize = Integer.parseInt(request.getParameter(sizeName));
	}

	int curentPage = start/pageSize+1;
	int lastPage = totalSize/pageSize;
	if(totalSize%pageSize == 0 && lastPage>0)
		lastPage--;

	String queryString = request.getQueryString();
	queryString = queryString == null ? "" : queryString.replaceAll("&*("+startName+"|"+sizeName+")=\\d*","");
	if(queryString != null && queryString.length()>0)
		queryString += "&";

%>
<div class="${barClass }" style="${barStyle }">
	<span>共${totalSize}条${recordName} 当前<%=(start+1) %>-<%=(start+pageSize) %>${recordName}</span>
	<span><a href="${REQUEST_URI }?<%=queryString%><%=startName %>=0&<%=sizeName %>=<%=pageSize %>">首页</a></span>
	<span>
		<%if(start>0){ %>
			<a href="${REQUEST_URI }?<%=queryString%><%=startName %>=<%=(curentPage-2)*pageSize %>&<%=sizeName %>=<%=pageSize %>">上一页</a>
		<%}else{ %>
			上一页
		<%} %>
	</span>
	<%

		for(int i = 0, page=1 ; i < totalSize ; i += pageSize, page++){
			if(page-curentPage>itemCount)
				break;
			if(page-curentPage<-itemCount)
				continue;
			if(i == start){
	%>
				<font size="3"><%=page %></font>
	<%
			}else{
	%>
				<a href="${REQUEST_URI }?<%=queryString%><%=startName %>=<%=i %>&<%=sizeName %>=<%=pageSize %>"><%=page %></a>
	<%
			}
		}
	%>

	<span>
		<%if(curentPage<=lastPage){ %>
			<a href="${REQUEST_URI }?<%=queryString%><%=startName %>=<%=curentPage*pageSize %>&<%=sizeName %>=<%=pageSize %>">下一页</a>
		<%}else{ %>
			下一页
		<%} %>
	</span>
	<span><a href="${REQUEST_URI }?<%=queryString%><%=startName %>=<%=lastPage*pageSize %>&<%=sizeName %>=<%=pageSize %>">尾页</a></span>
	<span>跳到<input id="go_to${id }" type="text" name="" style="width:25px;"/>页</span>
	<script type="text/javascript">
		$event.setEvent($('go_to${id }'),'onkeydown',function(node, event){
			if(event.keyCode == 13){
				var href = window.location.href;
				var page = parseInt(node.value);
				href = href.replace(/${startName}=\d+&*/g,'');
				href = href.replace(/${sizeName}=\d+&*/g,'');
				if(href.charAt(href.length - 1) == '?'){
					href += "${startName}=" + (page-1)*${pageSize};
				}else if(href.indexOf('?') > 0){
					href += "&${startName}=" + (page-1)*${pageSize};
				}
				else{
					href += "?${startName}=" + (page-1)*${pageSize};
				}
					href += "&${sizeName}=" + <%=pageSize%>;
				window.location = href;
			}
		});
	</script>
</div>




使用方法:
1. Action代码, 获取list 放入request里面:
		List<AgileBean> list = manager.getListOfFirmAndLatestOpinion(snss, curArea, START, SIZE);
		request.put("listOfFitmentFirmAndLatestOpinion", list);


2.JSP代码:
<my:pager totalSize="${countOfFirm}" pageSize="${SIZE}" itemCount="4" recordName="公司记录" barClass="firm_pager" barStyle="text-align:center;"/>
49 楼 gstripe 2008-11-19  
觉得楼主挺好,代码敢秀出来,不然得不到别人的评价,
也就没有改进的机会了,试问工作的时候有多少同事会有时间去提醒你,如果他们看不懂的代码估计就直接鄙视你一翻了。
再乱的代码也要看,不然没办法啊。
在修改旧系统的时候,我就接触了好多风格迥异的代码,
看的也很郁闷,不过看久了就基本了解当时写代码那个人的风格了
不知不觉在他写的代码上修改,风格几乎和原来的一样
有点郁闷,又没太多时间重写。

相关推荐

    PHP超强分页类

    2. **样式调整**:可以通过调整类中的属性值来改变分页组件的外观,例如更改文字、图标等。 #### 六、总结 PHP超强分页类不仅提供了基础的分页功能,还支持自定义显示模式、AJAX分页等功能,使得开发者能够根据项目...

    oracle 分页类文件

    在实际使用中,开发者可以通过`ShowPage`类设置分页参数,然后调用其内部的查询方法,由`ShowSQL.java`生成对应的SQL语句,最后执行查询并返回结果。这个过程中,`StringUtil.java`起到辅助作用,确保SQL的正确性和...

    最常用php类集合 分页类 mysql类等等

    5. **show_page.rar**:这个名字暗示可能是一个分页类,用于处理大型数据集的分页显示,常用于网页上显示大量的记录时,提高用户体验。 6. **adodb300.tgz**:ADODB(Active Record Object-Database Bridge)是一个...

    简单_方便_功能全的php分页类

    根据给定的信息,本文将对一个“简单、方便、功能全”的PHP分页类进行详细的解析,包括其构造方法、属性、以及如何实现分页显示的功能。通过本篇内容,您将了解到该类的设计思想、核心函数的工作原理,以及如何在...

    两款万能的php分页类

    此外,类中的`show`方法(在文档片段中未显示)应该负责将处理好的分页数据转换为HTML输出。 ### 结论 通过以上知识点的讨论,我们可以看出,万能的PHP分页类对于快速开发和实现分页功能是非常有帮助的。开发者只...

    asp超强分页类文档

    此外,类内部可能有错误处理机制,如`ErrInfo`和`ShowError`方法,当参数错误或出现异常时,会显示相应的错误信息。 总的来说,这个ASP超强分页类通过优化代码和算法,提高了处理大量数据时的分页效率,同时提供了...

    一个PHP分页类的代码

    分页类支持四种不同的分页模式,可以通过`show`方法的参数来切换。这四种模式可能包括不同的显示样式或链接结构,例如,模式1可能是基础的数字链接,模式2可能包含上一页/下一页按钮等。 5. **AJAX支持** 当`is_...

    ThinkPHP分页类

    当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、show函数...

    thinkphp分页功能类

    `Page`类提供了`show()`方法,用于生成分页的HTML代码。默认情况下,它会根据设定的样式生成完整的分页链接。例如: ```php echo $Page-&gt;show(); // 输出分页HTML ``` 4. **获取分页数据**: 调用`Page`类的`...

    ThinkPhp3.1.3仿百度分页类

    ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 &lt;46445280@qq.com&gt; 参照 ThinkPhp3.1.3 及 ThinkPhp3.2.1护展包下的 Page.class.php 说明:在ThinkPhp3.1.3下测试通过,其它版本未做测试 ...

    ASP无存储过程高效分页类

    `Show.asp`文件可能是展示分页数据的主页面。在这个文件中,我们需要实例化分页类,传入必要的参数如每页显示的记录数、当前页数、数据库连接信息等。然后调用`GetPageData()`方法获取当前页的数据,并在HTML中进行...

    php 高级 分页类 源码

    * description:超强分页类,四种分页模式,默认采用类似baidu,google的分页风格。 * 2.0增加功能:支持自定义风格,自定义样式,同时支持PHP4和PHP5, * to see detail,please visit ...

    使用非常方便的 php 分页类

    php 分页类,很方便使用 ////演示 ////require_once('../libs/classes/page.class.php'); //$page=new minupage(array('total'=&gt;1000,'perpage'=&gt;20)); //echo 'mode:1 '.$page-&gt;show(); //echo '&lt;hr&gt;mode:2 '...

    简单实用的PHP分页类

    自己写的简单实用的PHP分页类,支持URL重写,支持多种选项设置 包括: show_list-是否显示数字列表页码 list_num-当显示数字列表页码时该变量表示数字的数量 prefix-当使用URL重写时使用该变量值连接表示的页码的GET...

    ThinkPHP分页类.zip

    当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、...

    jQuery分页插件设置分页内容显示数量的分页代码

    在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据时的浏览体验优化。jQuery,作为一个轻量级的JavaScript库,提供了丰富的插件来实现分页功能。本篇文章将详细讲解如何使用jQuery分页插件来设置分页...

    struts2.0实现的数据分页实现及实现分页步骤

    通过以上步骤,你可以实现Struts2.0框架下的数据分页功能。注意,为了优化性能和用户体验,还应考虑缓存策略、错误处理和异常处理等细节。同时,随着技术的发展,现代的Web应用可能更倾向于使用ORM框架(如Hibernate...

    PHP超好用的分页类,支持两个模式

    一种是最简单的普通分页模式[首页] [上页] [下页] [尾页]模式,另一种是经典分页模式,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]。 使用方法 require_once 'pager.class.php'; $pager = new pager($...

Global site tag (gtag.js) - Google Analytics