struts2实现最简单的分页技术

struts2实现分页技术:

在对MemberUser类(表)中的数据进行分页:

 1.在MemberUserDaoImpl 中添加 获取数据库中表的总数量的方法:

public int counterByPage() {
		// TODO Auto-generated method stub
		sql="select count(*) from memberuser";

		ResultSet rs =util.Query(sql);
		int totalCount=0;

		try {
			while(rs.next())
			{
				totalCount = rs.getInt(1);
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return totalCount;
	}

2.在MemberUserDaoImpl中添加 获取当前页的数据集合的方法:

public List<MemberUserRole> queryMemberUserInfoByPage(int pageNow,int limitPage) { //pageNow表示当前页;limitPage表示每页限制几条数据
		// TODO Auto-generated method stub

		sql="SELECT * FROM (SELECT A.*, ROWNUM RN FROM (select M.MEMBERID,M.MEMBERNAME,M.AGE,M.GENDER,M.BIRTHDAY,M.MEMBER_LABEL,M.MEMBER_INTRODUCTION,M.MEMBER_PICTURE,M.MEMBER_INTEGRAL,M.REGISTER_DATE,P.ROLENAME,M.ACCOUNTNUMBER,M.PWD,M.MEMBEREMAIL from memberuser m,person_role p where m.roleid=p.roleid order by m.memberid Asc) A WHERE ROWNUM <=?)WHERE RN >?";

		List<MemberUserRole> memberList = new ArrayList<MemberUserRole>();

		ResultSet rs = util.Query(sql,limitPage*pageNow,(pageNow-1)*limitPage);

		try {
			while(rs.next())
			{
			MemberUserRole mUserRole = new MemberUserRole(rs.getInt("MEMBERID"),rs.getString("memberName"),rs.getInt("age"),
<span style="white-space:pre">			</span>rs.getString("gender"),rs.getDate("birthday"),rs.getString("MEMBER_LABEL"),rs.getString("MEMBER_INTRODUCTION"),
<span style="white-space:pre">		</span>rs.getString("MEMBER_PICTURE"),rs.getDate("REGISTER_DATE"),rs.getString("roleName"),rs.getString("pwd"),rs.getInt("MEMBER_INTEGRAL"),
<span style="white-space:pre">			</span>rs.getString("ACCOUNTNUMBER"),<span style="font-family: Arial, Helvetica, sans-serif;">rs.getString("MEMBEREMAIL"));</span>
				memberList.add(mUserRole);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
			util.close();
		}

		return memberList;
	}

在Acction中:

public class PageAction extends BaseAction {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 总记录数
	 */
	private int totalRecord;
	/**
	 * 每页显示条数
	 */
	private int limitPage=5;

	/**
	 * 当前页
	 */
	private int nowPage=1;

	/**
	 * 总页数
	 */
	private int totalPage;

	public int getTotalRecord() {
		return totalRecord;
	}

	public void setTotalRecord(int totalRecord) {
		this.totalRecord = totalRecord;
	}

	public int getLimitPage() {
		return limitPage;
	}

	public void setLimitPage(int limitPage) {
		this.limitPage = limitPage;
	}

	public int getNowPage() {
		return nowPage;
	}

	public void setNowPage(int nowPage) {
		this.nowPage = nowPage;
	}

	public int getTotalPage() {
		return totalPage;
	}

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

	MemberUserBiz memberUserBiz = new MemberUserBizImpl();
	/**
	 * @return
	 * 获取某页用户信息的记录
	 */
	public String queryMemberUserInfoByPage()
	{
		List<MemberUserRole> memberListByPage = new ArrayList<MemberUserRole>();

		//获取总记录数
		totalRecord= memberUserBiz.counterByPage();

		//获取总页数
		totalPage =(totalRecord+limitPage-1)/limitPage;

		//当前页处理
		if(nowPage<1)
		{
			nowPage=1;
		}else if(nowPage>=totalPage)
		{
			nowPage=totalPage;
		}

		//获得某页的记录
		memberListByPage = memberUserBiz.queryMemberUserInfoByPage(nowPage, limitPage);

		app.setAttribute("memberListByPage", memberListByPage);

		int a=0;
		req.setAttribute("a", a);

		return "queryMemberUserInfoByPage";
	}}

在jsp页面:

<div id="tableInfo" align="center">

			<s:form name="userform" method="post">
				<table border="1" id="userInfoTable">

					<tr id="bt">
						<th>序号</th>
						<th>账号</th>
						<th>用户名</th>
						<th>年龄</th>
						<th>性别</th>
						<th>生日</th>
						<th>积分</th>
						<th>角色</th>
						<th>邮箱</th>

						<s:if test="${mUser.roleId==1}">
							<th>操作</th>
						</s:if>

					</tr>
					<s:iterator value="#application.memberListByPage" status="status"
						id="userInfo">
						<tr id="info" bgcolor="${status.index%2 == 0?'#D0D8E8':'#E9EDF4'}">
							<td>${status.index+1}</td>
							<td><s:property value="#userInfo.accountNumber" /></td>
							<td><s:property value="#userInfo.memberName" /></td>
							<td><s:property value="#userInfo.age" /></td>
							<td><s:property value="#userInfo.gender" /></td>
							<td><s:property value="#userInfo.birthday" /></td>
							<td><s:property value="#userInfo.memberIntegral" /></td>
							<td><s:property value="#userInfo.roleName" /></td>
							<td><s:property value="#userInfo.memberEmail" /></td>

							<s:if test="${mUser.roleId==1}">
								<td><a
									href="member_adminCheckMemberById.action?memberId=${userInfo.memberId}">查看</a>
									| <a
									href="member_deleteMember.action?memberId=${userInfo.memberId}"><span>删除</span>
								</a>| <a
									href="member_adminQueryMemberById.action?memberId=${userInfo.memberId}">更新</a>
								</td>
							</s:if>
						</tr>
					</s:iterator>
				</table>

				<!-- 分页技术的实现-->
				<div>
					<center>
						共<s:property value="totalRecord" />条记录
						共 ${totalPage} 页
						第<s:property value="nowPage" />页

						<s:a href="page_queryMemberUserInfoByPage.action?nowPage=${1}">首页</s:a>

						<s:if test="nowPage>1">
							<s:a href="page_queryMemberUserInfoByPage.action?nowPage=${nowPage-1}">上一页</s:a>
						</s:if>
						<s:if test="nowPage<totalPage">
							<s:a href="page_queryMemberUserInfoByPage.action?nowPage=${nowPage+1}">下一页</s:a>
						</s:if>
						<s:a href="page_queryMemberUserInfoByPage.action?nowPage=${totalPage}">尾页</s:a>
					</center>
				</div>

			</s:form>
		</div>

以上就是比较完整的代码了

时间: 2024-10-31 07:07:47

struts2实现最简单的分页技术的相关文章

无刷新分页技术,Ajax+smarty

这里运用Smarty模板,更简单 本文主要的技术:AJAX,PHP,Smarty,另外自己封装了一个很简单的类 类: (function(){    function $(id) {        return document.getElementById(id);    }    $.init=function() {        try{return new XMLHttpRequest();}catch(e){};        try{return new ActiveXObject

django分页技术django-pagination和Paginator

转载前还请注明出处:http://blog.csdn.net/gugugujiawei 一.概述 几乎所有的web应用,都需要分页功能,但分页技术总体来说分两种,一种是全部加载,存于浏览器的缓存中,一种是分页访问,部分加载.前一种方法优点是实现简单,在一些对项目要求不多的特定应用上用得较多,可以利用的插件譬如datatables,而后一种方法优点是不会占用服务器太多的缓存,对于数据量大的列表项必须用到这种技术.由于我现在的项目属于管理后台,管理来自成千上万用户的数据,因而只能用到第二种方法.初期

眼下最好的JSP分页技术

2005-08-24   来源:CSDN  作者:wanchao2001 前言     在使用数据库的过程中,不可避免的须要使用到分页的功能,但是JDBC的规范对此却没有非常好的解决.对于这个需求非常多朋友都有自己的解决方式,比方使用 Vector等集合类先保存取出的数据再分页.但这样的方法的可用性非常差,与JDBC本身的接口全然不同,对不同类型的字段的支持也不好.这里提供了一种与 JDBC兼容性非常好的方案.   JDBC和分页 Sun的JDBC规范的制定,有时非常让人哭笑不得,在JDBC1.

Web开发之分页技术

熟悉Web开发的小伙伴们都知道分页这个玩意儿,但是不会编程的小伙伴们对这个也绝对不陌生,只是不知道这是在Web开发中的一个非常重要的需求和技术罢了. 大家在浏览网上的文章或者图片的时候,经常会看到如下所示的页码显示效果: 这就是所谓的分页技术.为什么要进行分页呢? 很简单内容过多,会使我们的网页过长,我们在浏览网页的时候,不得不一直拖着滚动条或者一直去转鼠标的滚轮,才能看到全部的内容,转一圈.两圈.三圈,你觉得没什么,但是一直这么转下去,相信你会觉得非常的不爽,如此一来,为了获得更好的用户体验,

jsp中利用MySQL实现分页技术

分页是很常用的一种技术,而mysql中对于分页的操作也很简单,今天就说说如何在jsp页面中利用标签来最简化的实现分页: 链接:MySQL分页技术详解http://blog.csdn.net/u011637069/article/details/49928513 step1:编写DAO中代码: [java] view plain copy public List<Employee> findAll2(int page, int perPageRows) throws Exception { Li

tp中使用分页技术

1 public function showList() { 2 $m_ld = D ( 'guangxi_ld' ); 3 $page = I ( 'get.p', 1 ); 4 // 在配置中获取分页值 5 $pagesize = C ( 'PAGESIZE' );//在config配置分页显示的条数 6 $list = $m_ld->field('id,delivery_address,receiver_address,time,price,heavy,low,corp_name,link

【mfc】利用单一对话框内的分页技术实现向导功能

所谓的向导功能,在win32的程序中常常见于安装程序或者程序内的设置向导,该向导能够指引用户去完成一些事情,不用用户一次性面对一大堆复杂的设置内容.同时,最主要的功能是现实单一对话框内的分页技术,如果一次性在对话框呈现全部内容,那么这个对话框要做到很大,比较不友好.因此,如何在一个对话框中实现分页,同样是需要了解的内容. 一.基本目标 下面就实现一个简单的例子来说明这个问题,如图,在一个向导中,有三页,每一页都有一个对话框.而在每一页的下方,都有一个上一页与下一页的按钮,点击"确定"按

改进Spring中的分页技术

Spring中有一个PagedListHolder,可以实现分页.但此类有几个缺点: 1. 使用此类的代码比较繁琐 2. 此类存放的数据源是所有的记录集,即对于记录数为1000条的数据,即使我们只需在一个页面中显示10条记录,每次均需要检索1000条记录出来,并且没有内在的缓存机制 3. 如果需将pageSize, maxLinkedPages这些一般为Session级的变量存于Session中,则必须在Session中存放PagedListHolder,从而导致大容量的数据常常撑满了Sessi

jsp的分页技术

在jsp开发中,很多时候要用到分页技术,另外纯粹的分页实现就占了很多篇幅,所以使用javabean就十分有必要. 此文章依据实际代码,想大家展示jsp中利用javabean实现分页 目录结构如下: javabean的代码如下: package lytjb; import java.sql.ResultSet; import javax.servlet.http.HttpServletRequest; public class fenye { ResultSet CountTopicrs = nu