スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

純オブジェクト指向Webアプリケーション with Java

Railsで簡単なアプリを作ろうと思っていたが、先にJavaでも簡単にアプリケーションを作れることを示そうと思い、タスク管理のアプリケーションを作ってみた。

ORマッピング不要、データベースを使わないアプリケーション。全く大したものではないが、超小規模ならこれで十分。データはデータベースに保存せず、オブジェクトをそのままシリアライズしてファイルに保存する。なので、Tomcatがあれば、後は何のライブラリも加えることなく、データを扱うアプリケーションができる。(ランダムアクセスファイルではないので、メモリ上にすべて取り込まれ、変更の際もすべて出力されるので大量データには向かない)。

画面は2画面しかない。リスト表示画面と編集画面。これがリスト表示画面。
一覧に、タスク・日数・期限・優先度・ステータス・カテゴリ・作成日・更新日・備考からなるタスクのリストが表示される。列を選択してソートしたり、条件を指定してフィルターをかけることができる。これはすべてクリックリンクでjavascriptで即座に反映させる。


これが編集画面。ここで登録・更新・削除を行う。既存のタスクを元に新規にタスクを作ることもできる。

最初は、JSP+データクラスだけで作ったが、作りが悪いのでリファクタリングし、MVにし、そしてJSPからコントローラを分離して、MVCにした。また汎用性を高めるために、データの読み込み・出力は専用のManagerクラスを用意し、類似のアプリを簡単に作れるフレームワークにした。まあ、フレームワークというほど仰々しいものではないが。またシングルユーザのみ対応だったので、マルチユーザに対応するようにした。

これがクラス図。

まずTomcatの起動時にInitServletがRepositoryManagerをロードする。このServletはそのためだけに存在し、他では使用されない。RepositoryManagerは、オブジェクトを保存するパスやバックアップ数、リサイクルタイミングなど永続化に関する設定情報をweb.xmlから得る。

JSPはlist.jspとedit.jspとexecute.jsp。各JSPは、コントローラーであるTodoActionのインスタンスをセッションから取得する。TodoActionは、ユーザごとのTodoRepositoryオブジェクトを得る。これがModel。ユーザはBasic認証で認証するので、あらかじめtomcatのUserDatabase.xmlに登録しておく。

TodoRepositoryは、Todoオブジェクトのリスト他、リストの表示方法に関する情報を持つ。Todoオブジェクトがタスク1つに対応する。オブジェクトのソートはComparetorを使っている。

各JSPからTodoActionの相応メソッドを呼び出し、処理後、表示のためにTodoRepositoryやTodoオブジェクトを得って、JSP上にセットする。JSPではActionのメソッドの呼び出しとデータの取得以外、一切ロジックは書かない。
ただリダイレクトはJSPに書く。なので、strutsのActionServletのような中央集権的なコントローラはなく、画面遷移の制御はJSPで行う。

Utilクラスは、文字列の変換等のユーティリティを集めている。

簡素な作りのため、まだまだ修繕の余地はある。エラー画面も用意していない。validationはjavascriptで行っている。発展させていくとシンプルさは失われていく。

アプリの機能としても、ソートを逆順にしたり、ステータスを別個登録できるようにしたりとかいろいろ考えられる。

オブジェクトをそのままファイルに出力するのではなく、CSVやXMLでエクスポートしたい。クラス図ではその手のメソッドを書いたがまだ実装されていない。XMLとオブジェクトを交互に変換するには、Quickという便利なライブラリがある。使い方はここに書いてある。結構簡単そうだが、しばし時間が必要。

関連記事
スポンサーサイト

コメント

非公開コメント

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。