Session是基于cookie的一种绘画机制,cookie是服务器返回一小份数据到客户端,并且存放在客户端中去,session是将数据存放在服务器端
1.得到session值
HttpSession session = request.getSession();
2.常用的方法
获取会话的id:session.getId();
存值 :session.setAttribute(name,value);
取值:session.getAttribute(name);
移除值:session.removeAttribute(name);
3.session的生命周期
从创建request.getSession()创建开始
从关闭服务器就结束了。一般就只有30分钟的有效期
4.创建一个购物车对象
方法:
1.登录页面
<%@ 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"><h4>手机一号</h4></a>
<a href="CarServlet?id=1"><h4>手机二号</h4></a>
<a href="CarServlet?id=2"><h4>手机三号</h4></a>
<a href="CarServlet?id=3"><h4>手机四号</h4></a>
</body>
</html>
2.登陆跳转处理
package com.servlet;
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;
/**
* Servlet implementation class CarServlet
*/
public class CarServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CarServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置编码格式
response.setContentType("text/html;charset = utf-8");
//2.获取到对应的id
int id =Integer.parseInt( request.getParameter("id")); //0.1.2.3
//取到对应的id的值
String[] names = {"手机一","手机二","手机三","手机四",};
//取到对应的id的商品的名称
String name = names[id];
//3.将购物车的信息存放到session中去 map<String Integer>
Map<String,Integer> map = (Map<String, Integer>) request.getSession().getAttribute("cart");
/*
第一次调用的时候,map为空 就new一个map 存到session中去
但是第二次就不走这个步骤了
*/
if(map ==null) { //购物车为空的时候 session中没有任何东西哦
map = new LinkedHashMap<String ,Integer>();
request.getSession().setAttribute("cart", map); //创建session
}
//4.判断session中有没有存放该商
if(map.containsKey(name)) {
//有,在原来的基础上加一
map.put(name, map.get(name)+1);
}else {
//没有购买该商品时
map.put(name, 1);
}
//5.输出界面
response.getWriter().write("<a href = 'product_list.jsp'><h3>继续购物</h3></a>");
response.getWriter().write("<a href = 'cart.jsp'>结算<h3></h3></a>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
3.显示购物车页面
<%@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>
<%
//获取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);
%>
<h4>名称:<%=key %> 数量 :<%=value %></h4>
<%
}
}
%>
<a href="cleanCa"><h5>清空购物车</h5></a>
</body>
</html>
4.清空购物车处理
package com.servlet;
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;
/**
* Servlet implementation class cleanCa
*/
public class cleanCa extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public cleanCa() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取session
HttpSession session = request.getSession();
session.removeAttribute("cart"); //移除name
response.sendRedirect("cart.jsp"); //回到当前的页面
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}