Here we are about to improve the conversation example so that we could store and retrieve additional information on cookies. To do that we add a private method, cookieTest(), in the Conversation servlet that gets the existing cookies from the request, and put them in the report list, than we'll put them as a session attribute in the request, to pass them to the JSP page where they are shown to the user. Then, we add a new cookie (or replace an old one) to the response array of cookies.
This is the change in the processRequest(), just add a call to cookieTest() before setting the attribute on the session:
// ... cookieTest(request, response, report); session.setAttribute("report", report);
Here is the new method:
private void cookieTest(HttpServletRequest request, HttpServletResponse response, ListIn the report we'll find not only the lastX (where X is in 0..9) cookies generated by us, but also the JSESSIONID generated by the container.report) { Cookie[] cookies = request.getCookies(); if(cookies != null) { for(Cookie c : cookies) { report.add(c.getName() + ": " + c.getValue()); } } // add a new cookie for the next iteration long time = System.currentTimeMillis(); String name = "last" + time % 10; String value = "time " + time; Cookie cookie = new Cookie(name, value); cookie.setMaxAge(5 * 60); // a 5 min life response.addCookie(cookie); }
You could read more on cookies in the sixth chapter of Head First Servlet and JSP, I wrote the first version of this post while I was reading this fun and interesting book.
No comments:
Post a Comment