Sessionmanagement

Funktionsweise:

Servlet1:

 ... doGet (HttpServletRequest req, HttpServletResponse resp) ... {
	HttpSession hs = req.getSession(true); //erzeugen
	hs.setAttribute("data_key", req.getParameter("data"));
	...
	OutputStream out = resp.getOutputStream();
	out.println("<HTML><BODY>");
	out.println("Bitte <A href=\"pfad_zu_servlet2\">hier</A> klicken");
	out.println("</BODY></HTML>");

}
Servlet2:

 ... doGet (HttpServletRequest req, HttpServletResponse resp) ... {
	HttpSession hs = req.getSession(false); //Session holen
	if (hs == null) {
		//keine Session vorhanden -> Error
		return;
	}
	else {
		resp.setContentType("text/plain");
		resp.getOutputStream().println(hs.getAttribute("data_key"));
		...
	}

}
Problem: Automatisches Sessionmanagement verwendet standardmässig Cookies -> Problem bei Browsern, die keine Cookies akzeptieren

Lösung: Jeder Link den der Benutzer anklicken kann muß speziell codiert werden um die notwendige Information zum automatischen Sessionmanagement mitzuschicken.

Codebeispiel:

Servlet1:
 ... doGet (HttpServletRequest req, HttpServletResponse resp) ... {
	HttpSession hs = req.getSession(true); //erzeugen
	hs.setAttribute("data_key", req.getParameter("data"));
	...
	OutputStream out = resp.getOutputStream();
	out.println("<HTML><BODY>");
	out.println("Bitte <A href=\"" + encodeURL(pfad_zu_servlet2) + " \">hier</A> klicken");
	out.println("</BODY></HTML>");

}

Servlet2:

 ... wie vorher ...


Autor:  andreas.schaufler@gmx.de

zurück zur Übersicht