freemarker是什麼
非常的簡單明了。freemarker是一個java包。實作了mvc模式,分離開發者和設計師。也就是分離html也java的代碼。
freemarker是如何工作的
這是官網的圖。非常明确的說明了freemarker是如何運作的。首先需要有一個template模闆,在那裡就是一堆的html标簽和一些專屬freemarker的标簽,這些标簽之後會被具體的資料代替。這些資料就是有左下的java objects提供。<freemarker>就是工程中的jar包。他把這些模闆和java objects的資料加工組合之後輸出html頁面。是以,freemarker的功能,就如官網中一直強調的,不是别的而是一個模闆引擎。
在工程中最後把這些捏合在一起,讓他們彼此知道、協同工作的是web.xml配置檔案。這裡先介紹web.xml的配置,之後具體說明如何一步一步的添加配置檔案中涉及到的模闆、java objects等。這樣有利于讀者從總體出發逐漸把握每一個相關的細節。
配置依次說明了:有一個叫test的servlet,對應在代碼的example包的test類。這個類的名字可以随便起,其他的節點在配置的時候使用的知識servlet-name,然後他會找到這個類。下面的servlet-mapping在url中通路*.do的時候會通路這個servlet-name為test的節點配置的類。之後,在index.jsp中添加一個指向*.do的超連結。整個的整個測試項目就可以run起來了。
按照mvc的方式了解。在servlet-name中配置的類就是controller。view就是模闆。model就是之後在hashmap中的資料。下面依次建立在配置檔案中直接或者間接需要用到的代碼。
添加可運作的代碼
這裡假設你已經建立了一個web project,這個project的名字叫做test。首先建立模闆。一定要在webroot目錄下建立一個templates目錄。然後在裡面添加字尾為ftl(freemarker template的縮寫),名稱為test的模闆。在配置檔案中沒有出現模闆叫什麼,是以這裡你可以随便命名這個模闆檔案。這個檔案之後會在controller中明确指定。不會出現找不到的問題。
代碼:
這個模闆非常簡單。隻在h1标簽中方了一個需要資料“user”的freemarker标簽。這個“user”資料就是在之後的hashmap提供的。
然後添加controller,也就是在web.xml配置檔案中指定的example.test類。首先在項目的根目錄下,建立一個“example”的包,然後在裡面添加一個servlet。servlet的名稱設定為test。名字可以随意起,但是在配置檔案中的必須和這個類的名稱是一緻的。
代碼_config.setservletcontextfortemplateloading(this.getservletcontext(), "templates");指定了模闆檔案所在的目錄,以後的全部的controller的模闆檔案都是從這個地方找了,也就是前文指定的在webroot下建立的templates目錄。在後面的代碼template t = _config.gettemplate("test.ftl");中指定了具體的模闆檔案是哪一個。map root = new hashmap(); root.put("user", "jack");指定了具體的資料model。這個key值必須和在模闆中設定的${user}一緻。最後在方法t.process(root, out);中,把資料添加到模闆中。通過這幾步以後,mvc的幾個部分就結合到了一起。
最後在index.jsp中添加一個超連結:<a href="hello.do">freemarker first page</a>。整個例子就可以運作了。看那看效果吧。
freemarker是一個功能十分強大的模闆引擎。不隻有文中介紹的簡單的資料的替換,還有指令、宏等功能。非常好用。
參考:
http://freemarker.org/docs/
http://gqsunrise.iteye.com/blog/1659118
歡迎加群互相學習,共同進步。qq群:ios: 58099570 | android: 330987132 | go:217696290 | python:336880185 | 做人要厚道,轉載請注明出處!http://www.cnblogs.com/sunshine-anycall/p/4241260.html