| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Struts2 単純なアプリケーションの作成 タグの利用」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==Struts2 単純なアプリケーションの作成 タグの利用== [Struts2] {{amazon|4839928444}} *参照 **http://struts.apache.org/2.x/docs/using-tags.html…」)
 
1行目: 1行目:
 
==Struts2 単純なアプリケーションの作成 タグの利用==
 
==Struts2 単純なアプリケーションの作成 タグの利用==
[Struts2]
+
[[Struts2]]
 
{{amazon|4839928444}}
 
{{amazon|4839928444}}
  
8行目: 8行目:
 
**{{ref struts2_use_tag.lzh}}
 
**{{ref struts2_use_tag.lzh}}
 
----
 
----
[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]では、簡単なメッセージをページに出力した。
+
[[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]]では、簡単なメッセージをページに出力した。
 
「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。
 
「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。
  
18行目: 18行目:
 
=====ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。=====
 
=====ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。=====
 
[[File:1152_struts_tag_01.JPG]]
 
[[File:1152_struts_tag_01.JPG]]
  <%@ taglib prefix="s" uri="/struts-tags" %>
+
  &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;
  <%@ page pageEncoding="UTF-8"%>
+
  &lt;%@ page pageEncoding="UTF-8"%&gt;
  <%@ page contentType="text/html;charset=UTF-8"%>
+
  &lt;%@ page contentType="text/html;charset=UTF-8"%&gt;
  <html>
+
  &lt;html&gt;
  <head>
+
  &lt;head&gt;
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
   &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
   <title>ようこそ</title>
+
   &lt;title&gt;ようこそ&lt;/title&gt;
   <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/>
+
   &lt;link href="&lt;s:url value="/css/usettag.css"/&gt;" rel="stylesheet" type="text/css"/&gt;
  </head>
+
  &lt;/head&gt;
  <body>
+
  &lt;body&gt;
  <h3>メニュー</h3>
+
  &lt;h3&gt;メニュー&lt;/h3&gt;
  <ul>
+
  &lt;ul&gt;
   <li><a href="<s:url action="ShowRegisterWindow"/>">登録</a></li>
+
   &lt;li&gt;&lt;a href="&lt;s:url action="ShowRegisterWindow"/&gt;"&gt;登録&lt;/a&gt;&lt;/li&gt;
   <li><a href="<s:url action="Login"/>">ログイン</a></li>
+
   &lt;li&gt;&lt;a href="&lt;s:url action="Login"/&gt;"&gt;ログイン&lt;/a&gt;&lt;/li&gt;
  </ul>
+
  &lt;/ul&gt;
  </body>
+
  &lt;/body&gt;
  </html>
+
  &lt;/html&gt;
 
=====ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。=====
 
=====ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。=====
 
[[File:1153_struts_tag_02.JPG]]
 
[[File:1153_struts_tag_02.JPG]]
  <h3>言語</h3>
+
  &lt;h3&gt;言語&lt;/h3&gt;
  <ul>
+
  &lt;ul&gt;
   <li>
+
   &lt;li&gt;
     <s:url id="url" action="HelloWorld">
+
     &lt;s:url id="url" action="HelloWorld"&gt;
       <s:param name="request_locale">ja</s:param>
+
       &lt;s:param name="request_locale"&gt;ja&lt;/s:param&gt;
     </s:url>
+
     &lt;/s:url&gt;
     <s:a href="%{url}">日本語</s:a>
+
     &lt;s:a href="%{url}"&gt;日本語&lt;/s:a&gt;
   </li>
+
   &lt;/li&gt;
   <li>
+
   &lt;li&gt;
     <s:url id="url" action="HelloWorld">
+
     &lt;s:url id="url" action="HelloWorld"&gt;
       <s:param name="request_locale">en</s:param>
+
       &lt;s:param name="request_locale"&gt;en&lt;/s:param&gt;
     </s:url>
+
     &lt;/s:url&gt;
     <s:a href="%{url}">English</s:a>
+
     &lt;s:a href="%{url}"&gt;English&lt;/s:a&gt;
   </li>
+
   &lt;/li&gt;
  </ul>
+
  &lt;/ul&gt;
 
=====どのように動くのか=====
 
=====どのように動くのか=====
<blockquote>{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別のStrutsタグでリンクを生成している。</blockquote>
+
&lt;blockquote&gt;{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別のStrutsタグでリンクを生成している。&lt;/blockquote&gt;
  
 
*リソースリンク
 
*リソースリンク
62行目: 62行目:
 
まずは、head 要素で、HTMLリンクタグにURLへの参照を埋め込むのにurlタグを利用している。
 
まずは、head 要素で、HTMLリンクタグにURLへの参照を埋め込むのにurlタグを利用している。
  
  <link href="<s:url value="/css/tutorial.css"/>"  
+
  &lt;link href="&lt;s:url value="/css/tutorial.css"/&gt;"  
   rel="stylesheet" type="text/css"/>
+
   rel="stylesheet" type="text/css"/&gt;
  
 
※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。
 
※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。
70行目: 70行目:
 
上記の「メニュー」セクションで、アクションへの参照のために利用している。
 
上記の「メニュー」セクションで、アクションへの参照のために利用している。
  
  <li><a href="<s:url action="ShowRegisterWindow"/>">登録</a></li>
+
  &lt;li&gt;&lt;a href="&lt;s:url action="ShowRegisterWindow"/&gt;"&gt;登録&lt;/a&gt;&lt;/li&gt;
  
 
リンクが描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。
 
リンクが描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。
79行目: 79行目:
 
最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含むリンクを作成しています。
 
最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含むリンクを作成しています。
  
  <s:url id="url" action="Welcome">
+
  &lt;s:url id="url" action="Welcome"&gt;
   <s:param name="request_locale">en</s:param>
+
   &lt;s:param name="request_locale"&gt;en&lt;/s:param&gt;
  </s:url>
+
  &lt;/s:url&gt;
  <s:a href="%{url}">English</s:a>
+
  &lt;s:a href="%{url}"&gt;English&lt;/s:a&gt;
  
 
param タグは、パラメータ "?request_locale=en" を Weclome Action URLに付加し、"url"という名前で保持します。
 
param タグは、パラメータ "?request_locale=en" を Weclome Action URLに付加し、"url"という名前で保持します。
94行目: 94行目:
 
もし、ページにリンクせず、アクションにしかリンクしないなら、あとで簡単にアクションクラスを追加できる。
 
もし、ページにリンクせず、アクションにしかリンクしないなら、あとで簡単にアクションクラスを追加できる。
  
  <action name="Welcome">
+
  &lt;action name="Welcome"&gt;
   <result>/welcome.jsp</result>
+
   &lt;result&gt;/welcome.jsp&lt;/result&gt;
  </action>
+
  &lt;/action&gt;
  
 
アプリケーションを作るとき、しばしば直接ページにリンクを張ろうとする。
 
アプリケーションを作るとき、しばしば直接ページにリンクを張ろうとする。
 
プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。
 
プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。
  
  <action name="*">
+
  &lt;action name="*"&gt;
   <result>/{1}.jsp</result>
+
   &lt;result&gt;/{1}.jsp&lt;/result&gt;
  </action>
+
  &lt;/action&gt;
 
===データ入力フォーム===
 
===データ入力フォーム===
  
 
たいていのアプリケーションはデータ入力フォームを利用する。Strutsタグを使えば入力フォームを簡単に作成できる。
 
たいていのアプリケーションはデータ入力フォームを利用する。Strutsタグを使えば入力フォームを簡単に作成できる。
 
[[File:1154_struts_tag_03.JPG]]
 
[[File:1154_struts_tag_03.JPG]]
  <%@ taglib prefix="s" uri="/struts-tags" %>
+
  &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;
  <%@ page pageEncoding="UTF-8"%>
+
  &lt;%@ page pageEncoding="UTF-8"%&gt;
  <%@ page contentType="text/html;charset=UTF-8"%>
+
  &lt;%@ page contentType="text/html;charset=UTF-8"%&gt;
  <html>
+
  &lt;html&gt;
  <head>
+
  &lt;head&gt;
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
   &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
   <title>登録</title>
+
   &lt;title&gt;登録&lt;/title&gt;
   <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/>
+
   &lt;link href="&lt;s:url value="/css/usettag.css"/&gt;" rel="stylesheet" type="text/css"/&gt;
  </head>
+
  &lt;/head&gt;
  <body>
+
  &lt;body&gt;
  <h3>登録</h3>
+
  &lt;h3&gt;登録&lt;/h3&gt;
   <s:form action="Register">
+
   &lt;s:form action="Register"&gt;
     <s:textfield label="ユーザ名" name="userId" />
+
     &lt;s:textfield label="ユーザ名" name="userId" /&gt;
     <s:password label="パスワード" name="password" />
+
     &lt;s:password label="パスワード" name="password" /&gt;
     <s:submit value="登録" />
+
     &lt;s:submit value="登録" /&gt;
   </s:form>
+
   &lt;/s:form&gt;
  </body>
+
  &lt;/body&gt;
  </html>
+
  &lt;/html&gt;
 
=====どのように動くのか=====
 
=====どのように動くのか=====
 
*JSPエンジンは、taglib のリファレンスをページの先頭から読み、Struts タグを プレフィックス "s"でこのページで利用するためにロードする。
 
*JSPエンジンは、taglib のリファレンスをページの先頭から読み、Struts タグを プレフィックス "s"でこのページで利用するためにロードする。
137行目: 137行目:
 
タグは、ページ生成に必要な数多くのマークアップを削減する。
 
タグは、ページ生成に必要な数多くのマークアップを削減する。
  
[http://struts.apache.org/2.x/docs/tag-developers-guide.html タグ開発ガイド]
+
[[http://struts.apache.org/2.x/docs/tag-developers-guide.html タグ開発ガイド]]
[http://struts.apache.org/2.x/docs/ognl.html アクションメンバーへのアクセス、リクエスト属性等をページから取得 OGNL]
+
[[http://struts.apache.org/2.x/docs/ognl.html アクションメンバーへのアクセス、リクエスト属性等をページから取得 OGNL]]
  
 
{{amazon|193398807X}}
 
{{amazon|193398807X}}

2020年2月15日 (土) 08:06時点における版

Struts2 単純なアプリケーションの作成 タグの利用

Struts2


Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成では、簡単なメッセージをページに出力した。 「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。

Webアプリケーションは伝統的なウェブサイトとは、動的なレスポンスを生成できる点で異なる。ページからの動的データの参照を簡単にするために、フレームワークはタグセットを提供する。いくつかのタグは、値を与えることにより、標準のHTMLの模倣をする。その他は、標準ではないが有用である。

Strutsタグのひとつの使い方として、他のWebリソースへの特にローカルアプリケーションの他のリソースへのリンクを生成することがある。

リンクを張る

ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。

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="ShowRegisterWindow"/>">登録</a></li>
  <li><a href="<s:url action="Login"/>">ログイン</a></li>
</ul>
</body>
</html>
ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。

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 要素で、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タグを使えば入力フォームを簡単に作成できる。 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="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 タグは、フレームワークにより、動的なデータにアクセスできる。 タグは、ページ生成に必要な数多くのマークアップを削減する。

[タグ開発ガイド] [アクションメンバーへのアクセス、リクエスト属性等をページから取得 OGNL]