自己這個比較是個僞命題,由於java
- RESTful Service是一個軟件架構「風格」,
- 而servlet是java 服務端的一種技術
之因此把它們拿出來比較,是因爲它們表明了兩個時代的技術風格與架構。下面就來闡述這兩種技術架構的區別。spring
Servelt API是1998年發佈的,它的核心API一直變化不大,很是穩定,也是JavaEE衆多API中最成功的一個。基於Servlet API產生了衆多的框架,比較你們最熟悉的Structs,Spring MVC等。和REST對比,它們有以下特徵數據庫
- 它們的核心理念是servelt與handler以前的一個mapping,利用一個配置文件(spring mvc能夠是annotation式的配置)來處理servlet和handler之間的mapping關係。
- Servlet具備session狀態,這也方便了服務器端實現一些帶狀態的邏輯。但同時這樣也致使了servlet實現多服務器的架構帶來了困難,就必須實現複雜的負載均衡、session複製、持久化機制。
- Servlet獲取客戶端信息的方式更多的是經過request parameters。想一想你常常經過getParamter就能夠明白。
相對於Servlet,RESTful更多的是一種架構方式的改進,它強調如下幾點:服務器
- 經過請求URL來獲取信息,路徑便是信息,這也是HTTP的核心理念。
- 無狀態,狀態轉而經過應用層或者數據庫層來維護。
- 經過http的POST, DELTE, PUT, GET等方式來實現數據的增刪改查。而再也不是借之前servlet中咱們常常定義的經過方法名來區別各個方式,好比getXXXByXXX,updateXXX等等。