package com.itheima.common.utils;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.taglibs.standard.tag.common.core.UrlSupport;
/**
* 显示格式 上一页 1 2 3 4 5 下一页
*/
public class NavigationTag extends TagSupport {
static final long serialVersionUID = 2372405317744358833L;
/**
* request 中用于保存Page<E> 对象的变量名,默认为“page”
*/
private String bean = "page";
/**
* 分页跳转的url地址,此属性必须
*/
private String url = null;
/**
* 显示页码数量
*/
private int number = 5;
@Override
public int doStartTag() throws JspException {
JspWriter writer = pageContext.getOut();
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
Page page = (Page)request.getAttribute(bean);
if (page == null)
return SKIP_BODY;
url = resolveUrl(url, pageContext);
try {
//计算总页数
int pageCount = page.getTotal() / page.getSize();
if (page.getTotal() % page.getSize() > 0) {
pageCount++;
}
writer.print("<nav><ul class=\"pagination\">");
//显示“上一页”按钮
if (page.getPage() > 1) {
String preUrl = append(url, "page", page.getPage() - 1);
preUrl = append(preUrl, "rows", page.getSize());
writer.print("<li><a href=\"" + preUrl + "\">上一页</a></li>");
} else {
writer.print("<li class=\"disabled\"><a href=\"#\">上一页</a></li>");
}
//显示当前页码的前2页码和后两页码
//若1 则 1 2 3 4 5, 若2 则 1 2 3 4 5, 若3 则1 2 3 4 5,
//若4 则 2 3 4 5 6 ,若10 则 8 9 10 11 12
int indexPage = (page.getPage() - 2 > 0)? page.getPage() - 2 : 1;
for(int i=1; i <= number && indexPage <= pageCount; indexPage++, i++) {
if(indexPage == page.getPage()) {
writer.print( "<li class=\"active\"><a href=\"#\">"+indexPage+"<span class=\"sr-only\">(current)</span></a></li>");
continue;
}
String pageUrl = append(url, "page", indexPage);
pageUrl = append(pageUrl, "rows", page.getSize());
writer.print("<li><a href=\"" + pageUrl + "\">"+ indexPage +"</a></li>");
}
//显示“下一页”按钮
if (page.getPage() < pageCount) {
String nextUrl = append(url, "page", page.getPage() + 1);
nextUrl = append(nextUrl, "rows", page.getSize());
writer.print("<li><a href=\"" + nextUrl + "\">下一页</a></li>");
} else {
writer.print("<li class=\"disabled\"><a href=\"#\">下一页</a></li>");
}
writer.print("</nav>");
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
private String append(String url, String key, int value) {
return append(url, key, String.valueOf(value));
}
/**
* 为url 参加参数对儿
*
* @param url
* @param key
* @param value
* @return
*/
private String append(String url, String key, String value) {
if (url == null || url.trim().length() == 0) {
return "";
}
if (url.indexOf("?") == -1) {
url = url + "?" + key + "=" + value;
} else {
if(url.endsWith("?")) {
url = url + key + "=" + value;
} else {
url = url + "&" + key + "=" + value;
}
}
return url;
}
/**
* 为url 添加翻页请求参数
*
* @param url
* @param pageContext
* @return
* @throws javax.servlet.jsp.JspException
*/
private String resolveUrl(String url, javax.servlet.jsp.PageContext pageContext) throws JspException{
//UrlSupport.resolveUrl(url, context, pageContext)
Map params = pageContext.getRequest().getParameterMap();
for (Object key:params.keySet()) {
if ("page".equals(key) || "rows".equals(key)) continue;
Object value = params.get(key);
if (value == null) continue;
if (value.getClass().isArray()) {
url = append(url, key.toString(), ((String[])value)[0]);
} else if (value instanceof String) {
url = append(url, key.toString(), value.toString());
}
}
return url;
}
/**
* @return the bean
*/
public String getBean() {
return bean;
}
/**
* @param bean the bean to set
*/
public void setBean(String bean) {
this.bean = bean;
}
/**
* @return the url
*/
public String getUrl() {
return url;
}
/**
* @param url the url to set
*/
public void setUrl(String url) {
this.url = url;
}
public void setNumber(int number) {
this.number = number;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Spring+SpringMVC+MyBatis(SSM)CRM 客户关系管理系统项目案例(可运行) (113个子文件)
NavigationTag.class 5KB
Customer.class 3KB
CustomerController.class 3KB
CustomerServiceImpl.class 3KB
BaseDict.class 3KB
QueryVo.class 2KB
Page.class 1KB
BaseDictServiceImple.class 918B
CustomerDao.class 611B
CustomerService.class 555B
BaseDictService.class 301B
BaseDictDao.class 292B
.classpath 4KB
org.eclipse.wst.common.component 467B
org.eclipse.wst.jsdt.ui.superType.container 49B
bootstrap.min.css 118KB
font-awesome.min.css 21KB
dataTables.bootstrap.css 7KB
sb-admin-2.css 5KB
metisMenu.min.css 781B
boot-crm.css 52B
fontawesome-webfont.eot 55KB
aspectjweaver-1.8.4.jar 1.78MB
druid-1.0.9.jar 1.76MB
jackson-databind-2.4.2.jar 1.03MB
spring-context-4.1.3.RELEASE.jar 1003KB
spring-core-4.1.3.RELEASE.jar 983KB
spring-webmvc-4.1.3.RELEASE.jar 763KB
mysql-connector-java-5.1.8.jar 707KB
spring-web-4.1.3.RELEASE.jar 697KB
mybatis-3.2.7.jar 696KB
spring-beans-4.1.3.RELEASE.jar 691KB
spring-test-4.1.3.RELEASE.jar 491KB
log4j-1.2.17.jar 478KB
commons-lang3-3.4.jar 424KB
spring-jdbc-4.1.3.RELEASE.jar 417KB
jstl-1.2.jar 405KB
standard-1.1.2.jar 384KB
spring-aop-4.1.3.RELEASE.jar 351KB
commons-lang3-3.1.jar 308KB
junit-4.12.jar 308KB
dom4j-1.6.1.jar 307KB
spring-messaging-4.1.3.RELEASE.jar 281KB
cglib-2.2.2.jar 280KB
spring-jms-4.1.3.RELEASE.jar 263KB
spring-expression-4.1.3.RELEASE.jar 253KB
spring-tx-4.1.3.RELEASE.jar 246KB
commons-codec-1.6.jar 227KB
jackson-core-2.4.2.jar 220KB
spring-context-support-4.1.3.RELEASE.jar 174KB
commons-pool2-2.0.jar 105KB
commons-io-1.3.2.jar 86KB
commons-collections-1.0.jar 84KB
json-20131018.jar 64KB
commons-logging-1.2.jar 60KB
commons-fileupload-1.2.2.jar 58KB
spring-aspects-4.1.3.RELEASE.jar 55KB
mybatis-spring-1.2.2.jar 48KB
hamcrest-core-1.3.jar 44KB
asm-3.3.1.jar 43KB
jackson-annotations-2.4.0.jar 38KB
slf4j-api-1.6.6.jar 26KB
slf4j-log4j12-1.6.6.jar 9KB
aopalliance-1.0.jar 4KB
NavigationTag.java 5KB
Customer.java 2KB
CustomerController.java 2KB
BaseDict.java 2KB
CustomerServiceImpl.java 2KB
QueryVo.java 1KB
Page.java 629B
CustomerDao.java 604B
BaseDictServiceImple.java 561B
CustomerService.java 531B
BaseDictService.java 222B
BaseDictDao.java 215B
jquery.min.js 82KB
jquery.dataTables.min.js 80KB
bootstrap.min.js 36KB
dataTables.bootstrap.min.js 2KB
metisMenu.min.js 2KB
sb-admin-2.js 1KB
.jsdtscope 503B
customer.jsp 16KB
MANIFEST.MF 39B
org.eclipse.wst.jsdt.ui.superType.name 6B
FontAwesome.otf 84KB
org.eclipse.jdt.core.prefs 364B
.project 1KB
log4j.properties 268B
log4j.properties 266B
jdbc.properties 147B
jdbc.properties 147B
resouce.properties 60B
resouce.properties 60B
fontawesome-webfont.svg 280KB
commons.tld 929B
fontawesome-webfont.ttf 110KB
fontawesome-webfont.woff 64KB
CustomerDao.xml 2KB
共 113 条
- 1
- 2
资源评论
weixin_44497088
- 粉丝: 38
- 资源: 107
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功