dポイントプレゼントキャンペーン実施中!

お世話になります。

只今、Servlet の学習で、SessionID について学んでいます。

参考書を読んでいると、クライアントとWebサーバのやりとりにおいて SessionID は Cookei として利用すると書いてあります。

Cookei を利用できない時は encodeURL(String url) を使用するなど、ど~も SessinID と Cookei の関係について、理解できません。

何か、わかりやすく解説しているサイト等がありましたら教えてください。

A 回答 (2件)

まず、クライアントのブラウザがCookieの使用を許していれば「SesionIDはCookieに書かれ」ます。

次に、Cookieの使用が許されていない場合は「SessionIDはencodeURLとして書かれ」ます。ここまではご理解されている様に見受けられますが?だったら悩む事はありません。この切り替えを行っているのはServlet-APIのクラスなので、HttpServletクラスを継承して利用するプログラマは、どちらの方法でSessionIDが渡されるのか、意識してプログラミングする必要は無いからです。
Servletのプログラミングを勉強する上では、SessionIDによる擬似セッションについて「なんだか知らないけどsessionオブジェクトに物をしまっておくと、次のリクエスト時に継続利用できる」くらいに漠然と認識していてもちっとも困りません。システムの具体的な実装方法を抽象化してアプリケーションプログラマの関心をアプリケーションロジックに集中させるのもServlet-APIの様な「フレームワーク」の存在意義です。(注:セキュリティや性能を意識するアーキテクトは知る必要があります。もしあなたがアーキテクトの卵なら、むしろ言語に依存せずにHTTPからしっかりアーキテクチャを学ぶべきです。)
今ここが詳しく理解できなくともServletプログラミングの学習が足踏みすることはないので、どんどんプログラミングして動かしてみましょう。そのうち、内部動作があっさり腑に落ちる時もくると思います。その方が学習効率良いですよ。

この回答への補足

 ご丁寧に有難うございます・・・こんなに書いて頂けると本当に嬉しいです。

・・・で、1つちょっとした質問なのですが、SessionID がクライアントのブラウザの Cookie に書かれると言う事は、セッション切れを起こした時に、クライアントは Cookie に書かれている SessionID を使って、再度セッションを復活させる事は可能なのでしょうか??

・・・思いっきり勘違いしていたら・・・すみません!?

補足日時:2002/08/23 10:04
    • good
    • 0

> SessionID がクライアントのブラウザの Cookie に書かれると言う事は、


> セッション切れを起こした時に、クライアントは Cookie に書かれている
> SessionID を使って、再度セッションを復活させる事は可能なのでしょうか?

セッション切れはサーバ上でSessionオブジェクトがなくなった(破棄された)場合(あるいは何かの理由でSessionIDと関連付けられるSessionオブジェクトを見つけられなくなった場合)に発生するものです。

このため、例えばクッキーにID(SessionID)が保存されていても、それが指す
Sessionオブジェクト自体が取得できないので、セッションを復活させるのは
不可能だと思いますが。。。

サーバ上で一定のタイミングでSessionオブジェクトの中身をファイルに
書き出したり、シリアライズするような機構を作れば復活もできるのでしょうが、、、
このような機構を導入した場合に、それをセッションと呼んでいいかどうかは疑問ですね
    • good
    • 0
この回答へのお礼

遅れましたが、回答ありがとう御座いました。

お礼日時:2002/09/02 16:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!