目次
3. どのような場合に初回訪問、どのような場合に n 回目の訪問であるかを判断する方法は何ですか?
序文
最近、JavaScript Cookie を学んでいます。授業の後に小さな演習を書きました。その機能は、ユーザーが最後にログインした時刻を記録するものです。コードは最適化されておらず、少し複雑です。
1. クッキーとは何ですか?
1. Cookie は、ブラウザがサーバーにアクセスした後にサーバーからブラウザに送信されるデータです。
2. ブラウザはこのデータを保存する必要があり、簡単に削除しないでください。
3. その後、ブラウザはサーバーにアクセスするたびに、このデータを取得する必要があります。
Cookie は非常にシンプルであり、それが Web 開発における Cookie の意味です。Cookie は通常 2 つの目的に役立ちます。最初の機能はユーザーを識別することです
2. 需要分析
必要:
ユーザーが初めて訪問した場合は「ようこそ、初めての訪問です。」と表示され、
引き続き訪問する場合は「おかえりなさい。前回の訪問時間は yyyy-MM-dd HH:mm です」と表示されます。 :ss
ヒント 1: 訪問時間を節約するには Cookie を使用する必要があります。
ヒント 2: サーブレットを作成し、その中で論理的な判断を行って、作成した「lastVisit」という名前の Cookie が存在するかどうかを判断します。 ヒント 3: 訪問するたびに Cookie を保存します
。これにアクセスしてください Cookie の名前は一貫している必要があります
アイデア:
1. 訪問時間を保存するための Cookie を作成します (Cookie を作成し、Cookie の値を取得します)
2. 初めての訪問であるかどうかを判断するためのサーブレットを作成します
1 回訪問し、Cookie を作成します。Cookie 名は lastVisit です
。時刻を表示する場合、スペースがあるためエンコードとデコードが必要
コード:URLEncoder.encode("date","utf-8");
3. どのような場合に初回訪問、どのような場合に n 回目の訪問であるかを判断する方法は何ですか?
(1) 初回訪問 ①
現在時刻を取得してブラウザに表示
②Cookieオブジェクトを作成、時刻はCookieの値、名前はlastVisit
③Cookieをブラウザに送信して保存
(2)N回目の訪問
①取得Cookieの値を取得し、lastVisitという名前のCookieを取り出します。 ②Cookie
の値(最終訪問時刻)を取得します。
③最終訪問時刻をブラウザに表示します
。 ④lastVisitという名前のCookieを更新し、値を現在時刻に設定します。
⑤更新したCookieを送信します 保存ブラウザへ
4番目に、コードは次のとおりです
1. ログインページを作成する
コードは次のとおりです(例)。
<%-- IntelliJ IDEA によって作成されました。 ユーザー: 86155 日付: 2022-09-06 時間: 9:27 このテンプレートを変更するには、[ファイル] | [ファイル] を使用します。設定 | ファイルテンプレート。 </html>
2. ログインに成功すると、初回訪問かどうかを判定します
コードは次のとおりです(例)。
パッケージ com.hqyj.j0905.homeWork; /* * 再登录の時間 * */ import javax.servlet.ServletException; インポート javax.servlet.annotation.WebServlet; インポート javax.servlet.http.Cookie; インポート javax.servlet.http.HttpServlet; インポート javax.servlet.http.HttpServletRequest; インポート javax.servlet.http.HttpServletResponse; インポート java.io.IOException; java.io.PrintWriterをインポートします。 java.net.URLEncoderをインポートします。 インポート java.text.SimpleDateFormat; java.util.Dateをインポートします。 @WebServlet("/CookieDemo1") public class CookieDemo1 extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse se response) throws ServletException, IOException { //エンコーディング スタイルを設定します response.setContentType( " text/html;charset=utf-8"); // Cookie を取得します Cookie[] cookies = request.getCookies(); /// 指定された名前の Cookie が存在するかどうかを示すフラグを定義します boolean flag = true; String lastVisit = null; //Cookie が空かどうかを判定 if (cookies != null || cookies.length != 0) { //Traverse for (Cookie cookie : cookies) { //Cookie の名前を取得します // String name = cookie.getName(); if (cookie.getName().equals("lastVisit")) { //lastVisit Cookie があります、すでに n 回目の訪問です flag = false; // n 回目の訪問 // 現在時刻を取得 Date date = new Date(); // 書式設定された日付オブジェクトを取得 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm: ss "); String formatDate = dateFormat.format(date); //時刻文字列をエンコードします String timeNow = URLEncoder.encode(formatDate, "utf-8"); Cookie cookie1 = new Cookie("lastVisit",timeNow); response.addCookie(cookie1); String value = cookie.getValue();//最終訪問時刻 //取得した値をデコード String valueDecode = URLEncoder.encode( value, " utf-8"); cookie.setMaxAge(1 * 30 * 24 * 60 * 60); //3. 更新された Cookie をブラウザに送信します //response.addCookie(cookie); // Cookie の値、時間を取得します // cookie.setValue(timeNow); //応答ページ PrintWriter Writer = response.getWriter(); Writer.write("おかえりなさい、あなたの最終訪問時間は:" + 値デコード); Break; } } } //初めての訪問。Cookie がないか、lastVisit という名前の Cookie がありません if (cookies == null || cookies.length == 0 || flag) { //Cookie の値を設定します //現在の時刻の文字列を取得します。設定Cookieの値を書き換えてCookieを再送信 Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formatDate = format.format(date); String value = URLEncoder.encode(formatDate, "utf-8"); //2. Cookie オブジェクトの作成 Cookie cookie1 = new Cookie("lastVisit", value); cookie1.setMaxAge(1 * 30 * 24 * 60 * 60);/ / Cookieの保存期間を1か月に設定します //3. Cookie をブラウザに送信して保存します response.addCookie(cookie1); //1. 現在時刻をブラウザに表示します response.getWriter().write("おかえりなさい、初めての訪問です") ; } } }
3. 実験結果は次のとおりです。
V. まとめ
以上が今日の話ですが、この記事では Cookie のちょっとした練習を簡単に紹介するだけです。