java中的session和cookie實現購物車的結算和清空

只寫了一遍的代碼:頁面的跳轉操做,所有是從web文件中讀取進行的html

web配置文件java

<?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對象,講值取出來web

<%@ 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中的值,清空購物車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");
    }
}
相關文章
相關標籤/搜索