1. 程式人生 > >SpringMVC 與 MVC的區別

SpringMVC 與 MVC的區別


SpringMVC作為MVC框架,與Struts 2 有著異曲同工之處,首先對比一下SpringMVC與Struts2的不同之處:

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

    2. 效能:spring會稍微比struts快。spring mvc是基於方法的設計,而sturts是基於類,每次發一次請求都會例項一個action,每個action都會被注入屬性,而spring基於方法,粒度更細,但要小心把握像在servlet控制資料一樣。spring3 mvc是方法級別的攔截,攔截到方法後根據引數上的註解,把request資料注入進去,在spring3 mvc中,一個方法對應一個request上下文。而 struts2框架是類級別的攔截,每次來了請求就建立一個Action,然後呼叫setter getter方法把request中的資料注入;struts2實際上是通過setter getter方法與request打交道的;struts2中,一個Action物件對應一個request上下文。

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

    4. 設計思想上:struts更加符合oop的程式設計思想, spring就比較謹慎,在servlet上擴充套件。

    5. intercepter的實現機制:struts有以自己的interceptor機制,spring mvc用的是獨立的AOP方式。這樣導致struts的配置檔案量還是比spring mvc大,雖然struts的配置能繼承,所以我覺得論使用上來講,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

相關推薦

SpringMVC MVC區別

SpringMVC作為MVC框架,與Struts 2 有著異曲同工之處,首先對比一下SpringMVC與Struts2的不同之處:     1. 機制:spring mvc的入口是servlet,而struts2是filter(這裡要指出,filter和servlet是不

SpringMVCStruts2區別比較總結

req 攔截器 返回 方式 log 編碼 strong 原則 麻煩 1、Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上Spring

Android MVPMVC區別

1、MVP與MVC的區別 Activity職責不同,Activity在MVP中是View層,在MVC中是Controller層,這是MVC和MVP很主要的一個區別,可以說Android從MVC轉向MVP開發也主要是優化Activity的程式碼,避免Activity的程式碼臃腫龐大。

SpringMVC框架(1)之(1.4 SpringMVC Struts區別

SpringMVC與 Struts區別 SpringMVC是通過方法的形參接收引數,可以以單例方式 使用,建議使用單例; Struts通過成員變數接收引數,在使用時 必須以多例方式 使用;   SpringMVC是 基於方法 開發(以方法為單位),一個請求的方法對應一個 H

SpringMVCStruts2區別

一、框架機制 1、Struts2採用Filter(StrutsPrepareAndExecuteFilter)實現,SpringMVC(DispatcherServlet)則採用Servlet實現。 2、Filter在容器啟動之後即初始化;服務停止以後墜毀,晚於Servl

SpringMVCStruts2區別比較

1、Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC就容易實現restful url,而struts2的架構實現起來要費勁,因為St

三層架構MVC區別

體系架構 商務 相對 持久化 也不會 劃分 more rect 基本 我們平時總是將混為一談,殊不知它倆並不是一個概念。下面我來為大家揭曉我所知道的一些真相。 首先,它倆根本不是一個概念。   三層架構是一個分層式的軟件體系架構設計,它可適用於任何一個項目。   MVC是一

MVPMVC區別 in Android

轉自:http://blog.csdn.net/lmj623565791/article/details/46596109 一、概述 對於MVP(Model View Presenter),大多數人都能說出一二:“MVC的演化版本”,“讓Model和View完全解耦”等等。本篇博文僅是

springMVCstruts2的區別

我們從以下幾個維度來區分兩者的概念:1.  機制:spring mvc的入口是servlet,而struts2是filter。    補充幾點知識:    《 Filter 實現javax.servlet.Filter介面,在web.xml中配置與標籤指定使用哪個Filter

SpringMVCStruts2的主要區別

區別1: Struts2 的核心是基於一個Filter即StrutsPreparedAndExcuteFilter  SpringMvc的核心是基於一個Servlet即DispatcherServlet(前端控制器) 區別2: Struts2是基於類開發的,傳遞的引數是

Android---MVP模式介紹,以及MVPMVC區別

(1). MVP模式簡介 相信大家對MVC都是比較熟悉了:M-Model-模型、V-View-檢視、C-Controller-控制器,MVP作為MVC的演化版本,那麼類似的MVP所對應的意義:M-Model-模型、V-View-檢視、P-Presenter-表示器。 從MV

springmvcSpring配置檔案中掃描元件分開掃描和直接全掃描的區別

在主容器中(applicationContext.xml),將Controller的註解排除掉 <context:component-scan base-package="com">   <context:exclude-filter type="annotation" expression

Spring MVC中WebMvcConfigurerAdapter、WebMvcConfigurationSupportWebMvcConfigurer區別

最近參考書籍《Spring Boot實戰——Java EE開發的顛覆者》使用Spring Boot(2.0)搭建Spring MVC(5.0)專案進行配置時候,發現WebMvcConfigurerAdapter已過時檢視原始碼發現WebMvcConfigurerAdapter

springmvc配置檔案web.xml中//*的區別

<!-- 配置springmvc的 DispatcherServlet ctrl+alt+向上鍵 --><servlet><servlet-name>springDispatcherServlet</servlet-name>

淺談Android中MVP模式MVC模式的區別

一、概述 對於MVP(Model View Presenter),大多數人都能說出一二:“MVC的演化版本”,“讓Model和View完全解耦”等等。本篇博文僅是為了做下記錄,提出一些自己的看法,和幫助大家如何針對一個Activity頁面去編寫針對MVP風

springmvcstrut2的區別

a、Struts2框架是類級別的攔截,每次請求就會建立一個Action,和Spring整合時Struts2的ActionBean注入作用域是原型模式prototype(否則會出現執行緒併發問題),然後通過setter,getter吧request資料注入到屬性。b、Struts2中,一個Action對應一個r

簡單瞭解 mvc 、mvp MVVM 區別

mvc - 劃分三個角色: 使用者操作 view 層與 controller 層 mvp view 與 model 不發

AngulairJS表單輸入驗證mvc

oot 表單 名稱 操作 數據庫 root min 位置 input AngulairJS表單輸入驗證 1.表單中,常用的驗證操作有:$dirty 表單有填寫記錄、$valid 字段內容合法的、$invalid 字段內容是非法的、$pristine 表單沒有填寫記錄、$er

HAProxyNginx區別

時間 請求 也會 維護 異常 會有 訪問 haproxy 失敗 1)HAProxy對於後端服務器一直在做健康檢測(就算請求沒過來的時候也會做健康檢查):後端機器故障發生在請求還沒到來的時候,haproxy會將這臺故障機切掉,但如果後端機器故障發生在請求到達期間,那麽前端訪問

axis2cxf區別

開源社區 -s 實現 部署 廣泛 asi -a ice 喜歡 1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承諾在下面的版本支持。 2.