Java实现自定义标签的步骤——带你实现自己的标签

一、自定义标签: 使用标签的好处:使用方便、简洁、实现代码重用 二、自定义标签的形式: 1、标签属性: 2、标签体 (1)无标签体――空标签 (2)有标签体 · 普通文本 · 脚本片断 · 脚本表达式 · EL表达式 · 嵌套标签――子标签 标签体的类型:无默认值,必须指定 三、自定义标签的开发步骤: 1、编写java类――标签处理器 2、编写自定义标签描述文件tld文件 3、在web应用中部署和安装自定义标签库 4、在jsp页面中导入和使用自定义标签 四、用于开发自定义标签的接口和类:p204

API TagSupport执行流程 BodyTagSupport执行流程 实例: 1、写一个判断用户是否登录的标签类,要完成功能如下: (1)看session作用域是否存在user属性,如有,则取出用户名,并显示欢迎信息 (控制是否执行标签体的内容) (2)如果session作用域不存在user属性,则转向至login.jsp,让用户登录 (控制是否执行标签后的内容) 2、定义标签属性的实例:将上面的案例改为转向页面由用户自行指定 添加属性loginPage 添加标签属性的步骤: 3、把存储在request作用域里的List转换为下拉列表框的实例: 动态属性值――使用run time exception指定属性的值 需要在tld文件里指定attribute的属性 4、动态属性的运用实例:根据多个动态属性(数量预先不可知)生成下拉列表框的实例 (1)标签处理类必须实现DynamicAttributes接口 需要实现setDynamicAttribute方法 (2)在tld文件中配置 5、迭代标签输出集合中的元素:标签体是输出部分,所以要对标签体进行循环 标签类 tld文件 Jsp文件 6、修改标签体的实例:extends BodyTagSupport 标签体为www.itcast.cn 输出代码 <a href='http:// www.itcast.cn'>www.itcast.cn</a> 得到体对应的String 将修改后的体对应的String写入到jsp页面的JspWriter对象中 强化练习:将标签体中的文本改变字号输出多次 五、自定义标签的缓存机制 配置jsp引擎是否使用标签池技术,此配置在tomcat6下无效 六、jsp脚本变量的定义: 七、自定义标签的部署及使用: 1、tld文件在WEB-INF或其子目录中 (1)在web.xml文件中进行部署(此步可省略) (2)在jsp文件中可采用两种方式引入使用该自定义标签 方法一:指出uri 方法二:指出location 2、tld文件在包含标签处理类及其相关支持类的jar包的META-INF或其子目录中 只能使用指出uri的方式 如下是错误的 setPageContext() setParent() SKIP_BODY 返回值 返回值 设置各个属性的setters()方法 执行标签体 EVAL_BODY_INCLUDE EVAL_BODY_AGAIN EVAL_BODY_BUFFERED 写入bodyContent SKIP_BODY 返回值 doInitBody() EVAL_PAGE SKIP_PAGE 执行页面剩余部分 返回值 执行标签体 EVAL_BODY_INCLUDE EVAL_BODY_AGAIN 返回值 设置各个属性的setters()方法 setPageContext() setParent() SKIP_BODY 返回值 EVAL_PAGE doAfterBody() SKIP_BODY release() doEndTag() doStartTag() WEB容器实例化标签处理器类 doAfterBody() SKIP_BODY release() doEndTag() doStartTag() WEB容器实例化标签处理器类 执行页面剩余部分 返回值 SKIP_PAGE EVAL_BODY_AGAIN setBodyContent() doAfterBody()

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2017-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏五毛程序员

ActionBar开启Overlay Mode(覆盖模式)

3675
来自专栏开源优测

Selenium3源码之common下action_chains.py模块分析

介绍 本文主要对action_chains.py模块的源码进行分析说明,其代码位置如图: ? 在action_chains.py模块中定义和实现了类:Actio...

3236
来自专栏前端说吧

小程序学习笔记

4865
来自专栏hightopo

基于HT for Web矢量实现2D叶轮旋转

1932
来自专栏老马寒门IT

jQuery EasyUI 详解

easyui 为创建现代化,互动,JavaScript 应用程序,提供必要的功能。

4561
来自专栏数据结构笔记

Django搭建博客(七):form的使用

不过 form只提供输入框,外层的 form标签和提交按钮都需要自己添加,我们加上 form标签和提交按钮看看:

1523
来自专栏Java学习网

Chrome开发者工具的小技巧

 Chrome的开发者工具是个很强大的东西,相信程序员们都不会陌生,不过有些小功能可能并不为大众所知,所以,写下这篇文章罗列一下可能你所不知道的功能,有的功能可...

4164
来自专栏我和未来有约会

建立可扩展的silverlight 应用框架 step-6

整理导航模块“LeftNav” 首先说一下我想要实现的效果。 我希望在左侧的导航点击了以后右侧的主体部分发声变化。 之前我在LeftNav模块用的控件是Togg...

21510
来自专栏杂七杂八

selenium使用

pip insatll selenium 由于如果需要使用selenium的话,需要为本机配置对应浏览器的驱动,下面以chomedriver为例,首先安装ch...

1703
来自专栏HT

基于HTML5 Canvas实现工控2D叶轮旋转

之前在拓扑上的应用都是些静态的图元,今天我们将在拓扑上设计一个会动的图元——叶轮旋转。 http://www.hightopo.com/guide/guide/...

2745

扫码关注云+社区

领取腾讯云代金券