ページ

2014年7月29日火曜日

GAEと戯れる 8 - Cookie -

今回はCookieについて

いつもの参考サイトURL
http://libro.tuyano.com/index3?id=877002&page=2

HTML5の登場前はブラウザに保存できるデータといえばCookieだけだったらしい。
ブラウザとサーバ間でデータのやりとりができる。

・Cookieの作成
Cookie 変数 = new Cookie( 名前 , 値 );

・クッキーの保存
response.addCookie( 《Cookie》 );

・クッキーの取得
Cookie[] 変数 = request.getCookies();

※responseは暗黙オブジェクト

・クッキーの名前を得る
String 変数 = 《Cookie》.getName();

・クッキーの値を得る
String 変数 = 《Cookie》.getValue();

・有効期限を設定する
《Cookie》.setMaxAge( 秒数 );


サンプル
<%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
<%@ page import="java.net.*" %>
<%
// エンコードを設定しておく
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
req = request;
// 入力フィールドの値を得る
String input = request.getParameter("input");
if (input == null) input = "";
// messageとcountのクッキーを得る
Cookie msg = getCookie("message");
Cookie count = getCookie("count");
// msgが空なら新たにクッキーを作る
if (msg == null){
    input = URLEncoder.encode(input,"utf-8");
    msg = new Cookie("message",input);
    response.addCookie(msg);
}
// countが空なら新たにクッキーを作る
if (count == null){
    count = new Cookie("count", "0");
    response.addCookie(count);
} else { // 空でないなら、countの数字を1増やして設定する
    String num = count.getValue();
    int n = Integer.parseInt(num);
    n++;
    count = new Cookie("count",String.valueOf(n));
    response.addCookie(count);
}
// 入力フィールドに何か書かれていたらクッキーを新たに設定し直す
if (!input.equals("")) {
    input = URLEncoder.encode(input,"utf-8");
    msg = new Cookie("message",input);
    response.addCookie(msg);
    count = new Cookie("count","1");
    response.addCookie(count);
}
%>
<%!
HttpServletRequest req;
// 指定の名前のクッキーを取り出すメソッドの定義
Cookie getCookie(String s){
    Cookie[] cookies = req.getCookies();
    Cookie res = null;
    if (cookies != null){
        for(Cookie c : cookies){
            if (s.equals(c.getName())){
                res = c;
                break;
            }
        }
    }
    return res;
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Sample jsp</title>
<style>
h1{
    font-size: 16pt;
    background: #AAFFAA;
    padding: 5px;
}
</style>
</head>
<body>
    <h1>Sample jsp page</h1>
    <p>これはサンプルで用意したページです。</p>
    <p><%=count.getValue() + ": " + URLDecoder.decode(msg.getValue(),"utf-8") %></p>
    <table>
        <form method="post" action="hello.jsp">
            <tr>
                <td>入力</td>
                <td>
                    <input type="text" id="input" name="input">
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <input type="submit" value="送信">
                </td>
            </tr>
        </form>
    </table>
</body>
</html>


↓実行結果


0 件のコメント:

コメントを投稿