spring管理Struts2的action時應配置scope="prototype"

spring 默認情況下scope 是單例模式,即scope="singleton",這樣只會創建一個Action對象,即每次訪問都是同一個Action對象,數據不安全。而struts2 是要求 每次訪問 都要求對應不同的Action, scope="prototype" 就可以保證這個要求, 當有請求的時候 都創建一個Action對象。


<span style="font-weight: normal;"><span style="font-size:14px;"><!-- 配置action -->
<bean id="testAction" class="com.lmk.test.TestAction"  scope="prototype">
	<!-- action注入  <property name="t" ref="t" />-->
</bean></span></span>




再講得通俗一點就是如果採用單例模式,那麼Struts2從前臺得到的數據,經過處理結束後,再次進入該頁面時,前一次提交的數據還是會被保留下來。
例如:
查詢系統中的用戶:當用戶名a查詢第一次請求結束後,再進入查詢頁面時,系統會保留前一次的查詢條件。


當然,也可以設置scope="session",也能避免web中action的併發問題,只爲當前用戶創建一次bean,直至
session消失。在這種情況下,對當前用戶而言,bean是有狀態的。好處就是少創建bean的實例,有那麼一
點點性能的提升
應用場景:
    1. 多數情況下應使用prototype
    2. 若用戶不多,且頻繁操作(頻繁使用action),硬件一般,可以考慮session,興許還能提升一點點性能。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章