天天看點

《精通Spring MVC 4》——2.3 Spring MVC 1-0-1

本節書摘來自異步社群《精通spring mvc 4》一書中的第2章,第2.3節,作者:【美】geoffroy warin著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

在spring mvc中,模型是由spring mvc的model或modelandview封裝的簡單map。它可以來源于資料庫、檔案、外部服務等,這取決于你如何擷取資料并将其放到模型中。與資料層進行互動的推薦方式是使用spring data庫:spring data jpa、spring data mongodb等。

spring mvc的控制層是通過使用@controller注解來進行處理的。在web應用中,控制器的角色是響應http請求。帶有@controller注解的類将會被spring檢索到,并且能夠有機會處理傳入的請求。

通過使用@requestmapping注解,控制器能夠聲明它們會根據http方法(如get或post方法)和url來處理特定的請求。控制器就可以确定是在web響應中直接寫入内容,還是将應用路由一個視圖并将屬性注入到該視圖中。

純粹的restful應用将會選擇第一種方式,并且會在http響應中直接暴露模型的json或xml表述,這需要用到@responsebody注解。在web應用中,這種類型的架構通常會與前端javascript架構關聯,如backbone.js、angularjs或react。在這種場景中,spring應用隻需處理mvc中的模型層。我們将會在第4章中學習這種架構。

在第二種方式中,模型會傳遞到視圖中,視圖會由模闆引擎進行渲染,并寫入到響應之中。

視圖通常會與某種模闆方言關聯,這種模闆允許周遊模型中的内容,流行的模闆方言包括jsp、freemarker或thymeleaf。

混合式的方式則會在某些方面采用模闆引擎與應用進行互動,并将視圖層委托給前端架構。