<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://townhost.townsystem.co.jp/paraselene/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://townhost.townsystem.co.jp/paraselene/feed.php">
        <title>Paraselene - Java Webアプリケーション フレームワーク 1.tutorial1</title>
        <description></description>
        <link>http://townhost.townsystem.co.jp/paraselene/</link>
        <image rdf:resource="http://townhost.townsystem.co.jp/paraselene/lib/images/favicon.ico" />
       <dc:date>2023-01-04T15:34:57+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/start"/>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-1"/>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-2"/>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-3"/>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-4"/>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-5"/>
                <rdf:li rdf:resource="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-6"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://townhost.townsystem.co.jp/paraselene/lib/images/favicon.ico">
        <title>Paraselene - Java Webアプリケーション フレームワーク</title>
        <link>http://townhost.townsystem.co.jp/paraselene/</link>
        <url>http://townhost.townsystem.co.jp/paraselene/lib/images/favicon.ico</url>
    </image>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/start">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-15T10:16:03+00:00</dc:date>
        <title>基本概念</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/start</link>
        <description>Paraselene の基本概念を学ぶためのチュートリアルです。

	*  チュートリアル1(モックアップ)
	*  チュートリアル2(view と logic)
	*  チュートリアル3(DummyPage)
	*  チュートリアル4(履歴管理)
	*  チュートリアル5(Gate)
	*  チュートリアル6(SuperPage)</description>
    </item>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-1">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-21T17:59:45+00:00</dc:date>
        <title>チュートリアル1(モックアップ)</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-1</link>
        <description>モックアップの作成


実際に簡単なサイトを構築してみます。まずはモックアップの作成です。





&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;meta http-equiv=&quot;Content-Style-Type&quot; content=&quot;text/css&quot;&gt;
&lt;title&gt;ログイン&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form action=&quot;hello.html&quot;&gt;
ユーザーID &lt;input size=&quot;20&quot; type=&quot;text&quot; name=&quot;user_id&quot;&gt;&lt;br&gt;
パスワード &lt;input size=&quot;20&quot; type=&quot;password&quot; name=&quot;password&quot;&gt;&lt;br&gt;
&lt;br&gt;
&lt;input type=&quot;image&quot; src=&quot;button1.gif&quot;&gt;&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;…</description>
    </item>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-2">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-31T15:17:03+00:00</dc:date>
        <title>チュートリアル2(view と logic)</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-2</link>
        <description>では、実際にコーディングしてみます。必要に応じて、Paraselene API を参照して下さい。

自動生成されるソースファイル

生成されたスケルトンソースファイルは以下のようになっています。</description>
    </item>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-3">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-21T18:00:28+00:00</dc:date>
        <title>チュートリアル3(DummyPage)</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-3</link>
        <description>試しにブラウザに直接 http://localhost:8080/tutorial1/on.ex257q.na(Hello 画面)を入力して表示するとブラウザにエラー 500 が返されました。

例外が発生すると、標準エラー出力に例外のスタックトレースが出力されますので、catalina.out ログに記録されます。

※Gateクラスの onError メソッドにも通知されます。</description>
    </item>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-4">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-21T18:00:46+00:00</dc:date>
        <title>チュートリアル4(履歴管理)</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-4</link>
        <description>ログイン・ログアウトを繰り返していると、ログインページのユーザーID欄がいつも前回値のままになっている事に気付くと思います。

Paraselene は過去に表示したページインスタンスを保持しており(履歴と呼びます)、再度同じ画面が要求されると履歴からそのインスタンスを取り出してくるため、入力値も保存されたままとなっています。

ページA → ページB → ページC

例えばこのような画面遷移にてページCが表示されたとすると、履歴にはA～Cが順番にスタックされて保存されており、履歴に該当ページが存在すれば、それを使用します。

そして、ページCからページAへ画面遷移してくると、ページAを残してBとCの２つは履歴から削除されます(ページAより最近アクセスされたページ全てが削除されます)。

会員登録画面を例に挙げれば、

会員情報入力ページ → 入力内容確認ページ → 登録ありがとうございました

この時、先頭へ戻るという事は入力のやり直しか、登録が正常終了した(会員登録トランザクションが終了した)という事です。

そのため、ページBとCはもう不要なインスタンスであると判断します。

履…</description>
    </item>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-5">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-13T12:39:20+00:00</dc:date>
        <title>チュートリアル5(Gate)</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-5</link>
        <description>例えばカード決済処理の決済ボタンがあるとします。

ブラウザには「戻る」機能があるため、決済後に「戻る」をし、再度決済ボタンを押す事が可能です。

もし不適切な内部実装であれば、２重に決済してしまう可能性があります。</description>
    </item>
    <item rdf:about="http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-6">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-21T18:01:17+00:00</dc:date>
        <title>チュートリアル6(SuperPage)</title>
        <link>http://townhost.townsystem.co.jp/paraselene/doku.php/1.tutorial1/tutorial1-6</link>
        <description>SuperPage

最後に SuperPage クラスについての説明です。

先に簡略化して説明しましたが、実際には以下のように処理されています。

	*  Web サーバーへ HTTP リクエスト発生。
	*  Gate クラスが URL を検証し、遷移元ページを特定します。例えば LoginHtml クラスとします。
	*  SuperPage クラス(LoginHtml の親)の input() が呼び出されます。
	*  SuperPage の input() の中から、LoginHtml クラスの inputMain() が呼び出され、inputMain() の戻り値をそのまま input() がリターンします。
	*  Gate クラスは input() の戻り値より、遷移先ページを特定します。例えば HelloHtml クラスとします。
	*  SuperPage クラス(HelloHtml の親)の output() が呼び出されます。
	*  SuperPage の output()の中から、HelloHtml クラスの outputMain() が呼び出され、ou…</description>
    </item>
</rdf:RDF>
