Session, Session 是一个篮子
只要是同一套有父子关系的窗口,都可以访问到同一个 Session。
启发 :默认 session 是依赖 cookie 的。若cookie完全禁用后解决方案 : 重写URL。
新浪邮箱 : 做学问不严谨。不像IBM等这样的大公司。
+ "<a href=" + response.encodeURL(request.getRequestURL().toString()) + ">test</a><BR>"
+ "<a href=" + request.getRequestURI().toString() + ">test</a>"
china-pub买书,例如 : 最近浏览的列表,一般是写cookie里面了。
Session , Session 是一个篮子
只要是同一套有父子关系的窗口,都可以访问到同一个 Session。启发 :默认 session 是依赖 cookie 的。若cookie完全禁用后解决方案 : 重写URL。
新浪邮箱 : 做学问不严谨。不像IBM等这样的大公司。
+ "<a href=" + response.encodeURL(request.getRequestURL().toString()) + ">test</a><BR>"
+ "<a href=" + request.getRequestURI().toString() + ">test</a>"
china-pub买书,例如 : 最近浏览的列表,一般是写cookie里面了。
SessionInfoServlet.java
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; /** * 用于演示Servlet API中的Session管理机制 */ public class SessionInfoServlet extends HttpServlet { /** * Builds an HTML document containing session information and returns it to * the client. */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // get current session or, if necessary, create a new one 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(); // generate HTML document out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>Session Info Servlet</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<H3>Session Information</H3>"); out.println("New Session: " + mySession.isNew()); out.println("<BR>Session ID: " + mySession.getId()); out.println("<BR>Session Creation Time: " + new java.util.Date(mySession.getCreationTime())); out.println("<BR>Session Last Accessed Time: " + new java.util.Date(mySession.getLastAccessedTime())); out.println("<H3>Request Information</H3>"); out.println("Session ID from Request: " + request.getRequestedSessionId()); out.println("<BR>Session ID via Cookie: " + request.isRequestedSessionIdFromCookie()); out.println("<BR>Session ID via rewritten URL: " + request.isRequestedSessionIdFromURL()); out.println("<BR>Valid Session ID: " + request.isRequestedSessionIdValid()); out.println("</BODY></HTML>"); out.close(); // close output stream } /** * Returns a brief description of this servlet. * * @return Brief description of servlet */ public String getServletInfo() { return "Servlet returns session information."; } }--ShowSession.java
import java.io.*; import java.net.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; // Session 追踪 public class ShowSession extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Session Tracking Example"; HttpSession session = request.getSession(true); // 在服务器端找不到则创建一个,这是 true 的含义,客户端带不回来 String heading; // Use getAttribute instead of getValue in version 2.2. Integer accessCount = (Integer) session.getAttribute("accessCount"); // 计数的功能 if (accessCount == null) { accessCount = new Integer(0); heading = "Welcome, Newcomer"; } else { heading = "Welcome Back"; accessCount = new Integer(accessCount.intValue() + 1); } // Use setAttribute instead of putValue in version 2.2. session.setAttribute("accessCount", accessCount); out.println("<html><head><title>Session追踪</title></head>" + "<BODY BGCOLOR="#FDF5E6"> " + "<H1 ALIGN="CENTER">" + heading + "</H1> " + "<H2>Information on Your Session:</H2> " + "<TABLE BORDER=1 ALIGN="CENTER"> " + "<TR BGCOLOR="#FFAD00"> " + " <TH>Info Type<TH>Value " + "<TR> " + " <TD>ID " + " <TD>" + session.getId() + " " + "<TR> " + " <TD>Creation Time " + " <TD>" + new Date(session.getCreationTime()) + " " + "<TR> " + " <TD>Time of Last Access " + " <TD>" + new Date(session.getLastAccessedTime()) + " " + "<TR> " + " <TD>Number of Previous Accesses " + " <TD>" + accessCount + " " + "</TABLE> " + "</BODY></HTML>"); } /** Handle GET and POST requests identically. */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }URLSession.java
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.net.*; import java.util.*; //Session追踪 public class URLSession 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); out.println("<html><head><title>Session追踪</title></head>" + "<BODY> " + "session id:" + session.getId() + "<br>" + "from url:" + request.isRequestedSessionIdFromURL() + "<br>" + "from cookie:" + request.isRequestedSessionIdFromCookie() + "<br>" + "<a href=" + response.encodeURL(request.getRequestURL().toString()) + ">test</a><BR>" + "<a href=" + request.getRequestURI().toString() + ">test</a>" + "</BODY></HTML>"); } /** Handle GET and POST requests identically. */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }