自定义标签的理解和编写

自定义标签的理解和编写

一、简单自定义标签

1):标签处理程序编写 可以继承自 TagSupport 或者BodyTagSupport ,具体看自己有没有标签体。在这里可以给标签设置属性。

2):标签描述文件

3):在JSP文件中访问。

可以

在这里完成一个简单的任务: BodyTag里面的内容添加颜色 在标签处理函数里面添加以下代码:

 

String content=bodyContent.getString(); 得到标签体 的内容。

             bodyContent.clearBody(); 清除标签体内容

             bodyContent.print("<font color="+color+">"); 天价格是控制符,这里color作为属性了

             bodyContent.print(content);   补上 内容

             bodyContent.print("</font>");   添加 格式控制

             bodyContent.writeOut(out);  输出

 

当然了 在上面的 得到了标签内容以后,可以做其他的处理,比如在论坛程序里面,可以设置屏蔽的关键字 ,每当检测到 不允许的关键字就用* ** 替换 ,在这里很容易实现 ,就不罗硕了 呵呵。

 

二、jsp 中还提供了 简单标记,在编写的时候 ,比较简单,只要简单的继承 SimpleTagSupport就可以了 ,然后 重写doTagSupport方法就可以了

 

1)每一次遇到标签时候。容器都会创建一个simpleTag实例, 并且这个方法没有参数,和经典标签一样,SimpleTag 不可以进行缓冲,因此不可以重用,咩一次都要重新构造实例。

 

PS:  经典标签开发的时候,有一个继承自BodyTagBodyTagSupport的类 这个里面实现了bodyTag接口里面的doStartTag()doEndTag()方法,并且返回值是 doStartTag方法的返回值为EVAL_BODY_BUFFEREDdoAfterBody() 返回值为SKIP_BODYdoEndTag() 返回值为EVAL_PAGE

 

2)调用了构造方法以后,就调用setJspContext(),setParent()方法。只有有父类标签的时候 才调用后者,

 

3)容器调用每个setter方法给属性赋值

 

4)如果body存在,就调用setJspBody()方法,设置这个标签的标签体,

 

5)容器调用doTag方法,所有标签逻辑、迭代、和Body 有关的计算都放在这里,

 

6doTag方法 返回时,所有参数都被锁定。

 

 

 

 

 

补充:关于标签缓冲

经典标签开发的时候,有一个继承自BodyTagBodyTagSupport的类 这个里面实现了bodyTag接口里面的doStartTag()doEndTag()方法,并且返回值是 doStartTag方法的返回值为EVAL_BODY_BUFFEREDdoAfterBody() 返回值为SKIP_BODYdoEndTag() 返回值为EVAL_PAGE

 

 

这一个网站里面讲解的比较好 讲解包括了标签的编写和标签执行的原理,有很大的参考价值

 http://www.soft6.com/tech/16/169433.html


  BodyContent
是一个输出器,是对JSPWriter的扩展(???)。主要是向其输出内容。  

this.getBodyContent()是标签体内容的缓存,输出这部分内容需要写回外层写入器才能输出。  
  this.getBodyContent().clear();  
清空缓存  
  this.getBodyContent().print(filteredContent);  
往缓存中增加内容  

PS:如果自己想在标签中输出内容,可以用bodyContend.print(“你要输出的内容”);
  this.getBodyContent().writeOut(pageContext.getOut());
输出缓存(适用于外层写入器,如doEndTag()  
  writeOut()  
的参数getPreviousOut(),输出缓存。(适用于内层写入器,如doAfterBody()jsp

 BodyContent对象的内容不自动写了入Servlet的输出流,而是积累在一字符串缓存中。当标签体完成后其对象仍可在doEndTag()方法中可以应用,由getString()getReader()方法操作。并在必要时修改及写入恢复的JSPWriter输出流。

EVAL_BODY_BUFFERED

  表示需要处理标签体。

  EVAL_BODY_INCLUDE

  表示需要处理标签体,但绕过setBodyContent()doInitBody()方法

 

 

 

 

基于STM32设计的数字示波器全套资料(原理图、PCB图、源代码) 硬件平台: 主控器:STM32F103ZET6 64K RAM 512K ROM 屏幕器:SSD1963 分辨率:480*272 16位色 触摸屏:TSC2046 模拟电路: OP-TL084 OP-U741 SW-CD4051 CMP-LM311 PWR-LM7805 -LM7905 -MC34063 -AMS1117-3.3 DRT-ULN2003 6.继电器:信号继电器 7.电源:DC +12V 软件平台: 开发环境:RealView MDK-ARM uVision4.10 C编译器:ARMCC ASM编译器:ARMASM 连机器:ARMLINK 实时内核:UC/OS-II 2.9实时操作系统 GUI内核:uC/GUI 3.9图形用户接口 底层驱动:各个外设驱动程序 数字示波器功能: 波形发生器:使用STM32一路DA实现正弦,三角波,方波,白噪声输出。 任意一种波形幅值在0-3.3V任意可调、频率在一定范围任意可调、方波占空比可调。调节选项可以通过触摸屏完成设置。 SD卡存储: SD卡波形存储输出,能够对当前屏幕截屏,以JPG格式存储在SD卡上。能够存储1S内的波形数据,可以随时调用查看。 数据传输:用C#编写上位机,通过串口完成对下位机的控制。(1)实现STOP/RUN功能(2)输出波形电压、时间参数(3)控制截屏(4)控制波形发生器(5)控制完成FFT(6)波形的存储显示 图形接口: UCGUI 水平扫速: 250 ns*、500ns、1μs、5 μs、10μs、50μs、500 μs、5ms 、50ms 垂直电压灵敏度:10mV/div, 20mV/div, 50mV/div, 0.1V/div, 0,2V/div, 0.5V/div, 1V/div,2V/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值