Java Cookie セッション テクノロジ

1. Cookie の概要

Cookie はコンピュータに保存されるファイルです。私たちがコンピューターを使用して Web を閲覧すると、サーバーは証明書を生成し、それをコンピューターに返します。この証明書は Cookie です。一般に、Cookie はサーバーによってクライアントに書き込まれるファイルであり、ブラウザーのキャッシュとも呼ばれます。

簡単に言えば、Web サイトにアクセスしたときに生成される一部の行動情報 (通常は暗号化されている) を読み取って保存できます。そうしないと、ユーザーのプライバシーが侵害されます。Cookie は 2 回目の訪問を高速化するのにも役立ちます。通常、いくつかの Web ページにアクセスすると、システムはユーザー名とパスワードを保存するかどうかを尋ねます。次回ログイン時は再度ログインすることなく自動でログインできます。

2. Cookie を作成して送信する

1. Cookie を作成し、応答ヘッダーとしてクライアントに送信します。

Cookie cookie = 新しい Cookie(String cookieName, String cookieValue);

2. クライアントに Cookie を送信する

応答.addCooike(Cookie クッキー);

3. Cookie のいくつかの一般的な API

1. クライアント上で Cookie の保持時間を設定します。

cookie.setMaxAge(int 秒)

注: 保持時間が設定されていない場合、Cookie はブラウザのメモリに保存され、ブラウザは Cookie 情報の破棄 (セッション レベルの Cookie) を閉じます。保持時間が設定されている場合、Cookie 情報は次の時点まで保持されます。内部のブラウザのディスクファイル

2. Cookieの搬送経路を設定する

cookie.setPath(文字列パス)

注: 伝達パスを設定しない場合、Cookie 情報は、Cookie を生成した Web リソースがアクセスされるパスで伝達されます。

3. クライアントに Cookie を送信する

response.addCooike(クッキークッキー)

4. クライアントの Cookie を削除します

cookie.setMaxAge(0)

注: クライアントに保存されている Cookie 情報を削除する場合は、同じ名前と同じパスの存続時間 0 の Cookie を使用して上書きします。

5. サーバーは、クライアントが保持する Cookie を取得し、リクエスト ヘッダーとしてサーバー側に送信します。

// リクエストを通じてすべての Cookie を取得します
Cookie[] cookies = request.getCookies();

// Cookie 配列を反復処理し、Cookie の名前で必要な Cookie を取得します。 for
(Cookie cookie : cookies) {     if (cookie.getName.equals("cookieName")){         String cookieValue = cookie.getValue();     } }



4. Java サーブレット Cookie の例

1. Cookieを生成する

@WebServlet(name = "CookieServlet",urlPatterns = "/cookie")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie=new Cookie("goods","cup");//不能使用中文
        cookie.setMaxAge(60*10);
        cookie.setPath("/hello/getCookie");

        Cookie cookie1=new Cookie("userName","xiaoming");

        response.addCookie(cookie);
        response.addCookie(cookie1);

    }
}

 2. クッキーを表示する

@WebServlet(name = "GetCookieServlet",urlPatterns = "/getCookie")
public class GetCookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();

        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            if (name.equals("userName")){
                String cookieValue = cookie.getValue();
                response.getWriter().write("userName:"+cookieValue);
            }
        }
    }
}

5. 症例記録 Web サイトの最終訪問時刻

@WebServlet(name = "TimeServlet", urlPatterns = "/time")
public class TimeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        //记录访问时间并其通过cookie加入到响应头
        Date date = new Date();

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd-hh:mm:ss");
        String time = simpleDateFormat.format(date);

        Cookie cookie = new Cookie("time", time);
        cookie.setMaxAge(60*60*24);
        response.addCookie(cookie);
        response.setContentType("text/html;charset=utf-8");
        //获取客户端浏览器发送过来的cookie数据
        Cookie[] cookies = request.getCookies();
        String timeValue = null;
        for (Cookie cookie1 : cookies) {

            if (cookie1.getName().equals("time")) {
                timeValue = cookie1.getValue();
            }
        }
        if (timeValue == null) {
            response.getWriter().write("欢迎您访问我们的网站");
        } else {
            response.getWriter().write("您上次访问网站的时间是:" + timeValue);
        }


    }
}

おすすめ

転載: blog.csdn.net/mshxuyi/article/details/131287708