掌田 津耶乃 [著] 2010/03/18 14:00

 注目の軽量フレームワークをフットワーク軽く取り上げていく本連載。連載第12回目となる今回は、「Vaadin」の第3回目として、データの扱いを中心に紹介していきます。

1 2 3 4 5 6 →

はじめに

 JavaScriptと連携した開発では、クライアントとサーバ間のデータのやり取りもAjaxを使い、ページ遷移することなく行われます。Vaadinではさらに一歩進められ、Javaのアプリケーションの中でやり取りする感覚でデータを扱うことができます。

 もちろん、従来から行われているような「サーブレットにアクセスしてデータを取ってくる」というような方法も可能です。しかしそれよりも、データをモデルとして用意し、オブジェクティブに扱う方法がよりVaadinらしいスタイルと言えるでしょう。

対象読者

  • Javaで手ごろなフレームワークを探している技術者
  • 最近のフレームワークをごくざっと理解しておきたい方
  • Web開発の手法がどうも気に入らない、と常々考えているJavaプログラマ

外部からのデータ取得

 まずは、コンテナへの表示を外部から取得してみましょう。コンテナを多用するようになってくると、そこに表示する内容をどのように取得するかも重要な課題となってきます。特に、多量のデータを取得し表示するような場合、外部から必要な情報を取得して表示する仕組みが必要となります。

 誰もが考えるのは「特定のアドレスにアクセスして必要なデータをテキストとして取得し表示する」という方法でしょう。実は、Vaadinには、そのための専用の便利な機能はありません。ストリームを使って必要な情報を取り出して利用することになります。

 実際に、簡単なサンプルを作ってみましょう。まず、テキストを出力する簡単なサーブレットを用意してみます。ここでは「DataServlet」という名前で次のように作成をしておきます。

package com.example.myvaadin;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DataServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public DataServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("sjis");
		response.setContentType("text/plain");
		PrintWriter out = response.getWriter();
		out.write("<h2>外部からのデータ</h2><p>これは、外部から取得したテキストです。</p>");
	}
}

 ここでは、doGetでテキストを出力するシンプルな処理を用意してあります。これはweb.xmlで次のように登録します。

<servlet>
	<description></description>
	<display-name>DataServlet</display-name>
	<servlet-name>DataServlet</servlet-name>
	<servlet-class>com.example.myvaadin.DataServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>DataServlet</servlet-name>
	<url-pattern>/data</url-pattern>
</servlet-mapping>

プロフィール
掌田 津耶乃 ショウダ ツヤノ

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆活動をする傍ら、ログハウスの普及活動にいそしんでいる。(掌田津耶乃のWebサイトはこちら

※現在、新しい入門記事の投稿サイト「libro」を公開中。またGoogle+プロフィールはこちら


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト