`
Edie
  • 浏览: 9132 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

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>

 

分享到:
评论
1 楼 chenqqabcd 2012-07-10  
很感谢你的分享。我刚接触freemarketview。可以将这个demo发给我吗。谢谢
chenqqabcd@foxmail.com

相关推荐

    Spring4.0.2Hibernate4.3Freemarker2.3.20 bootstrap整合例子

    Spring4 SpringMVC4 Hibernate4 Freemarker Bootstrap3 整合的小DEMO,主要就是一个登录页面,加一个主页面,然后实现增删改查,还有分页的功能 说明:在项目的doc下有数据库文件,新建数据库名为 db_shf,编码设为...

    springboot-freemarker:包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid、Freemarker;有完整的UI、增删改查及分页,防SQL注入、XSS攻击拦截等

    包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid、Freemarker; 集成示例有:增删改查及分页;防XSS、SQL注入; 数据库配置 默认是连接MySQL数据库,支持多数据源,分别连接的db1,db2 ,在项目工程的...

    一个可以直接运行的基于SpringMVC的web框架1.1.12

    socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...

    基于SpringBoot和Freemarker的Web应用设计源码

    该项目集成了SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid和Freemarker等多个框架。系统提供了完整的用户界面(UI)、增删改查(CRUD)及分页功能,同时具备防SQL注入和XSS攻击拦截等安全特性。通过该项目,...

    由Spring-SpringMVC-MyBatis-MySQL数据库开发的一个博客系统源码.zip

    由Spring-SpringMVC-MyBatis-MySQL数据库开发的一个博客系统 技术 后端 Spring Spring MVC MyBatis druid-数据库连接池 PageHelper-Mybatis通用分页插件 FreeMarker-模板引擎 前端 Bootstrap jQuery jQuery Form Vue...

    基于SpringMVC的一个web框架

    socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...

    SpringMVC基础上的web框架

    socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...

    4、用户模块-日志管理-多条件的查询分页操作结束-代码编写

    《基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站(自定义模板)》 本课程适合于各个层次的Java开发人员,对于初级程序员来说,可以在短时间内迅速提高开发能力,掌握流行的技术,把握技术的发展脉络。...

    MF00888-Java轻量级CRM管理系统源码.zip

    技术框架:SpringBoot + lombok + MyBatis + 分页助手 + freemarker + SpringMVC + SpringMail 系统功能: 这是一套轻量级的CRM管理系统源码,基于SSM的SpringBoot架构。 这套源码用到很多潮流技术,包括SpringBoot...

    MF00287-SpringBoot客户关系CRM管理系统源码.zip

    这套源码用到很多潮流技术,包括SpringBoot、lombok、MyBatis、分页助手、freemarker、SpringMVC、SpringMail、百度地图技术等等 运行环境:IDEA + Tomcat8以上 + MySQL5.5以上 使用技术:SpringBoot + SpringMVC + ...

    基于Spring MVC的web框架 1.1.11

    socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...

    黑马品优购项目

    后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:...

    全新JAVAEE大神完美就业实战课程 超150G巨制课程轻松实战JAVAEE课程 就业部分.txt

    day02_Dubbo介绍_dubbo框架整合_商品列表查询实现_分页_逆向工程 day03_Git day04_门户网站介绍&商城首页搭建&内容系统创建&CMS实现 day05_首页轮播图显示实现,Redis环境搭建,Redis实现缓存 day06_solr索引库...

    毕业设计之SpringCloud-B2C电子商务平台服务端.zip

    Spring,SpringMVC,Spring Cloud相关组件 Mybatis,Maven Mysql,Redis Jquery,Ajax, Solr Android 项目描述: 基于SpringCloud微服务架构的B2C电子商务系统,主要分为用户服务(service-user),管理员服务...

    SpringBoot客户管理系统

    这是一个客户关系管理系统,数据库有19张表,这套源码用到很多潮流技术,包括SpringBoot、lombok、MyBatis、分页助手、freemarker、SpringMVC、SpringMail是系统的主要功能如下 看板:统计业务机会的数量和转化情况 ...

    基于springboot的轻量级销售团队管理系统源码.zip

    这套项目用到很多潮流技术,包括SpringBoot、lombok、MyBatis、分页助手、freemarker、SpringMVC、SpringMail、百度地图技术等等 技术栈 SpringBoot + SpringMVC + Spring + MyBatis + 百度地图 运行环境 IDEA + ...

    【SSM模板】IDEA版,通用模板(包括所含技术的配置文件和demo)

    自己写项目写出来的SSM框架...1. Spring、SpringMVC、MyBatis 2. MySQL、CGlib、Druid 3. MyBatis分页pagehelper、MyBatis缓存 4. jstl、jsp、Servlet、log4j、freemarker 5. shiro、lombok插件、文件上传 ......等等

    cms项目的相关代码和jar包

    web框架spring+springmvc+springjdbc 前端框架:bootstrap 职位和轮播图的CRUD 分页对象—显示职位和轮播管理信息 富文本编辑器wangeditor—优化相关展示信息 页面静态化技术freemarker—优化访问服务器过多,效率低 ...

    SpringBoot客户关系CRM管理系统源码

    这套源码用到很多潮流技术,包括SpringBoot、lombok、MyBatis、分页助手、freemarker、SpringMVC、SpringMail、百度地图技术等等 运行环境:IDEA + Tomcat8以上 + MySQL5.5以上 使用技术:SpringBoot + SpringMVC +...

Global site tag (gtag.js) - Google Analytics