基于SSM框架的简易的分页功能——包含maven项目的搭建
新人第一次发帖,有什么不对的地方请多多指教~~
分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页。我现在把我所能想到的知识
做了一个整理发上来,供大家参考参考,希望能帮助到一些和我一样的人吧@.@ 中间肯定有很多没有表述明白,请多多见谅,博主刚刚结束java 四个月,小白一只,
还望海涵~~~
前面八步为项目准备工作,如果maven项目搭建完成的可以跳过~
最后面有附件,是完整的一个工程,包含数据库的呦
首先需要一个IDEA!
我使用的是ideaIU-2016.2 下载地址:http://www.jetbrains.com/idea/download/#section=windows
IDEA常用配置:http://blog.****.net/yelove1990/article/details/51541327
然后创建一个maven项目
一、Create New Project 创建项目
二、选择maven项目并按指示创建
三、GroupId是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactId是项目唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
一般GroupId就是填xxx.xx.xxx类似这样的。
四、这里需要添加一条参数,Name是划线左边的名称,value是划线右边的值,相应的填写进去就行,然后点OK-Next
五、创建工程,工程名为前面的ArtifactId
六、然后IDEA就会自动创建项目
创建完成会有BUILD SUCCESS的字样提示,表示创建成功。
七、目录结构like this
八、添加maven依赖太多了,不一一解释了,教程网址:http://www.yiibai.com/maven/
直接复制粘贴到自己的maven中即可。
maven依赖的下载地址:http://mvnrepository.com/
<properties>
<!-- 核心框架的版本设置 -->
<spring.version>4.2.5.RELEASE</spring.version>
<maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<downloadSources>true</downloadSources>
</properties>
<dependencies>
<!--common start -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<!--common end -->
<!--spring start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring end -->
<!--springmvc 控制层 start -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<!--springmvc end -->
<!--mybatis 数据访问层 start -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.20</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.0.8</version>
</dependency>
<!--mybatis 数据访问层 end -->
<!--Commons DBCP 1.4 start-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--Commons DBCP 1.4 end-->
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.6</version>
</dependency>
</dependencies>
九、配置tomcat,教程地址如下:
来自于:chenshun123的博客
网址:http://blog.****.net/chenshun123/article/details/51285890
—————————————————————————————————分割线————————————————————————————————————————
接下来是正文部分!
首先需要一个分页工具类(Page),和实体类(Record),包装类(seeRecord)。中间内容基本不需要改动,您可以根据需要改动每页显示的记录条数。
1 package po; 2 3 import java.io.Serializable; 4 5 public class Page implements Serializable{ 6 7 private static final long serialVersionUID = -3198048449643774660L; 8 9 private int pageNow = 1; // 当前页数 10 11 private int pageSize = 5; // 每页显示记录的条数 12 13 private int totalCount; // 总的记录条数 14 15 private int totalPageCount; // 总的页数 16 17 @SuppressWarnings("unused") 18 private int startPos; // 开始位置,从0开始 19 20 @SuppressWarnings("unused") 21 private boolean hasFirst;// 是否有首页 22 23 @SuppressWarnings("unused") 24 private boolean hasPre;// 是否有前一页 25 26 @SuppressWarnings("unused") 27 private boolean hasNext;// 是否有下一页 28 29 @SuppressWarnings("unused") 30 private boolean hasLast;// 是否有最后一页 31 32 /** 33 * 通过构造函数 传入 总记录数 和 当前页 34 * @param totalCount 35 * @param pageNow 36 */ 37 public Page(int totalCount, int pageNow) { 38 this.totalCount = totalCount; 39 this.pageNow = pageNow; 40 } 41 42 /** 43 * 取得总页数,总页数=总记录数/总页数 44 * @return 45 */ 46 public int getTotalPageCount() { 47 totalPageCount = getTotalCount() / getPageSize(); 48 return (totalCount % pageSize == 0) ? totalPageCount 49 : totalPageCount + 1; 50 } 51 52 public void setTotalPageCount(int totalPageCount) { 53 this.totalPageCount = totalPageCount; 54 } 55 56 public int getPageNow() { 57 return pageNow; 58 } 59 60 public void setPageNow(int pageNow) { 61 this.pageNow = pageNow; 62 } 63 64 public int getPageSize() { 65 return pageSize; 66 } 67 68 public void setPageSize(int pageSize) { 69 this.pageSize = pageSize; 70 } 71 72 public int getTotalCount() { 73 return totalCount; 74 } 75 76 public void setTotalCount(int totalCount) { 77 this.totalCount = totalCount; 78 } 79 /** 80 * 取得选择记录的初始位置 81 * @return 82 */ 83 public int getStartPos() { 84 return (pageNow - 1) * pageSize; 85 } 86 87 public void setStartPos(int startPos) { 88 this.startPos = startPos; 89 } 90 91 /** 92 * 是否是第一页 93 * @return 94 */ 95 public boolean isHasFirst() { 96 return (pageNow == 1) ? false : true; 97 } 98 99 public void setHasFirst(boolean hasFirst) { 100 this.hasFirst = hasFirst; 101 } 102 /** 103 * 是否有首页 104 * @return 105 */ 106 public boolean isHasPre() { 107 // 如果有首页就有前一页,因为有首页就不是第一页 108 return isHasFirst() ? true : false; 109 } 110 111 public void setHasPre(boolean hasPre) { 112 this.hasPre = hasPre; 113 } 114 /** 115 * 是否有下一页 116 * @return 117 */ 118 public boolean isHasNext() { 119 // 如果有尾页就有下一页,因为有尾页表明不是最后一页 120 return isHasLast() ? true : false; 121 } 122 123 public void setHasNext(boolean hasNext) { 124 this.hasNext = hasNext; 125 } 126 /** 127 * 是否有尾页 128 * @return 129 */ 130 public boolean isHasLast() { 131 // 如果不是最后一页就有尾页 132 return (pageNow == getTotalCount()) ? false : true; 133 } 134 135 public void setHasLast(boolean hasLast) { 136 this.hasLast = hasLast; 137 } 138 139 }