乱数を Cookie ID として保存する単純なサーブレットを作成しました。「新しい ID」をクリックすると Cookie ID が変更されますが、問題は ID が変更されないことです。以下は私のコードです、
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Cookies extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Cookie coki[]=request.getCookies();
Cookie tokenCookie=null;
if(coki!=null)
{
for(int i=0;i<coki.length;i++)
{
if(coki[i].getName().equals("token"))
{
tokenCookie=coki[i];
break;
}
}
}
String resetParam=request.getParameter("resetParam");
if(tokenCookie==null || (resetParam!=null && resetParam.equals("yes")))
{
Random rnd=new Random();
long cookieid=rnd.nextLong();
out.println("Welcome. A new token "+cookieid+" is now established");
tokenCookie =new Cookie("token",Long.toString(cookieid));
tokenCookie.setComment("Cookie named token to identity user");
tokenCookie.setMaxAge(-1);
tokenCookie.setPath("/ServletPractice/Cookies");
response.addCookie(tokenCookie);
}
else
{
out.println("Welcome back. Your token id is "+tokenCookie.getValue()+"");
}
String requestURLSame=request.getRequestURL().toString();
String requestURLNew=request.getRequestURL()+"?requestParam=yes";
out.println("Click <a href="+requestURLSame+">here</a> to browse with same identity");
out.println("Click <a href="+requestURLNew+">here</a> to browse with new identity");
out.close();
}
}
Chromeブラウザで上記のサーブレットを実行すると、「新しいID」のリンクをクリックすると、表示されるIDは変更されませんが、文字列は「ようこそ」から「ようこそ」に変わります。
親切に私を案内してください。前もって感謝します。