SpringMVC 和Struts2的區別

2022-02-04 08:17:16 字數 1456 閱讀 4504

springmvc 和struts2的區別

1、機制

spring mvc的入口是servlet(dispatcherservlet),而struts2是filter(strutsprepareandexecutefilter),這樣就導致了二者的機制不同。   

2、效能

①spring會稍微比struts快。

②spring mvc是基於方法的設計,而sturts是基於類,每次發一次請求都會例項乙個action,每個action都會被注入屬性,而spring基於方法,粒度更細,但要小心把握像在servlet控制資料一樣。

③spring mvc是方法級別的攔截,攔截到方法後根據引數上的註解,把request資料注入進去,在spring mvc中,乙個方法對應乙個request上下文。而struts2框架是類級別的攔截,每次來了請求就建立乙個action,然後呼叫setter getter方法把request中的資料注入;struts2實際上是通 setter getter方法與request打交道的;struts2中,乙個action物件對應乙個request上下文。   

3、 引數傳遞

struts2是在接受引數的時候,可以用屬性來接受引數,這就說明引數是讓多個方法共享的。   

4、設計思想上

struts2更加符合oop(物件導向程式設計)的程式設計思想, spring就比較謹慎,在servlet上擴充套件。

5、 intercepter的實現機制

struts2有自己的interceptor機制,spring mvc用的是獨立的aop方式。這樣導致struts2的配置檔案量還是比spring mvc大,雖然struts2的配置能繼承,所以我覺得論使用上來講,spring mvc使用更加簡潔,開發效率spring mvc確實比struts2高。spring mvc是方法級別的攔截,乙個方法對應乙個request上下文,而方法同時又跟乙個url對應,所以說從架構本身上spring3 mvc就容易實現restful url。struts2是類級別的攔截,乙個類對應乙個request上下文;實現restful url要費勁,因為struts2 action的乙個方法可以對應乙個url;而其類屬性卻被所有方法共享,這也就無法用註解或其他方式標識其所屬方法了。spring3 mvc的方法之間基本上獨立的,獨享request response資料,請求資料通過引數獲取,處理結果通過modelmap交回給框架方法之間不共享變數,而struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有action變數是共享的,這不會影響程式執行,卻給我們編碼,讀程式時帶來麻煩。 

6、另外,spring3 mvc的驗證也是乙個亮點,支援jsr303,處理ajax的請求更是方便,只需乙個註解@responsebody ,然後直接返回響應文字即可。

strut2 0學習筆記

問題一 form action defaulting to action attribute s literal value 解決方案如下 頁面顯示資訊 struts.xml配置資訊 welcome.jsp error.jsp login.jsp 問題二 struts2不顯示label標籤 刪除掉s...

strut2 上傳檔案

jsp頁面 服務後台 需要兩個jar包乙個是commons fileupload.jar,另乙個是commons io.jar 注意,file並不是指前端jsp上傳過來的檔案本身,而是檔案上傳過來存放在臨時資料夾下面的檔案 private file upload 上傳的檔案內容的物件與表單中的nam...

lucene solr配置,整合到struts中

將目錄下example solr中的檔案拷到某一目錄 solr.xml不能拷過去 將此目錄設為solr home.並在tomcat的server.xml中加入如下內容 在工程的web.xml中加入如下內容 solrrequestfilter org.apache.solr.servlet.solrd...