我是靠谱客的博主 爱听歌白开水,这篇文章主要介绍Bootstrap和Java分页实例第二篇,现在分享给大家,希望可以做个参考。

关于此文

  运用第一篇分页的例子,结果以失败告终。在网上又寻找了很多例子。大多是都是这一种。着手开发的项目采用spring MVC框架。符合需求。摘下来,试了一试。

      网上的例子总是少一些东西。经过一番折腾。终于搞定了。下面分享出来,供参考。

      分页基本逻辑思想懂了,重点是在于怎么实现。怎么实现更好。还需要进一步思考。

配置xml-pager.tld

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>Pager</description> <tlib-version>1.0</tlib-version> <short-name>page</short-name> <uri></uri> <tag> <name>createPager</name> <tag-class>getui.util.Pager</tag-class> <body-content>JSP</body-content> <attribute> <name>curPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>totalPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>pageSize</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>totalCount</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>formId</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> </tag> </taglib>

分页控件-Pager

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
package getui.util; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; /*** * 分页控件 * * @author Anny */ public class Pager extends TagSupport { private Integer curPage; //当前页码 private Integer totalPage; //总页数 private Integer pageSize = 10; //一页显示的记录数 private Integer totalCount = 0; //记录总数 private String formId; //请求的action name private Integer lastIndex; //结束索引 public int doStartTag() throws JspException { StringBuffer buffer=new StringBuffer(); JspWriter out = pageContext.getOut(); int pageNumber = 0; if (totalPage % pageSize == 0) { pageNumber = totalPage / pageSize; } else { pageNumber = (totalPage / pageSize) + 1; } if (curPage < 1) { curPage = 1; } try { if (pageNumber > 0) { buffer.append("<script type='text/javascript'>");//script-Start buffer.append("function go(pageNum)"); buffer.append("{");//{start buffer.append("var f = document.getElementById('" + formId + "');"); buffer.append("f.action = f.action + '?pageNum=' + pageNum + '&pageSize="+pageSize + "';"); buffer.append("f.submit();" ); buffer.append("}");//}end buffer.append("</script>");//script-end out.print(buffer.toString()); out.append("<div class='page-number-strip' style='height:62px;text-align: right;'> ");//page-number-strip out.print("<ul class='pagination'>");//添加Bootstrap分页的样式pagination int start = 1; int end = totalPage; for (int i = 4; i >= 1; i--) { if ((curPage - i) >= 1) { start = curPage - i; break; } } for (int i = 4; i >= 1; i--) { if ((curPage + i) <= totalPage) { end = curPage + i; break; } } // 如果小于9则右侧补齐 if (end - start + 1 <= 9) { Integer padLen = 9 - (end - start + 1); for (int i = padLen; i >= 1; i--) { if ((end + i) <= totalPage) { end = end + i; break; } } } // 如果还小于9左侧补齐 if (end - start + 1 <= 9) { Integer padLen = 9 - (end - start + 1); for (int i = padLen; i >= 1; i--) { if ((start - i) >= 1) { start = start - i; break; } } } if (curPage > 1) { if (start > 1) { out.print("<li><a href='javascript:go(1)'>首页</a></li>"); } out.print("<li><a href='javascript:go(" + (curPage - 1) + ")'>上一页</a></li>"); } for (int i = start; i <= end; i++) { if (i == curPage) { out.print("<li class='active'><a href='javascript:void(0);'>" + i + "</a></li>"); } else { out.print("<li><a href='javascript:go(" + i + ")'>" + i + "</a></li>"); } } if (curPage < totalPage) { out.print("<li><a href='javascript:go(" + (curPage + 1) + ")'>下一页</a></li>"); if (end < totalPage) { out.print("<li><a href='javascript:go(" + totalPage + ")'>尾页</a></li>"); } } out.print("<li><a href='javascript:void(0)'>共" + totalPage + "页" + this.totalCount + "条</a></li>"); out.print("</ul>"); out.print("</div>"); } } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } /** * 算开始索引 * * @param pageNum - * @param pageSize * @return */ public static Integer getStartIndex(Integer pageNum, Integer pageSize) { Integer res = 0; if (pageNum > 0) { res = (pageNum - 1) * pageSize; } return res; } /** * 算结束索引 -- 方法暂时未用 * * @param pageSize * @param totalCount * @param totalPage * @param pageNum * @return */ public static Integer getLastIndex(Integer pageSize,Integer totalCount,Integer totalPage,Integer pageNum){ //计算结束时候的索引 Integer lastIndex =0; if( totalCount < pageSize){ lastIndex = totalCount; }else if((totalCount % pageSize == 0) || (totalCount % pageSize != 0 && pageNum < totalPage)){ lastIndex = pageNum * pageSize; }else if(totalCount % pageSize != 0 && pageNum == totalPage){//最后一页 lastIndex = totalCount ; } return lastIndex; } public Integer getLastIndex() { return lastIndex; } public void setLastIndex(Integer lastIndex) { this.lastIndex = lastIndex; } public void setCurPage(Integer curPage) { this.curPage = curPage; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public void setFormId(String formId) { this.formId = formId; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } }

分页action集成类-BaseController

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package getui.controller; import getui.util.Pager; import java.util.Iterator; import java.util.List; import java.util.Map; import org.springframework.ui.Model; /** * 分页控件初始化父类 * * @author Anny */ public class BaseController { //初始化分页相关信息 protected void initPage(Map<String,Object> map, Integer pageNum, Integer pageSize, Integer totalCount){ if(null==pageSize || pageSize.equals("")){ pageSize = 10; //每页显示条数 } // if(pageSize>50){ // pageSize = 50; // } Integer totalPage = (totalCount+pageSize-1)/pageSize; if(null==pageNum){ pageNum = 1; }else if(pageNum>totalPage){ pageNum = totalPage; } map.put("startIndex", Pager.getStartIndex(pageNum, pageSize)); map.put("pageNum", pageNum); map.put("totalPage", totalPage); map.put("pageSize", pageSize); map.put("totalCount", totalCount); map.put("lastIndex", Pager.getLastIndex(pageSize,totalCount,totalPage,pageNum)); } //将相关数据放入model protected void initResult(Model model, List<Map<String, Object>> list, Map<String,Object> map){ model.addAttribute("list", list); Iterator it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry m = (Map.Entry)it.next(); model.addAttribute(m.getKey().toString(), m.getValue()); } } }

实例-Dao

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package getui.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.stereotype.Repository; import getui.controller.GeTuiController; import getui.entity.Branch; import getui.entity.GetuiInfo; @Repository("bookDao") public class BookDao extends BaseDao{ /** 日志记录 .*/ private static Logger logger = Logger.getLogger(BookDao.class); public int getListCount(){ String sql ="select count(1) from Book"; return super.jdbcTemplate.queryForInt(sql); } public List getListBook(int pageIndex,int pageSize){ String sql = "select * from Book where 1=1 limit "+pageIndex+","+pageSize; // String sql = "select a.*" // + " from (" // +" select id as nid,name ,price" // +" from book" // +" order by(id) " // +" ) a" // +" where nid between "+pageIndex+" and "+pageSize+""; return super.jdbcTemplate.queryForList(sql); } }

实例-service

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package getui.service; import getui.dao.BookDao; import getui.dao.ClientInfoDao; import getui.entity.Branch; import getui.entity.GetuiInfo; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service("bookService") public class BookService { /** 日志记录 .*/ private static Logger logger = Logger.getLogger(BookService.class); @Autowired private BookDao bookDao; public int getListCount(){ return bookDao.getListCount(); } public List getListBook(int pageIndex,int pageSize){ return bookDao.getListBook(pageIndex, pageSize); // return bookDao.getListBook(); } }

实例-action

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package getui.controller; import getui.service.BookService; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping(value = "/test") public class TestController extends BaseController { /** 日志记录 .*/ private static Logger logger = Logger.getLogger(TestController.class); @Autowired private BookService bookService; @RequestMapping("/test.do") public String test(Model model,String type, @RequestParam(required=false) Integer pageNum, @RequestParam(required=false) Integer pageSize) { Map<String,Object> map = new HashMap<String,Object>(); map.put("type", type); Integer totalCount = bookService.getListCount(); this.initPage(map, pageNum, pageSize, totalCount); List list = this.bookService.getListBook(Integer.valueOf(String.valueOf(map.get("startIndex"))), Integer.valueOf(String.valueOf(map.get("pageSize")))); this.initResult(model, list, map); return "book"; } }

实例-JSP

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="page" uri="/WEB-INF/pager.tld"%> <% String path = request.getContextPath(); %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <title>测试分页标签</title> <link href="<%=path%>/css/bootstrap.css" rel="stylesheet"> <link href="<%=path%>/css/bootstrap-responsive.css" rel="stylesheet"> <script type="text/javascript"> function toDel(id){ var url = "<%=path%>/test/del?id=" + id +"&pageNum=${param.pageNum}&pageSize=${param.pageSize}"; window.location.href = url; } </script> </head> <body> <div class="container"> <c:forEach items="${list}" var="item"> <div class="border-bottom1"> <h3><a href="<%=path%>/test/view?id=${item.id}">${item.name}</a></h3> <p> ${item.content} </p> <p class="text-right muted"> 2013-06-22 22:37   <a href="javascript:toDel('${item.id}');">删除</a>   <a href="<%=path%>/test/toEdit?id=${item.id}&pageNum=${param.pageNum}&pageSize=${param.pageSize}">编辑</a>   </p> </div> </c:forEach> <form method="post" id="testForm" action="<%=path%>/test/test.do"> <input type="hidden" name="type" value="${type}"> </form> <page:createPager pageSize="${pageSize}" totalPage="${totalPage}" totalCount="${totalCount}" curPage="${pageNum}" formId="testForm"/> </div> </body> </html>

实例-SQL

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* Navicat MySQL Data Transfer Source Server : 本地库 Source Server Version : 50621 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50621 File Encoding : 65001 Date: 2016-01-13 12:37:11 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `book` -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `price` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of book -- ---------------------------- INSERT INTO `book` VALUES ('1', '图书1', '10'); INSERT INTO `book` VALUES ('2', '图书2', '11'); INSERT INTO `book` VALUES ('3', '图书3', '12'); INSERT INTO `book` VALUES ('4', '图书4', '13'); INSERT INTO `book` VALUES ('5', '图书5', '14'); INSERT INTO `book` VALUES ('6', '图书6', '15'); INSERT INTO `book` VALUES ('7', '图书7', '16'); INSERT INTO `book` VALUES ('8', '图书8', '17'); INSERT INTO `book` VALUES ('9', '图书9', '18'); INSERT INTO `book` VALUES ('10', '图书10', '19'); INSERT INTO `book` VALUES ('11', '图书11', '11'); INSERT INTO `book` VALUES ('12', '图书12', '23'); INSERT INTO `book` VALUES ('13', '图书13', '22'); INSERT INTO `book` VALUES ('14', '图书14', '22'); INSERT INTO `book` VALUES ('15', '图书15', '22'); INSERT INTO `book` VALUES ('16', '图书16', '9'); INSERT INTO `book` VALUES ('17', '图书17', '10'); INSERT INTO `book` VALUES ('18', '图书18', '2'); INSERT INTO `book` VALUES ('19', '图书19', '8'); INSERT INTO `book` VALUES ('20', '图书20', '78'); INSERT INTO `book` VALUES ('21', '图书21', '21'); INSERT INTO `book` VALUES ('22', '图书22', '22'); INSERT INTO `book` VALUES ('23', '图书23', '23'); INSERT INTO `book` VALUES ('24', '图书24', '24');

实例图

测试示例图

分页融合到自己的代码中示例图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

最后

以上就是爱听歌白开水最近收集整理的关于Bootstrap和Java分页实例第二篇的全部内容,更多相关Bootstrap和Java分页实例第二篇内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(145)

评论列表共有 0 条评论

立即
投稿
返回
顶部