2010-05-26 52 views
0

我是新手。我有一個關於struts 2框架和tomcat的問題。我知道每個請求都有它自己的線程,但我的問題是在請求中共享的struts action中定義的全局變量。如果我有一個全局變量名爲 int pageNo;如果我有一個全局變量名爲 int pageNo;我使用的方法稱爲paginationAll() 我可以使用相同的變量(pageNo)另一個方法稱爲說paginatonMaterialAll()在同一個動作或每個線程有自己的一套變量,即使全局定義?tomcat如何像web容器一樣處理struts 2變量?

+1

很難理解在您的操作中定義的那些「全局變量」是什麼。 Java沒有「全局變量」(你是指靜態字段或什麼?) – leonbloy 2010-05-26 21:06:20

回答

1

Struts 1在您的操作類中使用全局範圍的變量/字段是不可取的 - 它們是在所有請求之間共享的。

但是,在Struts 2我相信這已經改變 - 現在爲每個請求構建動作。

參見:

http://struts.apache.org/2.0.14/docs/comparing-struts-1-and-2.html

Struts 2個的Action對象實例化對於每個請求,所以 沒有線程安全問題。 (在 實踐中,servlet容器生成每個請求, 和一個多對象 很多扔掉的對象不會強加 性能損失或影響垃圾 集合。)

0

你的問題不是很清楚,但這有助於:在Struts2中爲每個請求創建一個Action對象的新實例。

1

全局共享變量聽起來對我來說不是線程安全的。我會重新考慮這個設計。