`

基于spring3注解的google分页

阅读更多

闲的无聊,用spring3的mvc写了一个google的分页,这个小列子是基于注解的控制部分如下package com.my.google;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

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

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.my.common.Dispatcher; 

/** 
 * @author 姜绵岳
 * @version 创建时间:2011-4-9 下午05:02:51 
 * 一个类似google的分页的Action
 */
@Controller
public class GoogleController{
	/**
	 * 一个类似谷歌的分页
	 * @return
	 */
	@RequestMapping("/google")
	public String google(HttpServletRequest request,HttpServletResponse response){
		String pageNum=request.getParameter("page");	//当前页
		int page=0;
		if(null==pageNum||"".equals(pageNum)){
			page=1;
		}else{
			page=Integer.parseInt(pageNum);
		}
		String forwardUrl="google.do?page=";
		List<String> list=new ArrayList<String>();	//存放模拟数据
		for(int i=0;i<126;i++){
			list.add("name xuehan "+i);
		}
		Dispatcher dispath=new Dispatcher();
		Map map=dispath.getDispatch(forwardUrl, page, 10, list);
		request.setAttribute("list",map.get("list"));
		request.setAttribute("tag",map.get("tag"));
		return "google";
	}
}
package com.my.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 姜绵岳
 * @version 创建时间:2011-4-9 下午05:08:59 类说明
 */
public class Dispatcher<T> {

	/**
	 * action调用分页方法 参数:forwordUrl 分页url,page当前页数,count每页显示条数,list要分页的集合
	 */
	public Map getDispatch(String forwardUrl, int page, int count, List<T> list) {
		int totalCount = list.size(); // 数据总条数
		int totalPage = totalCount / count; // 总页数
		if (totalCount % count > 0) {
			totalPage = totalCount / count + 1; // 如果总条数%总页数大于0侧总页数加1
		}
		if (page < 0) {
			page = 1; // 如果当前页数小于1,设为1
		}
		if (page > totalCount) {
			page = totalCount;// 如果当前页数大于总
		}
		int currentCount = (page-1) * count; // 当前提条数
		int endCount = 0; // 结束条数
		if (totalCount - currentCount >= count) {
			endCount = currentCount + count;
		} else {
			endCount = totalCount - 1;
		}
		List newList = new ArrayList();// 存放返回集合
		System.out.println("current " + currentCount + " end" + endCount);
		for (int i = currentCount; i <= endCount; i++) {
			newList.add(list.get(i));
		}
		// 获得分页字符串
		String tag = getTag(forwardUrl, page, totalPage, currentCount);
		Map map = new HashMap();
		map.put("list", newList);
		map.put("tag", tag);
		return map;
	}

	/**
	 * 分页标签书写
	 * 
	 * @param forwardUrl
	 * @param page
	 * @param totalPage
	 * @param currentCount
	 * @return
	 */
	private String getTag(String forwardUrl, int page, int totalPage,
			int currentCount) {
		StringBuffer sb = new StringBuffer();
	
		if(1!=page){
			sb.append("<a href='" + forwardUrl + (page - 1) + "'>" + "上一页"
					+ "</a>&nbsp;");
		}
		if (totalPage <= 20) {
			if (totalPage >= 10) {
				if (totalPage - page > 10) {
					for (int i = 1; i < page + 10; i++) {
						if (i == page) {
							sb.append(i + "&nbsp;");
							continue;
						}else{
							sb.append("<a href='" + forwardUrl + i + "'>" + i
									+ "</a>&nbsp;");
						}
					
					}
				} else {
					for (int i = 1; i <= totalPage; i++) {
						if (i == page) {
							sb.append(i + "&nbsp;");
							continue;
						}
						sb.append("<a href='" + forwardUrl + i + "'>" + i
								+ "</a>&nbsp;");
					}
				}

			} else {
				for (int i = 1; i < totalPage; i++) {
					if (i == page) {
						sb.append(i + "&nbsp;");
						continue;
					}
					sb.append("<a href='" + forwardUrl + i + "'>" + i
							+ "</a>&nbsp;");
				}
			}
		} else if (totalPage > 20) {
			if (page > 10) {
				if (totalPage - page > 10) {
					for (int i = page - 10; i < page + 10; i++) {
						if (i == page) {
							sb.append(i + "&nbsp;");
							continue;
						} else {
							sb.append("<a href='" + forwardUrl + i + "'>" + i
									+ "</a>&nbsp;");
						}
					}
				} else {
					for (int i = page - 10; i <= totalPage; i++) {
						if (i == page) {
							sb.append(i + "&nbsp;");
							continue;
						} else {
							sb.append("<a href='" + forwardUrl + i + "'>" + i
									+ "</a>&nbsp;");
						}
					}
				}
			} else {
				for (int i = 1; i < page + 10; i++) {
					if (i == page) {
						sb.append(i + "&nbsp;");
						continue;
					}
					sb.append("<a href='" + forwardUrl + i + "'>" + i
							+ "</a>&nbsp;");
				}
			}
		}
		if(totalPage!=page){
			sb.append("<a href='" + forwardUrl + (page + 1) + "'>" + "下一页"
					+ "</a>&nbsp;");
		}
		return sb.toString();
	}
}

 

 

0
0
分享到:
评论

相关推荐

    ssh2实现google分页

    在Spring中,可以通过`@Transactional`注解标记Service层的方法,让Spring自动管理事务的开始、提交和回滚。这样,当发生异常时,所有数据库操作将被回滚,避免数据不一致的问题。 总的来说,这个项目展示了SSH2...

    Struts2 + Spring3 + Hibernate3.5 整合(集成测试配套jar包更新构建脚本使用说明)

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    smartGwt、spring、Mybatis整合

    SmartGWT是一个基于GWT(Google Web Toolkit)的开源UI库,提供了丰富的组件和工具,使得开发复杂的Web应用变得简单。它包括了各种预定义的UI元素,如表格、图表、对话框等,同时提供了丰富的服务器通信支持。在本...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。...

    Java代码分页

    3. **Spring Data JPA分页**: Spring Data JPA是Spring框架的一个模块,它简化了与JPA(Java Persistence API)的交互。在Spring Data JPA中,可以利用`Pageable`接口来实现分页。例如: ```java Pageable ...

    springboot+mybatis+maven+angularJs+bootstrap简单分页

    3. **前端分页渲染**:AngularJS根据接收到的分页信息创建分页控件,例如“上一页”、“下一页”和页码按钮,并绑定点击事件,触发数据的重新加载。 4. **分页请求**:当用户点击分页控件时,AngularJS发送HTTP请求...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version3).part3

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    google官方整理的struts2 spring mybaits整合案例

    3. **Service层**:Spring管理的业务服务接口及实现,这里会注入DAO层,实现具体的数据操作。 4. **DAO层**:MyBatis的Mapper接口和XML映射文件,定义SQL查询和更新语句。 5. **分页功能**:可能使用MyBatis的分页...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version2)

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    使用 SSM(Spring MVC + Spring + MyBatis)框架实现申报项目信息管理系统实验报告

    - Spring MVC是一个基于Spring的简单Web框架,它实现了MVC架构模式。 - 学习如何构建Controller类处理HTTP请求。 - 理解ModelAndView对象的使用,掌握视图解析器的作用。 - 掌握Spring MVC中的数据绑定、校验...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version3).part1

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    springboot-hbase:以简单的订单业务示例hbse的使用&redis设计hbase查询分页

    这样,我们就实现了基于Spring Boot和HBase的订单管理,同时利用Redis实现了数据的缓存和分页查询。通过这种方式,我们能够高效地处理大量订单数据,提升系统性能。在实际应用中,还可以根据业务需求对订单实体进行...

    springmybatis

    mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...

    SpringBoot+springMvc +mybatis+shiro安全架构的二手车项目代码,外加分页CSS+html+js

    本文将详细解析基于SpringBoot、SpringMvc、Mybatis和Shiro构建的二手车项目代码,同时也会涉及分页CSS、HTML和JavaScript的相关应用。这是一套完整的后端与前端结合的项目,旨在提供一个安全、高效的二手车交易平台...

    springandgxtsample

    而GXT则是一个用于构建富互联网应用(RIA)的JavaScript库,基于Google Web Toolkit(GWT),提供了一系列丰富的UI组件和数据绑定功能。 描述中的"NULL"没有给出具体信息,但我们可以从博文链接...

    JavaEE WEB小项目

    4、本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 5、另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,...

    json、mybatis、MySQL、SSM全部jar包

    同时,有13个MyBatis相关的jar包,这可能包括MyBatis核心库、MyBatis-Spring整合库以及MyBatis的分页插件等。此外,还有MySQL的驱动包,这是连接MySQL数据库所必需的。至于"SSM若干",这可能指的是Spring、SpringMVC...

    轻松使用Slave4j和Hi快速开发企业项目

    5. 配置文件调整,修改`packagesToScan`属性以扫描指定的实体类包,同时激活Spring的注解扫描,例如`context:component-scan`用于扫描DAO、Service和Action层的包。 6. 数据库配置也需要根据实际需求进行修改,包括...

    ext extjs4学习经典实例 guice mybaits 简单权限 (全量包)

    学习MyBatis时,主要涉及以下几个方面:XML配置文件或注解的使用、动态SQL的编写、事务管理以及与Spring等其他框架的集成。掌握MyBatis的映射机制和SQL动态执行,可以使数据库操作更加灵活高效。 【简单权限管理】 ...

Global site tag (gtag.js) - Google Analytics