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

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

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

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

267閲覧

Session 変数はだれが管理するの?

chankane

総合スコア139

JSP

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2018/08/15 04:52

編集2018/08/15 05:08

疑問に思っていること

こんにちは,こないだお世話になったものです.今回はセッション変数についてご教授くださいませ.

結論,セッション変数が存在する前提で Servlet の処理を書いてもよいのでしょうか?

例えば,
一覧の中から品物を選択する

(Servlet) Session に選択された商品情報をまとめたオブジェクトを格納(以降 item)

item を使って詳細を表示

次,
詳細画面から購入を確定

(Servlet) 購入処理 ← ここで先ほどの item を使ってもよいのか

購入完了画面

といった感じです.

なぜこのようなことを疑問に思ったのかというと,ほかの Servlet がどのような値を Session に保存しているか把握しないといけないからです.数が多くなるほど大変ではないでしょうか?

全て前の画面からの受け渡しにしてしまえば! あれ?それ Session の意味なくね?
と頭の中が?でいっぱいです.

こういったセッション変数の管理というのはどうやって管理(決定)するものなのでしょうか?
ここら辺の知識はあまりないので,初心者マークをつけさせていただきました.

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

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

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

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

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

m.ts10806

2018/08/15 04:56

具体的に文章で書かないと伝わりませんよ。 → Σ( ̄ロ ̄lll)
chankane

2018/08/15 04:58

”ゴミ”と書くのはストレートかな?とおもいまして.
m.ts10806

2018/08/15 04:59

データベースでも同じことが言えますが、そこは分かりますか?むしろ利用者が任意に登録できる仕組みであればシステム側が何を保管できるか決められるセッションの方が管理が楽 のようにも思いますが < Session に保存しているか把握しないといけないからです.数が多くなるほど大変ではないでしょうか?
m.ts10806

2018/08/15 05:00

わけわからない顔文字で誤魔化されるよりマシです。余計わかりづらい。他の表現はいくらでもあるし、そもそも初心者マークつけた意味がない。
guest

回答1

0

ベストアンサー

どの情報をSession属性に格納する、参照する、解放するかはアプリケーションの設計段階で考慮するところです。

すべての値を画面に渡して、必要な値を次のサーブレットに送信してしまえばよいのですが、画面から入力した値と、現在表示している画面とは無関係な値も送信しなければならず、さらには、その個数が数個ならまだ簡単ですが、多量になったときには非常に大変なコード量となるでしょう。

複数画面で共有できる領域がSession属性ですので、この特徴と、いつ格納する、いつ参照する、いつ解放するのかを考えるのは、画面からすべての値を送信するのとそこまで大きく違いはありません。

画面数が多くなってきたときには、共有したいパラメータのセットをクラスに設け、管理しやすくする手法もあります。

投稿2018/08/15 05:11

A-pZ

総合スコア12011

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

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

chankane

2018/08/15 05:31

>どの情報をSession属性に格納する、参照する、解放するかはアプリケーションの設計段階で考慮するところです。 なるほど,作成前からすべて決定してしまうんですね.知りませんでした. なんだかすっきりしました! ちなみに設計というのはどのレベルまで設計するのですか? この Servlet がどのタイミングでこの条件の時にこの名前で??を Session に格納する × Servlet 数 といったように細かく決めるものですか? >画面数が多くなってきたときには、共有したいパラメータのセットをクラスに設け、管理しやすくする手法もあります。 なるほどそんな方法もあるんですね(´・∀・`) これは自分で調べます.
A-pZ

2018/08/15 06:18

できれば名前をつけてあげるとわかりやくていいですね。1個1個のパラメータではなく、ざっくりと、セッションには「買い物かごの内容」や「ログインユーザ情報」など。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問