SpringMVC结合Freemarker实现分页

首先要写一个分页的类,主要代码如下:

package com.edie.bcs.utils;
public class PageQueryParam {
	private int pageNumber = 1;
	private int pageSize = 6;
	//开始检索的地方
	private int indexNum;
	//总的页数
	private int pageCount ;	
	public int getIndexNum() {
		this.indexNum =(this.pageNumber-1)*this.pageSize;
		return indexNum;
	}
	public int getPageCount() {
		return pageCount;
	}
	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	public int getPageNumber() {
		return pageNumber;
	}
	public void setPageNumber(int pageNumber) {
		this.pageNumber = pageNumber;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	
}

  然后再要写一个页面上实现“首页”“上一页”“下一页”“末页”的freemarker页面,例如是:querypage.ftl,代码如下:

<#-- 分页(Pager对象、链接URL、参数Map、最大页码显示数) -->
<#macro pager pager baseUrl parameterMap = {} maxShowPageCount = 4>
	<#local pageNumber = pager.pageNumber />
	<#local pageSize = pager.pageSize />
	<#local pageCount = pager.pageCount />
	<#local parameter = "" />

	<#local parameter = parameter + "&pageSize=" + pageSize />

	<#list parameterMap?keys as key>
		<#if parameterMap[key] != null && parameterMap[key] != "">
			<#local parameter = parameter + "&" + key + "=" + parameterMap[key] />
		</#if>
	</#list>
	<#if baseUrl?contains("?")>
		<#local baseUrl = baseUrl + "&" />
	<#else>
		<#local baseUrl = baseUrl + "?" />
	</#if>
	<#local firstPageUrl = baseUrl + "pageNumber=1" + parameter />
	<#local lastPageUrl = baseUrl + "pageNumber=" + pageCount + parameter />
	<#local prePageUrl = baseUrl + "pageNumber=" + (pageNumber - 1) + parameter />
	<#local nextPageUrl = baseUrl + "pageNumber=" + (pageNumber + 1) + parameter />

	<#if maxShowPageCount <= 0>
		<#local maxShowPageCount = 4>
	</#if>
	
	<#local segment = ((pageNumber - 1) / maxShowPageCount)?int + 1 />
	<#local startPageNumber = (segment - 1) * maxShowPageCount + 1 />
	<#local endPageNumber = segment * maxShowPageCount />
	<#if (startPageNumber < 1)>
		<#local startPageNumber = 1 />
	</#if>
	<#if (endPageNumber > pageCount)>
		<#local endPageNumber = pageCount />
	</#if>

	<#if (pageCount > 1)>
	<div class="pager_area">
		<ul class="pager">
			<li class="pageInfo">
				共 ${pageCount} 页
			</li>
			<#-- 首页 -->
			<#if (pageNumber > 1)>
				<li class="firstPage">
					<a href="${firstPageUrl}">首页</a>
				</li>
			<#else>
				<li class="firstPage">
					<span>首页</span>
				</li>
			</#if>
			
			<#-- 上一页 -->
			<#if (pageNumber > 1)>
				<li class="prePage">
					<a href="${prePageUrl}">上一页</a>
				</li>
			<#else>
				<li class="prePage">
					<span>上一页</span>
				</li>
			</#if>
			
			<#if (startPageNumber > 1)>
				<li>
					<a href="${baseUrl + "pageNumber=" + (pageNumber - 2) + parameter}">...</a>
				</li>
			</#if>
			
			<#list startPageNumber .. endPageNumber as index>
				<#if pageNumber != index>
					<li>
						<a href="${baseUrl + "pageNumber=" + index + parameter}">${index}</a>
					</li>
				<#else>
					<li class="currentPage">
						<span>${index}</span>
					</li>
				</#if>
			</#list>
			
			<#if (endPageNumber < pageCount)>
				<li>
					<a href="${baseUrl + "pageNumber=" + (pageNumber + 2) + parameter}">...</a>
				</li>
			</#if>
		    
			<#-- 下一页 -->
			<#if (pageNumber < pageCount)>
				<li class="nextPage">
					<a href="${nextPageUrl}">下一页</a>
				</li>
			<#else>
				<li class="nextPage">
					<span>下一页</span>
				</li>
			</#if>
			
			<#-- 末页 -->
			<#if (pageNumber < pageCount)>
				<li class="lastPage">
					<a href="${lastPageUrl}">末页</a>
				</li>
			<#else>
				<li class="lastPage">
					<span>末页</span>
				</li>
			</#if>
		</ul>
		</div>
	</#if>

</#macro>

 在分页查询的Controller中:

 

/**
	 * 按姓名分页查询客户的信息
	 * 
	 * @param customerName
	 * @param param
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping("/findcustomerbyname")
	public String pageQueryByName(String customerName, PageQueryParam param,
			ModelMap model) {
		String sql = "select customername,customersex,customerbirth,customertel,"
				+ "customercompany,companyhomepage from customer where customername=? limit ?,?";
		String sqlcount = "select count(*) from customer where customername=?";
		int totalCount = jdbcTemplate.queryForInt(sqlcount,
				new Object[] { customerName });
		int pageCount;
		if (totalCount % param.getPageSize() == 0) {
			pageCount = totalCount / param.getPageSize();
		} else {
			pageCount = totalCount / param.getPageSize() + 1;
		}

		Object[] object = new Object[] { customerName, param.getIndexNum(),
				param.getPageSize() };
		List<Customer> list = jdbcTemplate.query(sql, object, new RowMapper() {

			public Customer mapRow(ResultSet rs, int rowNum)
					throws SQLException {
				Customer customer = new Customer();
				customer.setCustomerName(rs.getString("customername"));
				customer.setCustomerSex(rs.getString("customersex"));
				if (rs.getDate("customerbirth") != null) {
					customer.setCustomerBirth(rs.getDate("customerbirth")
							.toString());
					System.out.println("customerbirth:"
							+ rs.getDate("customerbirth").toString());
				}
				customer.setCustomerTel(rs.getString("customertel"));
				customer.setCustomerCompany(rs.getString("customercompany"));
				customer.setCompanyHomePage(rs.getString("companyhomepage"));
				return customer;
			}

		});

		param.setPageCount(pageCount);
		model.addAttribute("param", param);
		model.addAttribute("list", list);
		System.out.println("size:" + list.size());
		return "pageshowcustomer.ftl";
	}

 最后在显示分页查询内容的页面上:

 <div class="changePage">
                 <div class="snPages">
                     <#import "querypage.ftl" as p>
         <#assign parameterMap = {} />
         <@p.pager pager = param  baseUrl = "/BCS/pageshowcustomer.htm" parameterMap = parameterMap />             
                 </div>
                 </div>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值