java超强分页标签演示

最近在做一个项目,用到了一个分页,于是动手写了个分页标签,先将代码贴出来,供大家交流,写的不好,请见谅!、

以下是java标签类,继承自SimpleTagSupport

package com.lynn.oa.tag;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;

import com.lynn.oa.util.Page;

public class PageTag extends SimpleTagSupport {
	
	private Integer pageIndex;//当前页数
	private Integer pageCount;//总页数
	private String path;//页面链接
	private String param;//传入的参数
	//private List<Page> pageList;//显示的页号,一次显示10页,当前页位于中间第5的位置
	
	@Override
	public void doTag() throws JspException, IOException {
		
		JspWriter out = this.getJspContext().getOut();//指定输入流,用于页面输出分页信息、
		StringBuffer sb = new StringBuffer();//构建StringBuffer对象,用户拼接分页标签
		sb.append(this.getPageIndex());
		sb.append("/");
		sb.append(this.getPageCount());
		//显示当前页和总页数
		
		//如果当前页在第一页,则首页和上一页没有超链接
		if(this.pageIndex==1){
			sb.append("首页 上一页 ");
		}else{
			sb.append("<a href='");
			sb.append(this.path);
			sb.append("?");
			sb.append(this.param);
			sb.append("=");
			sb.append(1);
			sb.append("'>首页</a> ");
			sb.append("<a href='");
			sb.append(this.path);
			sb.append("?");
			sb.append(this.param);
			sb.append("=");
			sb.append(this.pageIndex-1);
			sb.append("'>上一页</a> ");
			
		}
		//下面的代码显示页码,当前页在中间位置,
		if(this.getPageCount()<=10){
			for (int i = 1; i <= this.getPageCount(); i++) {
			//如果页数小于等于10页,则全部显示
				
					if( i == pageIndex){//如果页码等于当前页,则该页数没有超链接
						sb.append("[");
						sb.append(i);
						sb.append("] ");
					}else{//否则给出超链接
						sb.append("<a href='");
						sb.append(this.path);
						sb.append("?");
						sb.append(this.param);
						sb.append("=");
						sb.append(i);
						sb.append("'>[");
						sb.append(i);
						sb.append("]</a> ");
					
					}
					
				}
		}else{//如果大于10页,则从当前页为中心只显示其中10页
					int index=1;
			if(this.pageIndex>4){//并且如果当前页大于4页,从当前页前4页开始显示10个页数
				for (int j = this.pageIndex-4;j<=this.getPageCount(); j++) {
					if(j==this.pageIndex){//如果页码等于当前页,则该页数没有超链接
						sb.append("[");
						sb.append(j);
						sb.append("] ");
					}else{//否则给定超链接
						sb.append("<a href='");
						sb.append(this.path);
						sb.append("?");
						sb.append(this.param);
						sb.append("=");
						sb.append(j);
						sb.append("'>[");
						sb.append(j);
						sb.append("]</a> ");
					}
					index++;
					if(index>10)//如果循环到10次则退出循环
						break;
				}
				
				
			}else{
				for (int i = 1; i <= this.getPageCount(); i++) {
					//如果页数小于等于10页,则全部显示
						
							if( pageIndex.equals(i)){//如果页码等于当前页,则该页数没有超链接
								sb.append("[");
								sb.append(i);
								sb.append("] ");
							}else{//否则给出超链接
								sb.append("<a href='");
								sb.append(this.path);
								sb.append("?");
								sb.append(this.param);
								sb.append("=");
								sb.append(i);
								sb.append("'>[");
								sb.append(i);
								sb.append("]</a> ");
							
							}
							index++;
							if(index>10)
								break;
							
						}
			}
				
				
		}
		//如果当前页是最后一页,则末页和下一页没有超链接
		if(this.pageIndex.equals(this.pageCount)){
			sb.append("下一页 末页 ");
		}else{
			sb.append("<a href='");
			sb.append(this.path);
			sb.append("?");
			sb.append(this.param);
			sb.append("=");
			sb.append(this.pageIndex+1);
			sb.append("'>下一页</a>");
			sb.append(" <a href='");
			sb.append(this.path);
			sb.append("?");
			sb.append(this.param);
			sb.append("=");
			sb.append(this.pageCount);
			sb.append("'>末页</a>");
		}
		
		//System.out.prIntegerln(sb.toString());

		//一下代码拼接转到第几页的js代码
		sb.append("<script type='text/javascript'>");
		sb.append("function getPage(){");
		sb.append("var pageIndex = document.getElementById('pageText').value;");
		sb.append("window.location.href='");
		sb.append(this.getPath());
		sb.append("?");
		sb.append(this.param);
		sb.append("=");
		sb.append("'+pageIndex;}");
		sb.append("</script>");
		sb.append(" 转到第<input type='text' name='pageText' id='pageText' style='width:15px;' />页");
		sb.append("<input type='button' name='pageBtn' value='GO' οnclick='getPage()' />");

		sb.append("<script type='text/javascript'>");
		sb.append("$(function(){$('#pageSize').change(function(){var pageSize=$('#pageSize').val();window.location.href='");
		sb.append(this.path);
		sb.append("?");
		sb.append("pageIndex=1&index='+pageSize});});</script>");
		sb.append("每页显示<select id='pageSize'><option id='noone' value='1'>请选择</option>");
		sb.append("<option value='1'>1</option>");
		sb.append("<option value='5'>5</option>");
		sb.append("<option value='10'>10</option></select>页");
		out.print(sb);
	}

	public Integer getPageIndex() {
		return pageIndex;
	}

	public void setPageIndex(Integer pageIndex) {
		this.pageIndex = pageIndex;
	}

	public Integer getPageCount() {
		return pageCount;
	}

	public void setPageCount(Integer pageCount) {
		this.pageCount = pageCount;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public String getParam() {
		return param;
	}

	public void setParam(String param) {
		this.param = param;
	}


	
	public static void main(String[] args) {
		PageTag pt = new PageTag();
		pt.setPageIndex(13);
		pt.setPageCount(13);
		//pt.setPageList(pageList)
		pt.setPath("index.jsp");
		pt.setParam("pageIndex");
		
		try {
			pt.doTag();
		} catch (JspException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

tld文件如下:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <description>JSTL 1.1 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>mt</short-name>
  <uri>http://www.lynn88.com/jsp/jstl/pagetag</uri>

  <tag>
    <description>
        Catches any Throwable that occurs in its body and optionally
        exposes it.
    </description>
    <name>page</name>
    <tag-class>com.lynn.oa.tag.PageTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        
        <name>pageIndex</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.Integer</type>
    </attribute>
    <attribute>
        
        <name>pageCount</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.Integer</type>
    </attribute>
     <attribute>
        
        <name>path</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.String</type>
    </attribute>
    <attribute>
        
        <name>param</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.String</type>
    </attribute>
  </tag>

</taglib>


目前分页标签还在完善中。。。。有不懂的可以联系我。。。。
QQ:331509758,多多交流哈

以下是我下载链接路径:

java超炫分页标签

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lynnlovemin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值