Session简单介绍

Session

会话 , Session是基于Cookie的一种会话机制。 Cookie是服务器返回一小份数据给客户端,并且存放在客户端上。 Session是,数据存放在服务器端。

  • 常用API
//得到会话ID
String id = session.getId();

//存值
session.setAttribute(name, value);

//取值
session.getAttribute(name);

//移除值
session.removeAttribute(name);
  • Session何时创建 , 何时销毁?
  • 创建

           如果有在servlet里面调用了 request.getSession()

  • 销毁

           session 是存放在服务器的内存中的一份数据。 当然可以持久化. Redis . 即使关了浏览器,session也不会销毁。

                 1.关闭服务器

                 2.session会话时间过期。 有效期过了,默认有效期: 30分钟。

例子:简单购物车

 

Session简单介绍

Session简单介绍

1.新建商品列表product_list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<a href="CartServlet?id=0">苹果</a>
	</br>
	<a href="CartServlet?id=1">华为</a>
	</br>
	<a href="CartServlet?id=2">三星</a>
	</br>
	<a href="CartServlet?id=3">VIVO</a>
	</br>
	<a href="CartServlet?id=4">OPPO</a>
	</br>
	<a href="CartServlet?id=5">锤子</a>
	</br>
</body>
</html>

2.处理添加购物车事件CartServlet.java

package com.hbxy.rick;

import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

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;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");

		// 1. 获取要添加到购物车的商品id
		int id = Integer.parseInt(request.getParameter("id")); // 0 - 1- 2 -3 -4
		String[] names = { "苹果", "华为", "三星", "VIVO", "OPPO","锤子" };
		// 取到id对应的商品名称
		String name = names[id];

		// 2. 获取购物车存放东西的session Map<String , Integer> iphoen7 3
		// 把一个map对象存放到session里面去,并且保证只存一次。
		Map<String, Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart");
		// session里面没有存放过任何东西。
		if (map == null) {
			map = new LinkedHashMap<String, Integer>();
			request.getSession().setAttribute("cart", map);
		}
		// 3. 判断购物车里面有没有该商品
		if (map.containsKey(name)) {
			// 在原来的值基础上 + 1
			map.put(name, map.get(name) + 1);
		} else {
			// 没有购买过该商品,当前数量为1 。
			map.put(name, 1);
		}

		// 4. 输出界面。(跳转)
		response.getWriter().write("<a href='product_list.jsp'><h3>继续购物</h3></a><br>");
		response.getWriter().write("<a href='cart.jsp'><h3>去购物车结算</h3></a>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

3.创建购物车cart.jsp

<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h2>你的购物车商品如下:</h2>
	</br>
	<%
		//先取到Map

		Map<String, Integer> map = (Map<String, Integer>) session.getAttribute("cart");
		//
		//遍历Map
		if (map != null) {
			for (String key : map.keySet()) {
				int value = map.get(key);
	%>
	名称:<%=key%>
	数量:<%=value%></br>
	<%
		}
		}
	%>
	<a href="Clear">清空购物车</a>
</body>
</html>

 

4清空购物车 Clear.java

package com.hbxy.rick;

import java.io.IOException;
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 Clear extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//强制干掉会话,里面存放的任何数据就都没有了。
		//session.invalidate();
		
		//从session中移除某一个数据
		HttpSession session = request.getSession();
		session.removeAttribute("cart");
		response.sendRedirect("cart.jsp");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

测试:

Session简单介绍         Session简单介绍Session简单介绍