package javacodebook.server.cookie; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; /** * Ein dauerhafter Cookie wird gesetzt und ein Benutzer anhand dessen beim * nächsten Besuch wieder identifiziert. */ public class IdentServlet extends HttpServlet { //Einfache Hilfskonstruktion, um Benutzer zu verwalten wiederzuerkennen private static Hashtable users = new Hashtable(); protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, java.io.IOException { res.setContentType("text/html"); java.io.PrintWriter out = res.getWriter(); out.println(""); out.println(""); //Es können mehrere Cookies vorhanden sein, alle werden überprüft Cookie[] cookies = req.getCookies(); String userName = null; for(int i = 0; i < cookies.length; i++) { if("userID".equals(cookies[i].getName())) userName = cookies[i].getValue(); } //wenn der Cookie nicht gesetzt war und auch gerade keine Anmeldung //stattfindet, wird ein Anmeldeformular gezeigt. if(userName == null && req.getParameter("name") == null) showForm(out); //Bei der Anmeldung wird der Cookie gesetzt, die Lebensdauer wird auf //ein Jahr eingestellt else if(req.getParameter("name") != null) { userName = req.getParameter("name"); Cookie cookie = new Cookie("userID", userName); cookie.setMaxAge(60*60*24*365);//Lebensdauer in sec: 60*60*24*365 = 1 Jahr res.addCookie(cookie); out.println("Willkommen, " + userName + "
"); out.println("Beim nächsten Besuch werden Sie wieder mit Namen begrüßt"); } //Begrüßung, wenn der Benutzer erkannt wurde else { out.println("Willkommen, " + userName + "
"); out.println("Schön, dass Sie wieder hier sind!"); } out.println(""); out.println(""); } private void showForm(java.io.PrintWriter out) { out.println("
"); out.println("Bitte geben Sie Ihren Namen ein: "); out.println("
"); out.println(""); out.println("
"); } }