自定义标签学习,会不会出现线程不安全,答案是no。
2010-09-15 17:50
288 查看
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()方法进行属性赋值。
学习自定义标签时,考虑会不会造成线程不安全,所以思考了一下。确定不会出现线程问题。
-------------------- 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()方法进行属性赋值。
学习自定义标签时,考虑会不会造成线程不安全,所以思考了一下。确定不会出现线程问题。
相关文章推荐
- 【Rails App】 应用服务器从Passenger切换为Puma, Grape出现线程安全问题
- java多线程学习之线程安全问题
- 【深度学习】Ubuntu16.04下出现这个错误ImportError: No module named google.protobuf.internal
- StringBuffer JDK1.0出现是线程安全的 StringBuilderJDK1.5出现是线程不安全的
- Cocos2d-x 3.1.1 学习日志17--移植出现error C1083: 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or
- Cocos2d-x 3.1.1 学习日志17--移植出现error C1083: 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or,
- 《Java Concurrency in Practice》 学习笔记--第二章:线程安全
- 【安全牛学习笔记】 安装Java、安装显卡驱动、安装网卡补丁、并发线程限制、电源优化.txt
- Cocos2d-x 3.1.1 学习日志17移植出现error C1083: 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or
- PHP 源码学习之线程安全
- pringMvc学习心得(四)springmvc中request的线程安全问题
- C#学习笔记之线程安全
- STL学习笔记之容器线程安全
- JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?
- 当进行make命令学习是出现error trying to exec 'cc1': execvp: No such file or directory
- apue学习第十九天(1)——可重入与线程安全(第十二章)
- windows 下mysql主从搭建 io 线程出现no
- Linux学习之出错处理(线程安全的日志类封装)
- Linux学习-线程的创建和终止-(出现错误-undefined reference to 'pthread_create')
- 一个银行账户5000块,两夫妻一个拿着 存折,一个拿着卡,开始取钱比赛,每次只能取一千块,要求不准出现线程安全问题。