出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

sessionについて   みえさん [2003/07/31 16:36:47] [3542]
  Re:sessionについて   暇人さん [2003/07/31 19:03:52] [3543]
    Re:sessionについて   みえさん [2003/08/01 10:16:06] [3545]
      Re:sessionについて   暇人さん [2003/08/01 11:06:57] [3546]
        Re:sessionについて   みえさん [2003/08/01 11:52:50] [3547]
          Re:sessionについて   暇人さん [2003/08/01 13:37:38] [3548]

[3542] sessionについて
投稿者:みえさん 2003/07/31 16:36:47
すみません!ASPの初心者ですが、本を読んでいて。どうしても分からない点があるのですが、是非教えって頂きたいです。

session("test")="AA"
RESPONSE.WRITE "<P>" & SESSION("TEST")



session.contents("test")="AA" 
RESPONSE.WRITE "<P>" & SESSION("TEST")
 
を実行しますと両方とも同じく”AA”を表示できます。。

そこで、質問ですが
session("test")="AA" と session.contents("test")="AA" の違いはなんですか?

[3543] Re:sessionについて
投稿者:暇人さん 2003/07/31 19:03:52
どうも、暇人です

Sessionオブジェクトはデフォルト(初期値)でContentsを見るようにできています。その為
Session("test") = "AA"

Session.Contents("text") = "AA"
は全く同じに動きます。

.contentsと書いたほうが、デバッグがしやすい。内部動作が速くなる
書かないほうが。ASPファイルが小さくなる。スペルミスを減らせる。
昔は、速度重視か、ディスク容量重視かで多少は違ったのかもしれませんが。
今のServerは性能良いし、ディスク容量も十分大きいので全然気にする必要がないと思います。
やはり好みの問題かと思います。

私は個人的には、デバッグのしやすさ。デフォルトなんていうシステム任せの値をなるべく使いたくない(自分で「これを使う」と宣言したい)
等から.Contentsを書くようにしています。


[3545] Re:sessionについて
投稿者:みえさん 2003/08/01 10:16:06
> どうも、暇人です
>
> Sessionオブジェクトはデフォルト(初期値)でContentsを見るようにできています。その為
> Session("test") = "AA"
> と
> Session.Contents("text") = "AA"
> は全く同じに動きます。
>
> .contentsと書いたほうが、デバッグがしやすい。内部動作が速くなる
> 書かないほうが。ASPファイルが小さくなる。スペルミスを減らせる。
> 昔は、速度重視か、ディスク容量重視かで多少は違ったのかもしれませんが。
> 今のServerは性能良いし、ディスク容量も十分大きいので全然気にする必要がないと思います。
> やはり好みの問題かと思います。
>
> 私は個人的には、デバッグのしやすさ。デフォルトなんていうシステム任せの値をなるべく使いたくない(自分で「これを使う」と宣言したい)
> 等から.Contentsを書くようにしています。
>
> 暇人さん へ

貴重なアドバイスありがとうございます。。

ASPの初心者なもので、暇人さんが書いてくださったアドバイスの中で、ちょっと分からないところがあって、もうちょっと詳しく説明していただけますでしょうか?!

>Sessionオブジェクトはデフォルト(初期値)でContentsを見るようにできています。その為

あと、私の理解でSESSIONオブジェクトを解釈すると、どのページに飛んでも、値を保持し共有できる一つの変数ということでよろしいですか?グローバル変数のような〜 でも、値を共有したいという点を注目すると、ASPページの<FORM>にPOSTとACTIONを入れて、飛ぶ先のページにRequestオブジェクトを使えば、同じく値を共有できるような気がします? 違うんですかね?

お手数ですが、アドバイスをお願いします!

[3546] Re:sessionについて
投稿者:暇人さん 2003/08/01 11:06:57

> ASPの初心者なもので、暇人さんが書いてくださったアドバイスの中で、ちょっと分からないところがあって、もうちょっと詳しく説明していただけますでしょうか?!
>
> >Sessionオブジェクトはデフォルト(初期値)でContentsを見るようにできています。その為
Session("test")
はセッションオブジェクトの要素testを指してますが。
セッションオブジェクトにはコレクション、プロパティ、メソッドがいろいろついてますね。
だからよく考えてみると
Session("test") = "AA"
はエラーしてもよさそうですが
勝ってにASP側で、何もないならContentsの事に違いない
と解釈してContentsを見に行きます。つまり内部動作で
Session("test") を Session.Contents("test")
に書き換えています。
Requestオブジェクトも同様に
Request("AA") とやると
QueryStringを見に行き、無いと次にForm次にCookies次に…と順に見ていきます。
ADOのRecordsetも何もないとFieldsのValueを見に行きます
ようするに省略しても動く、という事なのですが。デバッグしづらいし
引き継ぐ人がどえらい大変になります
数百行のASPが数十あるコンテンツがあったとして、その構文のどこを見てもPOSTやGETデータの受け取りに
Request("test")
等と書かれていたらどうします?これはFormの事でしょうか?もしかしたらCookiesかも知れませんね。実はServerValiablesの事かもしれません。これを理解するだけで何分掛かかることか。しかも後いくつもあるのです

> あと、私の理解でSESSIONオブジェクトを解釈すると、どのページに飛んでも、値を保持し共有できる一つの変数ということでよろしいですか?グローバル変数のような〜 でも、値を共有したいという点を注目すると、ASPページの<FORM>にPOSTとACTIONを入れて、飛ぶ先のページにRequestオブジェクトを使えば、同じく値を共有できるような気がします? 違うんですかね?
Session変数は、サーバー内のメモリにSessionが切れるまで居ます
HTTPCookiesといテクノロジーを使うため、Cookieが有効に成っていないとユーザーを認識できず。次々と別セッションを立てるため美味く動きません。しかし、ユーザーごとに変数をもつこの仕組みはとても便利です。使いようによっては大きな武器となるでしょう
アプリケーション毎に値を持つApplicatioon変数というものもあります
POSTやGETで値を飛ばすと。異なるページへ値を渡せますが。そこからさらに次のページへ値を渡すには、再びクライアントにsubmitしてもらう必要があります。一々次へ次へとPOSTさせるのは手間がかかり、綺麗ではないしデバッグも大変ですし、ソースを見ることによってどの値が使いまわされているのか。クライアントに知られてしまう問題が生じます
しかし、Sessionは異なるサーバー間では一意にならないし。サーバーのメモリを余計に食うのでコンテンツによっては使用できないという問題もあります


[3547] Re:sessionについて
投稿者:みえさん 2003/08/01 11:52:50
暇人さん へ

アドバイスありがとうございます。
本当にすみません。せっかくアドバイスしていただいたのですが、やっぱりちょっと分からないところがあります。もしよければ、もうちょっとアドバイスしてください。

ASPの本を読んでても、SESSIONとAPPLICATIONの概念がまだアヤフヤです。暇人はSESSIONが”ユーザーごとに変数をもつこの仕組みはとても便利です”とアドバイスしてくれました。
  ↓
ユーザーごとというのはどういう意味ですか?個々のパソコンという意味ですか?

あと”アプリケーション毎に値を持つAPPLICATION変数というものもあります”
  ↓
アプリケーション毎というのはどういう意味ですか?


もしよければ、教えってください。。お願いします!

[3548] Re:sessionについて
投稿者:暇人さん 2003/08/01 13:37:38

 始めにお客さんがきたその時にApplicationが開始されます
 global.asaに書き込むことでApplication毎に一意の値を使うことが
 できます。
 Application.Contents("喫茶店") = "暇人"
 ならApplication変数「喫茶店」はだれがみても「暇人」になります
 Webサーバーを再起動するとかIISを再起動するとか。物理的に壊れた
 とかがない限り、動いている間は変更しない限り
 Application変数「喫茶店」は「暇人」のままです 

 Sessionはその名の通り、セッション毎に作られます
 例えば
 Session.Contents("伝票")
が在ったとして。
 朝きた時に = "モーニングセット"
 を入れたとします。
 喫茶店「暇人」(このアプリケーションの名前ね)
 にいる間変更しない限り「伝票」には「モーニングセット」が入っています
 しかし、しばらく他の所に行って。(出来るのだASPに行ったとか)
 昼にまたきたとすると
 Session.Contents("伝票")は再び空になっています
 これがセッションです。
 クライアント毎のきた時毎に作られて。終われば廃棄されます
 HTTPCookiesテクノロジーを使用してヘッダーにSessionIDを生成しているため。クライアントがCookieを有効にしていないと作動しません。


 
 



TreeBBS For ASP V.0.1.3
Program By YasNet