设为首页 - 加入收藏
广告 1000x90
您的当前位置:78345黄大仙救世网24码 > 接口主体 > 正文

Tomcat与JavaWeb 81 自定义JSP标签及其主要接口、类介绍

来源:未知 编辑:admin 时间:2019-07-07

  为了便于组织和管理标签,可以把一组功能相关的标签放在同一个标签库中。开发包含自定义标签的标签库包括以下步骤:

  假设甲方开发了可重用性比较高的标签库,那么除了甲方本身的Web应用可以使用它,其他方(如乙方)也可以使用它。本系列后续内容(JSTL Core标签库)会介绍如何在Web应用中使用第三方提供的JSP标准标签库。

  所有的标签处理类都要实现JspTag接口。这个接口只是一个标识接口,没有任何方法,主要是作为Tag和SimpleTag接口的共同接口。在JSP2.0以前,所有的标签处理类都要实现Tag接口,实现该接口的标签称为传统标签(Classic Tag)。JSP2.0提供了SimpleTag接口,实现该接口的标签称为简单标签(Simple Tag)。本章将介绍传统标签的使用方法,后续的章节会介绍简单标签的用法。

  假若mytag标签的处理对象的doStartTag()方法返回Tag.SKIP_BODY,那么“Hello World!”字符串将不会显示在网页上。若返回Tag.EVAL_BODY_INCLUDE,那么“Hello World!”字符串将显示在网页。

  doEndTag():当Servlet容器遇到标签的结束标志时,会调用此方法。doEndTag()方法也返回一个整数值,用来决定程序的后续流程,该整数值也有两个可选值,即Tag.SKIP_PAGE(=5)和Tag.EVAL_PAGE(=6)。前者表示立刻停止执行标签后面的JSP代码,网页上未处理的静态内容和Java程序片段均被忽略,任何已有的输出内容立刻返回到客户的浏览器上。后者则表示按正常的流程继续处理JSP文件。

  标签处理类的对象(即Tag对象)由Servlet容器负责创建。容器在执行JSP文件时,如果遇到JSP文件中的自定义标签,就会寻找缓存中的相关的Tag对象,如果还不存在,就会创建一个Tag对象,把它存放在缓存中,以便下次处理自定义标签时重复使用。当Servlet容器得到了Tag对象后,会按照如图所示的流程调用Tag对象的相关方法。

  一个Tag对象被创建后,就会一直存在,可以被Servlet容器重复调用。当Web应用终止时,容器就会先调用Web应用中的所有的Tag对象的releaser()方法,然后销毁这些Tag对象。

  IterationTag接口继承自Tag接口,相比于Tag接口增加了重复执行标签主体内容的功能。

  Servlet容器JSP文件中的这种标签时,会寻找缓存中的相关IterationTag对象,如果还不存在,就创建一个IterationTag对象,把它存放在缓存中,以便下次处理自定义标签时重复使用。Servlet容器在得到了IterationTag对象后,会按照下面的流程来调用IterationTag对象的相关方法:

  BodyTag接口又继承自IterationTag接口,增加了直接访问和操纵标签主体内容的功能。BodyTag接口定义了两个方法:

  Servlet容器在处理JSP文件中的这种标签时,会寻找缓存中的相关的BodyTag对象,如果还不存在就创建一个BodyTag对象并放在缓存中,以便重复使用。容器在得到BodyTag对象后,会按照以下流程调用BodyTag的相关方法。

  对于用户自定义的标签处理类,主要重新实现TagSupport类中的doStartTag()和doEndTag()方法,分别提供Servlet容器在遇到标签起始和结束标志时执行的操作。如果希望Servlet容器重复执行标签主体的内容,那么还可以重新实现TagSupport类的doAfterBody()方法。

  如果希望操控标签主体内容,可以让自定义的标签处理类继承BodyTagSupport类,下面是其部分源代码:

  将自定义标签打包为jar包并提供给JSP使用博文来自:u013905744的专栏

  前言本文适合有一定开发经验的JavaWeb开发者,对JavaWeb世界好奇的人。本文是我的个人感悟,如果不妥或者不对的地方,欢迎大家指出!Servlet对于网络上的一个http请求,到达我们的程序,我...博文来自:opiqi的博客

  在项目中,涉及到细粒度的权限管理,需要控制按钮级别的显示与隐藏,由于需要达到可配置,不能写死在页面中,因此想到了使用自定义标签来实现。        实现的大概思路是,在后台判断用户是...博文来自:Kevin Tang

  当我们在部署完一个Tomcat程序之后,想要实现一个servlet接口,但是却报错,那么这是为什么了?原因:intellijidea与eclipse不同,想要使用servlet类必须还要导入serve...博文来自:亡月杂货铺

  一个功能健全的类加载器,都要解决以下几个问题:(1)部署在同一服务器上的两个web应用程序所使用的java类库可以实现相互隔离。这是最基本的需求,两个不同的应用程序可能会依赖同一个第三方类库的不同版本...博文来自:u011393781的博客

  一、编写步骤1、编写完成标签功能的java类(标签处理器)2、、编写标签库描述文件(.tld)3、在jsp页面中导入和使用自定义标签二、举例栗子一、获取两个数较大的数1、标签处理器MaxTag.jav...博文来自:皮皮的博客

  问题描述应用在tomcat6上发布没有问题,部署到tomcat7后报错:不识别配置的taglib标签。问题截图如下:解决方法查询应用环境,除服务器为tomcat7外,配置的web.xml 头文件为:测...博文来自:rqgxy的博客

  1.带有属性的处理类:2.编辑TLD文件:3.页面的使用:4,运行结果:博文来自:Mr_faded的博客

  首先-什么是web应用程序?-可以用浏览器直接访问的应用程序,不需要安装其他软件。软件开发领域的三大方向:桌面应用程序(C/S)、web应用程序、嵌入式应用程序(安卓iphone)而javaweb属于...博文来自:yogima的博客

  第三章我们遇见了一个JSP标签,为了让接下来的学习能更清晰地认识标签,故做了以下hello.jsp中的hello标签与web.xml标签中的lt;taglibgt;元素,mytag...博文来自:七年蝉

  Tomcat类加载机制以及线程上下文类加载器  tomcat类加载需要解决的问题tomcat是一个很经典的web服务器,一个服务器就相当于一个Java应用,而在这个Java应用中又有着多个被部署的We...博文来自:that_is_cool的博客

  1.通过tld文件自定义的标签作用:主要是用来执行后端代码,去获取数据到页面显示,例如开发中可以使用自定义标签通过属性去加载select下拉框;还有一种用法是,有时读取出来的数据是关联类的id或其他字...博文来自:的博客

  在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。...博文来自:世界上只有一个她

  思想:当查出来的数据很多时(例如:超过10万),采用精简的默认的样式,也就是指只显示首尾页上一页和下一页。当总页数不大于9页时,把所有的具体页码以按钮形式显示出来,页码按钮如果等于当前则显于背景色。当...博文来自:fengyunanxiu的博客

  第一次做前端,以前零星学过一点H5和PHP,完全没学过jsp,是的完全没学过。这两天周末学了下,做出一个前端的雏形(比较丑,哈哈)首先说下,我选的NetbeansIDE这个,主要是为了方便我学习和一键...博文来自:吸喵高手的小窝

  1、在任意位置新建一个项目文件夹,如:d:\jspProject;2、在jspProject文件夹内创建一个名字必须是:WEB-INF的文件夹;3、在WEB-INF文件夹里创建一个页面配置描述符文件:...博文来自:abvedu的博客

  Java集合框架实现了线性表、链表和哈希表这几类数据结构,为我们在程序开发带来了许多便捷。Java集合框架分为两部分:1.集合,用于存数一个元素集合;2.图,用来存储键值对。该文主要对JDK中Coll...博文来自:QAQ

  本文介绍了JSP的基本概念,介绍了一个快速入门案例,并且详细介绍了JSP的运行原理以及它和Servlet的关系...博文来自:Gavin

  1)代码片段:以符号为配对执行:页面访问时,被执行格式:和java一样;可以有一行或者多行代码,每一行代码以;为结束符应用:可访问java内置对象,session会话,流程控制-------跟java...博文来自:我本善良编程专栏

  重启eclipse,如果不行再按照其他方法博文来自:jiezi2016的博客

  Map接口提供将键映射至值的功能,每个键最多只能映射至一个值。Map接口的主要方法如表1所示表1Map接口中的常用方法 方法声明 方法功能 Objectput(Objectkey,Objectv...博文来自:追梦者

  上周有用户在试用产品里一个与自定义classloader相关的功能...博文来自:iteye_5347的博客

  一、tld说明  tld,是taglibdescription的缩写,其自定义标签一般用于jsp页面,tld其作用一般是在web项目中结jstl、c标签等用于有效性判断、权限判断等方面,对前端的一些页...博文来自:alan_liuyue的博客

  生命周期  request:生命周期由JSP容器创建,当客户端通过HTTP协议请求一个JPS页面时,JSP容器就会创建一个request对象并将请求封装到request对象中,当JSP容器处理完请求之...博文来自:看不见鲸鱼的鼻子的博客

  最近看了看web过滤器,通过了解源代码,有以下发现,首先过滤器是单例模式,但是过滤器链对象FilterChain是多例的,filters的引用指向这些单例过滤器对象,每次请求都创建一个新的过滤器链对象...博文来自:e19901004的博客

  本系列文章旨为了在与各位分享技术的同时能够增加自己对JavaWeb相关技术的熟练度。希望这些能给新手一些启发与借鉴。当然,我会把我对于相关技术的理解穿插在里面......博文来自:Tom的博客

  帐号相关流程注册范围n企业n政府n媒体n其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:小雨同学的技术博客

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行nsql仅可执行DDL、select、DML等...博文来自:Ape55的博客

  对象的创建和销毁在一定程度上会消耗系统的资源,虽然jvm的性能在近几年已经得到了很大的提高,对于多数对象来说,没有必要利用对象池技术来进行对象的创建和管理。但是对于有些对象来说,其创建的代价还是比较昂...博文来自:赶路人儿

  扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  记得很早以前公司项目中添加过移动支付这一块, 包括微信,支付宝,银联等第三方的整合。 但是后来懒于总结就没留下什么, 最近公司项目打算添加,所以打算简单总结一下,记上一笔以备将来使用。 毕竟第三方的支...博文来自:samuelnotes的专栏

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量...博文来自:我走小路的博客

  sinat_29333515:我测试时候发现,new一个父类时,也会执行子类的静态代码块,不知道博主遇到没有

本文链接:http://acrylinkg.com/jiekouzhuti/350.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top