質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Q&A

解決済

1回答

3252閲覧

Struts2のsタグについて

kanetugu_70e

総合スコア100

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

0グッド

1クリップ

投稿2019/03/05 16:54

編集2019/03/05 16:55

質問内容

初歩的な質問ばかりなのですが、struts2の主にsタグについて、ECサイトにおけるsessionの使用頻度について、計3項目確認をさせてください。
(各教材の写経でsタグを使う意図が見えない箇所がちらほら見られた為、確認をしております。)

[1]sタグとhtmlタグの差別化について

sタグの内、htmlタグに対応するものについては、sタグ独自の属性を使用しないのであれば、最終的な生成物(html)としてはhtmlタグで書くのと差異が無い為、htmlタグで記述するべきである?
(下記例のような場合、わざわざsタグを使用する必要はない)

### jsp(sタグ使用の場合) <s:form action="HomeAction"> <s:submit value="ホーム画面へ"/> </s:form> <s:a href="URL">URL</a>
### jsp(htmlタグのみの場合) <form action="HomeAction"> <input type="submit" value="ホーム画面へ"/> </form> <a href="URL">URL</a>

######[2]s:setタグやs:pushタグについて
これらのタグの利用価値がわかりません。
jspのコンパイルタイミングを考えると、Action側でValueStackやスコープに値を登録をする事と何が違うのかわかりません。jspで書かなくて済むならActionクラス側で記述するべきではないのでしょうか?

#####[3]session(SessionAwareインターフェース)の使用について
一般的なショッピングサイトで考えた場合、初心者考えだと何でもかんでもデータをsessionに入れて、各画面遷移先で使用したくなるのですが、sessionを保持しているサーバー側の事を考えると、ログイン情報など必要最低限のデータ格納にするべきかと思います。ただ、カート情報や、履歴等に頻繁にアクセスする場合、sessionにデータを格納しないとしたら、毎度DBにアクセスする事になりますが、それも無駄な気がします。
実用では、DBへの頻繁なアクセスとsessionの肥大化を比較した場合、どちらに重きを置くのが一般的なのでしょうか?
そもそも他にもっと良い方法があるだろ!という事であれば、是非ともご教授ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

[1] Strutsタグ(sタグ)は、HTMLの要素を出力させる以外にもテンプレートに従ったレイアウト+タグを生成しつつ出力する機能があります。ただしデフォルトのテンプレートが余計なタグを生み出してしまうため、simpleテーマを指定するのが現状でしょうか。

[2] 特定のタグに渡すための一時変数を格納する目的で使います。例えばタグ内でループ処理を書く際に、事前にActionクラスないしはJavaクラス内であらかじめすべての属性を生成しておく手もありますが、出力されるHTML/JSPにあわせてJavaクラス側で生成せず、一時変数をJSP内だけで保管して順次出力するのに使います。

[3] 一時的に保存しておきたい情報をHttpSessionへ格納するのか、ストレージへ格納するのかは、設計で判断するところです。利用される同時ユーザー数、一時保存しておきたい情報の量をあらかじめサイジングして、提供するアプリケーションにあわせて検討します。
個人的には、HttpSessionに格納するのはおっしゃる通りログイン情報など常に保存する内容くらいの少量にしておき、それでも数イベント内だけで保存しておきたい情報がある場合は、確実に破棄できるようHttpSessionを操作するためのルール作りをします。

投稿2019/03/07 15:38

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanetugu_70e

2019/03/11 09:30

ご回答ありがとうございます。返答が遅くなり申し訳ございません。 [2]項についてですが、変数定義(Value Stackへの登録)としては、s:setもJava側(クラス)も同義だが、その変数の使用目的を視覚的に明確にする為、と言った解釈でよろしいでしょうか?
A-pZ

2019/03/11 15:39

そうですね、確かに同じ意味になりますが、あえて言うなれば、JSP(画面内)内の実装でしか使わないものはJSP内で作るべきで、その理由として、Action側はJSPで表示するためだけの値を作らない方が、Actionクラスがシンプルにできるからです。具体的には、表形式で出力する際に、ループ変数を一時変数に出しておいて、一時変数の値によってスタイルシートのクラスを書き換えたいが、しかしその条件が複雑な場合など、ActionクラスからJSPへ渡すのは検索結果であって、スタイルシートはJSPなどのView側で担うべきなので、JSPで判定して、一時変数でsetに格納しておくなどがあります。
kanetugu_70e

2019/03/11 23:19

疑問点を解消する事が出来ました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問