Java Tutorial/Servlet/Session
Содержание
Get Set SessionAttributes in Servlet
<source lang="java">
import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet 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("tracker.count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("tracker.count", count); out.println("<HTML><HEAD><TITLE>SessionTracker</TITLE></HEAD>");out.println("<BODY>
Session Tracking Demo
");out.println("You"ve visited this page " + count + ((count.intValue() == 1) ? " time." : " times."));out.println("
"); out.println("
Here is your session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "
"); } out.println("</BODY></HTML>"); }
}</source>
Get Set Session Value in a Servlet
<source lang="java">
import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); Integer counter2 = (Integer) getServletContext().getAttribute ("counter2"); if (counter2 == null) { counter2 = new Integer(1); } else { counter2 = new Integer(counter2.intValue() + 1); } getServletContext().setAttribute("counter2", counter2); Integer counter = (Integer) session.getAttribute("counter"); if (counter == null) { counter = new Integer(1); } else { counter = new Integer(counter.intValue() + 1); } session.setAttribute("counter", counter); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>"); out.println("Using Contexts"); out.println("</TITLE>"); out.println("</HEAD>"); out.println("<BODY>");out.println("
Using Contexts
");out.println("Welcome! You have been here " + counter + " times.
"); out.println("Total page accesses: " + counter2 + "
"); if(session.isNew()){ out.println("This is a new session.
"); } else { out.println("This is not a new session.
"); } out.println("The session ID: " + session.getId() + "
"); out.println("Last time accessed: " + new Date(session.getLastAccessedTime()) + "
"); out.println("Creation time: " + new Date(session.getCreationTime()) + "
"); out.println("Timeout length: " + session.getMaxInactiveInterval() + " seconds
"); out.println("</BODY>"); out.println("</HTML>"); }
}</source>
Servlet Session Check
<source lang="java">
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.text.DateFormat; public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { HttpSession session = request.getSession(false); if (session == null){ response.sendRedirect("/dbproj/login.jsp"); } else { response.sendRedirect("/dbproj/menu.jsp"); } }
}</source>
Servlet Session Creation Last Access Time
<source lang="java">
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.text.DateFormat; public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { response.setContentType("text/html"); java.io.PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); Date creationTime = new Date(session.getCreationTime() ); Date lastAccessed = new Date(session.getLastAccessedTime()); Date now = new Date(); DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); out.println("<html>"); out.println("<head>"); out.println("<title>Displaying the Session Creation and Last-Accessed Time</title>"); out.println("</head>"); out.println("<body>");out.println("
Session Creation and Last-Accessed Time
");out.println("The time and date now is: " + formatter.format(now) + "
"); out.println("The session creation time: HttpSession.getCreationTime( ): " + formatter.format(creationTime) + "
"); out.println("The last time the session was accessed: HttpSession.getLastAccessedTime( ): " + formatter.format(lastAccessed) ); out.println("</body>"); out.println("</html>"); }
}</source>
Servlet Session Info
<source lang="java">
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { response.setContentType("text/html"); java.io.PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); out.println("<html>"); out.println("<head>"); out.println("<title>Simple Session Tracker</title>"); out.println("</head>"); out.println("<body>");out.println("
Session Info
");out.println("session Id: " + session.getId() + "
"); out.println( "The SESSION TIMEOUT period is " + session.getMaxInactiveInterval() + " seconds.
"); out.println( "Now changing it to 20 minutes.
"); session.setMaxInactiveInterval(20 * 60); out.println("The SESSION TIMEOUT period is now " + session.getMaxInactiveInterval() + " seconds."); out.println("</body>"); out.println("</html>"); } /** Handles the HTTPPOST
method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { doGet(request,response); }
}</source>
Servlet Session Max Inactive Interval
<source lang="java">
import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); // Get the current session object, create one if necessary HttpSession session = req.getSession(); out.println("<HTML><HEAD><TITLE>SessionTimer</TITLE></HEAD>");out.println("<BODY>
Session Timer
");// Display the previous timeout out.println("The previous timeout was " + session.getMaxInactiveInterval()); out.println("
"); // Set the new timeout session.setMaxInactiveInterval(2*60*60); // two hours // Display the new timeout out.println("The newly assigned timeout is " + session.getMaxInactiveInterval()); out.println("</BODY></HTML>"); }
}</source>
Servlet Session Snoop
<source lang="java">
import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet 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("snoop.count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("snoop.count", count); out.println("<HTML><HEAD><TITLE>SessionSnoop</TITLE></HEAD>");out.println("<BODY>
Session Snoop
");out.println("You"ve visited this page " + count + ((count.intValue() == 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
Session Events
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; 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 Binder extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); HttpSession session = req.getSession(true); SessionObject o = new SessionObject(getServletContext()); session.setAttribute("Binder.object", o); out.println("<html>"); out.println("<head>"); out.println("<title>Session Binder</title>"); out.println("</head>"); out.println("<body>"); out.println("Object bound to session " + session.getId()); out.println("</body>"); out.println("</html>"); out.flush(); }
} class SessionObject implements HttpSessionBindingListener {
ServletContext context; public SessionObject(ServletContext context) { this.context = context; } public void valueBound(HttpSessionBindingEvent event) { context.log("" + (new java.util.Date()) + " Binding " + event.getName() + " to session " + event.getSession().getId()); } public void valueUnbound(HttpSessionBindingEvent event) { context.log("" + (new java.util.Date()) + " Unbinding " + event.getName() + " from session " + event.getSession().getId()); }
}</source>
use the Servlet API to manage session information
<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 Counter extends HttpServlet {
static final String COUNTER_KEY = "Counter.count"; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(true); resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); int count = 1; Integer i = (Integer) session.getAttribute(COUNTER_KEY); if (i != null) { count = i.intValue() + 1; } session.setAttribute(COUNTER_KEY, new Integer(count)); out.println("<html>"); out.println("<head>"); out.println("<title>Session Counter</title>"); out.println("</head>"); out.println("<body>"); out.println("Your session ID is " + session.getId()); out.println(" and you have hit this page " + count + " time(s) during this browser session"); out.println("<form method=GET action=\"" + req.getRequestURI() + "\">"); out.println("<input type=submit " + "value=\"Hit page again\">"); out.println("</form>"); out.println("</body>"); out.println("</html>"); out.flush(); }
}</source>