SpringMVC、Spring和Struts的區別

前言:

近期正在學習web開發,用到的框架師SSM(SpringMVC+Spring+Mybatis),框架的東西出了太多了呀,這裏主要是區分一下SpringMVC和Struts,但是由於SpringMVC和Spring真的也挺容易迷糊的,所以,本篇博客,就是區分一下這三者之間的關係,明確其具體所指,爲以後更好的理解互相之間的作用!

說明:個人觀點,參考了一些博客。

一、Spring

首先,結合自己對於Spring的使用,我感覺的一點是,Spring嚴格上來說,並不是一種框架。它相當於一個粘合劑,黏合了別的框架或者組件。所以,spring是一個容器!爲什麼用Spring,個人感覺,spring就是一個容器的本質,程序開發的模塊組件,都可以通過spring這個容器進行組裝拼合,spring爲我們提供了很多管理的功能。而且,它是一個輕量級的容器。我們常說EJB是重量級,Spring是輕量級的,那麼,究竟什麼叫輕量級或重量級呢?

輕量級和重量級(往簡單了說)

首先;輕量級和重量級,它只是一個相對的概念。如果沒有對比,就沒有所謂的輕重之分

輕量級:當輕量級的框架啓動時,創建和銷燬的資源都非常少。簡而言之,一個輕量級的框架,它的入侵性非常小,也可以說是耦合性很低。可以很輕易的替換掉它,而不需要做太大的改動,它對別的組件的依賴非常小!

重量級:和輕量級相對,引入一個重量級的框架,意味着需要引入相當多的依賴和其他組件,當需要修改這個框架時,基本上面臨着重組的危機!

二、SpringMVC

從Spring的結構圖可以看出,springMVC位於spring web端的一個框架,是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦。附:基於請求驅動指的就是使用請求-響應模型。從原理上看,它基本上和.NET的MVC的原理相同!

三、Spring和SpringMVC的聯繫

從名字上就可以窺探出,Spring>SpringMVC,那麼事實上,spring和SpringMVC是一種父子關係。SpringMVC是spring擴展出的一個應用於web端的框架。在這裏需要注意的一點,就是到底什麼是父子容器關係:

spring主要的作用是黏合其他模塊組件,進行統一管理,springmvc則主要是負責web端。那麼,我們都知道,我們在應用spring的時候,可以使用注入。這個時候,如果我們的web端是用的SpringMVC,這個時候,controller理論上是通過SpringMVC去注入,但是,使用spring注入,同樣是可行的。同理,service等層,使用SpringMVC配置的統一掃描裝配也是可以的。所以,如果說只是爲了使用spring的依賴注入,是大可不必將springMVC和spring同時使用的。他們完全可以分開!

但是,儘管SpringMVC和spring都可以進行自動裝配掃描,值得注意的是:

spring(父容器)並不能直接訪問SpringMVC(子容器)所注入的對象,但是SpringMVC卻可以訪問到spring裝載的對象。所以,在配置自動裝配的時候,應該注意到這一點。

四、Struts

Struts是對於MVC的一種非常完美的實現,從根本上來說,它其實和SpringMVC一樣,都是基於MVC思想的擴展實現。但是,在SpringMVC3之後 ,SpringMVC完超Struts。(注:但是,框架並沒有優劣之分,框架本身就是一種權衡,相對而言而已)

Struts和SpringMVC的區別:

首先,如果說項目中使用了spring,那麼還是使用SpringMVC吧,因爲相對於融合Struts來說,spring和SpringMVC是非常完美的無縫鏈接。

其次,SpringMVC的攔截粒度是方法,而Struts的粒度是類

然後,入口不同,SpringMVC的入口是servlet,而Struts是filter

最後,如果使用註解的話,SpringMVC基本上是零配置,而Struts需要配置很多。

備註:想說一點的是:在Struts中可以配置開發者模式,就是說當修改了一個URL訪問,可以不用重啓工程。但是SpringMVC需要重啓。

五、總結

我也不知道怎麼從專業的角度去區分這幾個的區別,但是,就從我自己的觀點來說,學習這些框架性的東西,也能瞭解別人的思想走向。包括那些標籤配置,還有配置文件等,都是一種解決問題的方式。說實在的,從心理上,java的web這塊兒,發展太多了。還是那句話,框架本身就是爲了找到一個平衡,用哪個合適,就用哪個吧。都有各自的好,爲了解決問題而存在。

發佈了81 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章