サーバーサイドJavaによる実装例
では、実際にEchoを使ってみましょう。まずは、もちろんサーバーサイドJavaを使った実装からです。EchoによるサーバーサイドJavaのプログラム作成は、基本的に2つのクラスを作成することで行います。
一つはサーブレットです。と言っても一般的なサーブレットとは少し違います。Echoでは、HttpServletを継承した「WebContainerServlet」というクラスを用意しており、これを継承してサーブレットを作成します。ただし、ここは、サーブレットの一般的な処理を行うことはありません。
もう一つのクラスは「アプリケーションインスタンス」クラスというものです。これは、ApplicationInstanceというクラスとして用意されています。このアプリケーションインスタンスは、文字通りWebアプリケーションを管理するためのもので、ここで表示する画面などを作成したり、ボタンクリックなどのイベント処理を用意したりします。要するに、このアプリケーションインスタンスがEchoによるWebアプリケーションの本体であり、WebContainerServletはアプリケーションインスタンスを起動するためのトリガーに過ぎないといってもよいでしょう。
では、実際にプログラムを作成してみましょう。まずはサーブレットからです。ここでは、jp.codezineというパッケージに「HeloServlet」というサーブレットを用意し、/heloというアドレスで公開することにしましょう。
package jp.codezine;
import javax.servlet.annotation.WebServlet;
import nextapp.echo.app.ApplicationInstance;
import nextapp.echo.webcontainer.WebContainerServlet;
@WebServlet("/helo")
public class HeloServlet extends WebContainerServlet {
private static final long serialVersionUID = 1L;
public HeloServlet() {
super();
}
@Override
public ApplicationInstance newApplicationInstance() {
return new HeloApp();
}
}
ここでは、@WebServletアノテーションを使って公開アドレスを設定しておきました。バージョンの違いなどによりアノテーションによる指定が行えない場合は、web.xmlにサーブレットを登録しておいてください。
WebContainerServletクラスは、先に述べたようにHttpServletを継承しています。このクラスは抽象クラスになっており、必ずnewApplicationInstanceメソッドを実装する必要があります。このメソッドは、ApplicationInstanceインスタンスを作成して返すためのものです。ここでは、HeloAppというクラスのインスタンスを返すようにしてあります(つまり、この後でHeloAppを作成するわけです)。
WebContainerServletクラスはHttpServletを継承していますが、doGet/doPostなどはありません。クライアントとサーバーの間のやりとりはWebContainerServletが行っており、開発者はタッチしないのです。WebContainerServletで行うべきはnewApplicationInstanceで、実行するインスタンスをreturnするだけです。
ApplicationInstanceの作成
続いて、Webアプリケーションを管理するApplicationInstanceクラスを作成しましょう。ここではjp.codezineパッケージに「HeloApp」という名前で作成をします。
package jp.codezine;
import nextapp.echo.app.ApplicationInstance;
import nextapp.echo.app.Color;
import nextapp.echo.app.Column;
import nextapp.echo.app.ContentPane;
import nextapp.echo.app.Extent;
import nextapp.echo.app.Font;
import nextapp.echo.app.Label;
import nextapp.echo.app.Window;
public class HeloApp extends ApplicationInstance {
private static final long serialVersionUID = 1L;
@Override
public Window init() {
Window window = new Window();
window.setBackground(new Color(200,255,255));
ContentPane pane = new ContentPane();
window.setContent(pane);
Column column = new Column();
column.setBackground(new Color(225,255,255));
pane.add(column);
Label label = new Label("Echoフレームワーク!");
label.setFont(new Font(Font.ARIAL,Font.BOLD,new Extent(18)));
column.add(label);
Label msg = new Label("これは、Echoを使って作ったWebページです。");
msg.setFont(new Font(Font.ARIAL,Font.PLAIN,new Extent(12)));
column.add(msg);
return window;
}
}

作成したら、内容の説明は後にして、実際にブラウザからアクセスをしてみましょう。ごく単純なテキストを表示しただけのページですが、これがHeloAppによって用意されたWebページなのです。
