Aセッション
二つの技術:
-
クッキー:クライアント・テクノロジー
-
セッション:サーバー・テクノロジー
一般的なアプリケーション:あなたがウェブサイトの後に次回ログイン時には、もはやログインできます。
1.Cookie
これらの手順を実行します。
-
サーバーは、クライアントからクッキー情報を取得します
-
バッククライアントにサーバの設定cookie情報
クッキーケース:取得するには、サーバーとセットクッキー
1つの パブリック クラス CookieDemo01が延びているのHttpServlet { 2 3 @Override 4 保護された ボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionが、にIOExceptionが{ 5 req.setCharacterEncoding( "UTF-8" )。 6 resp.setCharacterEncoding( "UTF-8" )。 7 resp.setContentType( "テキスト/ HTML;のcharset = UTF-8" )。 8 9 =うちのPrintWriter resp.getWriter()。 10 11 // 服务器从客户端获取クッキー 12 クッキー[] =クッキーreq.getCookies(); 13は、 14 IF(クッキー=!ヌル{) 15 out.write( "あなたの最後の訪問時間は次のとおりです。" ); 16 。17 のための(int型 I = 0; I <クッキー.LENGTH; I ++ ){ 18は、 クッキーは、クッキー= クッキー[I]; 19 20である // クッキーの決定された名前 21は IF(Cookie.getName()に等しい( "lastLoginTime"。 )){ 22である // クッキーの値を取得し ている23の ロング lastLoginTime = Long.parseLong(cookie.getValue()); 24 25 =日付新しい新しいDATE(lastLoginTime); 26である 27 out.write(Date.toLocaleString()); 28 } 29 } 30 } 他{ 31である ( "これは最初の訪問で" out.write ); 32 } 33は 34であります // クッキーに応じて、クライアントにサーバー 35枚の クッキークッキー= 新しい新しいクッキー( "lastLoginTime"、にSystem.currentTimeMillis()+ "" ); 36 37 [ // 設定されたCookieは、一日のために有効である 38である cookie.setMaxAge(24 * 60 * 60 )。 39 resp.addCookie(クッキー)。 40 } 41 42 @Override 43 保護 ボイド doPostメソッドは、(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionがは、IOException { 44 のdoGet(REQ、RESP)を、 45 } 46 }
クッキーは、一般的な機能を使用しました。
。1枚のクッキー[] = req.getCookiesクッキー(); // クッキーゲット 2を Cookie.getNameを(); // クッキーのキーを取得します 。3 cookie.getValue(); // クッキーの値を取得します 。4 新しい新しいクッキー( "lastLoginTime"、 System.currentTimeMillis()+ ""); // クッキー作成 5 cookie.setMaxAgeを(24 * 60 * 60); // ための有効なクッキー設定 6 resp.addCookie(クッキー); // ブラウザクライアントAに戻りますがクッキー
注意事項:
-
Aクッキーはメッセージのみを保存することができます
-
ウェブサイトは、ブラウザのクッキーに複数のクッキーを送信するが、20まで保存することができます
-
クッキーのサイズは4キロバイトに制限されています
-
300は、ブラウザのクッキーの上限であります
削除クッキー:
-
方法1:ブラウザが閉じられた後にDOはクッキーが有効で設定されていない、クッキーが自動的に期限切れ
-
方法2:設定はブラウザが0のために有効です
あなたはクッキーを削除するときは、最初に削除するクッキーを作成して、クッキーの同じキー値を持つ必要があります
1は // クッキーに応じて、クライアントにサーバー 2枚のクッキークッキー= 新しい新しいクッキー( "lastLoginTime"、にSystem.currentTimeMillis()+ "" ); 。3 。4 // クッキーは一日のために有効である設定 。5 cookie.setMaxAge(24 * 60 60 * ); 6 resp.addCookie(クッキー)。
エンコードとデコードの使用:中国のゴミ問題については
1枚のクッキー= 新しいクッキー( "名前"、URLEncoder.encode(、 "UTF-8" "你好!" )) 2 out.write(URLDecoder.decode(cookie.getValue()、 "UTF-8"));
2.Session(フォーカス)
(1)セッションとは何ですか
-
Serverは、Sessionオブジェクトを作成するために、各ユーザ(ブラウザ)を与えます
-
セッションは、排他的にブラウザは、限りブラウザが閉じていないとして、このセッションがありました
-
ユーザーがログオンした後、サイト全体では(ショッピングカートの情報を保存し、ストアのユーザー情報に使用)のセッションにアクセスすることができます
差(2)セッションクッキー
-
クッキー:ブラウザに保存されているサーバーのデータ、ブラウザの店は、あなたが複数作成することができます
-
セッション:サーバーデータはサーバー上に保存されているユーザの排他的セッションのみ
(3)セッションの使用シナリオ
-
ユーザーのログイン情報を保存
-
保存ショッピングカート情報
-
サイト全体で頻繁に使用されるデータを保存
(4)使用:
SessionDemo01:取得および設定セッション
1つの パブリック クラス SessionDemo01が延びているのHttpServlet { 2 3 @Override 4 保護された ボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionが、にIOExceptionが{ 5 // 解决中文乱码问题 6 req.setCharacterEncoding( "UTF-8" )。 7 resp.setCharacterEncoding( "UTF-8" )。 8 resp.setContentType( "テキスト/ HTML;のcharset = UTF-8" )。 9 10 11 // 得到セッション 12 のHttpSessionセッション=req.getSession(); 13は、 14 15 // 設定されたセッション 16 にsession.setAttribute( "名前"、新新しい人( "王"、24 )); 17 18れる // セッションIDを取得します 19。 文字列のセッションID = session.getId( ); 20である 21れる // 決意が新しいセッションではありません 22で IF (session.isNew()){ 23は resp.getWriter()ライト( "セッションが正常に作成され、ID :." + セッションID); 24 } 他{ 25 RESP。 。にgetWriter()書き込み( "セッションが既にサーバに存在し、ID:" + セッションID); 26です } 27 28 29 30 } 31 32 @Overrideは 33 保護 ボイドのdoPost(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionが、IOExceptionが{ 34 のdoGet(REQ、RESP)。 35 } 36 }
SessionDemo02:クロスサーブレットアクセスセッション
1つの パブリック クラス SessionDemo02が延びているのHttpServlet { 2 3 @Override 4 保護された ボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)がスローServletExceptionが、IOExceptionが{ 5 6 // 解决中文乱码问题 7 req.setCharacterEncoding( "UTF-8" ;) 8 resp.setCharacterEncoding( "UTF-8" )。 9 resp.setContentType( "テキスト/ HTML;のcharset = UTF-8" )。 10 11 // 得到セッション 12 HttpSessionのセッション=req.getSession(); 13 14 人の人=(人)session.getAttribute( "名前" ); 15 16 resp.getWriter()書き込み( "获得者:" +。人) 17 } 18 19 @Override 20 保護 ボイド doPostメソッドは、(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionがは、IOException { 21 のdoGet(REQ、RESP)を、 22 } 23 }
SessionDemo03:手動でセッションを削除します
1 パブリック クラス SessionDemo03 延びのHttpServlet { 2 3。 @Override 4。 保護 ボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)スローServletExceptionがは、IOException { 5。 HttpSessionのセッション= req.getSession(); 6 7。 session.removeAttribute( "名" ) 。8 。9 // 手動セッションの登録を解除:セッションでそれが、直後にセッション新しいログをオフに作成されません前 10 はsession.invalidate(); 11 } 12 13 @Override 14 保護を ボイドのdoPost(HttpServletRequestのREQ、HttpServletResponseのRESP)はスローServletExceptionがは、IOException { 15 のdoGet(REQ、RESP)を、 16 } 17 }
セッションは、web.xmlに自動的にデッドタイムを設けることができます
1 <! -セッションは自動的に失敗した後、15分に設定- > 2の<session-config>の 3。 <-theセッションタイムアウト> 15 </ -セッションタイムアウト> 4 </セッション設定>