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,即使关了浏览器也不会销毁
1.关闭服务器
2.session会话时间过期,有效期过了,默认有效期:30分钟

简单购物车

CarServlet.java类:

package com.itheima.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CarServlet
 */
@SuppressWarnings("serial")
@WebServlet("/CarServlet")
public class CarServlet extends HttpServlet {
	
	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 = {"小米9","红米note7","iPhoneMax","华为20","三星note7"};
		
		//去到id对应的商品名称
		String name = names[id];
		
		//2.获取购物车存放东西的session Map<String,Integer>
		
		//把一个map对象存放到session里面去,并且保证只存一次
		
		@SuppressWarnings("unchecked")
		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>");
		response.getWriter().write("<a href='cart.jsp'><h3>去购物车结算</h3></a><br>");

	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

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="CarServlet?id=0"><h3>小米9</h3></a><br>
	<a href="CarServlet?id=1"><h3>红米note7</h3></a><br>
	<a href="CarServlet?id=2"><h3>iPhoneMax</h3></a><br>
	<a href="CarServlet?id=3"><h3>华为20</h3></a><br>
	<a href="CarServlet?id=4"><h3>三星note7</h3></a>
</body>
</html>

web.xml

<servlet>
  <servlet-name>CarServlet</servlet-name>
    <servlet-class>com.itheima.servlet.CarServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CarServlet</servlet-name>
    <url-pattern>/CarServlet</url-pattern>
  </servlet-mapping>

正在尝试写博客,把会的分享给你们,如有写的不好的地方,希望指点一下,谢谢!

猜你喜欢

转载自blog.csdn.net/Woo_home/article/details/88799178