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;
/**
* 显示格式:首页 上一页 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\">");
//首页链接路径
String homeUrl = append(url, "page", 1);
//末页链接路径
String backUrl = append(url, "page", pageCount);
// 显示“上一页”按钮
if (page.getPage() > 1) {
String preUrl = append(url, "page", page.getPage() - 1);
preUrl = append(preUrl, "rows", page.getSize());
writer.print("<li><a href=\"" + homeUrl + "\">" + "首页</a></li>");
writer.print("<li><a href=\"" + preUrl + "\">" + "上一页</a></li>");
} else {
writer.print("<li class=\"disabled\"><a href=\"#\">" + "首页 </a></li>");
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 =1;
if(page.getPage() - 2 <=0){
indexPage=1;
}else if(pageCount-page.getPage() <=2){
indexPage=pageCount-4;
}else{
indexPage= page.getPage() - 2;
}
for (int i= 1;i <= number && indexPage <= pageCount;indexPage++,i++){
if (indexPage == page.getPage()) {
writer.print("<li class=\"active\"><a href=\"#\">" + indexPage
+"<spanclass=\"sr-only\"></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>");
writer.print("<li><a href=\"" + backUrl + "\">" + "尾页</a></li>");
} else {
writer.print("<li class=\"disabled\"><a href=\"#\">" + "下一页</a></li>");
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 参加参数对儿
*/
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 添加翻页请求参数
*/
private String resolveUrl(String url,
javax.servlet.jsp.PageContext pageContext) throws JspException {
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;
}
public String getBean() {
return bean;
}
public void setBean(String bean) {
this.bean = bean;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public void setNumber(int number) {
this.number = number;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于ssm+mysql+jsp客户管理系统(高分毕设) 已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 系统主要功能:系统实现了客户查询、添加、修改、删除。 运行环境:idea、mysql、tomcat 详情:https://blog.csdn.net/qq_33037637/article/details/124961924
资源推荐
资源详情
资源评论
收起资源包目录
基于ssm+mysql+jsp客户管理系统(高分毕设) (124个子文件)
org.eclipse.wst.common.project.facet.core.xml.bak 345B
NavigationTag.class 5KB
CustomerController.class 5KB
Customer.class 4KB
CustomerServiceImpl.class 3KB
LoginInterceptor.class 2KB
UserController.class 2KB
BaseDict.class 2KB
User.class 1KB
Page.class 1KB
UserServiceImpl.class 986B
BaseDictServiceImpl.class 983B
CustomerService.class 723B
CustomerDao.class 611B
UserDao.class 338B
BaseDictService.class 299B
BaseDictDao.class 289B
UserService.class 214B
.classpath 3KB
org.eclipse.wst.common.component 553B
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 6KB
style.css 2KB
metisMenu.min.css 781B
boot-crm.css 363B
fontawesome-webfont.eot 55KB
mysql-connector-java-8.0.15.jar 2.03MB
ant-1.9.6.jar 1.94MB
aspectjweaver-1.8.4.jar 1.78MB
mybatis-3.4.2.jar 1.52MB
jackson-databind-2.8.6.jar 1.18MB
spring-context-4.3.6.RELEASE.jar 1.08MB
spring-core-4.3.6.RELEASE.jar 1.07MB
spring-webmvc-4.3.6.RELEASE.jar 893KB
log4j-core-2.3.jar 808KB
spring-web-4.3.6.RELEASE.jar 798KB
spring-beans-4.3.6.RELEASE.jar 745KB
javassist-3.21.0-GA.jar 718KB
log4j-1.2.17.jar 478KB
commons-lang3-3.4.jar 424KB
spring-jdbc-4.3.6.RELEASE.jar 417KB
spring-aop-4.3.6.RELEASE.jar 371KB
cglib-3.2.4.jar 293KB
jackson-core-2.8.6.jar 275KB
spring-tx-4.3.6.RELEASE.jar 261KB
spring-expression-4.3.6.RELEASE.jar 257KB
ognl-3.1.12.jar 230KB
taglibs-standard-impl-1.2.5.jar 202KB
commons-dbcp2-2.1.1.jar 170KB
log4j-api-2.3.jar 133KB
commons-pool2-2.4.2.jar 109KB
commons-logging-1.2.jar 60KB
spring-aspects-4.3.6.RELEASE.jar 57KB
jackson-annotations-2.8.6.jar 54KB
asm-5.1.jar 52KB
mybatis-spring-1.3.1.jar 52KB
slf4j-api-1.7.22.jar 40KB
taglibs-standard-spec-1.2.5.jar 39KB
ant-launcher-1.9.6.jar 18KB
slf4j-log4j12-1.7.22.jar 10KB
aopalliance-1.0.jar 4KB
NavigationTag.java 5KB
CustomerController.java 4KB
Customer.java 3KB
CustomerServiceImpl.java 3KB
UserController.java 2KB
BaseDict.java 2KB
LoginInterceptor.java 2KB
User.java 1KB
UserServiceImpl.java 725B
Page.java 669B
BaseDictServiceImpl.java 667B
CustomerService.java 655B
CustomerDao.java 586B
UserDao.java 341B
BaseDictService.java 283B
BaseDictDao.java 267B
UserService.java 237B
rights.jpg 110KB
rightbg.jpg 1KB
jquery-1.11.3.min.js 94KB
jquery.dataTables.min.js 80KB
bootstrap.min.js 36KB
dataTables.bootstrap.min.js 2KB
metisMenu.min.js 2KB
sb-admin-2.js 1KB
.jsdtscope 567B
customer.jsp 21KB
login.jsp 2KB
index.jsp 172B
MANIFEST.MF 39B
org.eclipse.wst.jsdt.ui.superType.name 6B
FontAwesome.otf 84KB
org.eclipse.jdt.core.prefs 364B
org.eclipse.core.resources.prefs 57B
.project 1KB
log4j.properties 337B
共 124 条
- 1
- 2
资源评论
小码叔
- 粉丝: 5116
- 资源: 5484
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功