クッキーとセッションの5.Servlet

Aセッション

二つの技術:

  • クッキー:クライアント・テクノロジー

  • セッション:サーバー・テクノロジー

一般的なアプリケーション:あなたがウェブサイトの後に次回ログイン時には、もはやログインできます。

1.Cookie

これらの手順を実行します。

  1. サーバーは、クライアントからクッキー情報を取得します

  2. バッククライアントにサーバの設定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に戻りますがクッキー

注意事項:

  1. Aクッキーはメッセージのみを保存することができます

  2. ウェブサイトは、ブラウザのクッキーに複数のクッキーを送信するが、20まで保存することができます

  3. クッキーのサイズは4キロバイトに制限されています

  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 </セッション設定>

 

おすすめ

転載: www.cnblogs.com/zhihaospace/p/12310376.html