在使用spring mvc之前,我們首先要理解我們為什么要使用spring mvc。關於這個問題我們可以看一下java web的簡單發展過程。
1. servlet 開發階段
上世紀90年代,隨着Internet和瀏覽器的飛速發展,基於瀏覽器的B/S模式隨之火爆發展起來。sun提出了Servlet體系,這個體系使得使用java程序員也能開發基於B/S架構的WEB應用程序,使用Servlet類將HTTP請求和響應封裝在標准JAVA類中來實現各種WEB應用方案。
使用Servlet的一個問題是頁面的輸出通過Servlet類返回,這使得開發無法方便的做到各種頁面效果和豐富多彩的風格。
於是sun借鑒asp推出了jsp
2.jsp 開發階段
推出了jsp后,JAVA程序員也能象ASP的程序員那樣將服務端代碼添加在已經由美工設計好的靜態頁面上,經過一個JSP容器對JSP文件進行自動解析並轉換成Servlet類來交給WEB服務器運行。jsp理解就是先設計顯示頁面,再將顯示頁面轉成servlet輸出。
使用jsp提高了開發效率,但還是存在一些問題:首先頁面中有大量的java邏輯代碼,前端美工在維護是不得不考慮這些邏輯代碼,而java程序員在維護java代碼是不得不考慮前端的顯示邏輯。
於是sun推出了mvc模式
3.mvc開發階段
mvc模式將程序分為三個模塊:數據模塊(model)、業務邏輯模塊(controller),顯示模塊(view)。業務邏輯模塊(controller)接受請求,處理業務邏輯,最終生成數據(model),顯示模塊(view)接受數據(model)渲染頁面展示,最終返回顯示內容。
spring mvc的本質也就是將業務邏輯處理和顯示渲染分離開來,通過數據模塊進行關聯。
題外話
早期WEB應用程序頁面的現實主要通過服務器返回顯示頁面,瀏覽器只負責渲染。但隨着前端技術的發展尤其是js、ajax、jquery等技術的發展。這些前端技術基本上已經承擔了頁面顯示和控制的功能,而后端只負責業務邏輯和返回顯示數據,這種模式下view和controller就已經分離。spring mvc隨着版本的迭代,也發送了很多變化,現在的spring mvc框架,除了原本的mvc分離目的外,相對servlet還是提供了很多有用的功能,便於開發。