#topicpath
----
//ここにコンテンツを記述します。
#contents

*** formでPOSTするときの enctype="application/x-www-form-urlencoded" の話 [#kf216592]
このenctypeを指定することで、
-URL Encodeしたい(application/x-www-form-urlencoded)
-プレーンなテキストで(text/plain)
-メール形式(?)で(multipart/form-data)

などと送信するデータの形式を指定することができます。というかココを見て、ブラウザが適切にform内のデータをエンコーディングしてサーバに送信してくれます。例えば

 <form action="[URL]" method="post" enctype="[いろいろ]" name="form1">
   <input type="text" name="textfield" />
   <input type="submit" name="Submit" value="送信" />
 </form>

というフォームデータを送る場合

-enctype=application/x-www-form-urlencoded ならば
 POST /hoge/ HTTP/1.0
 Content-Type: text/plain
 
 --- ヘッダ省略 ---
 
 textfield=aaaaa
 Submit=送信

-text/plain ならば
 Content-Type: text/plain
 
 --- ヘッダ省略 ---
 
 textfield=aaaaa
 Submit=送信

-multipart/form-data ならば
 POST /hoge/ HTTP/1.1
 Content-Type: multipart/form-data; boundary=----
 -----------------------41184676334
 
 --- ヘッダ省略 ---
 
 
 
 -----------------------------41184676334
 Content-Disposition: form-data; name="textfield"
 
 aaa
 -----------------------------41184676334
 Content-Disposition: form-data; name="Submit"
 
 送信
 -----------------------------41184676334--
 

となります。ほかにもいろいろ指定できると思うんだけど、たとえば
 enctype="text/xml; charset=utf-8"
とやってもIE6.0SP1やFirefoxで1.5.0.1ではムシされて
 application/x-www-form-urlencoded
で送信されてました。何でかなあ。。

ちなみにファイルのアップロードなどは、multipart/form-dataを用いるみたいですね。


参考~
http://hp.vector.co.jp/authors/VA014833/mailto.html ~
http://jsgt.org/ajax/ref/test/enctype/test1.htm

***リロード [#y2fa1b6d]
 <meta http-equiv="Refresh" content="1;URL=DBTestServlet">

*** 文字列のALT [#sde24e73]
 <acronym title="World Wide Web">WWW</acronym>


*** 文法チェックサイト [#rd468a1a]
http://openlab.ring.gr.jp/k16/htmllint/htmllint.html



*** 改ページ [#f4003d7d]
 <BR STYLE="page-break-after: always">




***Cookieについて覚え書き [#d29a130f]
Cookieのパスとか、有効期限とかについてちょっと調べたので、覚え書き。

 Cookie cookieExample = new Cookie("CookieExample","CookieExample");
 cookieExample.setPath("/CookieExample");
 //↑ パスが/CookieExample で始まるもののみに有効(前方一致)
 cookieExample.setMaxAge(1); //<-有効時間を1秒にセット
 
 Cookie cookieExample2 = new Cookie("CookieExample2","CookieExample2");
 cookieExample2.setPath("/CookieExample2");
 //↑ パスが/CookieExample2 で始まるもののみに有効(前方一致)
 
 response.addCookie(cookieExample);
 response.addCookie(cookieExample2);

サーバ側でこのように指定してクライアントに返却したときに、ヘッダの内容と次にリクエストされる内容をモニタしてみました。まず上の処理後のレスポンスヘッダは
 Set-Cookie: CookieExample=CookieExample; Expires=Thu, 19-Aug-2004 06:11:13 GMT; Path=/CookieExample
 Set-Cookie: CookieExample2=CookieExample2; Path=/CookieExample2
て書かれていました。有効期限とか、パスとかを一緒に返してます。

で次に、次のリクエストヘッダは、
-/CookieExample にリクエストした場合
--CookieExampleの方は1秒以内なら有効期限内なのでCookieは
 Cookie: JSESSIONID=hogehoge; CookieExample=CookieExample
となります。1秒たってると期限切れなのでブラウザはなにもヘッダに載せません(nullで送出もされない)。
--CookieExample2の方はパスが違うのでブラウザはなにもヘッダに載せません(nullで送出もされない)。

-/CookieExample2 にリクエストした場合
--CookieExampleの方は1秒以内なら有効期限内なのでCookieは
 Cookie: JSESSIONID=hogehoge; CookieExample=CookieExample
となります。1秒たってると期限切れなのでブラウザはなにもヘッダに載せません(nullで送出もされない)。
--CookieExample2の方はパスが一致してるからブラウザはヘッダに載せてきます。

結果的に/CookieExample2にリクエストした場合にブラウザが載せるCookieは
 Cookie: CookieExample2=CookieExample2; JSESSIONID=hogehoge; CookieExample=CookieExample
となりました。

''ポイントはパスは前方一致なので/CookieExample2にリクエストしても、CookieExampleのCookieは載ってくるってことと、有効期限が切れたり、無効なCookieはキー値すら載ってこないってこと。。''



SIZE(10){現在のアクセス:&counter;}



----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#vote(おもしろかった[2],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS