package test; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; /** * The ColorSessionServlet demonstrates the session management * mechanisms built into the servlet API. A session is * established and the client's preferred background color * as well as the number of times they have requested the * servlet are stored. * * @author Dustin R. Callaway * @version 1.0, 08/05/98 */ public class ColorSessionServlet extends HttpServlet { /** * init method is called when servlet is first loaded. */ public void init(ServletConfig config) throws ServletException { super.init(config); //pass ServletConfig to parent } /** * service generates HTML pages that allows the client to * choose a color and then remembers the color on future * requests. */ public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name; //name of user String color; //user's color preference Integer hitCount; //# of times user has requested servlet //get current session, create if it doesn't exist HttpSession mySession = request.getSession(true); //MIME type to return is HTML response.setContentType("text/html"); //get a handle to the output stream PrintWriter out = response.getWriter(); if (mySession.isNew()) //first time client requests page { //generate HTML form requesting name and color preference out.println(""); out.println(""); out.println("Color Selector"); out.println(""); out.println(""); out.println("
"); out.println("Please select background color:
"); out.println("White
"); out.println("Red
"); out.println("Green
"); out.println("Blue

"); out.println("Please enter your name:
"); out.println("

"); out.println(""); out.println(""); out.println(""); } else //client has already established a session { if (request.getParameter("bcolor") != null) { //client is submitting the color preference form String bcolor; //for user's preferred background color bcolor = request.getParameter("bcolor"); //get HEX code for color if (bcolor.equals("red")) { color = "#FF0000"; } else if (bcolor.equals("green")) { color = "#00FF00"; } else if (bcolor.equals("blue")) { color = "#0000FF"; } else //if nothing selected, default to white { color = "#FFFFFF"; } name = request.getParameter("name"); //get user name hitCount = new Integer(1); //requested 1 time so far mySession.setAttribute("bcolor", color); //store color mySession.setAttribute("hitCount", hitCount); mySession.setAttribute("name", name); //store user name Cookie myCookie = new Cookie("ColorId", mySession.getId()); response.addCookie(myCookie); // out.println("
Session ID: " + ); // out.println("
Session ID fra request objektet: " + request.getRequestedSessionId()); } else //user has previously submitted HTML form { //get color, name, and hit count from session color = (String)mySession.getAttribute("bcolor"); name = (String)mySession.getAttribute("name"); hitCount = (Integer)mySession.getAttribute("hitCount"); } //increment hit count and store in session mySession.setAttribute("hitCount", new Integer(hitCount.intValue() + 1)); out.println(""); out.println(""); out.println("Color Selected"); out.println(""); out.println(""); out.println("

Hello " + name + "!

"); out.println("

You have requested this page " + hitCount.toString() + " times.
"); out.println("Notice how session management allows me " + "to remember
"); out.println("who you are, how many times you've " + "requested this page,
"); out.println("and your preferred background color.

"); out.println("Next " + "Screen

"); out.println(""); out.println(""); } out.close(); } /** * getServletInfo returns a brief description of this servlet */ public String getServletInfo() { return "Servlet uses session management to maintain color."; } }