Cookie


クッキーを片付けたいです。


Cookie


1.Cookie卵


ハイパーテキストの記録ファイル(HTTP)の一種として、インターネットユーザが任意のウェブサイトにアクセスする際に、そのウェブサイトで使用するサーバを介してインターネットユーザコンピュータにインストールされる小さな記録情報ファイルを指す.HTTP Cookie、Web Cookie、ブラウザCookieとも呼ばれる.
やはり正義だけを見ている時は、全く感じませんでした.ほほほ
でもとりあえず読んで、クッキーの特性を知ると

2.ビスケットの特性

  • のユーザ状態情報をクライアント
  • に記憶する.
  • ストレージ容量限定(4 kb)
  • データ型は文字列
  • に限定する.
  • Cookie有効時間を別途設定しない限り、ブラウザの実行時にのみ
  • 有効である.
  • Cookie有効時間を設定すると、その有効時間内にCookieしか使用できません.
  • 3.クッキー動作図


    クッキーの動きを簡単に画像で表現

    このように表現することができます.簡単な例は次のとおりです.

    4.SetCookieServeret(サーバ側でCookieを作成してクライアントに渡し、クライアント側でCookieを保存する簡単な例)

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");	
    		PrintWriter out = response.getWriter();
    		out.println("<!DOCTYPE html>");
    		out.println("<html>");
    		out.println("<head>");
    		out.println("<meta charset= 'UTF-8'>");
    		out.println("<title>home</title>");
    		out.println("</head>");
    		out.println("<body>");
    		String name = getServletName(); // = getServletConfig.getServletName(); 와 같음
    		out.println("<h3>" + name +  "</h3>");
    		//시간 정보
    		String time = new Date().toString().replace(" ", "-");
    		//쿠키 생성
    		Cookie cookie = new Cookie("time",time); // 쿠키는 문자열 기반이라 name,value 모두 String
    		//쿠키의 유효시간을 설정( 만약 설정하지 않으면 브라우저를 끄면 쿠키도 사라진다 )
    		cookie.setMaxAge(60); //60초 동안 유지
    		//쿠키를 클라이언트 측으로 전송
    		response.addCookie(cookie);
    		out.println("cookie를 클라이언트 측으로 전달<br><br>");
    		out.println("cookie 에 저장한 time 정보 : " + time);
    		out.println("<br><br><a href = GetCookieServlet>GetCookieServlet에서 저장한 time cookie정보확인");
    		out.println("</body>");
    		out.println("</html>");
    		out.close();
    	}
    jspを使っていないので、とても複雑に見えますが、
    doGet()メソッドは、SetCookieServeretという名前のServeretからのみ抽出されます.
    Cookieの内容についてだけ必要なので、必要な情報は
    		//시간 정보
    		String time = new Date().toString().replace(" ", "-");
    		//쿠키 생성
    		Cookie cookie = new Cookie("time",time); // 쿠키는 문자열 기반이라 name,value 모두 String
    		//쿠키의 유효시간을 설정( 만약 설정하지 않으면 브라우저를 끄면 쿠키도 사라진다 )
    		cookie.setMaxAge(60); //60초 동안 유지
    		//쿠키를 클라이언트 측으로 전송
    		response.addCookie(cookie);
    		out.println("cookie를 클라이언트 측으로 전달<br><br>");
    		out.println("cookie 에 저장한 time 정보 : " + time);
    この部分が必要です.

    5.SetCookieServiceletコード説明


    5.1 timeというStringタイプ変数の場合、toStringによって現在の日付と時間を通知するDateがString値に変換され、スペースが含まれます.
    ★ビスケットは空いてはいけないので★
    スペースをreplace関数で「-」文字に変換
    5.2クッキーもsetMaxAgent()でCookieの有効時間を設定します.
    このセクションを設定しないと、ブラウザが終了するとクッキーも一緒に終了します.
    5.3 response.addCookie(cookie); 現在作成しているCookieをクライアントに送信します.
    これは、サーバ側からCookieを生成してクライアントに渡し、クライアント側にCookieを格納する簡単な例です.

    6.GetCookieServeret(クライアント接続後、サーバー側がクライアント上のCookieを確認し、特定のCookie(timeという名前)の値を取得して画面を出力する例)

    //client request로부터 cookie정보를 받아온다
    //System.out.println(request.getCookies()); //web application에서 저장한 쿠키가하나 이상존재하지 않으면 null이 반환
    	Cookie[] cookies = request.getCookies();
    	if(cookies !=null) { 
        	//cookies 배열을 for loop 이용해 반복하면서 cookie의 name이 time인 cookie의 value를 화면에 제공
    	//cookie의 getName(),getValue()메서드를 이용\
    	boolean flag = false;
    	for(int i = 0;i<cookies.length;i++) {
    		if(cookies[i].getName().equals("time")){
    			out.println("클라이언트로부터 받아온 time cookie value" + cookies[i].getValue());
    			flag = true;
    			break;
    		}
    	}
    	if(flag == false) {
    		out.println("time 쿠키가 존재하지 않습니다");
    	}
    }else {
    	out.println("쿠키가 존재하지 않습니다.");
    			
    }
    今回,GetCookieServeretのdoGet()メソッドはCookieに関するコードのみをインポートした.

    7.GetCookieServiceletコード説明


    7.1 request.getCookies()はCookie値を配列として返しますので、Cookie配列に入れます.
    7.2クッキー配列の値がnullでない場合、クッキーの名前が時間と同じである場合、getValue()に値を渡します.そうでない場合、出力クッキーは存在しません.
    7.3しかし、クッキーの名前はnameではなく、別のクッキーが存在し、nameというクッキーは存在しない可能性がありますので、booleanタイプのflagを宣言し、if文でその存在を教えてください.

    最後に。


    setCookieとgetCookieの例については、前述のsetCookieサーブレットとgetCookieの例を参照してください.
    画面に出力された値と、ブラウザ上のf 12-アプリケーション-ブラウズ-cookies-ブラウザ名のクッキーの情報を一緒にチェックして比較することもできます.