ケース:最終アクセス時刻を覚えておいてください
。1.要件
、それは最初の訪問の場合1.サーブレットを、プロンプトは:こんにちは、あなたの最初の訪問を歓迎します。
2.それは最初の訪問は、プロンプトではない場合:再びようこそ、あなたの最後の訪問時間は:時刻文字列を表示します
。2.分析:
1.クッキーを使用して達成することができる
というファイルがあるかどうかを判断するために、サーバ2.サーブレットをクッキーのlastTime
1は、次のとおりにない最初の訪問
1.応答データ:再びようこそ、あなたの最後の訪問時間:2018年6月10日11時50分20秒
2のライトバッククッキー:lastTime = 2018インディアン6越10なかっ午前11時50分01秒
2なし:への最初の訪問である
1.応答データ:こんにちは、あなたの最初の訪問に歓迎
lastTime = 2018インディアン6越10、11時50分00秒:2.書き込みクッキーをバック
注意点:
エンコードの流れ1.取得のPrintWriter前に設定する必要があります
response.setContentType( "テキスト/ HTML;のcharset = UTF-8");
2.クッキーは、エンコードおよびデコードするために、スペースなどの特殊文字を含めることはできません
1 パッケージcn.itcast.web.servlet。 2 3 インポートjavax.servlet.ServletException。 4 インポートjavax.servlet.annotation.WebServlet。 5 輸入のjavax.servlet.http.Cookie。 6 インポートjavax.servlet.http.HttpServlet。 7 インポートするjavax.servlet.http.HttpServletRequest。 8 輸入のjavax.servlet.http.HttpServletResponse。 9 インポートにjava.io.IOException。 10 インポートjava.net.URLDecoder。 11 インポートjava.net.URLEncoder。 12 インポートjava.text.SimpleDateFormatの、 13である インポートjava.util.Date; 14 15 @WebServlet( "/ CookieServlet" ) 16の パブリック クラス CookieServlet 延びHttpServletを{ 17 保護 ボイドのdoPost(HttpServletRequestのリクエスト、HttpServletResponseの応答)がスローIOExceptionが{ 18である // PrintWriterを取得します応答メッセージボディを設定する前に、ストリームの符号化データフォーマット 19。 response.setHeader(「コンテンツタイプ」、「テキスト/ HTML;のcharset = UTF-8」); 20は 21である 。// 1.すべてのクッキーを取得し 22である クッキー[]クッキー= request.getCookies()。 23 ブールフラグ= 偽 ; // 名前がlastTimeクッキーと呼ばれていない 24 25 // クッキーアレイを横断2. 26 IF(クッキー=!ヌル){ 27 用(クッキークッキー:クッキー){ 28 IF(Cookie.getName()。等号( "lastTime")){ // 最初のアクセスではない 29 フラグに= trueに、 30 31である 文字列値= cookie.getValue(); 32 値= URLDecoder.decode(値、 "UTF-8"); // URLデコード 33 。response.getWriter()書き込み(+の「あなたの最終アクセス時間は、おかえりなさい」値); 34 35 // クッキー値の値ログイン時に、クッキー再送 36 日DATE = 新しい新しい日付を(); 37 [ てSimpleDateFormat SDF = 新しい新しいてSimpleDateFormat( "日付YYYY、MM-DD HH:MM:SS" ); 38である 文字列str_date = sdf.format(日付); 39 str_date = URLEncoder.encode(str_dateは、 "UTF-8"。 ); // URLエンコードを、エラーがURLエンコードされないであろう場合str_dateは、スペースが含まれているので 40 cookie.setValue(str_date); 41であります cookie.setMaxAge(30 * 24 * 60 * 60 ); //設定クッキー生存時間 42は response.addCookie(クッキー); 43である BREAK ; 44である } 45 } 46れる } 47 48 IF(クッキーは== NULL ||フラグに== 偽){ // 最初の訪問 49 response.getWriter()ライト( "ハロー<H1>、<H1>あなたの最初の訪問に歓迎しています。" ); 50 51 日DATE = 新しい新しい日付(); 52 のSimpleDateFormat SDF = 新新SimpleDateFormat( "YYYY年MM月DD日HH:MM:SS" )。 53 文字列str_date = sdf.format(日付)。 54 str_date = URLEncoder.encode(str_date、 "UTF-8" )。 55 クッキークッキー= 新しいクッキー( "lastTime" 、str_date)。 56 cookie.setMaxAge(30 * 24 * 60 * 60 )。 57 response.addCookie(クッキー)。 58 } 59 60 61 } 62 63 保護された ボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答)がスローServletExceptionがは、IOException { 64 この.doPost(リクエスト、レスポンス)。 65 } 66 }