目的:分页在查询页面几乎哪里都要用到,代码繁琐,本张介绍通过jsp自定义标签库实现分页技术,
使用步骤
1:导入自定义标签库 <%@ taglib prefix="cc" uri="/pagetag"%>
2:使用 标签库 <cc:tagout url="integeral/queryIntegral.html" pageindex="${pageindex}" pagesize="10" totalsize="120"></cc:tagout>
这样就可以了,哪里需要分页技术及这两句话,js和jsp代码都封装好,无需再进行逻辑处理,使用时要做的及时 在标签赋值就可以实现任何分页了
看效果
1:查看第6页后,上页,下页显示
2:点击上页后 ,没有上页了,从1页开始
3: 点击下页后
4店家第8页后
实现步骤
1定义tdl文件
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>cc</short-name>
<uri>/pagetag</uri>
<tag>
<name>tagout</name>
<tag-class>com.datong.rootravel.constants.PageTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pageindex</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pagesize</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>totalsize</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
2:写分页实现类 继承tagSupport类
package com.datong.rootravel.constants;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/*
* JSP 分页标签通用库
*
* auto zg
* time 2014-10-13
*
* */
public class PageTag extends TagSupport {
private String url;
private int pageindex;
private int pagesize;
private int totalsize;
// 在开始标签属性设置后调用,如果返回SKIP_BODY则忽略标签之中的内容,如果返回EVAL_BODY_INCLUDE则将标签体的内容进行输出
@Override
public int doStartTag() throws JspException {
JspWriter out = null;
Integer temp = 0;
String style="style=\"color:red;\"";
for (int t = pageindex; t > 0; t++) {
if (t % 5 == 0) {
temp = t;
break;
}
}
try {
out = this.pageContext.getOut();
if (url == null) {
out.println("error: url is null!");
return SKIP_BODY;
}
Integer pagecount = (Integer) (totalsize % pagesize == 0 ? totalsize
/ pagesize
: totalsize / pagesize + 1);
out.print("<div id=\"member_new_pages\">");
out.print("<ul>");
if (pagecount <= 5) { // 总页小于5 没有上页下页
for (int i = 1; i <= pagecount; i++) {
out.print("<li ><a "+(i==pageindex?style:"")+" href=\"javascript:pageQuery('" + url + "?pageindex="
+ i + "&pagesize=" + pagesize
+ "&totalsize=" + totalsize + "')\">" + i
+ "</a></li>");
}
} else {
// 上页
if (temp > 5) {
out.print("<li ><a href=\"javascript:pageQuery('" + url + "?pageindex="
+ (temp - 9) + "&pagesize=" + pagesize
+ "&totalsize=" + totalsize + "')\">上一页</a></li>");
}
if (temp> pagecount) { // 没有下一页了
for (int i = temp - 4; i <= pagecount; i++) {
out.print("<li ><a "+(i==pageindex?style:"")+" href=\"javascript:pageQuery('" + url + "?pageindex="
+ i + "&pagesize=" + pagesize
+ "&totalsize=" + totalsize + "')\">" + i
+ "</a></li>");
}
} else {
for (int i = temp - 4; i <= temp; i++) {
out.print("<li ><a "+(i==pageindex?style:"")+" href=\"javascript:pageQuery('" + url + "?pageindex="
+ i + "&pagesize=" + pagesize
+ "&totalsize=" + totalsize + "')\">" + i
+ "</a></li>");
if (i == temp) {
out.print("<li><a href=\"javascript:pageQuery('" + url + "?pageindex="
+ (temp + 1) + "&pagesize=" + pagesize
+ "&totalsize=" + totalsize
+ "')\">下一页</a></li>");
}
}
}
}
out.print("</ul></div>");
} catch (Exception e) {
e.printStackTrace();
}
return SKIP_BODY;
}
public int getTotalsize() {
return totalsize;
}
public void setTotalsize(int totalsize) {
this.totalsize = totalsize;
}
// 在结束标签之前调用,返回SKIP_PAGE跳过整个jsp页面后面的输出,返回EVAL_PAGE执行页面余下部分
@Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
// 生命周期结束时调用
@Override
public void release() {
super.release();
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getPageindex() {
return pageindex;
}
public void setPageindex(int pageindex) {
this.pageindex = pageindex;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
}
3:配置web.xml
<jsp-config>
<taglib>
<taglib-uri>/pagetag</taglib-uri>
<taglib-location>/WEB-INF/pagetag.tld</taglib-location>
</taglib>
</jsp-config>