package sample;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class SessionServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8665155529222867738L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		
		Map<String,Integer> sessions =  new HashMap<String,Integer>();
		
		// ContentType?ð?Ý?è
		response.setContentType("text/html; charset=UTF-8");
	    // ?o?Í?pPrintWriter?ð?æ?¾
	    PrintWriter out = response.getWriter();
	    // ?o?Í
	    out.println("<html>");
	    out.println("<head>");
	    out.println("<title>Session Test</title>");
	    out.println("</head>"); 
	    out.println("<body>");
	    out.println("<H1>Session Test of Servlet</H1>"); 
	    out.println("<HR>"); 
    	out.println("<H2>Cookies</H2>"); 
	    if(request.getCookies() != null) {
	    	for(Cookie cookie : request.getCookies()) {
		    	out.println(cookie.getName() + " = " + cookie.getValue()); 
			    out.println("<BR>"); 
		    }
	    }
	    out.println("<HR>"); 
    	out.println("<H2>Create Sessions</H2>"); 
	    for(int i = 1 ; i <= 10 ; ++i) {
	    	HttpSession session = request.getSession();
	    	Integer count = sessions.get(session.getId());
	    	if(count == null) {
	    		sessions.put(session.getId(), 1);
	    	}
	    	else {
	    		sessions.put(session.getId(), count.intValue()+1);
	    	}
	    	out.println( i + " : " + session.getId());
		    out.println("<br>");
		    session.invalidate();
	    }
	    out.println("<HR>"); 
    	out.println("<H2>Result</H2>"); 
    	out.println("<table border='1'>"); 
    	out.println("<tr><th>Session Id</th><th>Count</th></tr>"); 
    	for(Map.Entry<String, Integer> entry : sessions.entrySet()){
    		out.println("<tr><td>"+ entry.getKey() +"</td><td align='center'>" + entry.getValue() + "</td></tr>"); 
    	}
    	out.println("</table>"); 
    	
	    out.println("</body>");
	    out.println("</html>");
	}

	
	
	
}
