自定义标签学习,会不会出现线程不安全,答案是no。

eg:struts.jsp

  -------------------- greet message--------------------------------//(1)
<ife:greet count="2" startTag="ceshi">
 <br />
 <font size="${size}">helloWorld</font>
</ife:greet>
<br />
-------------------- greet message--------------------------------//(2)
<ife:greet count="5">
 <br />
 <font size="${size}">helloWorld</font>
</ife:greet>

 

 上面这段代码为同一页面使用了同一个自定义标签,在这里讨论一下针对在同一页面(jsp)中多次使用同一标签,jsp容器生成

对应标签处理类的实例情况。为学习自定义标签时,探索一下,具体开发中并不关注这样的细节,应为jsp容器,已经做得很完善,使用自定义标签不会出现多线程问题。

我们知道一个jsp页面在servlet容器中对应一个实例。

 那么jsp页面中的标签的实例情况是怎么样的呢?

如上:

    (1)和(2)均是同一页面中相同的自定义标签,所不同的是两个标签的属性不一样(标签体也不一样,但这并不影响他们如何被实例化)

我做了下试验:

   当(1)和(2)的属性名和个数均一样时,那么他们使用同一实例(不同客户访问时同一实例)

   当(1)和(2)的属性不一样时,会实例不同的实例,进行相应处理。

这样处理机制是:

 如果你的属性名和个数一样,那么在jsp页面中即使多个地方用到这些标签,但多标签处理实例来说只是对应属性的重新赋值。所以使用同一实例

不会存在,丢失属性值的问题。

 但不同属性就不一样了,如果不同属性你用同一实例,那么就会有些属性值会保留原有实例的,造成错误。

 关键点在于:每次执行标签都会调用setXXXX()方法进行属性赋值。

 

 

学习自定义标签时,考虑会不会造成线程不安全,所以思考了一下。确定不会出现线程问题。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值