마야(Mayaa) 템플릿 소개

마야을 한마디로 정의 하면 XHTML을 템플릿으로 사용하는 템플릿 엔진이다. 프레임워크에서의 페이지의 천이를 관리하는 기능은 없고 단지 Struts같이 JSP를 대상으로하는 미들웨어와의 조합으로 사용하는 것을 기본으로 한다. 즉 JSP를 대체하게 된다.
마야가 목표로 하는 것은 디자인과 로직을 분리하면서 기존의 JSP태그라이브러리를 그대로 사용할 수 있게 하는 것이다.

마야를 사용함으로써 얻을 수 있는 이점은 다음과 같다.

뷰 - 로직을 분리한다.
실행하지 않더라도 디자인을 확인할 수 있다.
독자 태그를 사용하지 않기 때문에 위지윅 툴을 사용해서 디자인할 수 있다.
특수한 태그를 HTML에 기술할 필요가 없다.
스트럿츠 같은 프레임워크 등과 조합해서 사용할 수 있다.
JSP 커스텀태그를 사용할 수 있다.

마야의 사용방식은 다음과 같다.
1. html파일에 동적으로 변하는 부분에 id를 부여해 둔다.
2. 위와 같은 파일명에 확장자가 mayaa인 파일이 설정파일이 된다.
3. 설정파일에는 id에 해당하는 HTML요소를 어떤식으로 치환할지를 설정한다.

마야 엔진은 HTML파일과 mayaa파일의 쌍을 읽어 들여서 설정파일에 기술되어 있는 내용으로 html파일을 치환/편집 등을 한 결과를 표시한다.



인스톨방법은 간단하다.
http://mayaa.seasar.org/downloads/ 에서 mayaa-getting-started-1.x.x.war파일을 다운로드 받는다. tomcat의 webapps라는 디렉토리에 복사한 후 tomcat을 기동하는 것이 전부다.

http://localhost:8080/mayaa/index.html 에 접속해서 동작확인을 한다.

Mayaa의 간단한 예:

Servlet에서 HttpServletRequest에 JavaBean을 저장한 다음 mayaa로 forward해서 화면에 표시하는 방법으로 사용한다. 

MyBean.java 가 다음과 같다.

package example;

import java.math.BigDecimal;
import java.util.Date;

public class MyBean {

    private int _id = 1000;

    private String _name = "MyBean name";

    private BigDecimal _decimal = new BigDecimal("12.345");

    private Date _timestamp = new Date();

아래가 HTML파일이다.

userbean.html

<html>
<head>
    <title>use bean</title>
</head>
<body>
    <h1>Use bean</h1>
    <table border="1">
    <tr>
        <th>property</th>
        <th>value</th>
    </tr>
    <tr>
        <td>id</td>
        <td><span id="id">10 dummy</span>;</td>
    </tr>
    <tr>
        <td>name</td>
        <td><span id="name">dummy name</span></td>
    </tr>
    <tr>
        <td>decimal</td>
        <td><span id="decimal">1.2 dummy</span></td>
    </tr>
    <tr>
        <td>timestamp</td>
        <td><span id="timestamp">1970/1/1 dummy</span></td>
    </tr>
    </table>
</body>
</html>

원래는 Servlet등에서 HttpServletRequest에 JavaBean을 저장하겠지만 여기서 원리만 보기 위해서 간단히 mayaa파일에서 저장한다.

userbean.mayaa

<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org"
        xmlns:fmt="http://java.sun.com/jsp/jstl/fmt">
    <m:beforeRender>
        request.setAttribute('bean', new Packages.example.MyBean());
    </m:beforeRender>

    <m:write m:id="id" value="${ bean.id }" />
    <m:write m:id="name" value="${ bean.name }" />
    <fmt:formatNumber m:id="decimal" value="${ bean.decimal }" />
    <fmt:formatDate m:id="timestamp" value="${ bean.timestamp }" />

</m:mayaa>

http://localhost:8080/mayaa/samples/tutorial/usebean.html 로 접속해서 확인한
실행결과는 다음과 같다.

<html>
<head>
    <title>use bean</title>
</head>
<body>
    <h1>Use bean</h1>
    <table border="1">
    <tr>
        <th>property</th>
        <th>value</th>
    </tr>
    <tr>
        <td>id</td>
        <td>1000</td>
    </tr>
    <tr>
        <td>name</td>
        <td>MyBean name</td>
    </tr>
    <tr>
        <td>decimal</td>
        <td>12.345</td>
    </tr>
    <tr>
        <td>timestamp</td>
        <td>2005/11/14</td>
    </tr>
    </table>
</body>
</html>
Comments