`

基于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
分享到:
评论

相关推荐

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

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

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

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

    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数据,以用户注册为例。...

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

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

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

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

    springmybatis

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

    JavaEE WEB小项目

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

    java开源包3

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java开源包1

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包11

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包2

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包6

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包5

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包10

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包4

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

    java开源包8

    GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...

Global site tag (gtag.js) - Google Analytics