Latest web development tutorials

JSPクッキー処理

クッキーは、クライアントに格納されているテキストファイルであり、彼らはトラック情報の多くを保存します。 サーブレット技術の基礎では、JSPは、明らかにHTTPクッキーのサポートを提供することができます。

典型的には、リピート訪問者を識別するための3つのステップがあります。

  • サーバースクリプトは、ブラウザにクッキーのシリーズを送信します。 等名前、年齢、ID番号、など
  • ブラウザは、不測の事態のために準備するために、ローカルマシン上でこの情報を保存します。
  • ブラウザがサーバへのすべての要求を送信し、次回は、それはまた、サーバクッキー情報に送信され、サーバは、ユーザを識別するために、またはいくつかの他のことを行うためにこの情報を使用します。

この章では、設定またはCookieの方法をリセットし、そのアクセス方法とどのようにそれらを削除する方法をお教えします。

以下のように、中国のエンコードとデコードのニーズを処理するJSPクッキー:

String   str   =   java.net.URLEncoder.encode("中文");            //编码
String   str   =   java.net.URLDecoder.decode("编码后的字符串");   // 解码

クッキー分析

クッキーは、通常のHTTPヘッダ情報に(JavaScriptがブラウザのクッキーに直接設定することができますが)設定されています。 JSPは、サーバーに以下の情報を送信するためにCookieヘッダーを設定します。

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2015 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=w3big; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=w3big.com
Connection: close
Content-Type: text/html

あなたが見ることができるように、Set-Cookieヘッダーは、キーと値のペア、GMT(グリニッジ標準時)の時間、パス、ドメイン名が含まれています。 キーと値のペアは、URLとしてエンコードされます。 フィールドの妥当性は、あなたがこのクッキーを削除することができますどのような時間の後にブラウザに指示するコマンドです。

お使いのブラウザがクッキーを格納するように構成されている場合は、期限が切れるまで、それは情報を保存します。 ユーザーがアクセス任意のページには、クッキーのパスとドメイン名と一致した場合、ブラウザはサーバーにCookieを再送信します。 ブラウザ側のヘッダは次のようになります。

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

JSPのスクリプトは、リクエストオブジェクトのgetCookiesクッキーオブジェクトの配列を返します()メソッドによってクッキーにアクセスします。


サーブレットクッキーメソッド

次の表は、一般的に使用される方法Cookieのオブジェクトを示しています。

いいえ。 メソッド 説明
1 ます。public void setDomain(文字列パターン)

Cookieドメインを設定し、そのようなw3cschool.cc
2 パブリック文字列getDomain()

クッキーのドメインを取得し、そのようなw3cschool.cc
3 ます。public void setMaxAge(int型の有効期限)

秒単位で、Cookieの有効期限を設定すると、デフォルトでは、生存期間の現在のセッションに対して有効です。
4 公共int型getMaxAge()

Cookieの有効期限を取得し、秒単位で、デフォルトでは、ブラウザに住んであろうクッキーが閉じていることを示す、-1であります
5 公共の文字列のgetName()

クッキーの名前を返し、それが作成された後、名前を変更することはできません
6 公共ボイドのsetValue(文字列NEWVALUE)

Cookieの値を設定します。
7 公共の文字列のgetValue()

Cookieの値を取得します。
8 公共ボイドSETPATH(文字列URI)

クッキーのパスを設定すると、デフォルトでは、すべてのページディレクトリの現在のURLで、下のすべてのサブディレクトリ
9 パブリック文字列ある、getPath()

クッキーのパスを取得します。
10 公共ボイドsetSecure(ブールフラグ)

クッキーが送信を暗号化するかどうかを示すために、
11 ます。public void setComment(String型の目的)

クッキーの目的を説明するコメントを設定します。 ブラウザのクッキーがユーザに提示すると、コメントは非常に有用であろう
12 パブリック文字列GETCOMMENT()

なしがある場合、Cookieの目的を説明するコメントを返し、またはnull

JSPを使用してCookieの設定

使用JSPはクッキーが3段階で構成されて設定します。

(1)Cookieオブジェクトを作成します。パラメータとして、クッキーの名前と値を使用して、コンストラクタのクッキーを呼び出すことを、彼らは文字列です。

Cookie cookie = new Cookie("key","value");

名前と値は、スペースまたは次の文字を含めることはできないことを心に留めておくようにしてください:

[ ] ( ) = , " / ? @ : ;

(2)設定が有効である:コールsetMaxAge()関数は、クッキーが(秒)以内に有効である期間を示します。 以下は、24時間有効に設定します。

cookie.setMaxAge(60*60*24); 

(3)HTTPレスポンスヘッダにクッキーを送信します。クッキーを追加するために、HTTPヘッダに対応するためにresponse.addCookie()関数を呼び出します。

response.addCookie(cookie);

例のデモ

main.jspファイルのコードは次のとおりです。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<%
   // 编码,解决中文乱码   
   String str = URLEncoder.encode(request.getParameter("name"),"utf-8");  
   // 设置 name 和 url cookie 
   Cookie name = new Cookie("name",
		   str);
   Cookie url = new Cookie("url",
			  request.getParameter("url"));

   // 设置cookie过期时间为24小时。
   name.setMaxAge(60*60*24); 
   url.setMaxAge(60*60*24); 

   // 在响应头部添加cookie
   response.addCookie( name );
   response.addCookie( url );
%>
<html>
<head>
<title>设置 Cookie</title>
</head>
<body>

<h1>设置 Cookie</h1>

<ul>
<li><p><b>网站名:</b>
   <%= request.getParameter("name")%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

以下は、クライアントmain.jspファイルにデータを送信し、Cookieを設定するには、GETメソッドを使用して単純なHTMLフォームです。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>

<form action="main.jsp" method=GET>
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

Test.htmファイルに上記のHTMLコードを保存します。

(main.jsp同じディレクトリを持つ)のWebContent JSPプロジェクトの下で、現在のディレクトリにファイルを配置します。

訪問HTTPで:// localhostを:8080 / testjsp / test.htmlというmain.jspファイルにフォームデータを提出し、GIFのデモは以下のとおり:

「サイト名」と「URL」を入力してみてください、そして、送信ボタンをクリックし、それはあなたの画面で「サイト名」と「URL」を表示し、「サイト名」と「URL」2クッキーを設定します。


クッキーを読むためにJSPを使用して、

クッキーを読みたい、あなたはそれぞれのクッキーを取得する方法のgetName()とのgetValue()メソッドを使用してアレイを横断その後のjavax.servlet.http.Cookieオブジェクトの配列を取得するためにrequest.getCookies()メソッドを呼び出して、する必要があります。名前と値。

のは、クッキーの最後の例を読んでみましょう、次はcookie.jspファイルのコードです:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取 Cookie</title>
</head>
<body>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取cookies的数据,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
      out.println("<h2> 查找 Cookie 名与值</h2>");
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
        
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         out.print("------------------------------------<br>");
      }
  }else{
      out.println("<h2>没有发现 Cookie</h2>");
  }
%>
</body>
</html>

ブラウザアクセスした後、出力は次のようになります。


クッキーを削除するJSP使用

削除クッキーは非常に簡単です。 あなたはクッキーを削除したい場合は、ライン上で行うには、以下の手順します。

  • 既存のクッキーは、次にCookieオブジェクトに格納されています。
  • クッキーは0に設定されます。
  • このクッキーは、レスポンスヘッダに戻って追加されます。

例のデモ

以下の手順では、第二ランcookie.jspあるときに「名前」という名前のCookieを削除し、名前はnullになります。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取 Cookie</title>
</head>
<body>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取当前域名下的cookies,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
	  out.println("<h2> 查找 Cookie 名与值</h2>");
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
         if((cookie.getName( )).compareTo("name") == 0 ){
            cookie.setMaxAge(0);
            response.addCookie(cookie);
            out.print("删除 Cookie: " + 
            cookie.getName( ) + "<br/>");
         }
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         out.print("------------------------------------<br>");
      }
  }else{
	  out.println("<h2>没有发现 Cookie</h2>");
  }
%>
</body>
</html>

ブラウザを介してアクセスし、出力は次のようになります。

もう一つの訪問にhttp:// localhost:8080 / testjsp / cookie.jsp、以下の結果が得られます:

あなたは名前幅= Cookieが消えていたの「70%」、「名前」を参照してくださいすることができます。

また、手動でお使いのブラウザでクッキーを削除することができます。 IEブラウザは、[ツール]メニューをクリックすることで、あなたはすべてのクッキーを削除することができ、Cookieの削除]をクリックし、[インターネットオプション]を選択します。