1. 什麼是 會話 Session?
由於 上一篇講到的 Cookie 的缺陷,就有了 Session,它是儲存在伺服器的記憶體中的,而不是使用者的電腦中
2. 典型執行個體: 網店購物車
3. Session 會話編程
HttpSession 介面定義了 Session 相應的方法
4. 會話的結束
5. 會話的底層實現方式:
① Cookie JSessoinID=...
② URL 重寫 :(防止有些使用者會關閉 Cookie)
6. 執行個體展示
--------------> 建立一個Servlet DemoSessionServlet .java
package webbook.chapter7;import java.io.IOException;import java.io.PrintWriter;import java.sql.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 DemoSessionServlet extends HttpServlet {private static final long serialVersionUID = 3144436730239445373L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();Integer counter = (Integer) session.getAttribute("counter");if (counter == null) {counter = new Integer(1);} else {counter = new Integer(counter.intValue() + 1);}session.setAttribute("counter", counter);session.setMaxInactiveInterval(3600);response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head><title>session demo servlet</title></head>");out.println("<body>");out.println("<h1>使用session的示範</h1>");out.println("你已經訪問了" + counter + "次.<br><br>");if (session.isNew()) {out.println("這是一個建立的Session.<br><br>");} else {out.println("這不是一個建立的Session.<br><br>");}out.println("jsessionid: " + session.getId() + "<br><br>");out.println("LastAccessedTime: " + session.getLastAccessedTime() + "<br>");out.println("格式轉換以後的LastAccessedTime: " + new Date(session.getLastAccessedTime()) + "<br><br>");out.println("CreationTime: " + session.getCreationTime() + "<br>");out.println("格式轉換以後的CreationTime: " + new Date(session.getCreationTime()) + "<br><br>");out.println("MaxInactiveInterval: " + session.getMaxInactiveInterval() + "秒<br>");out.println("<br>使用Session對象的getAttributeNames<br>");Enumeration enumer = session.getAttributeNames();String name = null;while (enumer.hasMoreElements()) {name = (String) enumer.nextElement();out.println("Session name:" + name + "<br>");out.println("Session value:" + session.getAttribute(name) + "<br>");}// session.removeAttribute("counter");// session.invalidate();out.println("</body>");out.println("</html>");out.flush();out.close();}}
在瀏覽器中輸入Servlet對應的路徑,結果:
第一次進入顯示結果:
重新整理後顯示結果: