08—自定义标签.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、自定义标签入门1. 为什么引入标签 jsp页面作为显示的模板,应尽量使用页面标签来实现,避免写java代码,移除页面中的%% 如果在jsp页面写java代码,首先会令jsp页面难以阅读,不利于页面排版,其次,作为页面美化人员有可能会看不懂java代码,如果将java代码替换成标签,那么只要是懂html标签的人都能看得懂2. 如何实现自定义标签 移除jsp页面中的java代码其实很简单,只需要写一个java类实现Tag接口,在java类中实现jsp页面的代码,在tld标签描述文件中针对标签和java类进行映射。案例: 实现标签显示来访者的ip实现步骤:把标签库类的相关类的.class文件存放在WEB-INF目录下;把TLD标签库秒速文件存放在WEB-INF目录或者自定义的子目录下;在web.xml文件中声明所引用的标签库;在JSP文件中声明使用标签库的标签;3.JSP Tag APIServlet容器在运行JSP文件时,如果遇到自定义的标签,就会调用这个标签的处理类(Tag Handler Class)的相关方法.标签处理类可以继承JSP Tag API的TagSupport类或者BodyTagSupport类.JSP Tag API位于javax.servlet.jsp.tagext包中,下图是其中的主要接口和类的类框图.二、传统标签1.Tag接口 执行流程: 1)创建对象初始化 2)调用setPageContext方法传入表示jsp页面的pageContext 3)如果有父标签调用 setParent 方法传入父标签 4)调用setter方法为属性赋值 5)调用doStartTag方法 6)执行标签体可选 7)调用 doEndTag 方法 8)调用release方法释放资源2.常用方法void setPageContext(PageContext pc):由容器调用,传入JSP的上下文环境。 void setParent(Tag t):由容器调用,传入它的父标签(自定义的)。 int doStartTag():遇到开始标签时,由容器调用其中的代码 返回值有两个可选值:Tag.SKIP_BODY表示标签之间的主体内容被忽略,Tag.EVAL_BODY_INCLUDE表示标签之间的主体内容被正常执行。 int doEndTag():遇到结束标签时,由容器调用其中的代码返回值有两个可选值: Tag.SKIP_PAGE表示立刻停止执行标签后面的JSP代码,网页上未处理的静态内容和Java程序片段均被忽略,任何已有的输出内容立刻返回到客户的浏览器上。Tag.EVAL_PAGE表示按正常的流程继续执行JSP文件。 void release():由容器调用,释放标签占用的资源。 javax.servlet.jsp.IterationTag接口:增加了重复执行主体内容的方法 int EVAL_BODY_AGAIN: int doAfterBody():由容器调用,主体内容执行完后调用。如果该方法返回EVAL_BODY_AGAIN,继续调用自己。 doStartTag()方法必须返回EVAL_BODY_INCLUDE javax.servlet.jsp.BodyTag接口:增加得到主体内容的方法3.方法的返回值Tag. HYPERLINK D:\\开发文档\\jspapi\\javax\\servlet\\jsp\\tagext\\Tag.html \l SKIP_BODY SKIP_BODY 【0】 跳过标签体 Tag. HYPERLINK D:\\开发文档\\jspapi\\javax\\servlet\\jsp\\tagext\\Tag.html \l EVAL_BODY_INCLUDE EVAL_BODY_INCLUDE 【1】 执行标签体 IterationTag.EVAL_BODY_AGAIN 【2】 重复执行标签主体内容 Tag. HYPERLINK D:\\开发文档\\jspapi\\javax\\servlet\\jsp\\tagext\\Tag.html \l SKIP_PAGE SKIP_PAGE 【5】 跳过剩余页面 Tag. HYPERLINK D:\\开发文档\\jspapi\\javax\\servlet\\jsp\\tagext\\Tag.html \l EVAL_PAGE EVAL_PAGE 【6】 执行剩余页面 3.Tag接口的子接口以及实现类3.1 IterationTag 接口 Iteration接口继承自Tag接口,IterationTag接口增加了重复执行标签主体内容的功能.IterationTag接口定义了一个doAfterBody()方法,Servle

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档