1. 程式人生 > >JSP/Servlet執行緒安全

JSP/Servlet執行緒安全

在進行servlet開發時,執行緒安全是很重要的,否則會導致一些意想不到的結果。

Servlet的生命週期是由Web容器負責的,當客戶端第一次請求Servlet時,容器負責初始化Servlet,也就是例項化這個Servlet類.以後這個例項就負責客戶端的請求,一般不會再例項化這個Servlet類,也就是這個servlet例項被多個執行緒共享。

那麼怎樣才能是Servlet安全呢?答案是不要使用例項變數或類變數。當然你也可以使用synchronized同步方法或使用單執行緒模型,但這樣效率不高。

臨時變數是不會影響執行緒安全的,因為他們是在棧上分配空間,而且每個執行緒都有自己私有的棧空間.

JSP同步也一樣,因為jsp會被編譯成servlet。

在jsp中<%! String unsafeVar; %>宣告的變數其實是servlet的例項變數,而<% String safevar %>宣告的變數是區域性變數。