【Java模板語言】TinyTemplate 實戰 <一>:Serlvet集成

Writer      :BYSocket(泥沙磚瓦漿木匠) css

1、什麼是TinyTemplate

什麼是模板語言? html

模板語言是爲了使用戶界面與業務數據(內容)分離而產生的,並能生成特定格式的文檔。 git

什麼是TinyTemplate?(開源項目地址入口 github

Tiny模板引擎是一個基於Java技術構建的模板引擎,它具備體量小、性能高和擴展易的特色。 適合於全部經過文本模板生成文本類型內容的場景,如:XML、源文件、HTML等等,能夠說,它的出現就是爲了替換Velocity模板引擎而來,所以在指令集上在儘可能與Velocity接近的同時,又擴展了一些Velocity不能很好解決問題的指令與功能,在表達多方面則儘可能與Java保持一致,因此很是地易學易用。 app

1. 體量小表如今總共不到5000多行的代碼,去掉解析器近1000行,核心引擎只有4000多行代碼。 框架

2. 性能高表如今與如今國內幾款高性能模板引擎如:Jetbrick、Webit等引擎的性能相比,近乎伯仲之間,可是比Velocity、Freemarker等則有長足的進步,效率大體是Velocity四倍。 socket

3. 擴展性表如今Tiny框架引擎的全部環境均可以自行擴展,並與原有體系進行良好統一。 maven

4. 易學習表如今Tiny框架概念清晰、模塊劃分科學、具備很是高的高內聚及低耦合。 函數

5. 使用方式靈活表如今,能夠多例方式、單例方式,並能夠與Spring等有良好集成。 佈局

6. 友好的錯誤提示信息。


簡要特色介紹:

1. 相似於 Velocity 的指令方式,相同或類似指令達90%左右

2. 支持可變參數方法調用

3. 支持類成員方法重載

4. 支持函數擴展

5. 採用弱類型方式,對於模板層的代碼編寫約束更小,模型層怎樣變化,模板層的代碼調整都很是容易

6. 支持宏定義#macro

7. 支持佈局#layout

2、與Servlet集成,運行Hello,World

1. 新建一個quickstart.servlettemplate maven項目

在Eclipse中,new — Maven Project — 「maven-archetype-quickstart「 …

在pom.xml添加對tinyTemplate的依賴:

<!-- 模板引擎對servlet的擴展依賴 -->
    	<dependency>
  			<groupId>org.tinygroup</groupId>
  			<artifactId>org.tinygroup.templateservletext</artifactId>
  			<version>2.0.26</version>
		</dependency>
如上代碼,重寫TinyServlet的handleRequest方法便可,而後在裏面進行邏輯處理,return返回index.page。
4. 添加default.layout和index.page
default.layout:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<!--[if IE 7 ]>		 <html class="no-js ie ie7 lte7 lte8 lte9" lang="en-US"> <![endif]-->
<!--[if IE 8 ]>		 <html class="no-js ie ie8 lte8 lte9" lang="en-US"> <![endif]-->
<!--[if IE 9 ]>		 <html class="no-js ie ie9 lte9" lang="en-US"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html class="no-js" lang="en-US"> <!--<![endif]-->
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>${pageTitle}</title>

    <script>
        var contextPath = "${TINY_CONTEXT_PATH}";
        var CKEDITOR_BASEPATH = contextPath+'/ckeditor/';

        /*
        jQuery.fn.outerHTML = function(s) {
            return (s) ? this.before(s).remove() : jQuery("p").append(this.eq(0).clone()).html();
        }
        */
    </script>


    <link rel="shortcut icon" href="${TINY_CONTEXT_PATH}/icon/logo.png">
    
 #if(DEBUG_MODE && DEBUG_MODE=="true")
	#foreach(component in uiengine.getHealthUiComponents())
	<!--UI component $component.name start -->
	#if(component.cssResource)
	#set(resources=component.cssResource.split(","))
	#foreach(path in resources)
	#set(path=path.trim())
	#set(newPath=path.replaceAll("[$][{]TINY_THEME[}]","${TINY_THEME}"))
	<link href="${TINY_CONTEXT_PATH}${newPath}" rel="stylesheet" />
	#end
	#end
	#if(component.jsResource)
	#set(resources=component.jsResource.split(","))
	#foreach(path in resources)
	#set(path=path.trim())
	<script src="${TINY_CONTEXT_PATH}${path}"></script>
	#end
	#end
	#if(component.jsCodelet)
	<script>
	$!{component.jsCodelet}
	</script>
	#end
	#if(component.cssCodelet)
	<style>
	$!{component.cssCodelet}
	</style>
	#end
	#end
 #else
  <link href="${TINY_CONTEXT_PATH}/uiengine.uicss" rel="stylesheet" />
  <script src="${TINY_CONTEXT_PATH}/uiengine.uijs"></script>
 #end
</head>
<body>
      #pageContent
</body>
</html>
index.page:
${name},歡迎來到Tiny的世界! 時間:${date}
5. 運行項目,右鍵項目 run as — maven build — 「jetty:run」。訪問 localhost:8080/項目名/index
image

3、小結

一、TinyTemplate的簡介與特色

二、TinyTemplate與Servlet的配置(下一講與SpringMVC的配置)

三、TinyTemplate最簡單的也是最經常使用的取值語法${}

歡迎點擊個人博客及GitHub — 博客提供RSS訂閱哦!

———- http://www.bysocket.com/ ————- https://github.com/JeffLi1993 ———-

微         博:BYSocket  豆         瓣:BYSocket  FaceBook:BYSocket  Twitter    :BYSocket

相關文章
相關標籤/搜索