struts只是一個mvc框架,用于快速開發(fā)java web應(yīng)用。struts實現(xiàn)的重點在c(controller),包括actionservlet/requestprocessor和我們定制的action,也為v(view)提供了一系列定制標簽。struts幾乎沒有涉及m(model),所以struts可以采用java實現(xiàn)的任何形式的商業(yè)邏輯。
spring是一個輕型容器(light-weight container),其核心是bean工廠(bean factory),用以構(gòu)造我們所需要的m(model)。在此基礎(chǔ)之上,spring提供了aop的實現(xiàn),用它來提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù);對bean工廠的擴展applicationcontext更加方便我們實現(xiàn)j2ee的應(yīng)用;dao/orm的實現(xiàn)方便我們進行數(shù)據(jù)庫的開發(fā);web mvc和spring web提供了java web應(yīng)用的框架或與其他流行的web框架進行集成。
現(xiàn)在大體說一下:
structs:和ww2等一樣,都是典型的mvc結(jié)構(gòu)框架,至于mvc是什么,地球人都知道,如果你不知道就google吧:),structs偏重于表現(xiàn)層,它自己起一個控制器的作用即controller,它可以良好的把表現(xiàn)層與業(yè)務(wù)層分離開來。
spring:說白了就是一個大雜燴,提供了目前各種流行框架的集成,經(jīng)典的有對hibernate的集成,此外,如mail,axis...各種都有。另外,它比較經(jīng)典的就是ioc與aop的功能,樓上已經(jīng)有人說了,如果你不知道,去google。此外,它還提供了spring mvc,它基于webflow,至于用法,去查它的文檔。
structs的actionform是公認的敗筆,我用得痛苦得不得了。
另外,你說的重復(fù)提交,那是瀏覽器的問題,和structs無關(guān)??茨闳绾沃笓]瀏覽器了,如果你用redirect,就沒有重復(fù)提交的問題,因為瀏覽器已經(jīng)重定向了。但是你用forward,那在你刷新的時候就是重復(fù)提交。
spring比較偏重于業(yè)務(wù)層,在頁面上一般是不顯示出來的。當(dāng)然,如果你用spring的mvc例外。
如果樓主討論的是spring mvc和structs的話,那我告訴你,spring mvc絕對要比structs優(yōu)秀,但是實現(xiàn)起來比structs復(fù)雜,structs占在人多力量大,成熟,文檔多。
如果你真要用的話,還是建議你使用webwork,攔截器功能強大,使用ognl,絕對沒得說。