SHOEISHA iD

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

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

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

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

Javaで軽快に使える「軽量フレームワーク」特集
~小さなライブラリ1つで動くStripes Framework(3)

第19回

JSPページの作成

 では、表示するページとなるJSPを作成しましょう。ここでは、最初に表示するhelo.jspと、待ち状態時に表示される「wait.jsp」の2つのファイルを作成します。

helo.jsp
<%@ page language="java" contentType="text/html; charset=utf8"
    pageEncoding="utf8"%>
<%@ taglib prefix="stripes"
              uri="http://stripes.sourceforge.net/stripes.tld"%>

<stripes:layout-render name="/layout/default.jsp">
  <stripes:layout-component name="html_head">
    <title>Helo Sample</title>
  </stripes:layout-component>
  <stripes:layout-component name="contents">
    ※これは、レイアウトを使ったページの表示です。
    <stripes:form beanclass="jp.codezine.HeloActionBean">
      <stripes:submit name="longEvent" value="longEvent" />
    </stripes:form>
  </stripes:layout-component>
</stripes:layout-render>
wait.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="stripes"
              uri="http://stripes.sourceforge.net/stripes.tld"%>
<stripes:useActionBean var="helo" beanclass="jp.codezine.HeloActionBean" />

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="refresh" content="0"/>
    <title>Helo</title>
  </head>
  <body>
    <h1>Waiting...</h1>
    <p>counter: ${helo.counter}</p>
  </body>
</html>
ボタンを押すとwait.jspに移動し、リロードを繰り返す。1秒ごとにカウンタの数字が増えていき、9まで表示された後、helo.jspに戻る
ボタンを押すとwait.jspに移動し、リロードを繰り返す。1秒ごとにカウンタの数字が増えていき、9まで表示された後、helo.jspに戻る

 これで完成です。実際にhelo.jspにアクセスし、「longEvent」ボタンをクリックしてみましょう。wait.jspに移動し、ページをリロードしてはカウンタの数字を更新する、といったことを繰り返します。そしてカウンタが9より大きくなると、自動的にhelo.jspに戻ります。

 ここでは、まずhelo.jspにはフォームを用意し、<stripes:submit name="longEvent">と指定した送信ボタンを1つだけ用意しておきます。これでlongEventのイベントが発生し、これに対応するハンドルイベントが処理を行うようになります。

 wait.jsp側では、<stripes:useActionBean>でActionBeanを利用できるようにしておき、${helo.counter}を埋め込んでcounterが表示されるようにしています。また、<meta http-equiv="refresh" content="0"/>タグを用意し、ページを更新するようにしておきます。これでページのリロードを繰り返すと、一定間隔でカウンタの値が増えて表示されるわけです。

 見たところ、ロングイベントのための特有の記述はありません。ActionBeanにアノテーションを1つ用意しただけで、後はStripesとプラグインがすべて自動的に処理してくれます。また、ここではページをリロードして表示を更新されるようにしましたが、Ajaxを利用すれば更にスマートに表示できるでしょう。

まとめ

 今回は、Stripesと拡張用プラグイン・ライブラリを使った機能の中からいくつかピックアップして紹介しました。3回の記事を見ても、まだまだ足りない機能はあると感じることでしょう。例えば、データベースアクセスや、ユーザー認証関係などです。こうしたものは、実はStripesにはありません。データベースについては「HybernateやJDOを利用してください」という態度で、ユーザー認証も別途実装するサンプルコードが配布されているだけです。

 Stripesは、昨今の巨大化したフレームワークなどと比べると、恐ろしくシンプルです。そのため、使い始めは「あれもない、これもない」と不満を感じることでしょう。しかし、シンプルであるということは、これをベースに、自分なりのフレームワークを組み立てていく土台として使えるということでもあります。

 データベースアクセスならO/Rマッピングや永続化のためのライブラリが既にいろいろとあります。その他の機能にしても、Javaでは大抵いくつかのライブラリやフレームワークがすぐに見つかるはずです。もっとも基本となる「全体をコントロールする部分」さえあれば、それに必要に応じて使いやすいフレームワークやライブラリを付け足していくことで、自分なりのシステムを構築できることでしょう。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5261 2010/07/16 14:00

イベント

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

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

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

メールバックナンバー