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' onclick='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>
java超强分页标签演示的更多相关文章
- Java自定义分页标签的实现
主要字段含义: 页号 pagaNo页面大小 pageSize总记录条数 recordCount计算本次一共分多少页 myPageSize页号显示开始 start 页号显示结束 end PageTag需 ...
- SSH自定义分页标签
本文参考文章:http://blog.csdn.net/qjyong/article/details/3240303 一.标签处理类: package cn.conris.sys.form; impo ...
- 自定义分页标签,并使分页标签能获得url中的参数
如题,要实现一个分页功能,其次,要让分页标签“智能一点”,在分页时能自动带上url后面的参数 <tag> <description>分页标签</description&g ...
- Struts2自定义标签4自定义分页标签
第一步:webroot/web-inf下的str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- Java 动态分页类
动态分页类: Cls_page.java package pagination; public class Cls_page { private int nums;// 总条目数 private i ...
- Java自定义简单标签
Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用. 下面将以权限的控制为例自定义一个标签: 一.标签类型 <wxt: ...
- java把html标签字符转普通字符(反转换成html标签)(摘抄)
下面是java把html标签字符转换,我用了spring 包中的 org.springframework.web.util.HtmlUtils 了解了源代码并且进步了使用,发现写得真不错...同时也可 ...
- LeetCode第[18]题(Java):4Sum 标签:Array
题目难度:Medium 题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + ...
随机推荐
- javascript根据文件字节数返回文件大小
function getFileSize(fileByte) { var fileSizeByte = fileByte; var fileSizeMsg = ""; if(fil ...
- HSL与RGB颜色转换
/** * HSL颜色值转换为RGB. * 换算公式改编自 http://en.wikipedia.org/wiki/HSL_color_space. * h, s, 和 l 设定在 [0, 1] 之 ...
- wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包
主要工具:小度随身wifi热点 + wireshark抓包工具.(强烈不建议使用360的产品,非常垃圾,而且干扰代理#墙IP,搞得你不能***) 利用wireshark这个强大的协议分析利器.去分析某 ...
- MySQL---下载安装、数据库基本操作
1.下载安装 1.1 下载: http://dev.mysql.com/downloads/mysql/ 1.2 解压 1.3 初始化 cd c:\mysql-5.7.16-winx64\bin ( ...
- centos install rabbitmq
安装rabbitmq 需要环境上有erlang,没有安装的可以参照下面的内容进行安装: https://www.erlang-solutions.com/resources/download.html ...
- Eclipse安装Java Class反编译插件
第一步:没有安装之前 第二步:从Eclipse Marketplace里,安装反编译插件jadclipse. 第三步:安装反编译插件之后,多了一个查看器,把"类反编译查看器"设置为 ...
- 成都Uber优步司机奖励政策(3月19日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- restTemplate访问接口
后端技术精选 每天推送精选技术好文,涉及Java.python.Linux及MySQL,欢迎关注微信公众号:后端技术精选 随笔 - 52, 文章 - 0, 评论 - 50, 引用 - 0 Spring ...
- nexys4-DDR开发板数码管驱动-第二篇
1. 有这个板子使用的是Artix-7系列的XC7A100T-1CSG324C芯片.作为7系列中的一款FPGA,这个芯片的结构与Kintex-7和Virtex-7几乎一样.也配备了XADC.在Arti ...
- apache+php+mysql开发环境搭建
一.Apache 因为Apache官网只提供源代码,如果要使用必须得自己编译,这里我选择第三方安装包Apache Lounge. 进入Apachelounge官方下载地址:http://w ...