<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC
  "-//Apache Software Foundation//DTD XDOC 1.0//EN"
  "http://maven.apache.org/dtd/xdoc_1_0.dtd">

<document>
  <properties>
    <title>Web　の設計と実装 - Web Design and Implementation</title>
    <author email="kurokkie@users.sourceforge.jp">kurokkie</author>
  </properties>
  <body>
    <section name="Web の設計と実装">
      <p>
最後に、ユーザインターフェースと画面遷移、セキュリティなど、Web アプリケーション固有のロジックを実装して、機能
を完成させます。
      </p>
      <div class="info">
        <h5>Note</h5>
        <p>
Web の構築に関する説明は簡潔なものにとどめます。将来的に Web 層の実装フレームワークを Spring Web
Flow 1 から <a href="http://www.springframework.org/webflow">Spring Web Flow 2</a>
に移行する予定ですが、その際は Web の実装方式が大幅に変更されることが予想され、このページの内容も大きく変
わる可能性があるためです。
        </p>
      </div>
    </section>
    <section name="ブログ作成/更新フロー">
      <p>
ブログ作成とブログ編集で共通的に使用する、画面遷移を作成します。これにより、二つの機能で画面遷移を再利用で
きます。アクセス権限を設定する画面とブログ概要（メッセージ）を作成する画面は既に用意されているため、これらも既
存の画面遷移を再利用できます。
      </p>
      <ol>
        <li>
ブログコード入力画面となる JSP ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/blog/Form.jsp?root=unitedfront2&amp;view=markup">Form.jsp</a>
を作成し、そこで利用するメッセージをメッセージファイル message_xx.properties に追加します。
        </li>
        <li>
作成した From.jsp を <code>blog.Form</code> という名で Tiles 定義ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/blog/tiles-defs.xml?root=unitedfront2&amp;view=markup">tiles-defs.xml</a>
に追加定義します。
        </li>
        <li>
アクションクラス <a href="apidocs/org/unitedfront2/web/controller/blog/FormAction.html"><code>FormAction</code></a>
とフロー定義 <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/flows/blog/form-sub-flow.xml?root=unitedfront2&amp;view=markup">form-sub-flow.xml</a>
を作成します。
        </li>
      </ol>
    </section>
    <section name="ブログ作成">
      <p>
基本的に上述のサブフローを利用し、タイトルなどの一部の表示部分をカスタマイズします。
      </p>
      <ol>
        <li>
アクションクラス <a href="apidocs/org/unitedfront2/web/controller/blog/CreateAction.html"><code>CreateAction</code></a>
とフロー定義 <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/flows/blog/create-flow.xml?root=unitedfront2&amp;view=markup">create-flow.xml</a>
を作成し、必要に応じてエラー処理などに用いるメッセージをメッセージファイル message_xx.properties に追加
します。
        </li>
      </ol>
    </section>
    <section name="ブログ参照">
      <ol>
        <li>
ブログコード入力画面となる JSP ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/blog/View.jsp?root=unitedfront2&amp;view=markup">View.jsp</a>
を作成し、そこで利用するメッセージをメッセージファイル message_xx.properties に追加します。
        </li>
        <li>
作成した View.jsp を <code>blog.View</code> という名で Tiles 定義ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/blog/tiles-defs.xml?root=unitedfront2&amp;view=markup">tiles-defs.xml</a>
に追加定義します。
        </li>
        <li>
アクションクラス <a href="apidocs/org/unitedfront2/web/controller/blog/ViewAction.html"><code>ViewAction</code></a>
とフロー定義 <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/flows/blog/view-flow.xml?root=unitedfront2&amp;view=markup">view-flow.xml</a>
を作成します。
        </li>
        <li>
パラメータではなく URL パスでアクセスできるよう、<a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/urlrewrite.xml?root=unitedfront2&amp;view=markup">urlrewrite.xml</a>
にブログ参照の URL を追記します。
        </li>
        <li>
匿名ユーザもブログへアクセスできるよう、<a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/applicationContext-security.xml?root=unitedfront2&amp;view=markup">applicationContext-security.xml</a>
へ URL を追記します。
        </li>
      </ol>
    </section>
    <section name="ブログ更新">
      <p>
基本的に上述のサブフローを利用し、タイトルなどの一部の表示部分をカスタマイズします。
      </p>
      <ol>
        <li>
アクションクラス <a href="apidocs/org/unitedfront2/web/controller/blog/UpdateAction.html"><code>UpdateAction</code></a>
とフロー定義 <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/flows/blog/update-flow.xml?root=unitedfront2&amp;view=markup">update-flow.xml</a>
を作成し、必要に応じてエラー処理などに用いるメッセージをメッセージファイル message_xx.properties に追加
します。
        </li>
        <li>
パラメータではなく URL パスでアクセスできるよう、<a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/urlrewrite.xml?root=unitedfront2&amp;view=markup">urlrewrite.xml</a>
にブログ更新の URL を追記します。
        </li>
      </ol>
    </section>
    <section name="ブログ削除">
      <ol>
        <li>
アクションクラス <a href="apidocs/org/unitedfront2/web/controller/blog/DeleteAction.html"><code>DeleteAction</code></a>
とフロー定義 <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/flows/blog/delete-flow.xml?root=unitedfront2&amp;view=markup">delete-flow.xml</a>
を作成し、必要に応じてエラー処理などに用いるメッセージをメッセージファイル message_xx.properties に追加
します。
        </li>
      </ol>
      <div class="info">
        <h5>Note</h5>
        <p>
削除処理完了後はブログ一覧画面へリダイレクトするため、ブログ削除では urlrewrite.xml の設定を割愛してい
ます。
        </p>
      </div>
    </section>
    <section name="ブログウィジェット">
      <p>
ブログウィジェットは機能間で共通的に利用される小窓であるため、上記の機能とは若干開発手順が異なります。
      </p>
      <ol>
        <li>
ウィジェット画面となる JSP ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/blog/PublicBlogsWidget.jsp?root=unitedfront2&amp;view=markup">PublicBlogsWidget.jsp</a>
を作成し、そこで利用するメッセージをメッセージファイル message_xx.properties に追加します。
        </li>
        <li>
アクションクラスに対応するコントローラ <a href="apidocs/org/unitedfront2/web/controller/blog/PublicBlogsWidgetPreparer.html"><code>PublicBlogsWidgetPreparer</code></a>
を作成します。
        </li>
        <li>
作成した PublicBlogsWidge.jsp と <code>PublicBlogsWidgetPreparer</code> をそれぞれ
<code>blog.PublicBlogsWidget</code> という名で Tiles 定義ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/blog/tiles-defs.xml?root=unitedfront2&amp;view=markup">tiles-defs.xml</a>
に追加定義します。
        </li>
        <li>
ルートに位置する Tiles 定義ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/webapp/WEB-INF/view/tiles-defs.xml?root=unitedfront2&amp;view=markup">tiles-defs.xml</a>
のテンプレート <code>layout</code> に、上記の Tiles で定義したブログウィジェット <code>blog.PublicBlogsWidget</code>
を <code>widget.PUBLIC_BLOGS</code> という名で登録します。
        </li>
        <li>
メッセージファイル message_xx.properties に、ブログウィジェット名に対応するメッセージキー <code>widget.type.PUBLIC_BLOGS</code>
を追加します。
        </li>
        <li>
ドメイン層に定義されている <a href="apidocs/org/unitedfront2/domain/Widget.html"><code>Widget</code></a>
クラスにブログウィジェット <code>PUBLIC_BLOGS</code> を追加します。
        </li>
        <li>
このウィジェットを匿名ユーザに見せる場合は、<a href="apidocs/org/unitedfront2/web/handler/WidgetInterceptor.html"><code>WidgetInterceptor</code></a>
に追加登録します。
        </li>
        <li>
データベーススキーマ定義ファイル <a href="http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/trunk/src/main/sql/unitedfront2-ddl.sql?root=unitedfront2&amp;view=markup">unitedfront2-ddl.sql</a>
の <code>Widget</code> 表に、<code>PUBLIC_BLOGS</code> を追加します。
        </li>
      </ol>

<script type="text/javascript">
var ID='100354378-sbs_web';
var AD=1;
var FRAME=0;
</script>
<script src="http://j1.ax.xrea.com/l.j?id=100354378" type="text/javascript"></script>
<noscript>
<a href="http://w1.ax.xrea.com/c.f?id=100354378" target="_blank"><img src="http://w1.ax.xrea.com/l.f?id=100354378&amp;url=X" alt="AX" border="0"/></a>
</noscript>

    </section>
  </body>
</document>
