热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java自定义分页标签_自定义分页标签仿javaeye分页效果

效果如图:1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤(1)开发自定义标签处理类。(2)建立*.tld文件。(3)在web.xml中增加自定义标

效果如图:

a0f7fa81ebc86e2e7123be3b8c36294f.png

1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤

(1)开发自定义标签处理类。

(2)建立*.tld文件。

(3)在web.xml中增加自定义标签的定义。

(4)在jsp中使用自定义标签。

2、自定义标签类

(1)继承javax.servlet.jsp.tagext.TagSupport

(2)标签类属性,及每个属性的getter和setter方法

(3)重写doStartTag或doEndTag方法。当jsp解析这个标签的时候,在“”时触发 doEndTag 事件。通常在 doStartTag 里进行初始化,流程选择操作,在 doEndTag 里后续页面输出控制。

import java.io.IOException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**

*

* @author liuxi

*/

public class PageThirdTag extends TagSupport {

private static final Log log = LogFactory.getLog(PageTwoTag.class);

private String formName;

private String curPage;

private String showPages;

private String totalPages;

private String PREVIOUS_PAGE = "上一页";

private String NEXT_PAGE = "下一页 ";

public String getHref(int number) {

return "Javascript:ToPage(" + number + ");";

}

public String goHref(int number) {

return " " + number + "";

}

public int doEndTag() throws JspException {

int showPages = Integer.parseInt(this.showPages);

int curpage = Integer.parseInt(this.curPage);

int totalPages = Integer.parseInt(this.totalPages);

StringBuffer strBuf = new StringBuffer(512);

// 总页数

int pagecount = totalPages;

// 初始化值

if (curpage == 0) {

curpage = 1;

} else {

if (curpage <&#61; 0) {

curpage &#61; 1;

}

if (curpage > pagecount) {

curpage &#61; pagecount;

}

}

strBuf.append("

strBuf.append(".pagebox{margin-left:2px;padding:3px 5px 3px 5px; border:1px solid #fff; background-color:#ebebeb;color:#FFFFFF; font-size:12px;}");

strBuf.append(".cpagebox{margin-left:2px;padding:3px 5px 3px 5px; border:1px gray; background-color:#ebebeb; color:red; font-size:12px;}");

strBuf.append(".vpagebox{margin-left:2px;padding:3px 5px 3px 5px; background-color:#FFFFFF; color:#000000;font-size:12px;}");

strBuf.append("");

strBuf.append("

strBuf.append("function ToPage(p) { \n");

strBuf.append("window.document." &#43; formName &#43; ".pageNo.value&#61;p;\n");

strBuf.append("window.document." &#43; formName &#43; ".submit();\n");

strBuf.append("}");

if (curpage > 1) {

strBuf.append("" &#43; PREVIOUS_PAGE &#43; "");

}

// 分页

if (pagecount <&#61; showPages &#43; 2) {

for (int i &#61; 1; i <&#61; pagecount; i&#43;&#43;) {

if (i &#61;&#61; curpage) {

strBuf.append("" &#43; i &#43; "");

} else {

strBuf.append(goHref(i));

}

}

} else {

if (curpage

for (int i &#61; 1; i <&#61; showPages; i&#43;&#43;) {

if (i &#61;&#61; curpage) {

strBuf.append("" &#43; i &#43; "");

} else {

strBuf.append(goHref(i));

}

}

strBuf.append("...");

strBuf.append(goHref(pagecount));

} else if (curpage > pagecount - showPages &#43; 1) { // 右边

strBuf.append(goHref(1));

strBuf.append("...");

for (int i &#61; pagecount - showPages &#43; 1; i <&#61; pagecount; i&#43;&#43;) {

if (i &#61;&#61; curpage) {

strBuf.append("" &#43; i

&#43; "");

} else {

strBuf.append(goHref(i));

}

}

} else { // 中间

strBuf.append(goHref(1));

//strBuf.append(goHref(2));

strBuf.append("...");

int offset &#61; (showPages - 2) / 2;

for (int i &#61; curpage - offset; i <&#61; curpage &#43; offset; i&#43;&#43;) {

if (i &#61;&#61; curpage) {

strBuf.append("" &#43; i &#43; "");

} else {

strBuf.append(goHref(i));

}

}

strBuf.append("...");

strBuf.append(goHref(pagecount));

}

}

// 显示下-页

if (curpage !&#61; pagecount) {

// 加上链接 curpage&#43;1

strBuf.append("" &#43; NEXT_PAGE &#43; "");

}

strBuf.append("");

try {

pageContext.getOut().println(strBuf.toString());

} catch (IOException e) {

e.printStackTrace();

log.debug(e.getMessage());

}

return EVAL_PAGE;

}

public String getFormName() {

return formName;

}

public void setFormName(String formName) {

this.formName &#61; formName;

}

public String getCurPage() {

return curPage;

}

public void setCurPage(String curPage) {

this.curPage &#61; curPage;

}

public String getShowPages() {

return showPages;

}

public void setShowPages(String showPages) {

this.showPages &#61; showPages;

}

public String getTotalPages() {

return totalPages;

}

public void setTotalPages(String totalPages) {

this.totalPages &#61; totalPages;

}

}

说明&#xff1a;

(1)如何输出到jsp页面&#xff1a;调用pageContext.getOut().println()。

(2)输出后如何作处理&#xff0c;函数会返回几个值之一。EVAL_PAGE 表示tag已处理完毕&#xff0c;返回jsp页面。

3、建立self.tld 文件

xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation&#61;"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"

version&#61;"2.1">

TEST Tag library

TEST Tag

1.0

test

/test

Page Info

pagethird

com.test.web.tag.PageThirdTag

empty

the name of the current form

formName

true

false

Show Records

showPages

true

true

Current Page

curPage

true

true

Total Pages

totalPages

true

true

说明&#xff1a;

short-name&#xff1a;taglib的名称。

name&#xff1a;tag的名字。

name&#xff1a;tag的名字。

body-content&#xff1a;指tag之间的内容。

required&#xff1a;是否必填属性。

rtexprvalue&#xff1a;是否支持动态传值。

4、web.xml中加入自定义标签定义

test

/WEB-INF/tld/self.tld

5、jsp中使用该自定义标签

6、over

2d71bc4f4723234857c8018544171944.png

大小: 1.4 KB

分享到&#xff1a;

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-07-07 20:39

浏览 2889

评论



推荐阅读
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 在Spring框架中,基于Schema的异常通知与环绕通知的实现方法具有重要的实践价值。首先,对于异常通知,需要创建一个实现ThrowsAdvice接口的通知类。尽管ThrowsAdvice接口本身不包含任何方法,但开发者需自定义方法来处理异常情况。此外,环绕通知则通过实现MethodInterceptor接口来实现,允许在方法调用前后执行特定逻辑,从而增强功能或进行必要的控制。这两种通知机制的结合使用,能够有效提升应用程序的健壮性和灵活性。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • 深入解析:使用C++实现Python字节数组(struct)的高效处理方法 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
author-avatar
蘇靖雯jingwensu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有