日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > 框架設(shè)計(jì) > Java: FreeMarker的配置和使用

Java: FreeMarker的配置和使用

來源:程序員人生   發(fā)布時(shí)間:2015-01-28 09:05:24 閱讀次數(shù):3280次

初學(xué)甚么都不可以疏忽的地方就是這個(gè)東西的官方網(wǎng)站:http://freemarker.org/。下載或API都可以參考這里。

FreeMarker是甚么

非常的簡(jiǎn)單明了。FreeMarker是1個(gè)java包。實(shí)現(xiàn)了MVC模式,分離開發(fā)者和設(shè)計(jì)師。也就是分離html也java的代碼。

 

FreeMarker是如何工作的

這是官網(wǎng)的圖。非常明確的說明了FreeMarker是如何運(yùn)作的。首先需要有1個(gè)template模板,在那里就是1堆的html標(biāo)簽和1些專屬FreeMarker的標(biāo)簽,這些標(biāo)簽以后會(huì)被具體的數(shù)據(jù)代替。這些數(shù)據(jù)就是有左下的Java objects提供。<FreeMarker>就是工程中的Jar包。他把這些模板和Java objects的數(shù)據(jù)加工組合以后輸出html頁面。所以,F(xiàn)reeMarker的功能,就如官網(wǎng)中1直強(qiáng)調(diào)的,不是別的而是1個(gè)模板引擎。

在工程中最后把這些捏合在1起,讓他們彼此知道、協(xié)同工作的是web.xml配置文件。這里先介紹web.xml的配置,以后具體說明如何1步1步的添加配置文件中觸及到的模板、java objects等。這樣有益于讀者從整體動(dòng)身逐漸掌控每個(gè)相干的細(xì)節(jié)。

復(fù)制代碼
<?xml version="1.0" encoding="UTF⑻"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>Test</servlet-name> <servlet-class>example.Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
復(fù)制代碼

配置順次說明了:有1個(gè)叫Test的servlet,對(duì)應(yīng)在代碼的example包的Test類。這個(gè)類的名字可以隨意起,其他的節(jié)點(diǎn)在配置的時(shí)候使用的知識(shí)servlet-name,然后他會(huì)找到這個(gè)類。下面的servlet-mapping在url中訪問*.do的時(shí)候會(huì)訪問這個(gè)servlet-name為Test的節(jié)點(diǎn)配置的類。以后,在index.jsp中添加1個(gè)指向*.do的超鏈接。全部的全部測(cè)試項(xiàng)目就能夠run起來了。

依照MVC的方式理解。在servlet-name中配置的類就是Controller。View就是模板。Model就是以后在HashMap中的數(shù)據(jù)。下面順次創(chuàng)建在配置文件中直接或間接需要用到的代碼。

添加可運(yùn)行的代碼

這里假定你已創(chuàng)建了1個(gè)web project,這個(gè)project的名字叫做test。首先創(chuàng)建模板。1定要在WebRoot目錄下創(chuàng)建1個(gè)templates目錄。然后在里面添加后綴為ftl(freemarker template的縮寫),名稱為Test的模板。在配置文件中沒有出現(xiàn)模板叫甚么,所以這里你可以隨意命名這個(gè)模板文件。這個(gè)文件以后會(huì)在Controller中明確指定。不會(huì)出現(xiàn)找不到的問題。

代碼:

復(fù)制代碼
<!DOCTYPE html> <html> <head> <title>Hello</title> </head> <body> This is my HTML page. <br> <h1>${user}</h1> </body> </html>
復(fù)制代碼

這個(gè)模板非常簡(jiǎn)單。只在h1標(biāo)簽中方了1個(gè)需要數(shù)據(jù)“user”的Freemarker標(biāo)簽。這個(gè)“user”數(shù)據(jù)就是在以后的HashMap提供的。

然后添加Controller,也就是在web.xml配置文件中指定的example.Test類。首先在項(xiàng)目的根目錄下,創(chuàng)建1個(gè)“example”的包,然后在里面添加1個(gè)Servlet。Servlet的名稱設(shè)定為Test。名字可以隨便起,但是在配置文件中的必須和這個(gè)類的名稱是1致的。

復(fù)制代碼
package example; import java.io.*; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.*; import freemarker.template.*; public class Test extends HttpServlet { private Configuration _config; public void init() { // 初始化Freemarker配置 _config = new Configuration(Configuration.VERSION_2_3_0); // 設(shè)置Freemarker模板文件的位置 _config.setServletContextForTemplateLoading(this.getServletContext(), "templates"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ // 數(shù)據(jù) Map root = new HashMap(); root.put("user", "Jack"); // 獲得模板 Template t = _config.getTemplate("Test.ftl"); // 準(zhǔn)備輸出, 使用模板的編碼作為本頁的charset response.setContentType("text/html; charset=" + t.getEncoding()); PrintWriter out = response.getWriter(); try{ // 在模板中加入動(dòng)態(tài)數(shù)據(jù) t.process(root, out); } catch(freemarker.template.TemplateException e){ throw new ServletException("處理Template模版中出現(xiàn)毛病", e); } } }
復(fù)制代碼

代碼_config.setServletContextForTemplateLoading(this.getServletContext(), "templates");指定了模板文件所在的目錄,以后的全部的Controller的模板文件都是從這個(gè)地方找了,也就是前文指定的在WebRoot下創(chuàng)建的templates目錄。在后面的代碼Template t = _config.getTemplate("Test.ftl");中指定了具體的模板文件是哪個(gè)。Map root = new HashMap(); root.put("user", "Jack");指定了具體的數(shù)據(jù)Model。這個(gè)key值必須和在模板中設(shè)定的${user}1致。最后在方法t.process(root, out);中,把數(shù)據(jù)添加到模板中。通過這幾步以后,MVC的幾個(gè)部份就結(jié)合到了1起。

最后在index.jsp中添加1個(gè)超鏈接:<a href="Hello.do">Freemarker first page</a>。全部例子就能夠運(yùn)行了。看那看效果吧。

Freemarker是1個(gè)功能10分強(qiáng)大的模板引擎。不只有文中介紹的簡(jiǎn)單的數(shù)據(jù)的替換,還有指令、宏等功能。非常好用。

 

 

參考:

http://freemarker.org/docs/

http://gqsunrise.iteye.com/blog/1659118

歡迎加群相互學(xué)習(xí),共同進(jìn)步。QQ群:58099570 | 做人要厚道,轉(zhuǎn)載請(qǐng)注明出處!
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久久精品影视 | 99久久99久久精品免费看蜜桃 | 久久久久九九九 | 国产成人免费网站 | 精品九九| 亚洲成人1区 | 狠狠狠狠干 | 天堂蜜桃一区二区三区 | 亚洲图片一区 | 久久中文网 | 日本精品国产 | 日韩色综合 | 日韩午夜精品视频 | 激情毛片 | 国产a级全部精品 | 91久久精品一区 | 久久久成人精品 | 美女又黄又免费的视频 | 香蕉网色 | 日韩精品在线免费观看 | 在线日本中文字幕 | 欧美精品一区二区三区四区 | 国产精品一区二区在线看 | 亚洲一区二区久久久 | 中日韩在线观看 | 国产白浆在线观看 | 久久久久久久久久久久久9999 | 日韩一区二区在线免费观看 | 91视频国产一区 | 国内久久 | 国产97在线 | 日韩 | 亚州av| 日本视频在线播放 | 亚洲精品乱码久久久久久蜜桃麻豆 | 日韩av色| 黄色av地址| 精品国产99 | 国产美女在线播放 | av片免费 | 国产黄色在线播放 | 国产成人在线电影 |