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();
    }
}  

좋은 웹페이지 즐겨찾기