1 package com.ddz.util;
2
3 public class PageUtil {
4 private String page;//请求页
5 private int pageSize;//每页展示的记录数
6 private int count;//总记录数
7
8 private int prevPage;//上一页
9 private int nextPage;//下一页
10 private int currentPage;//处理后的当前页
11 private int lastPage;//总记录数
12 private int startIndex;//每页起始索引值
13
14 private String mohu;
15 //页面样式
16 private String pageStyle;
17 /**
18 * @param page 页面未处理的请求页
19 * @param count 查询出来的总记录数
20 * @param pageSize 每页的记录数
21 */
22 public PageUtil(String page, int count, int pageSize) {
23 super();
24 this.page = page;
25 this.pageSize = pageSize;
26 this.count = count;
27 //将计算的统计出来
28
29 //处理当前页
30 if(page==null || page == ""){
31 this.currentPage = 1;
32 }else{
33 this.currentPage = Integer.parseInt(page);
34 }
35
36 //处理上一页
37 if(this.currentPage <= 1){
38 this.prevPage = 1;
39 }else{
40 this.prevPage = this.currentPage -1;
41 }
42
43 //处理尾页
44 if(count%pageSize == 0){
45 this.lastPage = count/pageSize;
46 }else{
47 this.lastPage = count/pageSize + 1;
48 }
49
50 //处理下一页
51 if(this.currentPage == this.lastPage){
52 this.nextPage = this.lastPage;
53 }else{
54 this.nextPage = this.currentPage + 1;
55 }
56
57 //得到每页起始索引值
58 this.startIndex = (this.currentPage - 1)* pageSize;
59
60 initPageStyle();//初始化页面 分页 样式
61 }
62 /**
63 * 初始化分页样式,简化jsp页面代码
64 */
65 private void initPageStyle() {
66 StringBuffer sb = new StringBuffer();
67 sb.append("当前第"+this.currentPage+"/"+this.lastPage+"页,共"+this.count+"条记录\n");
68 if(this.currentPage!=1){
69 sb.append("<input type='button' value='首页' onclick='goPage(1)'/>\n");
70 sb.append("<input type='button' value='上一页' onclick='goPage("+this.prevPage+")'/>\n");
71 }
72 int currentPage=this.currentPage;
73 int lastPage=this.lastPage;
74
75 if(lastPage>5){
76 if(currentPage>2 && currentPage<(lastPage-1)){
77 sb.append("<input type='button' value='"+(currentPage-2)+"' onclick='goPage("+(currentPage-2)+")'/>\n");
78 sb.append("<input type='button' value='"+(currentPage-1)+"' onclick='goPage("+(currentPage-1)+")'/>\n");
79 sb.append("<input type='button' value='"+currentPage+"' onclick='goPage("+currentPage+")'/>\n");
80 sb.append("<input type='button' value='"+(currentPage+1)+"' onclick='goPage("+(currentPage+1)+")'/>\n");
81 sb.append("<input type='button' value='"+(currentPage+2)+"' onclick='goPage("+(currentPage+2)+")'/>\n");
82 }else if(currentPage==2){
83 sb.append("<input type='button' value='"+(currentPage-1)+"' onclick='goPage("+(currentPage-1)+")'/>\n");
84 sb.append("<input type='button' value='"+currentPage+"' onclick='goPage("+currentPage+")'/>\n");
85 sb.append("<input type='button' value='"+(currentPage+1)+"' onclick='goPage("+(currentPage+1)+")'/>\n");
86 sb.append("<input type='button' value='"+(currentPage+2)+"' onclick='goPage("+(currentPage+2)+")'/>\n");
87 }else if(currentPage==1){
88 sb.append("<input type='button' value='"+currentPage+"' onclick='goPage("+currentPage+")'/>\n");
89 sb.append("<input type='button' value='"+(currentPage+1)+"' onclick='goPage("+(currentPage+1)+")'/>\n");
90 sb.append("<input type='button' value='"+(currentPage+2)+"' onclick='goPage("+(currentPage+2)+")'/>\n");
91 }else if(currentPage==lastPage){
92 sb.append("<input type='button' value='"+(currentPage-2)+"' onclick='goPage("+(currentPage-2)+")'/>\n");
93 sb.append("<input type='button' value='"+(currentPage-1)+"' onclick='goPage("+(currentPage-1)+")'/>\n");
94 sb.append("<input type='button' value='"+currentPage+"' onclick='goPage("+currentPage+")'/>\n");
95 }else if(currentPage==(lastPage-1)){
96 sb.append("<input type='button' value='"+(currentPage-2)+"' onclick='goPage("+(currentPage-2)+")'/>\n");
97 sb.append("<input type='button' value='"+(currentPage-1)+"' onclick='goPage("+(currentPage-1)+")'/>\n");
98 sb.append("<input type='button' value='"+currentPage+"' onclick='goPage("+currentPage+")'/>\n");
99 sb.append("<input type='button' value='"+(currentPage+1)+"' onclick='goPage("+(currentPage+1)+")'/>\n");
100 }
101 }else{
102 for (int i=1;i<=lastPage;i++) {
103 sb.append("<input type='button' value='"+i+"' onclick='goPage("+i+")'/>\n");
104 }
105 }
106 if(this.currentPage!=this.lastPage){
107 sb.append("<input type='button' value='下一页' onclick='goPage("+this.nextPage+")'/>\n");
108 sb.append("<input type='button' value='尾页' onclick='goPage("+this.lastPage+")'/>\n");
109 }
110
111 sb.append("\n<script type='text/javascript'>\n");
112 sb.append("function goPage(page){\n");
113 sb.append(" location.href = changeURLArg('page',page);\n");
114 sb.append("}\n");
115 sb.append("function inputPage(lastPage){\n");
116 sb.append(" var page = document.getElementById('inputPage').value;\n");
117 sb.append(" page= page.trim();\n");
118 sb.append(" if(!(isNaN(page)) && page.indexOf('+')==-1 && page.indexOf('-')==-1 && page.indexOf('.')==-1){\n");
119 sb.append(" if(page>0&&page!=''){\n");
120 sb.append(" if(page<=lastPage){\n");
121 sb.append(" location.href = changeURLArg('page',page);\n");
122 sb.append(" }else{\n");
123 sb.append(" alert('您输入的超过了总页码!');\n");
124 sb.append(" }\n");
125 sb.append(" }else{\n");
126 sb.append(" alert('您输入的不符合标准!');\n");
127 sb.append(" }\n");
128 sb.append(" }else{\n");
129 sb.append(" alert('您输入的不符合标准!');\n");
130 sb.append(" }\n");
131 sb.append("}\n");
132 sb.append("function mohu(){\n");
133 sb.append(" location.href = changeURLArg('mohu',document.getElementById('mohu').value,1);\n");
134 sb.append("}\n");
135 sb.append("function changeURLArg(arg,arg_val,flag){\n");
136 sb.append(" var url = window.location.toString(); \n");
137 sb.append(" if(1==flag){\n");
138 sb.append(" url = changeURLArg('page',1);\n");
139 sb.append(" }\n");
140 sb.append(" var pattern=arg+'=([^&]*)'; \n");
141 sb.append(" var replaceText=arg+'='+arg_val; \n");
142 sb.append(" if(url.match(pattern)){ \n");
143 sb.append(" var tmp='/('+ arg+'=)([^&]*)/gi'; \n");
144 sb.append(" tmp=url.replace(eval(tmp),replaceText); \n");
145 sb.append(" return tmp; \n");
146 sb.append(" }else{ \n");
147 sb.append(" if(url.match('[\\?]')){ \n");
148 sb.append(" return url+'&'+replaceText; \n");
149 sb.append(" }else{ \n");
150 sb.append(" return url+'?'+replaceText; \n");
151 sb.append(" } \n");
152 sb.append(" } \n");
153 sb.append(" return url+'\\n'+arg+'\\n'+arg_val; \n");
154 sb.append("} \n");
155 sb.append("$('[value="+currentPage+"]').css({'background':'red'}); \n");
156 sb.append("</script>\n");
157 sb.append(" ");
158 sb.append("<input type='text' value="+currentPage+" id='inputPage' style='width:40px'>\n");
159 sb.append("<input type='button' value='搜索' onclick='inputPage("+lastPage+")'>\n");
160 this.pageStyle = sb.toString();
161 }
162 public PageUtil() {
163 super();
164 }
165 public String getPage() {
166 return page;
167 }
168 public void setPage(String page) {
169 this.page = page;
170 }
171 public int getPageSize() {
172 return pageSize;
173 }
174 public void setPageSize(int pageSize) {
175 this.pageSize = pageSize;
176 }
177 public int getCount() {
178 return count;
179 }
180 public void setCount(int count) {
181 this.count = count;
182 }
183 public int getPrevPage() {
184 return prevPage;
185 }
186 public void setPrevPage(int prevPage) {
187 this.prevPage = prevPage;
188 }
189 public int getNextPage() {
190 return nextPage;
191 }
192 public void setNextPage(int nextPage) {
193 this.nextPage = nextPage;
194 }
195 public int getCurrentPage() {
196 return currentPage;
197 }
198 public void setCurrentPage(int currentPage) {
199 this.currentPage = currentPage;
200 }
201 public int getLastPage() {
202 return lastPage;
203 }
204 public void setLastPage(int lastPage) {
205 this.lastPage = lastPage;
206 }
207 public int getStartIndex() {
208 return startIndex;
209 }
210 public void setStartIndex(int startIndex) {
211 this.startIndex = startIndex;
212 }
213 public String getPageStyle() {
214 return pageStyle;
215 }
216 public void setPageStyle(String pageStyle) {
217 this.pageStyle = pageStyle;
218 }
219 public String getMohu() {
220 return mohu;
221 }
222 public void setMohu(String mohu) {
223 this.mohu = mohu;
224 }
225 @Override
226 public String toString() {
227 return "PageUtil [page=" + page + ", pageSize=" + pageSize + ", count=" + count + ", prevPage=" + prevPage
228 + ", nextPage=" + nextPage + ", currentPage=" + currentPage + ", lastPage=" + lastPage + ", startIndex="
229 + startIndex + ", mohu=" + mohu + ", pageStyle=" + pageStyle + "]";
230 }
231
232 }