- 프로그램 문법
- 프로그램 기초
- 상수/변수
- 함수
- 데이터 할당
- 기타 확장 문법
- Template 문법
- Template 기초
- Template 상수/변수
- Template 함수
- Template 포함
- Template 분기 및 순환
- Template 확장 문법
- 관리자 매뉴얼
- 참고 문헌
Java 기반의 Template Engine인 Apache Velocity를 정리 한다. Velocity는 MVC 모델에서 View영역에서 사용 되므로 JSP의 대안이 될 수 있다.
홈페이지 : http://velocity.apache.org/
라이센스 : Apache Software License
플랫폼 : Java
프로그램 문법
프로그램 기초
Velocity는 JSP에 해당하는 Velocity Template File (~.vm)을 사용 한다.
선언 및 사용
import java.io.StringWriter;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.MethodInvocationException;
VelocityContext context = null;
Template template = null;
Velocity.init("velocity.properties");
context = new VelocityContext();
context.put(name, value); ## 템플릿으로 전달할 값 저장
try {
template = Velocity.getTemplate("TemplateName.vm");
BufferedWriter fout = new BufferedWriter(new OutputStreamWriter(System.out));
template.merge(context, fout);
fout.flush();
fout.close();
} catch( ResourceNotFoundException rnfe ) {
} catch( ParseErrorException pee ) {
} catch( MethodInvocationException mie ) {
} catch( Exception e ) {
}
상수/변수
함수
데이터 할당
context.put(name, value);
기타 확장 문법
Template 문법
VTL (Velocity Template Language)는 Velocity에서 템플릿 개발에 사용되는 간단한 언어 이다.
Template 기초
주석
## : 한줄 주석
#* 여러줄 *# : 여러줄 주석
중단
#stop : 중단
Template 무시
' ' 안에서는 $var가 확장 되지 않는다.
#literal()
~
#end
Template 상수/변수
내장 객체
$actionInstanceVariable : getVariable()로 접근
$req : HttpServletRequest
$res : HttpServletResponse
$stack : com.opensymphony.xwork.util.OgnlValueStack 인스턴스
$ognl : com.opensymphony.webwork.views.jsp.ui.OgnlTool 인스턴스
$webwork : com.opensymphony.webwork.util.WebWorkUtil 인스턴스
$action : WebWork action
$taglib : Velocity 매크로를 통한 JSP tag 라이브러리 접근
변수 선언 및 값 지정
#set ($name = value) : 문자열 값 지정
단, value가 null일 경우 $name은 값의 변화가 없음
"value"를 사용할 경우, value 부분이 파싱되어 처리됨
'value'를 사용할 경우, value 부분은 파싱되지 않음 (stringliterals.interpolate=true)
범위 연산 선언
[-2..7](-2..7.md)
레퍼런스 : 레퍼런스는 문자열을 저장 또는 반환 한다.
개체 : $variable, ${variable}
속성 : $variable.property, ${variable.property}
속성 또는 getProperty()가 호출됨
함수 : $variable.method(args), ${variable.method(args)}
기타 문법
$!variable, $!{variable} : 값이 없을 경우 공백 표시
\\ : \, \$ : $, \# : #
Template 함수
Template 포함
외부 Template 파일 포함
#include ("file1.txt", "file2.txt") : 그대로 포함
#parse ("file.vm") : 파싱하여 포함
내부 Block 영역 포함
#define( $block )
Hello $who
#end
$block
Template 분기 및 순환
#if (조건) #elseif (조건) #else #end : 조건문
참 : true, null이 아님
거짓 : false, null
<, >, ==, &&(and), ||(or), !(not)
== : 같은 object type이 아닐 경우 false 처리
#foreach ($name in $배열등) #end : 반복문
#foreach ($idx in [1..5](1..5.md))
#foreach ($name in ["b", "c"]("a",))
$velocityCounter : 반복 카운트, 1, 2, 3, ...
$velocityHasNext
#break
#end
Template 확장 문법
매크로
#macro (macroName $arg1 $arg2) : 매크로 선언
//--- velocity.properties의 velocimacro.library에 지정된 라이브러리는 모든 템플릿에서 공유 된다.
#macroName(arg1 arg2) : 매크로 호출
관리자 매뉴얼
참고 문헌
분류: 오픈소스
기술_자료실
Spring
Java
Template_Engine