Restful、Jersey和JAX-RS


 一: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 CXFRestlet(最早的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緩存文件的形式返回到頁面顯示。

總結

  簡單的說,FreeMarker就是一種用Java編寫的模板引擎,它根據模板輸出多種規格的文本。特別指出的是,FreeMarker與Web應用框架無關,它同樣可以應用在非Web應用程序環境中,而且,FreeMarker並不是只能生成HTML頁面,它也可以生成各種文本,如XML/RTF/Java源代碼等。
  Freemarker是一個非常優秀的模版引擎,這個模版引擎可用於任何場景,FreeMarker負責將數據模型中的數據合並到模版中,從而生成標准輸出。
  FreeMarker特別適應與MVC模式的Web應用,通常有Java程序准備要顯示的數據,由FreeMarker模版引擎來生成頁面,而FreeMarker模版則提供頁面布局支持,從而能更好地規范MVC架構,保證視圖邏輯和業務邏輯分離。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM