FreeMarker 빠 른 시작
4381 단어 htmlfreemarkerxml
우선 freemarker. template. configuration 인 스 턴 스 를 만 들 고 설정 을 조정 해 야 합 니 다.Configuration 인 스 턴 스 는 freemarker 의 설정 을 저장 하고 미리 분 석 된 템 플 릿 의 생 성과 캐 시 를 처리 합 니 다.
보통 프로그램의 수명 주기 에 Configuration 인 스 턴 스 만 만 듭 니 다.
Configuration cfg = new Configuration();
// , 。
cfg.setDirectoryForTemplateLoading(
new File("/where/you/store/templates"));
// , , 。
cfg.setObjectWrapper(new DefaultObjectWrapper());
현재 우 리 는 하나의 Configuration 인 스 턴 스 를 사용 합 니 다.그러나 하나의 시스템 에 여러 개의 독립 된 구성 요소 가 FreeMarker 를 사용한다 면 각각의 Configuration 인 스 턴 스 를 사용 할 것 입 니 다.
데이터 모델 생 성
우 리 는 자바. lang 자바. util 과 사용자 정의 자바 빈 구축 대상 모델 을 간단하게 사용 할 수 있 습 니 다. 예 를 들 어 우리 가 데이터 모델 을 구축 하 는 것 은 다음 과 같 습 니 다.
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
다음은 데이터 모델 을 구축 하 는 코드 입 니 다.
// Create the root hash
Map root = new HashMap();
// Put string ``user'' into the root
root.put("user", "Big Joe");
// Create the hash for ``latestProduct''
Map latest = new HashMap();
// and put it into the root
root.put("latestProduct", latest);
// put ``url'' and ``name'' into latest
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse");
url 과 name 속성 을 포함 하 는 자바 빈 인 스 턴 스 를 사용 하여 lastest Product 을 표시 할 수 있 습 니 다.
템 플 릿 가 져 오기
템 플 릿 은 freemarker. template. template 인 스 턴 스 를 통 해 표 시 됩 니 다.보통 Configuration 인 스 턴 스 에서 Template 인 스 턴 스 를 가 져 옵 니 다. 언제든지 getTemplate 방법 으로 Template 인 스 턴 스 를 가 져 올 수 있 습 니 다.템 플 릿 파일 test. ftl 을 설정 한 디 렉 터 리 에 저장 합 니 다.
Template temp = cfg.getTemplate("test.ftl");
이 코드 는 읽 기 / where / you / store / templates / test. ftl 파일 을 분석 하여 해당 하 는 Template 인 스 턴 스 를 만 듭 니 다.
Configuration 캐 시 템 플 릿 인 스 턴 스 입 니 다. 따라서 test. ftl 파일 을 다시 가 져 오 려 면 새로운 템 플 릿 인 스 턴 스 를 만 들 지 않 습 니 다.
템 플 릿 과 데이터 모델 통합
우리 가 알 고 있 는 바 와 같이 데이터 모델 + 템 플 릿 = 출력 은 템 플 릿 을 호출 하 는 프로 세 스 방법 으로 데이터 모델 과 템 플 릿 을 통합 하고 프로 세 스 방법 은 데이터 모델 루트 와 writer 를 매개 변수 로 받 아들 여 결 과 를 Writer 에 출력 합 니 다.간소화 하기 위해 서 콘 솔 로 출력 합 니 다.
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
템 플 릿 인 스 턴 스 를 가 져 오 면 서로 다른 데이터 모델 과 템 플 릿 (템 플 릿 인 스 턴 스 는 기본적으로 상태 가 없 음) 을 합 칠 수 있 으 며, test. ftl 은 템 플 릿 인 스 턴 스 가 만 들 어 졌 을 때 만 접근 할 수 있 습 니 다.
물론 이 곳 의 out 은 파일 이 될 수 있 습 니 다. XML, 자바 등 원 하 는 모든 파일 형식 이 될 수 있 습 니 다. 이렇게 하면 코드 생 성 을 실현 할 수 있 습 니 다.
통합
이것 은 이전 코드 세 션 의 원본 파일 입 니 다. freemarker. jar 를 CLASSPATH 에 두 는 것 을 잊 지 마 세 요.
import freemarker.template.*;
import java.util.*;
import java.io.*;
public class Test {
public static void main(String[] args) throws Exception {
/* ------------------------------------------------------------------- */
/* You usually do it only once in the whole application life-cycle: */
/* Create and adjust the configuration */
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(
new File("/where/you/store/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
/* ------------------------------------------------------------------- */
/* You usually do these for many times in the application life-cycle: */
/* Get or create a template */
Template temp = cfg.getTemplate("test.ftl");
/* Create a data model */
Map root = new HashMap();
root.put("user", "Big Joe");
Map latest = new HashMap();
root.put("latestProduct", latest);
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse");
/* Merge data model with template */
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다른 사람의 웹사이트 편집: contenteditable 및 designMode그래도 우리가 그렇게 할 수 있다고 생각하는 것은 멋진 일입니다. 제가 강조하고 싶었던 일종의 관련 API가 실제로 몇 개 있기 때문에 오늘 그것을 가져왔습니다. contenteditable는 "true" 값이 할당...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.