018_Session
一. Session簡介
1. Session是基于Cookie的一種會話機制。 Cookie是服務(wù)器返回一小份數(shù)據(jù)給客戶端, 并且存放在客戶端上。Session數(shù)據(jù)存放在服務(wù)器端。
2. Session常用API
2.1. 得到會話ID: String id = session.getId();
2.2. 存值: session.setAttribute(name, value);
2.3. 取值: session.getAttribute(name);
2.4. 移除值: session.removeAttribute(name);
2.5. 強制干掉會話, 里面存放的任何數(shù)據(jù)就都沒有了: session.invalidate();
3. Session何時創(chuàng)建: 如果有在servlet里面調(diào)用了request.getSession()就創(chuàng)建了一個Session。
4. Session何時銷毀
4.1. session 是存放在服務(wù)器的內(nèi)存中的一份數(shù)據(jù), 即使關(guān)了瀏覽器, session也不會銷毀。
4.2. 關(guān)閉服務(wù)器session銷毀。
4.3. session會話時間過期。session默認有效期是30分鐘。
4.4. 主動調(diào)用session.invalidate()或者session.removeAttribute(name)清除session。
二. Session購物車實例
1. 新建一個UseSession的Web工程
2. 在WebContent下新建一個index.html
3. 編輯index.html
<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>商品列表</title></head><body><a href="CartServlet.action?name=華為">華為</a><br/><a href="CartServlet.action?name=小米">小米</a><br/><a href="CartServlet.action?name=vivo">vivo</a><br/><a href="CartServlet.action?name=金立">金立</a><br/><a href="CartServlet.action?name=魅族">魅族</a><br/><a href="CartServlet.action?name=oppo">oppo</a><br/></body> </html>4. 新建CartServlet.java和ClearCartList.java
5. 編輯CartServlet.java
package com.lywgames.myservlet;import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class CartServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲取商品idString name = new String(req.getParameter("name").getBytes("ISO8859-1"), "UTF-8");// 獲取session中的cartlist@SuppressWarnings("unchecked")Map<String, Integer> cartlist = (Map<String, Integer>)req.getSession().getAttribute("cartlist");// 如果cartlist為空, session中還沒有購物車if(cartlist == null){cartlist = new HashMap<String, Integer>();cartlist.put(name, 1);}else{cartlist.put(name, cartlist.get(name) == null ? 1 : cartlist.get(name) + 1);}req.getSession().setAttribute("cartlist", cartlist);resp.setContentType("text/html;charset=utf-8");StringBuffer sb = new StringBuffer();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");sb.append("<meta charset='UTF-8'>").append("\r\n");sb.append("<title>購物車</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");for (Entry<String, Integer> kv : cartlist.entrySet()) {sb.append("<h3>").append(kv.getKey()).append(": ").append(kv.getValue()).append("</h3>").append("\r\n");}sb.append("<h1><a href='index.html'>繼續(xù)購物</a></h1>").append("\r\n");sb.append("<h1><a href='ClearCartList.action'>清空購物車</a></h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>").append("\r\n");resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }6. 編輯ClearCartList.java
package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class ClearCartList extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 清楚cartlist的session緩存req.getSession().removeAttribute("cartlist");resp.sendRedirect("index.html");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }7. 編輯web.xml
8. 部署運行
9. 點擊幾個手機, 有的手機多點擊幾次, 到購物車頁面查看
10. 點擊清空購物車, 清空cartlist的session緩存, 繼續(xù)購物
11. 點擊華為, 新的購物車信息
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的018_Session的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 017_Cookie
- 下一篇: 001_Jsp入门