Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(HTTPのセッションってどうやって実現されているのですか?)
閲覧数:417
掲示板(HTTPのセッションってどうやって実現されているのですか?)
名前
匿名
題名 HTTPのセッションってどうやって実現されているのですか?
質問内容

質問を評価する
(0ポイント)
最近Tomcatを使って、Webアプリケーションを作り始めました。
各種情報(ユーザーID)等をセッションで覚えておくことが
出来るそうなのですが、セッションってそもそも
どうやって実現しているのですか?

例えば会社からサイトを見た場合、会社PCのIPは
プロキシ等で隠蔽されて、サイト側からはわかりませんよね?
パケット交換で通信しているわけですから、
今まで通信していた相手なのかどうかを
何らかの方法で判断する必要があるかと思います。

セッションというからにはOSIのセッション層に
関係するのかなと思いますが、TCP/IPより上は
意識して使ったことが無く、名前も知りません。

ご存知でしたらご教示頂きますようお願いします。
質問日時 2014-01-14 16:57:13
名前
匿名
回答内容

回答を評価する
(0ポイント)
そういうのは「セッション 仕組み」なんて感じでぐぐる。
今は便利なもので、大抵の答えが得られる。
回答日時 2014-01-14 19:24:56
名前
匿名
回答内容

回答を評価する
(0ポイント)
Tomcat? Session.sar ファイルにかきこまれてんよ。
回答日時 2014-01-15 09:58:02
名前
匿名
回答内容

回答を評価する
(0ポイント)
ご教示頂いたとおり、「仕組み」でぐぐったところ、
有益な情報が出てきました。ありがとうございます。

おかげさまで大分理解が進みましたが、まだもやもやしてます。
下記の理解で合ってますでしょうか?
自信無いところには?をつけています。

リクエストの中にセッションIDの情報が無い場合
→request.getSession()により、新規にHttpSessionが生成され、
  セッションIDも発行される。
  生成されたHttpSessionは、セッションIDと紐付けされ、
  セッションIDをキーに取り出せる形で自動的に(※)管理される。
  HttpSessionに紐付けて、情報を保持することが出来る。
  (session.setAttribute("xxx", xxx_value))
  HttpSessionは、有効期間を過ぎると自動的に破棄される。
  その際、HttpSessionに紐付けた情報も自動的に破棄される?
  有効期間の設定はweb.xmlで出来る。デフォルトは30分。
  getSessionすると、HttpServletResponseに
  セッションIDの情報が自動的にaddCookieされる?

  ※通常、プログラマが意識する必要は無い。

リクエストの中にセッションIDの情報がある場合
→request.getSession()により、対応するHttpSession
  を取得出来る。
  (内部的に、セッションIDをキーにしたHttpSessionの検索が
  行われる。)
  必要に応じてHttpSessionから情報を取り出す。
  session.getAttribute("xxx")
回答日時 2014-01-15 11:09:31
名前
匿名
回答内容

回答を評価する
(0ポイント)
とくにおかしなところはなさそうだが。
HttpSession#getSession(boolean)
HttpSession#invalidate()
あたりも見ておこう。
回答日時 2014-01-15 15:14:34
名前
匿名
回答内容

回答を評価する
(0ポイント)
回答有難うございます。

> HttpSession#getSession(boolean)

HttpSessionクラスにgetSession(boolean)はなさそうで
す。
HttpSessionクラスには、booleanを引数にとるメソッド

一つももありません。
booleanを戻り値とするメソッドは、isNew()のみです。

http://mergedoc.sourceforge.jp/tomcat-servletapi-
5-ja/javax/servlet/http/HttpSession.html
回答日時 2014-01-16 09:35:52
名前
匿名
回答内容

回答を評価する
(0ポイント)
ミスるなよqq

HttpSession#getSession(boolean)

HttpServletRequest#getSession(boolean)
回答日時 2014-01-16 11:19:24
名前
匿名
回答内容

回答を評価する
(0ポイント)
ほんとだ、アホなミスした…。
回答日時 2014-01-16 12:59:06
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道