クッキーとセッションも初心者のために、この記事を書くの主な目的は、いくつかのように専門的かつ包括的でない記述、自分のセッションクッキーと関連する内容を理解するのは簡単です、私と一緒に負担してください。
まず、技術的なセッション
セッションは、プロセスを指し過程で数回含まれている、オープンにブラウザからブラウザを閉じましたリクエストと応答セッションは、これらの要求と応答を指します。
HTTPはステートレスプロトコルであるので、各要求と応答が独立しています。実際の運用では、異なる複数の要求と応答の間の相互作用は、より複雑な機能のいくつかを完了する必要があります。だから、別の要求と応答の間の相互作用を可能とするために、それが生成されますテクニカルセッション。
テクニカルセッションの2種類があります。
-
クッキー
クッキーはクライアント技術、クッキーの形でそれぞれのクライアントのブラウザにデータを保存するために、各ユーザーのためのプログラムです。ユーザーが再びリソースサーバーにアクセスするには、Webブラウザを使用するときは、保存されたクッキーの中からいくつかの有用な情報を得ることができます。 -
セッション
セッションはサーバー側の技術であり、あなたは、実行時にサーバーへの各ユーザーのブラウザにセッションオブジェクトの排他を作成することができます。サーバーにアクセスする際、ユーザーのブラウザセッションは、すべてのユーザーが排他的であるので、各ユーザー・セッションの他のWebリソースから、ユーザーが再度Webリソースサーバーにアクセスしたときに、自分のセッションに自分のデータを置く、とすることができますデータは、ユーザーのためのサービスから取り出します。
二、使用にクッキーシンプル
クッキーは、クライアントにデータを保存するためのクライアントセッション技術です。
クッキーは文字列であります弦フォーマットは、キーと値のペア、セミコロンで区切られています。クッキーを使用する場合は、コールJavaがすることができ、適切なAPIが付属しています。
次のようにクッキーを使用するには:
- クッキーオブジェクトのデータバインディングを作成します。
- 送信クッキーオブジェクト
- データを取得するためにクッキーオブジェクトを取得します。
ここでは簡単な例の完全なコードはCookieTest1がクッキー、CookieTest2 GETクッキーを作成して送信、です。
- CookieTest1
package com.study.cookieandsessionstudy;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "CookieTest1", value = "/CookieTest1")
public class CookieTest1 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建cookie 注意这里穿的value字符不要加空格,addCookie时是不能使用空格的
Cookie cookie = new Cookie("msg", "hello-world");
//发送cookie
response.addCookie(cookie);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
- CookieTest2
package com.study.cookieandsessionstudy;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "CookieTest2", value = "/CookieTest2")
public class CookieTest2 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取cookie
Cookie[] cookies = request.getCookies();
String name;
String value;
if (cookies != null) {
for (Cookie cookie : cookies) {
name = cookie.getName();
value = cookie.getValue();
System.out.println("name:" + name);
System.out.println("value:" + value);
}
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
第三に、クッキーを使用する原理
保存クッキーは、HTTPプロトコルを介して送信されるようになった後、それはHTTPリクエストとレスポンスは、対応するヘッドを知っている必要があれば感謝し、対応するクッキーの頭されますSet-Cookieとクッキー。
- セット-クッキーは、リクエストヘッダに応じて含まれているサーバによって送信されます。クライアント上のクッキーを作成するために使用されます。
Set-Cookieフォーマット:
Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]
- Cookieヘッダは、HTTPリクエストのヘッダに含まれる、クライアントから送信されました。注、URLにのみ、このクッキーを送信するための要求のクッキーのドメインとパスに一致します。
2019年12月22日