- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
15第十五讲JSP自定义标记的应用
第十五讲 JSP自定义标记(二) 第11章 JSP自定义标记 ***温故*** 自定义标记的两层含意? xml元素 一段Java程序 自定义标记的创建步骤 标记处理类的创建 自定义标记库的创建 自定义标记库的配置 自定义标记的使用 作业中的问题 Java语言是大小写敏感的,包括文件夹名字或文件名 学会参考错误提示修改程序 %@taglib prefix=my uri=/mytag% “/mytag”对应于web.xml文件中的taglib-uri/mytag/taglib-uri my:hello/ “my”对应于taglib指令的prefix属性值,“hello”对应于TLD文件中tag标记的namehello/name ***本讲要点*** 带属性的标记定义 标记处理类中的属性声明 标记库描述文件中的属性描述 带标记体内容的标记定义 BodyTagSuppport类 doAfterBody()方法 BodyContent类 getString()方法,标记处理类中获取标记体内容对象 简单标记定义 SimpleTagSupport类 doTag()方法 getJspContext()方法 getJspBody()方法 JspFragment类 invoke()方法 例1:带属性的标记定义max标记 需求说明 定制一个带有两个属性的标记max,用于计算两个数中的最大值。 相关知识点 JavaBean属性定义 TLD中对标记属性的声明 主要步骤 一、编写标记处理类MaxTag.java 声明两个只写属性(带有set方法的私有成员变量) 二、在TLD文件中配置max标记 在tag标记中添加atrribute标记,对标记属性进行说明 三、在web.xml文件中配置TLD文件(如果已配置好,此步可略) 四、使用自定义标记 例1:第一步-编写标记处理类MaxTag.java 例1:第二步-在TLD文件中配置max标记 在MyTaglib.tld文件中配置 例1:第三步-在web.xml文件中配置TLD文件 在web.xml文件中配置标记库 例1:第四步-使用自定义标记 在JSP中引入标记库 %@taglib uri=/mytag prefix=my% 标记使用如下 例2:带标记体内容的自定义标记greet 需求说明 定制一个带标记体的标记greet,用于循环输出标记体的内容 相关知识 BodyTagSupport类-提供处理标记体的方法 常用方法: BodyContent getBodyContent()-获取标记体对象 BodyContent类-标记体内容的输出流类,扩展于JSPWriter类 常用方法: String getString()-以字符串形式返回标记体 JspWriter getEnclosingWriter()-获取对标记体进行写操作的流对象 主要思路 创建标记处理类 要处理标记体,必须实现BodyTag接口,BodyTagSupport实现了该接口 在TLD文件中添加tag标记 使用自定义标记 例2:第一步-创建标记处理类GreetTag.java 要点: 要处理标记体,则doStartTag() 方法的返回值必须是EVAL_BODY_BUFFERED 要重复处理标记体,还需要改写doAfterBody()方法,该方法的返回值必须是EVAL_BODY_AGAIN,否则返回SKIP_BODY doEndTag()方法中对标记体进行处理 例2:GreetTag.java 例2:第二步-第四步 配置TLD文件 使用自定义标记 说明 标记体的内容会输出两次,标记处理类会先处理一次标记,再执行doAfterBody()方法,该方法第一次返回EVAL_BODY_AGAIN,所以会第二次处理标记体。 简单标记定义-SimpleTag 传统标记开发的缺点: 我们需要根据定制标记的功能来选择实现哪一个接口,或从哪个类继承,并相应实现,还要考虑返回值。 SimpleTag简单标记定义的优点 克服以上缺点,简化标记开发过程 简单标记类定义的一般步骤 从SimpleTagSupport类继承 改写doTag()方法,处理开始和结束标记 使用getJspContext()方法获取Jsp页面上下文对象 调用该对象的getOut()方法可以获取输出流对象 使用getJspBody()方法获取JspFragment对象 调用该对象的invoke()方法输出标记体内容 例3:简单标记定义方法welcome 需求说明 定制一个简单标记,它包含属性和标记体,属性用于设置人名,标记体输出欢迎信息。 创建步骤 第一步:创建标记处理类,从SimpleTagSupport继承 第二步:部署标记、在web.xml中部署标记库 第三步:使用自定义标记
文档评论(0)