「Struts2 単純なアプリケーションの作成 タグの利用」の版間の差分
(ページの作成:「==Struts2 単純なアプリケーションの作成 タグの利用== [Struts2] {{amazon|4839928444}} *参照 **http://struts.apache.org/2.x/docs/using-tags.html…」) |
|||
(同じ利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
− | ==Struts2 単純なアプリケーションの作成 タグの利用== | + | ==[[Struts2 単純なアプリケーションの作成 タグの利用]]== |
− | [Struts2] | + | [[Struts2]] | |
{{amazon|4839928444}} | {{amazon|4839928444}} | ||
9行目: | 9行目: | ||
---- | ---- | ||
[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]では、簡単なメッセージをページに出力した。 | [Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]では、簡単なメッセージをページに出力した。 | ||
− | + | 「タグの利用」で、アプリケーションの他のアクションへの[[リンク]]を含むページを作成する。 | |
− | + | [[Webアプリケーション]]は伝統的なウェブサイトとは、動的なレスポンスを生成できる点で異なる。ページからの動的データの参照を簡単にするために、フレームワークはタグセットを提供する。いくつかのタグは、値を与えることにより、標準のHTMLの模倣をする。その他は、標準ではないが有用である。 | |
− | + | [[Struts]]タグのひとつの使い方として、他のWebリソースへの特にローカルアプリケーションの他のリソースへのリンクを生成することがある。 | |
− | === | + | ===[[リンク]]を張る=== |
− | ===== | + | =====ウェブアプリケーションでは、通常、他のページへリンクを利用する。[[Struts]]のWelcomeページに、他のアクションへのリンクを追加してみる。===== |
[[File:1152_struts_tag_01.JPG]] | [[File:1152_struts_tag_01.JPG]] | ||
− | + | <%@ taglib prefix="s" uri="/struts-tags" %> | |
− | + | <%@ page pageEncoding="UTF-8"%> | |
− | + | <%@ page contentType="text/html;charset=UTF-8"%> | |
− | + | <html> | |
− | + | <head> | |
− | + | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
− | + | <title>ようこそ</title> | |
− | + | <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/> | |
− | + | </head> | |
− | + | <body> | |
− | + | <h3>メニュー</h3> | |
− | + | <ul> | |
− | + | <li><a href="<s:url action="Show[[R]]egisterWindow"/>">登録</a></li> | |
− | + | <li><a href="<s:url action="Login"/>">ログイン</a></li> | |
− | + | </ul> | |
− | + | </body> | |
− | + | </html> | |
− | ===== | + | =====ロケールの変更にも[[リンク]]はよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。===== |
[[File:1153_struts_tag_02.JPG]] | [[File:1153_struts_tag_02.JPG]] | ||
− | + | <h3>[[言語]]</h3> | |
− | + | <ul> | |
− | + | <li> | |
− | + | <s:url id="url" action="HelloWorld"> | |
− | + | <s:param name="request_locale">ja</s:param> | |
− | + | </s:url> | |
− | + | <s:a href="%{url}">日本語</s:a> | |
− | + | </li> | |
− | + | <li> | |
− | + | <s:url id="url" action="HelloWorld"> | |
− | + | <s:param name="request_locale">en</s:param> | |
− | + | </s:url> | |
− | + | <s:a href="%{url}">English</s:a> | |
− | + | </li> | |
− | + | </ul> | |
=====どのように動くのか===== | =====どのように動くのか===== | ||
− | + | <blockquote>{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別の[[Struts]]タグでリンクを生成している。</blockquote> | |
− | * | + | *リソース[[リンク]] |
− | * | + | *ダイレクト[[リンク]] |
− | * | + | *パラメータつき[[リンク]] |
− | ==== | + | ====リソース[[リンク]]==== |
− | まずは、head | + | まずは、head 要素で、[[HTML]]リンクタグにURLへの参照を埋め込むのにurlタグを利用している。 |
− | + | <link href="<s:url value="/css/tutorial.css"/>" | |
− | rel="stylesheet" type="text/css"/ | + | rel="stylesheet" type="text/css"/> |
※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。 | ※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。 | ||
− | ==== | + | ====ダイレクト[[リンク]]==== |
上記の「メニュー」セクションで、アクションへの参照のために利用している。 | 上記の「メニュー」セクションで、アクションへの参照のために利用している。 | ||
− | + | <li><a href="<s:url action="Show[[R]]egisterWindow"/>">登録</a></li> | |
− | + | [[リンク]]が描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。 | |
− | + | 必要に応じ、タグは[[Java]] セッション IDと共にリンクのURLエンコードも行為、リクエストをまたがって、[[Java]]セッションが保たれる。 | |
− | ==== | + | ====パラメータつき[[リンク]]==== |
− | 最後は、上図の「言語」セクションでは、urlタグを、param、a | + | 最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含む[[リンク]]を作成しています。 |
− | + | <s:url id="url" action="Welcome"> | |
− | + | <s:param name="request_locale">en</s:param> | |
− | + | </s:url> | |
− | + | <s:a href="%{url}">English</s:a> | |
− | param タグは、パラメータ "?request_locale=en" を Weclome Action | + | param タグは、パラメータ "?request_locale=en" を Weclome Action U[[R]]Lに付加し、"url"という名前で保持します。 |
− | a タグは、"url" | + | a タグは、"url"の参照を、ハイパー[[リンク]]にセットします。 |
− | Any number of parameters can be added to the | + | Any number of parameters can be added to the U[[R]]I by adding more param etags. |
====ワイルドカードマッピング==== | ====ワイルドカードマッピング==== | ||
− | + | Welcomeページが単なる[[リンク]]である場合、アクションクラスは必要ない。 | |
− | + | しかしながら、それでもマッピングしたほうがよいのは、アクションU[[R]]Iを利用できるからである。 | |
− | + | もし、ページに[[リンク]]せず、アクションにしか[[リンク]]しないなら、あとで簡単にアクションクラスを追加できる。 | |
− | + | <action name="Welcome"> | |
− | + | <result>/welcome.jsp</result> | |
− | + | </action> | |
− | + | アプリケーションを作るとき、しばしば直接ページに[[リンク]]を張ろうとする。 | |
プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。 | プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。 | ||
− | + | <action name="*"> | |
− | + | <result>/{1}.jsp</result> | |
− | + | </action> | |
===データ入力フォーム=== | ===データ入力フォーム=== | ||
− | + | たいていのアプリケーションはデータ入力フォームを利用する。[[Struts]]タグを使えば入力フォームを簡単に作成できる。 | |
[[File:1154_struts_tag_03.JPG]] | [[File:1154_struts_tag_03.JPG]] | ||
− | + | <%@ taglib prefix="s" uri="/struts-tags" %> | |
− | + | <%@ page pageEncoding="UTF-8"%> | |
− | + | <%@ page contentType="text/html;charset=UTF-8"%> | |
− | + | <html> | |
− | + | <head> | |
− | + | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
− | + | <title>登録</title> | |
− | + | <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/> | |
− | + | </head> | |
− | + | <body> | |
− | + | <h3>登録</h3> | |
− | + | <s:form action="[[R]]egister"> | |
− | + | <s:textfield label="ユーザ名" name="userId" /> | |
− | + | <s:password label="パスワード" name="password" /> | |
− | + | <s:submit value="登録" /> | |
− | + | </s:form> | |
− | + | </body> | |
− | + | </html> | |
=====どのように動くのか===== | =====どのように動くのか===== | ||
− | *JSPエンジンは、taglib | + | *JSPエンジンは、taglib のリファレンスをページの先頭から読み、[[Struts]] タグを プレフィックス "s"でこのページで利用するためにロードする。 |
− | * | + | *[[Struts]]タグ(テキストフィールド、パスワード、サブミット)はそれぞれ適切なラベルとコントロールタイプを発行する。 |
====覚えておくこと==== | ====覚えておくこと==== | ||
− | + | [[Webアプリケーション]]を記述する上で最も困難な箇所はページのコーディングだ。 | |
フレームワークはページのコーディングをカスタムタグにより、簡単にする。 | フレームワークはページのコーディングをカスタムタグにより、簡単にする。 | ||
− | Struts タグは、フレームワークにより、動的なデータにアクセスできる。 | + | [[Struts]] タグは、フレームワークにより、動的なデータにアクセスできる。 |
タグは、ページ生成に必要な数多くのマークアップを削減する。 | タグは、ページ生成に必要な数多くのマークアップを削減する。 | ||
2020年2月16日 (日) 04:32時点における最新版
Struts2 単純なアプリケーションの作成 タグの利用
Struts2 |
[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]では、簡単なメッセージをページに出力した。 「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。
Webアプリケーションは伝統的なウェブサイトとは、動的なレスポンスを生成できる点で異なる。ページからの動的データの参照を簡単にするために、フレームワークはタグセットを提供する。いくつかのタグは、値を与えることにより、標準のHTMLの模倣をする。その他は、標準ではないが有用である。
Strutsタグのひとつの使い方として、他のWebリソースへの特にローカルアプリケーションの他のリソースへのリンクを生成することがある。
リンクを張る
ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。
<%@ taglib prefix="s" uri="/struts-tags" %> <%@ page pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ようこそ</title> <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/> </head> <body> <h3>メニュー</h3> <ul> <li><a href="<s:url action="ShowRegisterWindow"/>">登録</a></li> <li><a href="<s:url action="Login"/>">ログイン</a></li> </ul> </body> </html>
ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。
<h3>言語</h3> <ul> <li> <s:url id="url" action="HelloWorld"> <s:param name="request_locale">ja</s:param> </s:url> <s:a href="%{url}">日本語</s:a> </li> <li> <s:url id="url" action="HelloWorld"> <s:param name="request_locale">en</s:param> </s:url> <s:a href="%{url}">English</s:a> </li> </ul>
どのように動くのか
<blockquote>{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別のStrutsタグでリンクを生成している。</blockquote>
リソースリンク
まずは、head 要素で、HTMLリンクタグにURLへの参照を埋め込むのにurlタグを利用している。
<link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet" type="text/css"/>
※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。
ダイレクトリンク
上記の「メニュー」セクションで、アクションへの参照のために利用している。
<li><a href="<s:url action="ShowRegisterWindow"/>">登録</a></li>
リンクが描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。 必要に応じ、タグはJava セッション IDと共にリンクのURLエンコードも行為、リクエストをまたがって、Javaセッションが保たれる。
パラメータつきリンク
最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含むリンクを作成しています。
<s:url id="url" action="Welcome"> <s:param name="request_locale">en</s:param> </s:url> <s:a href="%{url}">English</s:a>
param タグは、パラメータ "?request_locale=en" を Weclome Action URLに付加し、"url"という名前で保持します。 a タグは、"url"の参照を、ハイパーリンクにセットします。
Any number of parameters can be added to the URI by adding more param etags.
ワイルドカードマッピング
Welcomeページが単なるリンクである場合、アクションクラスは必要ない。 しかしながら、それでもマッピングしたほうがよいのは、アクションURIを利用できるからである。 もし、ページにリンクせず、アクションにしかリンクしないなら、あとで簡単にアクションクラスを追加できる。
<action name="Welcome"> <result>/welcome.jsp</result> </action>
アプリケーションを作るとき、しばしば直接ページにリンクを張ろうとする。 プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。
<action name="*"> <result>/{1}.jsp</result> </action>
データ入力フォーム
たいていのアプリケーションはデータ入力フォームを利用する。Strutsタグを使えば入力フォームを簡単に作成できる。
<%@ taglib prefix="s" uri="/struts-tags" %> <%@ page pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登録</title> <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/> </head> <body> <h3>登録</h3> <s:form action="Register"> <s:textfield label="ユーザ名" name="userId" /> <s:password label="パスワード" name="password" /> <s:submit value="登録" /> </s:form> </body> </html>
どのように動くのか
- JSPエンジンは、taglib のリファレンスをページの先頭から読み、Struts タグを プレフィックス "s"でこのページで利用するためにロードする。
- Strutsタグ(テキストフィールド、パスワード、サブミット)はそれぞれ適切なラベルとコントロールタイプを発行する。
覚えておくこと
Webアプリケーションを記述する上で最も困難な箇所はページのコーディングだ。 フレームワークはページのコーディングをカスタムタグにより、簡単にする。 Struts タグは、フレームワークにより、動的なデータにアクセスできる。 タグは、ページ生成に必要な数多くのマークアップを削減する。
© 2006 矢木浩人