前提・実現したいこと
アクセス時にクッキーを利用して現在時刻を記録し、
2回目以降のアクセス時にクッキーの値を取り出し、前回アクセス時刻を表示。
発生している問題・エラーメッセージ
コンパイル時点でエラーはないが、例外とされてしまう。
エラーメッセージ
重大: サーブレット [api.GetCookie] のServlet.service()が例外を投げました
該当のソースコード
package api;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
- Servlet implementation class GetCookie
*/
@WebServlet("/GetCookie")
public class GetCookie extends HttpServlet {
private static final long serialVersionUID = 1L;
/** * @see HttpServlet#HttpServlet() */ public GetCookie() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); try (PrintWriter out = response.getWriter()) { Date date = new Date(); String str = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date); Cookie c = new Cookie("now",str); response.addCookie(c); Cookie[] cs = request.getCookies(); if (cs != null) { for (int i = 0; i <= cs.length; i++) { String cookieName = cs[i].getName(); if (cookieName.equals("now")) { String cookieValue = cs[i].getValue(); out.print(cookieValue); break; } } } } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }
}
Java
試したこと
PrintWriterのtryを外して実行するとHTTP Error500が出る。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。