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();
}
}
}