只写了一遍的代码:页面的跳转操作,全部是从web文件中读取进行的
web配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.it.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/CarServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.it.ClearDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/ClearCartServlet</url-pattern>
</servlet-mapping>
</web-app>
public class Demo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
resp.setContentType("text/html;charset=utf-8");
int id = Integer.parseInt(req.getParameter("id"));
String[] names = {"iphone7", "小米6", "三星note8", "魅族", "华为9"};
String name = names[id];
// 先拿map对象,如果没有值默认为null
Map<String, Integer> cartMap = (Map<String, Integer>) session.getAttribute("cart");
// 根据这个对象,判断是否是第一次进来
if (cartMap == null) {
cartMap = new HashMap<String, Integer>();
// 如果是第一次进来,就添加一个map对象
session.setAttribute("cart", cartMap);
}
// 判断这个map对象中是否存在手机名称的键
if (cartMap.containsKey(name)) {
cartMap.put(name, cartMap.get(name) + 1);
} else {
cartMap.put(name, 1);
}
System.out.println(cartMap);
resp.getWriter().write("<a href='index.html'><h3>继续浏览<h3></a><br>");
resp.getWriter().write("<a href='cart.jsp'><h3>去购物车结算<h3></a><br>");
}
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>首页</title>
</head>
<body>
<a href="/CarServlet?id=0">iphone7</a>
<a href="/CarServlet?id=1">小米6</a>
<a href="/CarServlet?id=2">三星note8</a>
<a href="/CarServlet?id=3">魅族</a>
<a href="/CarServlet?id=4">华为9</a>
</body>
</html>
获取session中的map对象,讲值取出来
<%@ page import="java.util.Map" %>
<%@ page import="java.security.Key" %><%--
Created by IntelliJ IDEA.
User: maotouying
Date: 2019/11/4
Time: 12:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>购物车</title>
</head>
<body>
<h2>您的购物车商品如下:</h2>
<%
Map<String, Integer> map= (Map<String, Integer>)session.getAttribute("cart");
// 遍历map
if (map != null){
for (String key: map.keySet()){
int value = map.get(key);
%>
<h3>名称:<%=key%> 数量:<%=value%></h3>
<%
}
}
%>
<a href="/ClearCartServlet"><h4>清空购物车</h4></a>
</body>
</html>
清除session中的值,清空购物车
public class ClearDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
// 使会话失效
session.invalidate();
resp.sendRedirect("cart.jsp");
}
}