概要
マークアップ・ルーラーは、動的なページを出力するテンプレートエンジンです。
ですが、まずは静的なHTMLを出力する方法を練習します。
HTML
[1] html_source.html
※相対パスが[/WEB-INF]から始まるディレクトリに配置してください
<?xml version="1.0" encoding="UTF-8"?>
<html>
<body>
<span>hello world</span>
</body>
</html>
Java
[2] HelloWorld.java
package org.ruler.markup.tutorial;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.ruler.markup.api.Source;
import org.ruler.markup.api.Page;
@Path("/hello")
@Source(file="/WEB-INF/html/html_source.html")
public class HelloWorld extends Page {
@GET
@Produces(MediaType.TEXT_HTML)
public String hello(){
String html = super.draw();
return html;
}
}
[3] HelloApplication.java
※前回と同じです。
package test;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class HelloApplication extends Application {
public HelloApplication(){
}
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> set = new HashSet<Class<?>>();
set.add(HelloWorld.class);
return set;
}
}
web.xml
[4] web.xml
※前回と同じなので省略します。
実行
デプロイしてサーバー(Tomcat)を起動し、Webブラウザで登録されたパスを開いてみてください。
http://localhost:8080/rest/helloにてHTMLページが表示され、hello worldと表示されたら成功です。
説明
Pageクラスを継承し、@Sourceにリソースとなるhtmlファイルのパスを指定しています。
次回はこれをベースに動的なページを作ります。
付録
前述した[2] HelloWorld.java は、次のようにWebコンテナ(JAX-RS)とテンプレートエンジン(Markup Ruler)を
分離することができます。struts1.xなどではこちらをご利用ください。
[5] HelloView.java (マークアップ・ルーラー)
package org.ruler.markup.tutorial;
import org.ruler.markup.api.Source;
import org.ruler.markup.api.Page;
@Source(file="/WEB-INF/html/html_source.html")
public class HelloView extends Page {
// 今回は特になし
}
[6] HelloAction.java (Webコンテナ)
package org.ruler.markup.tutorial;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class HelloAction {
@GET
@Produces(MediaType.TEXT_HTML)
public String hello(){
HelloView view = new HelloView();
String html = view.draw();
return html;
}
}