Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JSPフォーム情報をサーブレット内でクッキー処理について

早速質問させて頂きます。

環境:TOMCAT6(Windows2003)

下記の通り、p_cookie1.jspのフォーム情報をCookieServletサーブレットに
渡し、渡したフォーム情報をクッキーに保存しブラウザをリロードすると
クッキーに保存した値が、表示されます。

しかし、ブラウザを×ボタンで閉じて、再度立上げp_cookie1.jspファイルを
読み込むと、保存したはずのクッキー情報が表示されません。

なぜ、保存したクッキーがブラウザを再立上げした後、開くとなくなるのでしょうか?

宜しければ、アドバイスいただけないでしょうか。

下記の実際に使用しているJSPとサーブレットです。

▼フォーム情報(ファイル名:p_cookie1.jsp)

<%@ page contentType="text/html; charset=Windows-31J" %>
<%
String[] names  = {"name","address"};
String[] values = {"", ""};
Cookie[] cookies = request.getCookies();
if(cookies != null){
    for(int i=0;i<names.length;i++){
        for(Cookie cook : cookies){
            if(cook.getName().equals(names[i])){
                values[i] = cook.getValue();
                break;
            }
        }
    }
}
%>
<html>
<head>
<title>クッキーで情報を保持する</title>
</head>
<body>
<h1 style="background:#cccccc">クッキーで情報を保持する</h1>
<form method="POST" action="CookieServlet">
<table border="0">
<tr>
    <th>名前:</th>
    <td><input type="text" name="name" size="20"
        value="<%=values[0] %>" /></td>
</tr><tr>
    <th>E-Mail:</th>
    <td><input type="text" name="address" size="40"
        value="<%=values[1] %>" /></td>
</tr><tr>
    <td colspan="2">
        <input type="checkbox" name="rec" value="true" checked />
        情報を記録する
    </td>
</tr><tr>
    <td colspan="2"><input type="submit" value="登録" /></td>
</tr>
</table>
</form>
</body>
</html>

▼上記フォーム情報の値をクッキーにセットし「p_cookie1.jsp」ファイルに転送

package demo01;

import java.io.IOException;                        // 必須
import java.io.PrintWriter;

import javax.servlet.ServletException;            // 必須
import javax.servlet.http.HttpServlet;            // 必須
import javax.servlet.http.HttpServletRequest;    // 必須
import javax.servlet.http.HttpServletResponse;    // 必須

import javax.servlet.http.HttpSession;
import javax.servlet.http.Cookie;

public class CookieServlet extends HttpServlet {
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doTask(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doTask(request, response);
    } 
    public void doTask(HttpServletRequest request, HttpServletResponse response) {
        try {
            String[] names = {"name","address"};
            Cookie[] cookies = new Cookie[2];
            if(request.getParameter("rec") != null){
                for(int i=0;i<names.length;i++){
                    cookies[i]=new Cookie(names[i],request.getParameter(names[i]));
                    cookies[i].setMaxAge(60*60*24*180);
                    cookies[i].setVersion(1);
                    response.addCookie(cookies[i]);
                }
            }else{
                for(int i=0;i<names.length;i++){
                    cookies[i] = new Cookie(names[i],"");
                    cookies[i].setMaxAge(0);
                    response.addCookie(cookies[i]);
                }
            }
            getServletContext().getRequestDispatcher("/p_cookie1.jsp").forward(request,response);
        } catch (Exception e) {
            // 例外をキャッチしスタックダンプを出力する
            e.printStackTrace();
        }
    }
}

8

回答

22688

閲覧

8件の回答

評価

0

ブラウザの設定は「クッキーを保存する」になってるの?

評価

0

レスいただきありがとうございます。

>ブラウザの設定は「クッキーを保存する」になってるの?

はい。IE7のデフォルトの設定でクッキーは有効です。

よろしくお願いいたします。

評価

0

デフォルトだから大丈夫、といってるのか?
じゃあなにもやってないのと同じだな。

どっちにしても、Cookieの保存はブラウザの役目です。
サーバーのプログラムなんか関係ない。

評価

0

>デフォルトだから大丈夫、といってるのか?

デフォルトの設定がCookie有効であることを確認した上で、
現在の設定もCookie有効であることを確認しました。

>じゃあなにもやってないのと同じだな。

「IE7のデフォルトの設定でクッキーは有効です」

有効であることを確認しましたっという記述から、
「なにもやってない」というとらえ方が疑問です。。

そんなことより、表現のレベルが。。。。。

はじめての、投稿なのですが、このようなレスポンスが
基準なのでしょうか?

本題から外れてすみません。

評価

0

>cookies[i].setVersion(1);
これ理解して使ってる?

>表現のレベルが
そこはレベルじゃないだろう…。

>基準なのでしょうか?
回答者によるとしか言えない。
口調について事細かな取り決めがあるわけではない。

評価

0

人によるでしょ。
回答者は、その掲示板に居着いて、それなりの期間を過ごしている場合が多い。
その間、いろんなのの相手をしてるからな。
一見さんとは温度差があるだろうさ。

今回はババを引いたとあきらめてもらおう。
俺も、今回の気にくわない表現はスルーする。

さて、ちらっと見ただけだが、
IEのセキュリティ設定項目は結構細かいぞ。
ちゃんと調べてみては。

じゃ、俺はここまでね。ノシ

評価

0

初対面の人と話すときに丁寧語も使えないような、社会不適合な人が回答しているということがわかりました。

評価

0

>2009-04-27 21:10
掲示板ガイドラインより
掲示板を利用する際の禁止事項を以下に記載します。
他人を誹謗・中傷する行為

社会不適合な人が〜なんて書く必要が無いだろう?

>2009-04-23 17:59
有効であることをどうやって確認したのさ。
自分なら JavaScript とかで cookie を確認するけどね。
若しくは掲示板の cookie での記録。
「デフォルトであること」を「確認」したんじゃ意味が無いのさ。
いっそのこと火狐あたりで実験してみたら?
cookie の設定はそっちのが楽だし。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。