引言:眾所周知,在mvc中,資料是在各個層次之間進行流轉是乙個不爭的事實。而這種流轉,也就會面臨一些困境,這些困境,是由於資料在不同世界中的表現形式不同而造成的:
1. 資料在頁面上是乙個扁平的,不帶資料型別的字串,無論你的資料結構有多複雜,資料型別有多豐富,到了展示的時候,全都一視同仁的成為字串在頁面上展現出來。
2. 資料在j**a世界中可以表現為豐富的資料結構和資料型別,你可以自行定義你喜歡的類,在類與類之間進行繼承、巢狀。我們通常會把這種模型稱之為複雜的物件樹。
此時,如果資料在頁面和j**a世界中互相流轉傳遞,就會顯得不匹配。所以也就引出了幾個需要解決的問題:
1. 當資料從view層傳遞到controller層時,我們應該保證乙個扁平而分散在各處的資料集合能以一定的規則設定到j**a世界中的物件樹中去。同時,能夠聰明的進行由字串型別到j**a中各個型別的轉化。
2. 當資料從controller層傳遞到view層時,我們應該保證在view層能夠以某些簡易的規則對物件樹進行訪問。同時,在一定程度上控制物件樹中的資料的顯示格式。
如果我們稍微深入一些來思考這個問題,我們就會發現,解決資料由於表現形式的不同而發生流轉不匹配的問題對我們來說其實並不陌生。同樣的問題會發生在j**a世界與資料庫世界中,面對這種物件與關係模型的不匹配,我們採用的解決方法是使用orm框架,例如hibernate,ibatis等等。那麼現在,在web層同樣也發生了不匹配,所以我們也需要使用一些工具來幫助我們解決問題。為了解決資料從view層傳遞到controller層時的不匹配性,struts2採納了xwork的一套完美方案。並且在此的基礎上,構建了乙個完美的機制,從而比較完美的解決了資料流轉中的不匹配性。相信大家看到這一定猜出來了這裡的完美方案和完美機制了。對,這就是ognl方案和ognlvaluestack機制
為什麼選擇Struts2
第一句話 框架的穩定性放在首位 第二句話 struts2不是struts1的擴充套件,而是webwork的擴充套件。這是一種推廣策略!誰叫struts1如此名氣大呢!有才也需要包裝!第三句話 struts2的主要優勢 1 支援多種表現層技術 velocity,freemarker等 2 與servl...
為什麼要用Struts2
struts是乙個用來快速開發model2應用程式的mvc框架,它使用乙個過濾器排程程式作為控制器。下面我們就來說說struts有哪些功能和為什麼要使用struts。一。struts有哪些功能 1.struts提供了乙個過濾器排程程式,程式設計師不必再自行編寫乙個。2.struts使用了乙個基於xm...
Struts工作機制?為什麼要使用Struts?
基本簡要流程如下 1 客戶端瀏覽器發出http請求。2 根據web.xml配置,該請求被filterdispatcher過濾。3 根據struts.xml配置,找到需要呼叫的action類和方法。4 action呼叫業務邏輯元件處理業務邏輯。5 action執行完畢,根據struts.xml中的配置...