package com.student.common.utils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.util.Map;
/**
* 显示格式:首页 上一页 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框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码
资源推荐
资源详情
资源评论
收起资源包目录
基于SSM框架的学生信息管理系统源码.zip (107个子文件)
bootstrap.min.css 149KB
font-awesome.min.css 21KB
dataTables.bootstrap.css 7KB
sb-admin-2.css 6KB
style.css 4KB
normalize.css 3KB
reset.css 1KB
metisMenu.min.css 781B
boot-crm.css 526B
软件三班-兰伟胜实训报告.docx 1001KB
fontawesome-webfont.eot 55KB
com.ldzy.iml 5KB
StudentController.java 3KB
Student.java 2KB
StudentServiceImpl.java 2KB
UserController.java 2KB
LoginInterceptor.java 2KB
Course.java 1KB
User.java 1KB
UserServiceImpl.java 705B
Page.java 635B
StudentDao.java 633B
StudentService.java 587B
CourseServiceImpl.java 559B
UserDao.java 319B
UserService.java 230B
CourseDao.java 200B
CourseService.java 187B
NavigationTag.java 5KB
rights.jpg 110KB
bg.jpg 50KB
cloud.jpg 11KB
rightbg.jpg 1KB
jquery-1.11.3.min.js 94KB
jquery.dataTables.min.js 80KB
bootstrap.min.js 47KB
particles.min.js 23KB
app.js 2KB
dataTables.bootstrap.min.js 2KB
metisMenu.min.js 2KB
sb-admin-2.js 1KB
customer.jsp 14KB
login.jsp 7KB
index.jsp 172B
FontAwesome.otf 84KB
关联sql语句.png 241KB
cloud.png 70KB
name.png 5KB
password.png 4KB
log4j.properties 330B
db.properties 172B
resource.properties 15B
t_student_scores.sql 2KB
t_student_info.sql 1KB
t_student_user.sql 1KB
t_course_info.sql 1KB
fontawesome-webfont.svg 280KB
commons.tld 2KB
fontawesome-webfont.ttf 110KB
fontawesome-webfont.woff 64KB
workspace.xml 64KB
pom.xml 7KB
com_ldzy_war_exploded.xml 4KB
StudentDao.xml 3KB
applicationContext.xml 3KB
springmvc-config.xml 2KB
web.xml 2KB
Maven__org_springframework_spring_context_support_5_0_2_RELEASE.xml 681B
compiler.xml 662B
Maven__org_springframework_spring_expression_5_0_2_RELEASE.xml 646B
misc.xml 640B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_5.xml 632B
Maven__org_springframework_spring_context_5_0_2_RELEASE.xml 625B
Maven__org_springframework_spring_webmvc_5_0_2_RELEASE.xml 618B
Maven__com_fasterxml_jackson_core_jackson_databind_2_9_5.xml 611B
Maven__org_springframework_spring_beans_5_0_2_RELEASE.xml 611B
Maven__javax_servlet_jsp_javax_servlet_jsp_api_2_3_1.xml 610B
Maven__org_springframework_spring_jdbc_5_0_2_RELEASE.xml 604B
Maven__org_springframework_spring_test_5_0_2_RELEASE.xml 604B
Maven__org_springframework_spring_core_5_0_2_RELEASE.xml 604B
Maven__org_springframework_spring_oxm_5_0_2_RELEASE.xml 597B
Maven__org_springframework_spring_web_5_0_2_RELEASE.xml 597B
Maven__org_springframework_spring_jcl_5_0_2_RELEASE.xml 597B
Maven__org_springframework_spring_aop_5_0_2_RELEASE.xml 597B
Maven__org_springframework_spring_tx_5_0_2_RELEASE.xml 590B
Maven__com_mchange_mchange_commons_java_0_2_11.xml 586B
Maven__com_fasterxml_jackson_core_jackson_core_2_9_5.xml 583B
Maven__javax_servlet_javax_servlet_api_3_1_0.xml 566B
Maven__mysql_mysql_connector_java_5_1_30.xml 562B
Maven__org_mybatis_mybatis_spring_1_2_2.xml 537B
Maven__commons_dbcp_commons_dbcp_1_2_2.xml 527B
Maven__org_slf4j_slf4j_log4j12_1_7_7.xml 522B
Maven__javax_activation_activation_1_1.xml 515B
Maven__com_sun_mail_javax_mail_1_5_0.xml 513B
Maven__commons_pool_commons_pool_1_3.xml 513B
Maven__org_slf4j_slf4j_api_1_7_7.xml 494B
Maven__org_mybatis_mybatis_3_2_6.xml 488B
Maven__com_mchange_c3p0_0_9_5_2.xml 481B
Maven__taglibs_standard_1_1_2.xml 479B
Maven__javax_javaee_api_7_0.xml 471B
共 107 条
- 1
- 2
程序员张小妍
- 粉丝: 1w+
- 资源: 2788
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页