當前位置:編程學習大全網 - 網絡軟體 - springmvc和其他mvc框架的區別

springmvc和其他mvc框架的區別

springmvc和其他mvc框架的區別

spring 是是壹個開源框架,是為了解決企業應用程序開發,功能如下

◆目的:解決企業應用開發的復雜性

◆功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能

◆範圍:任何Java應用

簡單來說,Spring是壹個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

◆輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在壹個大小只有1MB多的JAR文件裏發布。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。

◆控制反轉——Spring通過壹種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,壹個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。妳可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關註點,例如日誌或事務支持。

◆容器——Spring包含並管理應用對象的配置和生命周期,在這個意義上它是壹種容器,妳可以配置妳的每個bean如何被創建——基於壹個可配置原型(prototype),妳的bean可以創建壹個單獨的實例或者每次需要時都生成壹個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。

◆框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在壹個XML文件裏。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了妳。

所有Spring的這些特征使妳能夠編寫更幹凈、更可管理、並且更易於測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。

Spring的兩大核心AOP與IOC,可以單獨用於任何應用,包括與Struts等MVC框架與Hibernate等ORM框架的集成,目前很多公司所謂的輕量級開發就是用 Spring + Struts(2)+Hibernate。

Spring MVC就是壹個MVC框架,個人覺得Spring MVC annotation式的開發比Struts2方便,可以直接代替上面的Struts(當然Struts的做為壹個非常成熟的MVC,功能上感覺還是比Spring強壹點,不過Spring MVC已經足夠用了)。當然spring mvc的執行效率比struts高,是因為struts的值棧影響效率

spring mvc類似於struts的壹個MVC開框架,其實都是屬於spring,spring mvc需要有spring的架包作為支撐才能跑起來

如果有人問妳什麽事控制反轉(spring的核心面試常問道):妳就回答,本來程序是由我們new 出來的嘛,後來交給程序控制進行new出來了嘛,這就是控制反轉嘛,打了那麽多手都麻了,看在我那麽辛苦的份上給分吧

簡單概括就是:spring 是壹個開源框架,是為了解決企業應用程序發開發,spring mvc類似於struts的壹個MVC開發框架,其實都是屬於spring,spring mvc需要有spring的架包作為支撐才能跑起來。

springmvc和其他mvc框架有什麽區別?

spring 是是壹個開源框架,是為了解決企業應用程序開發;

目的:解決企業應用開發的復雜性;

功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能;

簡單來說,Spring是壹個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在壹個大小只有1MB多的JAR文件裏發布。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。

Spring MVC就是壹個MVC框架,個人覺得Spring MVC annotation式的開發比Struts2方便,可以直接代替上面的Struts(當然Struts的做為壹個非常成熟的MVC,功能上感覺還是比Spring強壹點,不過Spring MVC已經足夠用了)。當然spring mvc的執行效率比struts高,是因為struts的值棧影響效率。

spring mvc類似於struts的壹個MVC開框架,其實都是屬於spring,spring mvc需要有spring的架包作為支撐才能跑起來。

mvvm框架是什麽 它和其他框架的區別

在MVC裏,View是可以直接訪問Model的!從而,View裏會包含Model信息,不可避免的還要包括壹些業務邏輯。 MVC模型關註的是Model的不變,所以,在MVC模型裏,Model不依賴於View,但是 View是依賴於Model的。不僅如此,因為有壹些業務邏輯在View裏實現了,導致要更改View也是比較困難的,至少那些業務邏輯是無法重用的。

MVVM在概念上是真正將頁面與數據邏輯分離的模式,它把數據綁定工作放到壹個JS裏去實現,而這個JS文件的主要功能是完成數據的綁定,即把model綁定到UI的元素上。

有人做過測試:使用Angular(MVVM)代替Backbone(MVC)來開發,代碼可以減少壹半。

此外,MVVM另壹個重要特性,雙向綁定。它更方便妳同時維護頁面上都依賴於某個字段的N個區域,而不用手動更新它們。

ty 和 springmvc框架的區別

沒錯,是框架,ty是網絡通訊的框架,spring mvc是壹個開源框架,是為了解決企業應用程序開發

前端框架和mvc框架的區別

前端框架是專門寫前端的,比如壹個前端框架,壹部分負責前臺的布局結構(),壹部分樣式(css),壹部分行為(js、jq);mvc是壹種設計思想,就是讓結構,表現,行為互相分離。

MVC框架:前端請求-》服務端處理請求-》服務端生成HTML頁面-》響應給前段展示。

前端框架:前端請求、接收服務端數據對其進行處理。妳可以明確看出,前端框架是不包含服務端處理請求功能的。

同是流行MVC框架,比較Strtus2和SpringMVC的區別

Struts2是精確到類粒度,springMVC精確到方法粒度,兩者的用法也有所區別,springMVC和spring集成得比較好,在spring的管理下,springMVC的實例是以單例的形式存在的,但Struts2如果以單例存在的話就會有線程安全問題。個人比較喜歡springMVC

SpringMVC的工作流程描述

1. 用戶向服務器發送請求,請求被Spring前端控制Servelt DispatcherServlet捕獲;

2. DispatcherServlet對請求URL進行解析,得到請求資源標識符(URI)。然後根據該URI,調用

HandlerMapping獲得該Handler配置的所有相關的對象(包括Handler對象以及Handler對象對應的攔截器),最後以

HandlerExecutionChain對象的形式返回;

3. DispatcherServlet根據獲得的Handler,選擇壹個合適的HandlerAdapter。( 附註 :如果成功獲得HandlerAdapter後,此時將開始執行攔截器的preHandler(...)方法)

4. 提取Request中的模型數據,填充Handler入參,開始執行Handler(Controller)。在填充Handler的入參過程中,根據妳的配置,Spring將幫妳做壹些額外的工作:

HttpMessageConveter:將請求消息(如Json、xml等數據)轉換成壹個對象,將對象轉換為指定的響應信息

數據轉換:對請求消息進行數據轉換。如String轉換成Integer、Double等

數據根式化:對請求消息進行數據格式化。如將字符串轉換成格式化數字或格式化日期等

數據驗證:驗證數據的有效性(長度、格式等),驗證結果存儲到BindingResult或Error中

5. Handler執行完成後,向DispatcherServlet 返回壹個ModelAndView對象;

6. 根據返回的ModelAndView,選擇壹個適合的ViewResolver(必須是已經註冊到Spring容器中的ViewResolver)返回給DispatcherServlet ;

7. ViewResolver結合Model和View,來渲染視圖

8.將渲染結果返回給客戶端。

Strut2的體系結構如圖所示:

從圖可以看出,壹個請求在Struts2框架中的處理大概分為以下幾個步驟:

1、客戶端初始化壹個指向Servlet容器(例如Tomcat)的請求;

2、這個請求經過壹系列的過濾器(Filter)(這些過濾器中有壹個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMeshPlugin);

3、接著StrutsPrepareAndExecuteFilter被調用,StrutsPrepareAndExecuteFilter詢問ActionMapper來決定這個請求是否需要調用某個Action;

4、如果ActionMapper決定需要調用某個Action,StrutsPrepareAndExecuteFilter把請求的處理交給ActionProxy;

5、ActionProxy通過ConfigurationManager詢問框架的配置文件,找到需要調用的Action類;

6、ActionProxy創建壹個ActionInvocation的實例。

7、ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。

8、壹旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回

結果通常是(但不總是,也可能是另外的壹個Action鏈)壹個需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用

Struts2框架中繼承的標簽。在這個過程中需要涉及到ActionMapper。

以上是從宏觀上對比下二者的工作流程,下面針對細節對比二者的不同。

SpringMVC和Struts2的區別:

1. 機制:

springmvc的入口是servlet,而struts2是filter(這裏要指出,filter和servlet是不同的。以前認為filter是servlet的壹種特殊),這樣就導致了二者的機制不同,這裏就牽涉到servlet和filter的區別了。

spr ing mvc是基於方法的設計 , 而sturts是基於類 ,導致:

性能:

spring會稍微比struts快。 spring mvc是基於方法的設計 , 而sturts是基於類 ,

每次發壹次請求都會實例壹個action,每個action都會被註入屬性,而spring基於方法,粒度更細,但要小心把握像在servlet控制數據

壹樣。spring3mvc是方法級別的攔截,攔截到方法後根據參數上的註解,把request數據註入進去,在spring3mvc中,壹個方法對應壹

個request上下文。而struts2框架是類級別的攔截,每次來了請求就創建壹個Action,然後調用settergetter方法把

request中的數據註入; struts2實際上是通過setter getter方法與request打交道的 ,而 springmvc 不用 setter getter 方法 ;struts2中,壹個Action對象對應壹個request上下文。

實現restful:

springmvc是方法級別的攔截,壹個方法對應壹個request上下文,而方法同時又跟壹個url對應,所以說從架構本身上 spring3 mvc就容易實現restful url 。 struts2 是類級別的攔截,壹個類對應壹個 request 上下文;實現 restfulurl 要費勁,因為 struts2 action 的壹個方法可以對應壹個 url ;而其類屬性卻被所有方法***享,這也就無法用註解或其他方式標識其所屬方法了。

數據***享:

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

spring3 mvc的方法之間基本上獨立的,獨享request response數據,請求數據通過參數獲取,處理結果通過ModelMap交回給框架方法之間不***享變量

處理ajax的請求

spring3 mvc的驗證也是壹個亮點,支持JSR303, 處理ajax的請求更是方便 ,只需壹個註解 @ResponseBody ,然後直接返回響應文本即可。送上壹段代碼:

<span class="page_speeder_689312681">@ResponseBody

@RequestMapping("/delUser")

public String delUser(String id, HttpServletResponse response){

String result ="{\"result\":\"error\"}";

if (userManager.delUser(id)) {

result ="{\"result\":\"suess\"}";

}

return result;

spring3mvc的驗證也是壹個亮點,支持JSR303,處理ajax的請求更是方便,只需壹個註解@ResponseBody

@ResponseBody代替了下面的代碼

PrintWriterout = null;

response.setContentType("application/json");

try{

out= response.getWriter();

out.write(result);

}catch (IOException e) {

e.printStackTrace();

}

}</span>

i ntercepter的實現機制:

struts有以自己的interceptor機制, springmvc用的是獨立的AOP方式 。這樣導致struts的配置文件量還是比springmvc大,雖然struts的配置能繼承,所以我覺得論使用上來講,spring mvc使用更加簡潔,開發效率Spring MVC確實比struts2高。

  • 上一篇:知網和gocheck的論文查重到底有什麽區別
  • 下一篇:為什麽會壹瞬間淚崩
  • copyright 2024編程學習大全網