使用session实现简易购物车功能

 更新时间:2022年02月09日 16:04:45   作者:来份代码  
这篇文章主要为大家详细介绍了使用session实现简易购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了用session实现简易购物车功能的具体代码,供大家参考,具体内容如下

整体思路:先写一个JSP用于实现商品图片的读取(再次之前要写好连接数据库),当点加入购物车市,根据商品唯一的标识来添加进去(我这里是商品的ID号),点击查看购物车可以看到刚添加进去的东西,和总价钱,点击删除商品可以删除商品。点击返回就到商品商城

前置工作:

我在WebContent下创建了一个imges的文件夹放我的图片

然后创建了一个product.java的实体类用来封装,如下:

package com.huangxu.Dao;
import java.sql.Date;
public class product {
    private int pid;
    private int ptype;
    private String pname;
    private float pprice;
    private int pquantity;
    private String pimage;
    private String pdesc;
    private Date ptime;

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    public int getPtype() {
        return ptype;
    }

    public void setPtype(int ptype) {
        this.ptype = ptype;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public float getPprice() {
        return pprice;
    }

    public void setPprice(float pprice) {
        this.pprice = pprice;
    }

    public int getPquantity() {
        return pquantity;
    }

    public void setPquantity(int pquantity) {
        this.pquantity = pquantity;
    }

    public String getPimage() {
        return pimage;
    }

    public void setPimage(String pimage) {
        this.pimage = pimage;
    }

    public String getPdesc() {
        return pdesc;
    }

    public void setPdesc(String pdesc) {
        this.pdesc = pdesc;
    }

    public Date getPtime() {
        return ptime;
    }

    public void setPtime(Date ptime) {
        this.ptime = ptime;
    }
}

接着写了一个ProductDAO.java的类用来连接数据库,如下:

package com.huangxu;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.huangxu.Dao.product;
public class ProductDAO extends jdbcDao {
    /*
     * 得到产品的信息
     */
    public List<product> getAllproducts() {
        String sql = "select * from product";
        List<product> plist = new ArrayList<product>();
        try {
            conn = getConnection();
            pst = conn.prepareStatement(sql);
            rs=pst.executeQuery();
            while(rs.next()){
                product p=new product();
                p.setPid(rs.getInt(1));
                p.setPtype(rs.getInt(2));
                p.setPname(rs.getString(3));
                p.setPprice(rs.getFloat(4));
                p.setPquantity(rs.getInt(5));
                p.setPimage(rs.getString(6));
                p.setPdesc(rs.getString(7));
                p.setPtime(rs.getDate(8));
                plist.add(p);
            }
        
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return plist;
    }
    public product findProductByID(int pid)
    {
        product p=null;
        String sql="SELECT * from product where pid=?";
        try {
            pst=getConnection().prepareStatement(sql);
            pst.setInt(1, pid);
            rs=pst.executeQuery();
            if(rs.next())
            {
                p=new product();
                p.setPid(rs.getInt(1));
                p.setPtype(rs.getInt(2));
                p.setPname(rs.getString(3));
                p.setPprice(rs.getFloat(4));
                p.setPquantity(rs.getInt(5));
                p.setPimage(rs.getString(6));
                p.setPdesc(rs.getString(7));
                p.setPtime(rs.getDate(8));
                }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            close();
        }
        
        return p;
    }

}

前置工作完毕,接着开始设计购物车

1.首先写一个jsp页面,我这里叫做imgs.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.huangxu.ProductDAO"%>
<%@ page import="com.huangxu.Dao.product"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
.mybox {
    widows: 200pt;
    height: auto;
    border: 1px solid red;
    float: left;
    margin: 10px 10px;
    padding: 5px 10px;
}

.mybox:HOVER {
    background-color: #FAB;
}
</style>
</head>
<body>
    <%
        List list=(List)session.getAttribute("shopcar");
    if(list==null){
        list=new ArrayList();
        session.setAttribute("shopcar", list);
    }
    out.println("&nbsp&nbsp "+"已经添加"+list.size()+"件商品");
    %>
    <div width="860px">
        <%
            ProductDAO pdao=new ProductDAO();

                for(product p:pdao.getAllproducts()){
        %>


        <div class="mybox">
            <span><img src="<%=p.getPimage()%>"></span><br> 名字:<span><%=p.getPname()%></span><br>
            库存:<span><%=p.getPquantity()%></span>个<br> 单价:<span>¥<%=p.getPprice()%></span>元<br>
            <span><a href="shop.jsp?pid=<%=p.getPid()%>">加入购物车</a></span>
              
        </div>

        <%
            }
        %>
    </div>
    </div>
    <br>
    <div>

        <hr>
    
    <a href="showshop.jsp">查看购物车</a>
    
    </div>
</body>
</html>

2 接着写一个jsp页面(shop.jsp)为点击加入购物车的实际操作进行处理:

<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.huangxu.ProductDAO"%>
<%@ page import="com.huangxu.Dao.product"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int pid=Integer.parseInt(request.getParameter("pid"));
ProductDAO pdao=new ProductDAO();
product p=pdao.findProductByID(pid);
List shopList=(List)session.getAttribute("shopcar");
if(shopList!=null){shopList.add(p);}
response.sendRedirect("imgs.jsp");

%>
</body>
</html>

3.在写一个jSP页面(showshop.jsp)用来处理查看购物车的实际操作:

<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.huangxu.ProductDAO"%>
<%@ page import="com.huangxu.Dao.product"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>

<body>
    <table width="400" border="0" cellpadding="0" cellspacing="1"   bgcolor="#00FF66">
  <tr bgcolor="#FFFFFF">
    <th>序号</td>
    <th>商品名</td>
    <th>价格</td>
    <th>删除</td>
  </tr>    
    <%
    List<product>list=(List)session.getAttribute("shopcar"); 
    float sum=0;
    if(list!=null)
    {
        for(product p:list)
        {sum =sum+ p.getPprice();
    %>        

  <tr bgcolor="#FFFFFF">
    <td><%=list.indexOf(p)+1 %></td>
    <td><%=p.getPname() %></td>
    <td><%=p.getPprice() %></td>
    <td><a href="spsc.jsp?xl=<%=list.indexOf(p)%>">删除商品</a></td>
   
  </tr>                
    <%        
        }
    }
    %>
    <tr bgcolor="#FFFFFF">
    <td colspan="2">合计</td>
    
    <td colspan="2"><%=sum %>元</td>
  
   
  </tr>
      <tr><td colspan="3"><a href="imgs.jsp">返回商城</a></td></tr>    
    </table>    
</body>
</html>

4、最后是删除写一个JSP页面(spsc.jsp)用来处理删除的实际操作:

<%@page import="com.sun.corba.se.spi.orbutil.fsm.FSM"%>
<%@page import="com.huangxu.Dao.product"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
float sum=0;

int xl=Integer.parseInt(request.getParameter("xl"));
List<product>list=(List)session.getAttribute("shopcar"); 
if(list.remove(xl)!=null){%>
    
    
    <table width="400" border="0" cellpadding="0" cellspacing="1"   bgcolor="#00FF66">
      <tr bgcolor="#FFFFFF">
        <th>序号</td>
        <th>商品名</td>
        <th>价格</td>
        <th>删除</td>
      </tr>        <%
    for(product p:list){
        sum =sum+ p.getPprice();
    %>        

      <tr bgcolor="#FFFFFF">
        <td><%=list.indexOf(p)+1 %></td>
        <td><%=p.getPname() %></td>
        <td><%=p.getPprice() %></td>
        <td><a href="spsc.jsp?xl=<%=list.indexOf(p)%>">删除商品</a></td>
       
      </tr>                
        <%        
            }
        }else{
        
        response.sendRedirect("imgs.jsp");}
        %>
        <tr bgcolor="#FFFFFF">
        <td colspan="2">合计</td>
        
        <td colspan="2"><%=sum %>元</td>
      
     
      </tr>    
        <tr><td colspan="3"><a href="imgs.jsp">返回商城</a></td></tr>
        </table>    

    
</body>
</html>

这样就全部写完了用session做的一个简易购物车!
下面附上SQL的表:(在test库中)创建一个叫product的表
创建语句如下:

CREATE TABLE `product` (
  `pid` int(11) NOT NULL AUTO_INCREMENT,
  `ptype` int(11) DEFAULT NULL,
  `pname` varchar(50) DEFAULT NULL,
  `pprice` float DEFAULT NULL,
  `pquantity` int(11) DEFAULT NULL,
  `pimage` varchar(100) DEFAULT NULL,
  `pdesc` varchar(300) DEFAULT NULL,
  `ptime` time DEFAULT NULL,
  PRIMARY KEY (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

下列是表中的数据如图:

这些就是整个购物车的全部。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Spring Boot 使用Java代码创建Bean并注册到Spring中

    详解Spring Boot 使用Java代码创建Bean并注册到Spring中

    本篇介绍了Spring Boot 使用Java代码创建Bean并注册到Spring中,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Python学习之书写格式及变量命名

    Python学习之书写格式及变量命名

    这篇文章我们给大家总结了关于Python书写格式及变量命名,小编觉得这篇文章写的还不错,有兴趣的朋友跟着参考学习下,希望能够给你带来帮助
    2021-10-10
  • java object 之clone方法全面解析

    java object 之clone方法全面解析

    下面小编就为大家带来一篇java object 之clone方法全面解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Java Spring事务使用及验证过程详解

    Java Spring事务使用及验证过程详解

    这篇文章主要介绍了Java Spring事务使用及验证过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 从Android源码剖析Intent查询匹配的实现

    从Android源码剖析Intent查询匹配的实现

    这篇文章主要介绍了从Android源码剖析Intent查询匹配的实现,Intent部分的源码为Java代码,需要的朋友可以参考下
    2015-07-07
  • Spring Boot 整合 TKMybatis 二次简化持久层代码的实现

    Spring Boot 整合 TKMybatis 二次简化持久层代码的实现

    这篇文章主要介绍了Spring Boot 整合 TKMybatis 二次简化持久层代码的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java 获取properties的几种方式

    Java 获取properties的几种方式

    这篇文章主要介绍了Java 获取properties的几种方式,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-04-04
  • 详解SpringCloud微服务架构之Hystrix断路器

    详解SpringCloud微服务架构之Hystrix断路器

    本篇文章主要介绍了详解SpringCloud微服务架构之Hystrix断路器,Hystrix是一个库,通过添加延迟容差和容错逻辑来帮助您控制这些分布式服务之间的交互,有兴趣的可以了解一下
    2018-01-01
  • springboot swagger不显示接口的问题及解决

    springboot swagger不显示接口的问题及解决

    这篇文章主要介绍了springboot swagger不显示接口的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Spring注入Bean的一些方式总结

    Spring注入Bean的一些方式总结

    这篇文章主要给大家总结介绍了关于Spring注入Bean的一些方式,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论