0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📘 Vol.8.4:【Struts2】「s:action」「s:token」タグ徹底解説!〜アクション呼び出しと二重送信防止の最前線〜

Last updated at Posted at 2025-05-21

本記事は、Struts2でJSPを書く際に頻出するタグの基本を網羅する
📘「Vol.8.0〜8.7:Struts2 タグライブラリ入門編(基本操作・最低限の知識)」 シリーズの一部です。


今回はStruts2のJSPタグライブラリの中でも、特に動的処理や安全性を高めるために便利なタグ、「<s:action>」と「<s:token>」について詳しく解説します。


🔹 1. <s:action> タグとは?

<s:action> はJSP内からStruts2のアクションを呼び出し、その結果をJSPで利用できるタグです。
普通はコントローラのアクションがビューにデータを渡しますが、JSPから動的にアクションを呼ぶことで、より柔軟な表示制御が可能になります。

使い方の例

<s:action name="getBulletinboards" var="bulletinboardsAction" />
<s:iterator value="#bulletinboardsAction.bulletinboards">
  <p>掲示板名: <s:property value="name" /></p>
</s:iterator>
  • name属性に呼び出したいアクション名を指定

  • var属性で結果を格納する変数名を指定

  • 変数名は#をつけてプロパティアクセスに利用


🔹 2. タグとは?

<s:token> はフォームの二重送信防止に使うトークンを生成し、フォームに埋め込むタグです。
Struts2のTokenInterceptorと連携して、ユーザーの二重送信やブラウザの戻るボタンによる二重処理を防ぎます。

フォームでの使い方

<s:form action="InsertThread" method="post">
  <s:token />
  
  <div>
    スレッドタイトル:
    <s:textfield name="thread.thread_title" />
    <s:fielderror fieldName="thread.thread_title" />
  </div>
  
  <s:submit value="作成" />
</s:form>

TokenInterceptor の設定例(struts.xml)

<action name="InsertThread" class="com.example.action.InsertThreadAction">
  <interceptor-ref name="token" />
  <interceptor-ref name="defaultStack" />
  <result name="success">/success.jsp</result>
  <result name="invalid.token">/error/duplicateSubmit.jsp</result>
</action>
  • トークン不一致時はinvalid.token結果へ遷移

  • ここで重複送信を検知して処理を中断


🔹 3. まとめ

タグ 目的
<s:action> JSP内からアクション呼び出し、動的に結果を取得
<s:token> フォームの二重送信を防止するトークンを生成

これらを活用することで、Struts2のJSP画面をより安全かつ柔軟に設計可能です。


📚 関連記事(Vol.8シリーズ)


最後に

今回の解説がStruts2初心者の皆さんの助けになれば幸いです!
次回はより応用的なタグや実践例を取り上げていきます。お楽しみに!


この記事はjuehara-cryptoによる連載シリーズの一部です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?