struts2.0中action的物件生命週期詳解!! 收藏
有很多人問struts2.0中的物件既然都是執行緒安全的,都不是單例模式,那麼它究竟何時建立,何時銷毀呢?
這個和struts2.0中的配置有關,我們來看struts.properties
### if specified, the default object factory can be overridden here
### note: short-hand notation is supported in some cases, such as "spring"
### alternatively, you can provide a com.opensymphony.xwork2.objectfactory subclass name here
struts.objectfactory = spring
如果我們使用的是com.opensymphony.xwork2.objectfactory ,老實說,我也沒有研究過,xwork有一套像spring一樣的ioc機制,小巧而簡潔,有興趣的朋友可以去研究下。struts2.0中的action預設就是使用這種工廠模式的,我們來看
/input.jsp
/ftl/test.jsp
class屬性必須寫類的全名,通過這種方式配置後,action物件的生命週期到底怎麼樣,你就認命吧,反正你就記住xwork有乙個物件池,它會自己分配的,應對每次客戶端的請求,它都會建立乙個新的例項,至於這個例項何時銷毀,由xwork來控制。
接下來,我們用spring來控制action的生命週期,關於action和spring的整合,我這裡就不累述了。
/input.jsp
/ftl/test.jsp
這裡的class是spring配置檔案中bean的id
我們來看看spring文件中關於生命週期這個章節
table 3.4. bean scopes
是不是一目了然?
當然我們要使用request、session等,必須在web.xml中配置
配置好後,發現每次重新整理頁面,都會建立乙個新的例項,執行完後就銷毀這個例項,這個效果和預設的是一樣的,只是我們這個執行完後會立即銷毀,而預設的不是立即銷毀,由xwork優化銷毀
如果設定為session,其實相當於ejb中的狀態bean,對於每個session來說用的都是同乙個例項,當然,一旦把瀏覽器關閉,或者超時,物件就會銷亡。
在spring中配置,配置檔案很重要,可以配置scope也就是作用域 不配置的話spring會用單例模式建立action物件。
這也導致我對struts2中的action工作原理產生了疑惑。因為我用不同的瀏覽器向同乙個action發出請求,action中的資料居然一直存在!彷彿所有的請求都到了同乙個action之中。看了此文,才明白自己想的沒有錯。
scope:request一次請求乙個action session:同一session同一action,session滅亡action同歸於盡。
Struts2與Spring的整合
struts2與spring的整合,是mvc和ioc的整合,必須充分利用他們的特性 1 整合的原理 struts2 攔截使用者請求後,需要將資訊通過struts.xml的配置檔案的內容傳遞到相應的action中,在這個時候就需要建立action例項,整合spring框架後,action例項交給spr...
Spring如何與struts2結合
1.struts2的action由spring來負責進行例項化 struts.xml 2.專案啟動時由裝載spring web.xml org.springframework.web.context.contextloaderlistener web inf teacher selectall.js...
Struts2與Spring的整合
今天倒騰了半天,終於是把這個兩個框架整合到一起了。還是要寫一下總結,同時給大家一些幫助。開發環境 myeclipse 9.0 不好用!tomcat6.0 1.準備工作 需要匯入的包 struts2與spring基本的包就不用說了,我用的是struts2.1 spring 3.0,尤其要注意 別少匯入...