为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

自定义标签_简单标签

2012-03-14 28页 ppt 301KB 78阅读

用户头像

is_408870

暂无简介

举报
自定义标签_简单标签nullJavaWEB开发-简单标签JavaWEB开发-简单标签佟刚 simpleit@163.com提出问题提出问题自定义标签可以降低 jsp 开发的复杂度和维护量,从 html 角度来说,可以使 html 不用去过多的关注那些比较复杂的商业逻辑(业务逻辑)。 利用自定义标签,可以软件开发人员和页面设计人员合理分工:页面设计人员可以把精力集中在使用标签(HTML,XML或者JSP)创建网站上,而软件开发人员则可以将精力集中在实现底层功能上面,如国际化等,从而提高了工程生产力 将具有共用特性的tag库应用于不同的项目中,体现...
自定义标签_简单标签
nullJavaWEB开发-简单标签JavaWEB开发-简单标签佟刚 simpleit@163.com提出问题提出问题自定义标签可以降低 jsp 开发的复杂度和维护量,从 html 角度来说,可以使 html 不用去过多的关注那些比较复杂的商业逻辑(业务逻辑)。 利用自定义标签,可以软件开发人员和页面人员合理分工:页面设计人员可以把精力集中在使用标签(HTML,XML或者JSP)创建网站上,而软件开发人员则可以将精力集中在实现底层功能上面,如国际化等,从而提高了生产力 将具有共用特性的tag库应用于不同的项目中,体现了软件复用的思想。 什么是自定义标签 什么是自定义标签 用户定义的一种自定义的jsp标记 。当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为 标签处理类 的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,实际上tag标签被转化为了对tag处理类的操作。 标签库 API标签库 API标签库 API 定义在 javax.servlet.jsp.tagext 包中传统标签和简单标签传统标签和简单标签开发自定义标签,其核心就是要编写处理器类,一个标签对应一个标签处理器类,而一个标签库则是很多标签处理器的集合。所有的标签处理器类都要实现 JspTag 接口,该接口中没有定义任何方法,主要作为 Tag 和 SimpleTag 接口的父接口。 在 JSP 2.0 以前,所有标签处理器类都必须实现 Tag 接口,这样的标签称为传统标签。 JSP 2.0 又定义了一种新的类型的标签,称为简单标签,其对应的处理器类要实现 SimpleTag 接口标签的形式标签的形式空标签: 带有属性的空标签: 带有内容的标签: hello 带有内容和属性的标签: hello 自定义标签的开发与应用步骤自定义标签的开发与应用步骤编写完成标签功能的 Java 类(标签处理器) 编写标签库描述(tld)文件,在tld文件中对自定义中进行描述 在 JSP 页面中导入和使用自定义标签SimpleTag 接口SimpleTag 接口setJspContext 方法:该方法把代 JSP 页面的 pageContext 对象传递给标签处理器对象。 setParent 方法:该方法把父标签处理器对象传递给当前标签处理器对象 getParent 方法:该方法用于获得标签的父标签处理器对象 setJspBody 方法:该方法用于把代表标签体的 JspFragment 对象传递给标签处理器对象 doTag 方法:该方法用于完成所有的标签逻辑。该方法可以抛出 javax.servlet.jsp.SkipPageException 异常,用于通知 web 容器不再执行 JSP 页面中位于结束标记后面的内容。实现 SimpleTag 接口的标签处理器类的生命周期实现 SimpleTag 接口的标签处理器类的生命周期setJspContextsetParentsetXXXsetJspBodydoTag1.Jsp 引擎将代表 JSP 页 面的 pageContext 对象传 递给标签处理器对象2.Jsp 引擎将父标签处理器 对象传递给当前标签处理 器对象。只有存在父标签 时,jsp 引擎才会调用该 方法 3.设置标签属性。只有定义 属性才调用该方法4. 若存在标签体, JSP 引擎将把标签体封装成一个 JspFragment 对象,调用 setJspBody 方法将 JspFragment 对象传递给标 签处理器对象。若标签体为空,这 setJspBody 将不会被 JSP 引擎调用5.容器调用标签处理器对象的 doTag 方法执 行标签逻辑JspFragment 类 JspFragment 类 该类的实例对象代表 JSP 页面中的一段符合 JSP 语法规范的 JSP 片段,这段 JSP 片段不能包含 JSP 脚本元素(<% … %>) JSP 引擎在处理简单标签的标签体时,会把标签体内容用一个 JspFragment 对象表示,并调用标签处理器对象的 setJspBody 方法把 JspFragment 对象传递给标签处理器对象。得到代表标签体的 JspFragment 对象后,标签开发者和就可以在标签处理器中根据需要调用 JspFragment 对象的方法,进而决定如何处理标签体。JspFragment 类JspFragment 类getJspContext 方法:该方法用于返回代表调用页面的 JspContext 对象 Invoke 方法(java.io.Writer out):该方法用于执行 JspFragment 对象所代表的 JSP 代码片段。在 doTag() 方法中可以根据需要调用该方法。 该方法的参数 out 用于指定将 JspFragment 对象的执行结果写入到哪个输出流对象中。若传递参数 out 的值为 null,则将执行结果写入到 JspContext.geOut() 方法返回的输出流对象中。 若想在标签处理器中修改标签体内容:需在调用 invoke 方法时指定一个可取出结果数据的输出流对象(如:StringWriter),让标签体的执行结果输出到该输出流中,然后从该输出流对象中取出数据进行修改后在输出到目标设备SimpleTagSupportSimpleTagSupport为简化简单标签处理器的编写工作,JSP API 中提供了 SimpleTag接口的一个实现类SimpleTagSupport。 SimpleTagSupport实现了SimpleTag接口中的方法,它 内部以成员变量的形式保存了setJspContext方法和setJspBody方法传递进来的参数。此外,它还定义了如 下两个方法、来返回这两个参数: getJspContext方法:该方法用于返回代表调用页面的JspContext对象 getJspBody方法:该方法用于得到代表标签体的JspFragment对象, 标签库描述文件标签库描述文件标签库描述(Tag Library Description)文件简称为 tld 文件,其扩展名为 .tld 多个标签的集合就形成了一个标签库,标签库中的所有标签都必须在标签文件中进行描述 Tld 文件可以放置在 web 应用程序的 WEB-INF 目录及其子目录中,但不能放置在 WEB-INF 目录下的 classes 和 lib 子目录中 。tld 文件也可以放置在 WEB-INF\lib 目录下的 jar 包的 META-INF 目录及其子目录中 标签库描述文件标签库描述文件标签库描述文件标签库描述文件:指定标签体的类型。可能取值有 3 种: empty:没有标签体 scriptless:标签体可以包含 el 表达式和 JSP 动作元素,但不能包含 JSP 的脚本元素 tagdependent:表示标签体交由标签本身去解析处理。若指定 tagdependent,在标签体中的所有代码都会原封不动的交给标签处理器,而不是将执行结果传递给标签处理器在 JSP 页面引用自定义标签在 JSP 页面引用自定义标签在 JSP 页面使用 taglib 指令引入标签库描述文件: <%@ taglib prefix=“” uri=“” %> uri:属性用于指定所引入的标签库描述(tld)文件中所定义的 元素的内容;prefix 属性用于为引入的 tld 文件指定一个”引用代号”。Prefix 属性可以由 jsp 文件的作者任意指定,只要与其他 taglib 指令的 prefix 属性值不同就可以。练习1:练习1:定制一个带有两个属性的标签, 用于计算并输出两个数的最大值定制一个带有一个属性的标签, 用于输出指定文件的内容练习2:练习2:定制一个用于迭代输出集合(List, Set)中所有元素的标签:练习3:练习3:定制一个带有一个属性的标签, 用于输出指定文件的内容练习4:练习4:定制一个没有属性的标签 …… , 用于过滤标签体中的 html 特殊字符 EL 自定义函数 EL 自定义函数 EL 自定义函数:在 EL 表达式中调用的某个 Java 类的静态方法,这个静态方法需在 web 应用程序中进行配置才可以被 EL 表达式调用。 EL 自定义函数可以扩展 EL 表达式的功能,让 EL 表达式完成普通 Java 程序代码所能完成的功能。EL 自定义函数开发步骤EL 自定义函数开发步骤编写 EL 自定义函数映射的Java 类中的静态方法: 这个 Java 类必须带有 public 修饰符,方法必须是这个类的带有 public 修饰符的静态方法 编写标签库描述文件(tld 文件), 在 tld 文件中描述自定义函数 在 JSP 页面中导入和使用自定义函数在 tld 文件中描述 EL 自定义函数在 tld 文件中描述 EL 自定义函数为了能够让一个 Java 类的静态方法可以被 EL 表达式调用,需要在一个标签库描述文件(tld 文件)中对 EL 自定义函数进行描述,已将 Java 类中的静态方法映射成一个 EL 自定义函数在 JSP 页面中导入和使用 EL 自定义函数在 JSP 页面中导入和使用 EL 自定义函数在 JSP 页面中使用 taglib 指令来引入 tld 文件: <%@ taglib uri="/petrelskyTag" prefix="petrelsky"%> uri:属性用于指定所引入的标签库描述(tld)文件中所定义的 元素的内容;prefix 属性用于为引入的 tld 文件指定一个”引用代号”。Prefix 属性可以由 jsp 文件的作者任意指定,只要与其他 taglib 指令的 prefix 属性值不同就可以。 调用 EL 自定义函数: ${petrelsky :toGBK (param.username) } 练习5练习5编写 2 个 EL 自定义函数: 计算输入字符串的长度 完成对字符串的截取<% pageContext.setAttribute(“str”, “11111111111111111111111”); %>jstl fn 函数 (1)jstl fn 函数 (1)为了简化在 JSP 页面操作字符串,JSTL 中提供了一套 EL 自定义函数,这些自定义函数包含了 JSP 页面制经常要用到的字符串操作 在JSTL的表达是中要使用一个函数,其格式如下 ${ns:methodName(args....)} 在使用这些函数之前必须在JSP中引入标准函数的声明 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>jstl fn 函数 (2)jstl fn 函数 (2)jstl fn 函数 (2)jstl fn 函数 (2)
/
本文档为【自定义标签_简单标签】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索