一:MVC與SpringMVC
MVC:是一種思想,是一種設計模式
SpringMVC:是一個框架,實現了MVC這種思想。
之前:寫JSP頁面,比較繁瑣。eg:在頁面顯示用戶列表,我們會在JSP頁面,使用<foreach>標簽,循環輸出所有User對象。此時JSP頁面,和Model實體類混合在一起,沒有進行分離出來。沒法寫js
而使用SpringMVC后,可以將View和Model分離,可以單獨返回頁面,也可以setAttribute()設置數據,在前台頁面,可以通過js將數據渲染出來。
二:Restful、Jersey和JAX-RS
restful:是一種風格,可以唯一將網絡上的資源表示出來。通過http://ip:port/xiangmu/url,通過協議,ip,端口,項目,url唯一表示一個資源。
REST 指的是一組架構約束條件和原則。
REST的目的是便於不同軟件/程序在網絡(例如互聯網)中互相傳遞信息。約定大於配置,有了統一的規范,大家在接口設計時能夠保證理解的一致性。
JAX-RS:Java API for RESTful Web Services,是java的一個小框架,實現了restful風格,將網絡上的資源唯一的標識出來。
JAX-RS提供了一些注解將一個資源類,一個POJO Java類,封裝為Web資源。
JAX-RS和所有JAVA EE的技術一樣,只提供了技術標准,允許各個廠家有自己的實現版本,實現版本有:RESTEasy(JBoss), Jersey(Sun提供的參考實現), Apache CXF, Restlet(最早的REST框架,先於JAX-RS出現), Apache Wink。JAX-RS基於JavaEE的Servlet。標准中定義的注解大大簡化資源位置和參數的描述,僅僅使用注解就可以將一個POJO java類封裝成一個Web資源。JAX-RS也有類似於Spring依賴注入的方式,減少類之間的耦合度。
Jersey:是一個框架,實現了restful風格,類似於SpringMVC實現了MVC設計思想。
Jersey框架中,會用到java中JAX-RS框架的一些注解,同時它又有它自己所獨有的技術。
三:FreeMarker
FreeMarker是一款模板引擎,是一個Java類庫,是一款程序員可以嵌入他們所開發產品的組件。
該模板引擎專門用來解析文件的。當然不僅僅是解析ftl格式的文件,也可以是xml,rtf文件等,我們可以理解為freemarker是一種網頁展現技術。
freemarker的文件一般后綴是ftl,可以解析HTML、xml等文件。可以將html,xml等文件內容寫在ftl文件中,就表示要使用freemarker技術來對html、xml文件進行解析它。
FreeMarker Template Language(FTL),屬於簡單、專用的語言。
以解析html為例:
1.ftl文件中:可以寫html,可以寫指令,包括<#if>、<#list>、${}等來獲取值。eg:${latestProduct.url}"
2..在裝載網頁的時候,Freemarker模板自動從數據模型中提取數據,並解釋整個網頁為我們熟知的HTML頁面。
3.ftl文件,是Freemarker模板的文件后綴名。ftl文件會有對應的html緩存文件,解析的時候,會去查找對應的html文件。freemarker引擎會解析ftl格式的文件,最終以html的格式返回到頁面,就類似與jsp文件最終會解析為html代碼,以流的方式返回到頁面。
jsp文件,本質也是一個servlet文件,返回數據的時候,拼接html代碼,<tbody>、<tr>等方式,最后解析,通過二進制流的方式輸出到頁面中去。 這點和ftl文件很相似,jsp是轉換為out流的形式輸出內容,而ftl文件是最中轉換為html緩存文件的形式返回到頁面顯示。
總結