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

jsp自定自定义标签

2019独角兽企业重金招聘Python工程师标准1先要导入一个jar包2自定一个标签库,该库放在WEB-INFtld下面3需要实现该类extendsTagSup

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1 先要导入一个jar包

导入的jar包

2 自定一个标签库 ,该库放在WEB-INF/tld下面 输入图片说明

3 需要实现 该类 extends TagSupport 实现里面的方法 重载TagSupport类的方法

4 在jsp页面引入 该标签库 并使用 应用

5 在web.xml文件中配置该标签 (不过这个不是必须的) 输入图片说明

6 现在给出一个显示页码的 自定义 处理类

package com.shi.utils;import java.io.IOException;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;import org.apache.taglibs.standard.tag.common.core.UrlSupport;/*** 显示格式 上一页 1 2 3 4 5 下一页*/
public class NavigationTag extends TagSupport {static final long serialVersionUID = 2372405317744358833L;/*** request 中用于保存Page 对象的变量名,默认为“page”*/private String bean = "page";/*** 分页跳转的url地址,此属性必须*/private String url = null;/*** 显示页码数量*/private int number = 5;@Overridepublic 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("

");} 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 参加参数对儿* * @param url* @param key* @param value* @return*/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 添加翻页请求参数* * @param url* @param pageContext* @return* @throws javax.servlet.jsp.JspException*/private String resolveUrl(String url, javax.servlet.jsp.PageContext pageContext) throws JspException{//UrlSupport.resolveUrl(url, context, pageContext)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;}/*** @return the bean*/public String getBean() {return bean;}/*** @param bean the bean to set*/public void setBean(String bean) {this.bean = bean;}/*** @return the url*/public String getUrl() {return url;}/*** @param url the url to set*/public void setUrl(String url) {this.url = url;}public void setNumber(int number) {this.number = number;}}

转载于:https://my.oschina.net/u/3677987/blog/1531532


推荐阅读
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 在Spring框架中,基于Schema的异常通知与环绕通知的实现方法具有重要的实践价值。首先,对于异常通知,需要创建一个实现ThrowsAdvice接口的通知类。尽管ThrowsAdvice接口本身不包含任何方法,但开发者需自定义方法来处理异常情况。此外,环绕通知则通过实现MethodInterceptor接口来实现,允许在方法调用前后执行特定逻辑,从而增强功能或进行必要的控制。这两种通知机制的结合使用,能够有效提升应用程序的健壮性和灵活性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 深入解析 javax.faces.view.ViewDeclarationLanguageWrapper.getWrapped() 方法及其应用实例 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • 深入解析Spring框架中的双亲委派机制突破方法
    在探讨Spring框架中突破双亲委派机制的方法之前,首先需要了解类加载器的基本概念。类加载器负责将类的全限定名转换为对应的二进制字节流。每个类在被特定的类加载器加载后,其唯一性得到保证。然而,这种机制在某些场景下可能会限制灵活性,因此Spring框架提供了一些策略来突破这一限制,以实现更加动态和灵活的类加载。这些策略不仅能够提升系统的可扩展性,还能在复杂的运行环境中确保类的正确加载和管理。 ... [详细]
  • 在一系列的学习与实践后,Jsoup学习笔记系列即将进入尾声。本文详细介绍了如何使用Jsoup实现从Saz文件到Csv格式的数据解析功能。未来,计划将此功能进一步封装,开发成具有用户界面的独立应用程序,以增强其实用性和便捷性。对于希望深入掌握Jsoup技术的开发者,本文提供了宝贵的参考和实践案例。 ... [详细]
  • 在Java应用程序中调用`response.getStatus()`方法时遇到了`NoSuchMethodError`异常,经过分析,初步判断为依赖冲突问题。通过检查项目依赖树发现,当前项目版本与某些库的版本不兼容,导致该方法无法被正确识别。建议通过更新相关依赖版本或使用依赖管理工具(如Maven或Gradle)来解决此问题,确保所有依赖项版本一致且兼容。 ... [详细]
  • 深入解析Spring Boot源码的序章
    本系列文章旨在深入解析Spring Boot的源代码,分享笔者在学习过程中的心得与体会。内容涵盖核心源码分析,可能会对初学者造成一定理解难度,建议读者结合笔者提供的详细注释进行阅读,以获得更好的学习体验。 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
author-avatar
曾静ZHH_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有