SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~サーバーサイドとクライアントサイドのどちらでも対応できるEcho(1)

第23回

サーバーサイド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;
    }
}
図2 ブラウザから/heloにアクセスすると、このようなページが表示される。
図2 ブラウザから/heloにアクセスすると、このようなページが表示される。

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

次のページ
画面作成の流れを整理する

この記事は参考になりましたか?

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5446 2010/09/21 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー