会话,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>
正在尝试写博客,把会的分享给你们,如有写的不好的地方,希望指点一下,谢谢!