by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

freemarker 설명 및 기본 예제




1 FreeMarker 란?

  • 프리마커는 자바 서블릿을 위한 오픈소스 HTML 템플릿 엔진이다.
  • 프리마커에서는 HTML을 템플릿으로 저장하는데 이들은 결국 템플릿 객체로 컴파일 된다.
  • 이 템플릿 객체들은 서블리셍서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다.
  • 프리마커 객체들은 서블릿에서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다.
    [*.java]Servlet \+Template[*.ftl] = [*.html]Output

2 FreeMarker 구조

  • FreeMarker는 표현의 결과물을 HTML(템플릿)로 관리하고 여기에 자바 객체를 연결하여 최종적인 결과를 만들어낸다.

3 FreeMarker 셋팅

3.1 다운로드

3.2 설치

  • freemarker.jar 파일을 WEB-INF/lib 안에 넣는다.
  • ecilpse에서는 프로젝트 마다 lib안에 import 시킨다.

3.3 Java 코딩시

import freemarker.template.*;
  • FreemarkerServlet를 extends 한 후 Java coding 해주면 된다.

4 FreeMaker 문법

  • FreeMarker의 메뉴얼 : http://www.freemarker.org/docs/
    FTL tag 
    <# > 
    
    
    주석 
    <#--주석달기--> 
    
    
    반복문 
    1. 
    <#list [Object code에서 key값 ]  as  [별칭할 값]> 
     
    2. for(int i=0;i<10;i++)
    <#list  1..10  as i > 
          ${i}
       <#assign i=i+1?int>
     
    3. 사이즈를 알고 싶을때.. Key 값이 list 인 경우
     
    <#assign size=list?size>
     
    4. 다른 변수로 정의하고 싶을때에는 
    <#setting [새로]=[기존]>
    
     
    5. 변수선언 
    
    <#assign x=0>   <#--x에 0를 할당해 준것이다. --> 
    x값을 출력하고자 할때 --> ${x} 
    
    
    6. <#macro green> 
    "<@green>"이런식으로 쓴다. 
    주로 변하지 않는 변수를 이렇게 선언해서 쓴다. 
     
    7. 조건문 
    <#if> 
     
    8. int형으로 선언해 주고 싶은때에는
    <#assign x=0 ? int>
    
    

5 FreeMarker 예제

5.1 TLD 파일

  • fmtag.tld (WEB-INF 아래 위치)
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE taglib
          PUBLIC "-Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
          "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">
    <taglib>
      <tlibversion>2.0<.tlibversion>
      <jspversion>1.1</jspversion>
      <shortname>FreeMarker JSP Support</shortname>
    
      <tag>
       <name>template</name>
       <tagclass>freemarker.ext.jsp.FreemarkerTag</tagclass>
       <bodycontent>tagdependent</bodycontent>
       <info>Allow evaluation of FreeMarker templates inside JSP</info>
       <attribute>
        <name>cashing</name>
        <required>false</required>
       </attribute>
      </tag>
    </taglib>
    

5.2 java 파일

  • SimpleBean.java (WEB-INF/classes/freemarker/examples/jsp)
  • Custom Tag 수행을 위한 Tag Handler Class
    package freemarker.examples.jsp;
    
    public class SimpleBean
    {
      private static String[] arr = {"a","b","c","d"};
      private String theString = "Hello from " + toString();
    
      public void setString(String foo)
      {
        theString = foo;
      }
    
      public String getString()
      {
        return theString;
      }
    
      public String[] getArray()
      {
        return arr;
      }
    }
    

5.3 jsp 파일

  • freemarker2.jsp (View 파일)
    <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ taglib uri="/WEB-INF/fmtag.tld" prefix="fm" %>
    
    <jsp:useBean id="mybean" class="freemarker.examples.jsp.SimpleBean"/>
    <jsp:useBean id="mybeanreq" class="freemarker.examples.jsp.SimpleBean" scope="request" />
    
    <fm:template>
    <html>
    <body>
     <h1>FreeMarker JSP example</h1>
     <hr>
     <p>JSP 페이지</p>
    
     <#assign mybean = page.mybean>
     <#assign mybeanreq = request.mybeanreq>
    
     <p>page : ${mybean.string}
     <#list mybean.array as item>
      <br>${item}
     </#list>
    
     <p><b>Note:</b>
    </body>
    </html>
    </fm.template>
    


문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.