jsp 标签

本文详细介绍了JSP标签的基础知识,包括关键点概述、方法执行流程、属性解析以及BodyContent对象的作用,帮助读者深入理解JSP标签的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、jsp标签的基础知识。

1、关键点简绍,怎么实现就不说了,记录一下关键点吧,一些复写方法返回常量。

  1. EVAL_BODY_INCLUDE=1:把Body读入存在的输出流中,doStartTag()函数可返回  
  2. EVAL_PAGE=6:继续处理页面,doEndTag()函数可返回 
  3. SKIP_BODY=0:忽略对Body的处理,doStartTag()和doAfterBody()函数可返回  
  4. SKIP_PAGE=5:忽略对余下页面的处理,doEndTag()函数可返回  
  5. EVAL_BODY_TAG=2:已经废止,由EVAL_BODY_BUFFERED取代  
  6. EVAL_BODY_BUFFERED=2:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可返回,否则非法  

2、方法执行流程:

doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag() 

a、doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY,标签开始执行   

如果返回EVAL_BODY_INCLUDE则继续执行;   
如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行,   

而直接执行doEndTag()方法

b、doInitBody()初始化工作。
c、setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。   
标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,   
EVAL_PAGE或SKIP_PAGE。
d、doAfterBody() 标签中的内容执行完事,进行调用。<t:out> a  <t:if/> 在此执行 <t:out/>
如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY;   
如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分;   
如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行。 
e、doEndTag()  标签结束后执行。返回SKIP_PAGE或者EVAL_PAGE。 


3、一些属性:

<rtexprvalue>true</rtexprvalue> 是否支持el表达式。

<body-content>jsp</body-content> 标签体是否有内容,jsp表示有jsp内容,empty表示没有,空标签。

例如 empty 时候,写法如下:

<t:mytag />

<t:mytag uname="zds" />

<t:mytag></test:mytag>


4、BodyContent  开发带标签体的标签及嵌套标签。

1、BodyContent 对象主要是用来保存jspWiriter 嵌套写入的内容引用,尤其在嵌套标签中。

 <c:parent>
   out1
    <c:sub>
          sub1
    <c:sub/>
<c:parent/>

 首先parent的doStartTag 执行,然后保存out1到bodycontent ,接着执行sub标签doStartTag 根据返回值等执行余下的方法

接着保存sub1到bodycontent,执行sub标签doEndTag方法,接着执行parent的doAfterBody方法,最后执行parent的doEndTag方法。


也不知道自己理解的对不对,忘高手指点一下吧,自己做个记录。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值