0


使用Session和cookie会话对象实现简单购物车功能(超详细)

一、新建项目、实体类、servlet

1.新建Dynamic Web project,新建过程如下;
在这里插入图片描述
2.在src目录下新建两个包,一个命名为entity,一个命名为servlet,新建过程如下;
在这里插入图片描述
3.在entity目录下新建两个实体类,一个名为Cake,一个名为CakeDB,新建过程如下:在这里插入图片描述
4.在servlet目录下新建三个servlet,命名分别为ListCakeServlet、PurchaseServlet和CartServlet,新建过程如下:
在这里插入图片描述
所有东西建完后结果如图:
在这里插入图片描述

二:源代码

1.Cake实体类:

packageentity;publicclassCake{privateString id;privateString name;publicCake(){}publicCake(String id,String name){this.id = id;this.name = name;}publicvoidsetId(String id){this.id=id;}publicStringgetId(){return id;}publicvoidsetName(String name){this.name=name;}publicStringgetName(){return name;}}

2.CakeDB实体类:

packageentity;importjava.util.Collection;importjava.util.LinkedHashMap;importjava.util.Map;publicclassCakeDB{privatestaticMap<String,Cake> cake =newLinkedHashMap<String,Cake>();static{//模拟数据库中的记录
        cake.put("1001",newCake("1001","A类:巧克力蛋糕"));
        cake.put("1002",newCake("1002","B类:水果沙拉蛋糕"));
        cake.put("1003",newCake("1003","C类:慕斯蛋糕"));
        cake.put("1004",newCake("1004","D类:奶油蛋糕"));
        cake.put("1005",newCake("1005","E类:干果蛋糕"));}// 获得所有的蛋糕publicstaticCollection<Cake>getAll(){return cake.values();}// 根据指定的id获蛋糕publicstaticCakegetCake(String id){return cake.get(id);}}

3.ListCakeServlet:

packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.Collection;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importentity.Cake;importentity.CakeDB;@WebServlet("/ListCakeServlet")publicclassListCakeServletextendsHttpServlet{privatestaticfinallong serialVersionUID =1L;publicListCakeServlet(){super();}protectedvoiddoGet(HttpServletRequest request,HttpServletResponse resp)throwsServletException,IOException{
        resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();Collection<Cake> cakes =CakeDB.getAll();
        out.write("本站提供的蛋糕有:<br>");for(Cake cake : cakes){String url ="PurchaseServlet?id="+ cake.getId();
            out.write(cake.getName()+"<a href='"+ url
                    +"'>点击购买</a><br>");}}protectedvoiddoPost(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{doGet(request, response);}}

4.PurchaseServlet:

packageservlet;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importentity.Cake;importentity.CakeDB;@WebServlet("/PurchaseServlet")publicclassPurchaseServletextendsHttpServlet{privatestaticfinallong serialVersionUID =1L;publicPurchaseServlet(){super();}protectedvoiddoGet(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{// 获得用户购买的商品String id = req.getParameter("id");if(id ==null){// 如果id为null,重定向到ListBookServlet页面String url ="ListBookServlet";
            resp.sendRedirect(url);return;}Cake book =CakeDB.getCake(id);// 创建或者获得用户的Session对象HttpSession session = req.getSession();// 从Session对象中获得用户的购物车List<Cake> cart =(List) session.getAttribute("cart");if(cart ==null){// 首次购买,为用户创建一个购物车(List集合模拟购物车)
            cart =newArrayList<Cake>();// 将购物城存入Session对象
            session.setAttribute("cart", cart);}// 将商品放入购物车
        cart.add(book);// 创建Cookie存放Session的标识号Cookie cookie =newCookie("JSESSIONID", session.getId());
        cookie.setMaxAge(60*30);
        cookie.setPath("/Servlet");
        resp.addCookie(cookie);// 重定向到购物车页面String url ="CartServlet";
        resp.sendRedirect(url);}protectedvoiddoPost(HttpServletRequest request,HttpServletResponse response)throwsServletException,IOException{doGet(request, response);}}

5.CartServlet:

packageservlet;importentity.Cake;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.List;@WebServlet("/CartServlet")publicclassCartServletextendsHttpServlet{protectedvoiddoGet(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{
        resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();List<Cake> cart =null;boolean purFlag =true;HttpSession session = req.getSession(false);if(session ==null){
            purFlag =false;}else{
            cart =(List) session.getAttribute("cart");if(cart ==null){
                purFlag=false;}}if(!purFlag){
            out.write("抱歉,您还没有购买任何商品!<br>");}else{
            out.write("您购买的蛋糕有:<br>");double price =0;for(Cake cake:cart){
                out.write(cake.getName()+"<br>");}}}}

三、运行

1.在ListCakeServlet文件下运行,点击鼠标右键,选择run as,具体如图:
在这里插入图片描述
2.运行结果如图:
在这里插入图片描述
点击购买之后跳转CartServlet页面,比如我点了巧克力蛋糕后:

在这里插入图片描述
以上就是使用Session和cookie会话对象实现简单购物车功能。希望对你有帮助哦~

标签: servlet java 前端

本文转载自: https://blog.csdn.net/neverowned/article/details/127776969
版权归原作者 neverowned 所有, 如有侵权,请联系我们删除。

“使用Session和cookie会话对象实现简单购物车功能(超详细)”的评论:

还没有评论