天天看點

JSP/Servlet線程安全

攜帶servlet開發時間。線程安全是非常重要的。否則會導緻一些意想不到的結果。

Servlet的生命周期是由Web負責集裝箱,什麼時候client第一個請求Servlet時間,容器負責初始化Servlet,這就是執行個體化Servlet類别.這種情況後,負責client的請求,一般不會再執行個體化這個Servlet類,也就是這個servlet執行個體被多個線程共享。

那麼如何才幹是Servlet安全呢?答案是不要使用執行個體變量或類變量。當然你也能夠使用synchronized同步方法或使用單線程模型,但這樣效率不高。

暫時變量是不會影響線程安全的,由于他們是在棧上配置設定空間,并且每一個線程都有自己私有的棧空間.

JSP同步也一樣。由于jsp會被編譯成servlet。

在jsp中<%! String unsafeVar; %>聲明的變量事實上是servlet的執行個體變量,而<% String safevar %>變量聲明是局部變量。

繼續閱讀