JSP自定义标签的页面解析生命周期及线程安全
来源:互联网 发布:游戏编程学校 编辑:程序博客网 时间:2024/05/02 06:10
问题描述:
使用JSP自定义标签时,发现标签内的私有变量在页面第一次请求之后就不会发生变化了。而且不同的页面同样的标签变量值不一样。
问题猜想:
原以为JSP自定义标签在JSP编译的时候会被new出来,但是看样子JSP在编译的时候用了缓存池来存放解析后的标签的对象。并且这个缓存池针对同一个页面是共享的。
问题原因跟踪:
查看JSP编译成的servlet代码,发现标签的实例果然不是new出来的,而是这么创建的:
是从一个缓存池里取出来的,再往前跟踪缓存池的创建和销毁:
把当前servlet的config作为参数,得到了一个标签缓存池的实例,也就是说对于同一个servlet标签缓存池是共享的。证明了之前的猜想。
既然实例共享,那么很自然的就想到了tomcat是怎么做到线程安全的呢?
关于标签的线程安全可以参考下面的链接,不再赘述:
http://klcwt.javaeye.com/blog/749652
结论:
虽然使用标签时可以不用担心线程安全,但是在使用标签内的属性变量时要特别小心,在标签解析完时要注意将一些不必要的属性变量重置为默认值,否则很容易“一劳永逸”。
P.s:JSP自定义标签生命周期 http://blog.csdn.net/xuejianxinokok/archive/2010/06/29/5702155.aspx
- JSP自定义标签的页面解析生命周期及线程安全
- Servlet、jsp的生命周期,线程安全,感悟
- 自定义JSP标签:TagSupport类的生命周期
- 自定义JSP标签:TagSupport类的生命周期
- 自定义JSP标签和生命周期
- JSP页面tdl自定义标签的做法
- Servlet生命周期及线程安全
- JSP页面中的EL自定义标签及使用
- 自定义JSP标签(TagSupport类的生命周期)
- 自定义JSP标签(TagSupport类的生命周期)
- JSP自定义标签的开发及使用
- JSP页面的生命周期
- JSP页面的生命周期
- 出现 JSP页面中使用JSTL标签无法解析 错误的原因及解决方法
- JSP页面中的自定义标签
- JSP页面中的自定义标签
- 自定义jsp页面标签过程
- jsp页面自定义标签属性
- 国外GIS领域[人物]
- 做程序员要注意的
- Oradim工具的用法
- OpenUP:基本流程概念
- 拉格朗日函数
- JSP自定义标签的页面解析生命周期及线程安全
- 在Ubuntu10.10下安装arm-linux交叉编译环境
- 详解各种百度蜘蛛代码的含义
- PyQt4—QLabel--setBuddy
- FOR脚本的用法
- Android重力感应Demo
- java
- PL/SQL 学习笔记!
- 小记