闲的无聊,用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> ");
}
if (totalPage <= 20) {
if (totalPage >= 10) {
if (totalPage - page > 10) {
for (int i = 1; i < page + 10; i++) {
if (i == page) {
sb.append(i + " ");
continue;
}else{
sb.append("<a href='" + forwardUrl + i + "'>" + i
+ "</a> ");
}
}
} else {
for (int i = 1; i <= totalPage; i++) {
if (i == page) {
sb.append(i + " ");
continue;
}
sb.append("<a href='" + forwardUrl + i + "'>" + i
+ "</a> ");
}
}
} else {
for (int i = 1; i < totalPage; i++) {
if (i == page) {
sb.append(i + " ");
continue;
}
sb.append("<a href='" + forwardUrl + i + "'>" + i
+ "</a> ");
}
}
} 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 + " ");
continue;
} else {
sb.append("<a href='" + forwardUrl + i + "'>" + i
+ "</a> ");
}
}
} else {
for (int i = page - 10; i <= totalPage; i++) {
if (i == page) {
sb.append(i + " ");
continue;
} else {
sb.append("<a href='" + forwardUrl + i + "'>" + i
+ "</a> ");
}
}
}
} else {
for (int i = 1; i < page + 10; i++) {
if (i == page) {
sb.append(i + " ");
continue;
}
sb.append("<a href='" + forwardUrl + i + "'>" + i
+ "</a> ");
}
}
}
if(totalPage!=page){
sb.append("<a href='" + forwardUrl + (page + 1) + "'>" + "下一页"
+ "</a> ");
}
return sb.toString();
}
}
分享到:
相关推荐
在Spring中,可以通过`@Transactional`注解标记Service层的方法,让Spring自动管理事务的开始、提交和回滚。这样,当发生异常时,所有数据库操作将被回滚,避免数据不一致的问题。 总的来说,这个项目展示了SSH2...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
SmartGWT是一个基于GWT(Google Web Toolkit)的开源UI库,提供了丰富的组件和工具,使得开发复杂的Web应用变得简单。它包括了各种预定义的UI元素,如表格、图表、对话框等,同时提供了丰富的服务器通信支持。在本...
1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。...
3. **Spring Data JPA分页**: Spring Data JPA是Spring框架的一个模块,它简化了与JPA(Java Persistence API)的交互。在Spring Data JPA中,可以利用`Pageable`接口来实现分页。例如: ```java Pageable ...
3. **前端分页渲染**:AngularJS根据接收到的分页信息创建分页控件,例如“上一页”、“下一页”和页码按钮,并绑定点击事件,触发数据的重新加载。 4. **分页请求**:当用户点击分页控件时,AngularJS发送HTTP请求...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
3. **Service层**:Spring管理的业务服务接口及实现,这里会注入DAO层,实现具体的数据操作。 4. **DAO层**:MyBatis的Mapper接口和XML映射文件,定义SQL查询和更新语句。 5. **分页功能**:可能使用MyBatis的分页...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
- Spring MVC是一个基于Spring的简单Web框架,它实现了MVC架构模式。 - 学习如何构建Controller类处理HTTP请求。 - 理解ModelAndView对象的使用,掌握视图解析器的作用。 - 掌握Spring MVC中的数据绑定、校验...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
这样,我们就实现了基于Spring Boot和HBase的订单管理,同时利用Redis实现了数据的缓存和分页查询。通过这种方式,我们能够高效地处理大量订单数据,提升系统性能。在实际应用中,还可以根据业务需求对订单实体进行...
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和JavaScript的相关应用。这是一套完整的后端与前端结合的项目,旨在提供一个安全、高效的二手车交易平台...
而GXT则是一个用于构建富互联网应用(RIA)的JavaScript库,基于Google Web Toolkit(GWT),提供了一系列丰富的UI组件和数据绑定功能。 描述中的"NULL"没有给出具体信息,但我们可以从博文链接...
4、本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 5、另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,...
同时,有13个MyBatis相关的jar包,这可能包括MyBatis核心库、MyBatis-Spring整合库以及MyBatis的分页插件等。此外,还有MySQL的驱动包,这是连接MySQL数据库所必需的。至于"SSM若干",这可能指的是Spring、SpringMVC...
5. 配置文件调整,修改`packagesToScan`属性以扫描指定的实体类包,同时激活Spring的注解扫描,例如`context:component-scan`用于扫描DAO、Service和Action层的包。 6. 数据库配置也需要根据实际需求进行修改,包括...
学习MyBatis时,主要涉及以下几个方面:XML配置文件或注解的使用、动态SQL的编写、事务管理以及与Spring等其他框架的集成。掌握MyBatis的映射机制和SQL动态执行,可以使数据库操作更加灵活高效。 【简单权限管理】 ...