Java by API/javax.servlet.http/HttpSession
Содержание
bindings.listener
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class SessionBindings extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); // Get the current session object, create one if necessary HttpSession session = req.getSession(); // Add a CustomBindingListener session.setAttribute("bindings.listener", new CustomBindingListener(getServletContext())); out.println("This page intentionally left blank"); }
} class CustomBindingListener implements HttpSessionBindingListener {
ServletContext context; public CustomBindingListener(ServletContext context) { this.context = context; } public void valueBound(HttpSessionBindingEvent event) { context.log("[" + new Date() + "] BOUND as " + event.getName() + " to " + event.getSession().getId()); } public void valueUnbound(HttpSessionBindingEvent event) { context.log("[" + new Date() + "] UNBOUND as " + event.getName() + " from " + event.getSession().getId()); }
}
</source>
HttpSession: getAttributeNames()
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times."));out.println("
"); out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: getAttribute(String key)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times.")); out.println("<P>");out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: getCreationTime()
<source lang="java">
import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class ManualInvalidate extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); HttpSession session = req.getSession(); // Invalidate the session if it"s more than a day old or has been // inactive for more than an hour. if (!session.isNew()) { // skip new sessions Date dayAgo = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000); Date hourAgo = new Date(System.currentTimeMillis() - 60 * 60 * 1000); Date created = new Date(session.getCreationTime()); Date accessed = new Date(session.getLastAccessedTime()); if (created.before(dayAgo) || accessed.before(hourAgo)) { session.invalidate(); session = req.getSession(); // get a new session } } }
}
</source>
HttpSession: getId()
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times.")); out.println("<P>");out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: getLastAccessedTime()
<source lang="java">
import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class ManualInvalidate extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); HttpSession session = req.getSession(); // Invalidate the session if it"s more than a day old or has been // inactive for more than an hour. if (!session.isNew()) { // skip new sessions Date dayAgo = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000); Date hourAgo = new Date(System.currentTimeMillis() - 60 * 60 * 1000); Date created = new Date(session.getCreationTime()); Date accessed = new Date(session.getLastAccessedTime()); if (created.before(dayAgo) || accessed.before(hourAgo)) { session.invalidate(); session = req.getSession(); // get a new session } } }
}
</source>
HttpSession: getLastAccessedTime() (2)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times.")); out.println("<P>");out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: getMaxInactiveInterval()
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionTimer extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); out.println("<HTML><HEAD><TITLE>SessionTimer</TITLE></HEAD>");out.println("<BODY>
Session Timer
");out.println("The previous timeout was " + session.getMaxInactiveInterval()); out.println("
"); session.setMaxInactiveInterval(2 * 60 * 60); // two hours out.println("The newly assigned timeout is " + session.getMaxInactiveInterval()); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: invalidate()
<source lang="java">
import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class ManualInvalidate extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); HttpSession session = req.getSession(); // Invalidate the session if it"s more than a day old or has been // inactive for more than an hour. if (!session.isNew()) { // skip new sessions Date dayAgo = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000); Date hourAgo = new Date(System.currentTimeMillis() - 60 * 60 * 1000); Date created = new Date(session.getCreationTime()); Date accessed = new Date(session.getLastAccessedTime()); if (created.before(dayAgo) || accessed.before(hourAgo)) { session.invalidate(); session = req.getSession(); // get a new session } } }
}
</source>
HttpSession: isNew()
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times.")); out.println("<P>");out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: setAttribute(String key, Object value)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times.")); out.println("<P>");out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpSession: setMaxInactiveInterval(int arg0)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionTimer extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); out.println("<HTML><HEAD><TITLE>SessionTimer</TITLE></HEAD>");out.println("<BODY>
Session Timer
");out.println("The previous timeout was " + session.getMaxInactiveInterval()); out.println("
"); session.setMaxInactiveInterval(2 * 60 * 60); // two hours out.println("The newly assigned timeout is " + session.getMaxInactiveInterval()); out.println("</BODY></HTML>"); }
}
</source>