您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
14_Servlet_生命周期详解(需要引起注意的是servlet的全局变量的线程安全问题)
发布时间:2022-08-04 22:22:59编辑:雪饮阅读()
上篇了解了servlet的生命周期,了解了其init是在servlet创建的时候就执行,且只执行一次。、
那么这个机制取决于web/WEB-INF/web.xml中servlet配置段中的load-on-startup的配置值,该配置标签可能默认没有,那么默认该标签的值就是0或正整数。
例如默认配置应如:
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>demo1.ServletDemo1</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
虽然我load-on-startup的值修改为负数,例如-1,但是我这里重启server也的确没有了init的输出了,但是此后即便你等了好久,你确定服务器起来了,但是此时你访问你之前的项目,如
http://localhost:8080/javaeeProject/demo1
就会发现报错404了。。。。
最后需要注意的是:据说servlet中的全局变量(init所属类的成员变量)在多线程访问时候若有被赋值的操作,则会是有风险的。解决办法就是在方法体内定义局部变量,这样就不会影响到全局了。
关键字词:Servlet,生命周期,全局,变量,线程,安全,问题