JavaWeb.购物车项目

2023-11-11

前言:本章纯代码,后期会修改。

一.数据库代码

--用户表
create table shop_user(
     id number primary key,
     account varchar2(30) not null,
     password varchar2(30) not null 
);

insert into shop_user values(1,'xxx','xxx123');

--商品表
create table shop_goods(
     id number primary key,
     name varchar2(30) not null,
     price number default 0.0,--价格
     info varchar2(200) default '三五产品' not null--简介
);

commit

注意一定要commit提交,因为有可能拿不到数据。

二.项目代码

导入美化包,jar包

User.java代码

package com.zking.pojo;

public class User {
          
	private Integer id;
	private String account;
	private String password;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getAccount() {
		return account;
	}
	public void setAccount(String account) {
		this.account = account;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public User(Integer id, String account, String password) {
		super();
		this.id = id;
		this.account = account;
		this.password = password;
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	
     
	
}

 Goods.java代码

package com.zking.pojo;

public class Goods {

	private Integer id;
	private String name;
	private Integer price;
	private String info;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getPrice() {
		return price;
	}
	public void setPrice(Integer price) {
		this.price = price;
	}
	public String getInfo() {
		return info;
	}
	public void setInfo(String info) {
		this.info = info;
	}
	public Goods(Integer id, String name, Integer price, String info) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.info = info;
	}
	public Goods() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Goods [id=" + id + ", name=" + name + ", price=" + price + ", info=" + info + "]";
	}
	

}

DBHelper.java代码

package com.zking.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBHelper {

	//加载驱动
    static{
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //定义链接字符串
    private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";

    //获得链接
    public static Connection getCon() {
        try {
            return DriverManager.getConnection(URL,"scott","sa123");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    //关闭资源
    public static void close(Connection con,PreparedStatement ps, ResultSet rs) {
        try {
            if (con!=null&&!con.isClosed()) {
                con.close();
            }if (ps!=null) {
                ps.close();
            }
            if (rs!=null) {
                rs.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
public static void main(String[] args) {
	System.out.print(DBHelper.getCon());
}
}

IUserDao.java接口代码

  User login(User user);

IGoodsDao.java接口代码


    //查询所有
    List<Goods> getAll();

    //查询单个
    Goods getOne(Integer id);

UserDaolmpl.java代码

package com.zking.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.zking.dao.IUserDao;
import com.zking.pojo.User;
import com.zking.util.DBHelper;

public class UserDaoImpl implements IUserDao{

	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	@Override
	public User login(User user) {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select * from shop_user where account=?");
			ps.setString(1, user.getAccount());
			rs=ps.executeQuery();
			if(rs.next()) {
				User u=new User();
				u.setId(rs.getInt(1));
				u.setAccount(rs.getString(2));
				u.setPassword(rs.getString(3));
				return u;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return null;
	}

}

GoodsDaolmpl.java代码

package com.zking.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.zking.dao.IGoodsDao;
import com.zking.pojo.Goods;
import com.zking.pojo.User;
import com.zking.util.DBHelper;

public class GoodsDaolmpl implements IGoodsDao{

	
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	@Override
	public List<Goods> getAll() {
		List<Goods> list = new ArrayList<Goods>();
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select * from shop_goods");
			rs=ps.executeQuery();
			while(rs.next()) {
				Goods goods=new Goods();
				goods.setId(rs.getInt(1));
				goods.setName(rs.getString(2));
				goods.setPrice(rs.getInt(3));
				goods.setInfo(rs.getString(4));
				list.add(goods);
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return list;
  }
	 
	@Override
    public Goods getOne(Integer id) {
        try {
            con = DBHelper.getCon();
            ps = con.prepareStatement("select * from shop_goods where id=?");
            ps.setInt(1, id);
            rs = ps.executeQuery();
            if (rs.next()) {
                Goods goods = new Goods();
                goods.setId(rs.getInt(1));
                goods.setName(rs.getString(2));
                goods.setPrice(rs.getInt(3));
                goods.setInfo(rs.getString(4));
                return goods;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBHelper.close(con, ps, rs);
        }
        return null;
    }
}

IGoodsBiz.java代码

 //查询所有
    List<Goods> getAll();

    //查询单个
    Goods getOne(Integer id);

IUserBiz.java代码

	User login(User user);

GoodsBizlmpl.java代码

package com.zking.biz.impl;

import java.util.List;

import com.zking.biz.IGoodsBiz;
import com.zking.dao.IGoodsDao;
import com.zking.dao.impl.GoodsDaolmpl;
import com.zking.pojo.Goods;

public class GoodsBizlmpl implements IGoodsBiz{
	
	  private IGoodsDao goodsDao=new GoodsDaolmpl();

	    @Override
	    public List<Goods> getAll() {
	        return goodsDao.getAll();
	    }

	    @Override
	    public Goods getOne(Integer id) {
	        return goodsDao.getOne(id);
	    }

}

UserBizlmpl.java代码

package com.zking.biz.impl;

import com.zking.biz.IUserBiz;
import com.zking.dao.IUserDao;
import com.zking.dao.impl.UserDaoImpl;
import com.zking.pojo.User;

public class UserBizImpl implements IUserBiz{

	private IUserDao userDao=new UserDaoImpl();
	
	@Override
	public User login(User user) {
		User u=userDao.login(user);
		if(u!=null) {
			if(u.getPassword().equals(user.getPassword())) {
				return u;
			}
		}
		return null;
	}

}

CarItem.java代码

package com.zking.vo;

import com.zking.pojo.Goods;

public class CarItem extends Goods{
	
	private Integer count;//数量
	private Integer sum;//总价
	private Goods goods;//对应的商品
	public Integer getCount() {
		return count;
	}
	public void setCount(Integer count) {
		this.count = count;
	}
	public Integer getSum() {
		return sum;
	}
	public void setSum(Integer sum) {
		this.sum = sum;
	}
	public Goods getGoods() {
		return goods;
	}
	public void setGoods(Goods goods) {
		this.goods = goods;
	}
	public CarItem(Integer id, String name, Integer price, String info, Integer count, Integer sum, Goods goods) {
		super(id, name, price, info);
		this.count = count;
		this.sum = sum;
		this.goods = goods;
	}
	public CarItem() {
		super();
		// TODO Auto-generated constructor stub
	}

	
}

web.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>Web14</display-name>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

记得修改了xml代码后一定要重启服务器

登陆界面代码(login.java)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <style>
        * {
            outline: none !important;
        }

        html,
        body {
            background: #1abe9c;
        }

        form {
            width: 300px;
            background: #ebeff2;
            box-shadow: 0px 0px 50px rgba(0, 0, 0, .5);
            border-radius: 5px;
            padding: 20px;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }

        .btn-group {
            width: 100%;
        }

        .btn-group button {
            width: 50%;
        }
    </style>
</head>

<body>
    <form action="dologin.jsp" method="post">
        <h3 class="text-center" style="text-shadow: 2px 2px 1px #ed3f3f;">欢迎光临嘿嘿嘿超市</h3>
        <div class="form-group">
            <input name="account" type="text" class="form-control" placeholder="请输入您的用户名">
        </div>
        <div class="form-group">
            <input name="password" type="password" class="form-control" placeholder="请输入您的密码">
        </div>
        <div class="btn-group">
            <button type="submit" class="btn btn-primary">登录</button>
            <button type="button" class="btn btn-danger" onclick='location=href="regiest.html"'>没有账号?</button>
        </div>
    </form>
</body></html>

主页面代码(index.java)

<%@page import="com.zking.pojo.Goods"%>
<%@page import="com.zking.biz.impl.GoodsBizlmpl"%>
<%@page import="com.zking.biz.IGoodsBiz"%>
<%@page import="com.zking.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <style>

        td:nth-child(3)::before{
            content: "$";
        }

    </style>
</head>

<body>
<%
     Object obj= session.getAttribute("user");
     if(obj==null){
    	 response.sendRedirect("login.jsp");
    	 return;
     }
%>
    <div class="jumbotron">
        <div class="container">
            <h1>欢迎光临嘿嘿嘿SuperMarket</h1>
            <p>尊贵的<%=((User)obj).getAccount() %></p>
        </div>
    </div>
    <%=session.getAttribute("car") %>
    <table class="table">
        <tr>
            <th>商品序号</th>
            <th>商品名称</th>
            <th>商品单价</th>
            <th>商品描述</th>
            <th>操作</th>
        </tr>
       <%
       IGoodsBiz goodsBiz=new GoodsBizlmpl();
       for(Goods goods : goodsBiz.getAll()){
       %>
        <tr>
            <td><%=goods.getId() %></td>
            <td><%=goods.getName() %></td>
            <td><%=goods.getPrice() %></td>
            <td><%=goods.getInfo() %></td>
            <td>
                <div class="btn-group btn-group-xs">
                    <a href="doAddCar.jsp?id=<%=goods.getId() %>" class="btn btn-primary">添加购物车</a>
                </div>
            </td>
        </tr>
       <%
       }
       %>
    </table>
</body></html>

处理登陆代码(dologin.java)

<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.vo.CarItem"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.pojo.User"%>
<%@page import="com.zking.biz.IUserBiz"%>
<%@page import="com.zking.biz.impl.UserBizImpl"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
      request.setCharacterEncoding("utf-8");
      String account = request.getParameter("account");
      String password = request.getParameter("password");
      IUserBiz userBiz=new UserBizImpl();
      User user = userBiz.login(new User(0,account,password));
      
      if(user==null){
    	  response.sendRedirect("login.jsp");
      }else{
    	  //首页需要登陆数据
    	  session.setAttribute("user", user);
    	  //分配购物车
    	  List<CarItem> car=new ArrayList<>();
    	  //放到session中
    	  session.setAttribute("car", car);
    	  response.sendRedirect("index.jsp");
      }
%>

添加购物车代码(doAddCar.java)

<%@ page import="com.zking.vo.CarItem" %>
<%@ page import="com.zking.biz.IGoodsBiz" %>
<%@ page import="com.zking.biz.impl.GoodsBizImpl" %>
<%@ page import="java.util.List" %><%--
  User: hgh
  Date: 2022/4/13
  Time: 9:52
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    //拿购物车
    List<CarItem> car=(List<CarItem>)session.getAttribute("car");

    IGoodsBiz goodsBiz=new GoodsBizImpl();

    //添加购物车的页面

    //1.得知道是那件商品吧
    String str = request.getParameter("id");
    int id = -1;
    if (str != null) {
        id = Integer.parseInt(str);
    }

    //2-1.判断该商品是否存在
    boolean f=true;
    for (CarItem item : car) {
        // item.getGoods().getId() 条目的商品id
        if(id==item.getGoods().getId()){
            //商品应该是已经被添加购物车了 [购物车中某个条目的商品id和你需要添加的商品id相同了]
            item.setCount(item.getCount()+1);//数量+1
            item.setSum(item.getCount()*item.getGoods().getPrice());
            f=false;
            break;
        }
    }
    //只要判断f是否发生了改变
    if(f){
        //2-2.生成一个CarItem [如果购物车没有该商品]
        CarItem carItem=new CarItem();
        //设置对应的商品数据
        carItem.setGoods(goodsBiz.getOne(id));
        //商品加车的数量
        carItem.setCount(1);
        //carItem.getCount() 商品加车的数量
        //carItem.getGoods().getPrice() 商品的单价
        //加车数量*商品单价
        carItem.setSum(carItem.getCount()*carItem.getGoods().getPrice());
        //将 购物条目[carItem] 绑定到 购物车[car] 中
        car.add(carItem);
    }

    //更新购物车
    session.setAttribute("car", car);
    //跳回首页
    response.sendRedirect("index.jsp");
%>

今天就到这拜拜(≧∇≦)ノ。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb.购物车项目 的相关文章

随机推荐

  • Ubuntu下FastDFS的安装

    准备工作 刚安装好的linux系统没有设置root用户密码的 下边介绍如何设置root用户的密码 由于ubtun系统默认是没有激活root用户的 需要我们手工进行操作 在命令行界面下 或者在终端中输入如下命令 sudo passwd 或者s
  • 删除数字问题

    已知n位数字正整数a 去除任意k位数 使剩下数字按原次序排列成新正整数 使其最大 C语言 include
  • 最全地理数据下载网址

    晓码创作 整理不易 转载引用请写明出处 一 国内 常见遥感影像下载网址 https mp weixin qq com s xzNGmz1fgb3IqbOV EN1Aw 1 http data cma cn site index html 中
  • Modbus驱动库—libmodbus驱动库的使用

    文章目录 为什么要使用驱动库 libmodbus简介 libmodbus常用函数 Windows平台libmodbus 使用 1 获取源代码 2 生成config h配置文件 3 编写测试代码 4 编译测试代码 Linux平台下libmod
  • C语言循环链表实现约瑟夫环问题

    问题描述 约瑟夫环问题 1 问题描述 设有编号为1 2 n的n n 0 个人围成一个圈 每个人持有一个密码m 从第一个人开始报数 报到m时停止报数 报m的人出圈 再从他的下一个人起重新报数 报到m时停止报数 报m的出圈 如此下去 直到所有人
  • 轻松入门自然语言处理系列 14 Linear-CRF模型

    文章目录 前言 一 Log Linear模型与逻辑回归 1 Log Linear模型 2 从Log Linear模型到逻辑回归 二 Linear CRF模型Inference 1 Linear CRF模型定义 2 Linear CRF模型I
  • 2021年安全员-A证免费试题及安全员-A证考试技巧

    题库来源 安全生产模拟考试一点通公众号小程序 安全员 A证免费试题考前必练 安全生产模拟考试一点通每个月更新安全员 A证考试技巧题目及答案 多做几遍 其实通过安全员 A证很简单 1 判断题 生产经营规模较小的 可以不建立应急救援组织 但应当
  • Each module has to have a unique path

    在android工作中从仓库中down下来的时候 首次运行出现 Each module has to have a unique path 使用android studio开发工具 因为同事一起把 iml文件给上传上去了 每次builde都
  • RISC-V MCU开发 (七):代码调试

    RISC V MCU开发 七 代码调试 MounRiver Studio MRS 配合GD Link WCH Link JLink等在线调试下载器 可支持GDVFx系列 CH56x CH57x CH58x CH32Fx CH32Vx等RIS
  • ‘入门级’程序员面试关键字眼解答

    JSP 全名为 Java Server Pages 中文名叫java服务器页面 其根本是一个简化的Servlet 设计 它是在传统的网页HTML文件 中插入Java程序段 Scriptlet 和JSP标记 tag 从而形成JSP文件 后缀名
  • LaTeX/Markdown中如何在字母上下方插入字母数字

    1 一般的写法 P Y c k X x frac P Y c k prod j P X j x j Y c k sum k P Y c k prod j P X j x j Y c k 效果展示为 P Y
  • 【QT学习教程2】文件操作功能实现

    目录 0 前言 一 界面布局 二 文件操作功能的实现 2 1 思路整理 2 2 初始化界面功能的实现 2 3 判断当前文本是否可以 修改 的功能实现 2 4 新建文本功能的实现 2 5 保存功能的实现 2 6 另存为功能的实现 2 7 文件
  • 使用多线程或异步技术提高图片抓取效率

    导语 图片抓取是爬虫技术中常见的需求 但是图片抓取的效率受到很多因素的影响 比如网速 网站反爬机制 图片数量和大小等 本文将介绍如何使用多线程或异步技术来提高图片抓取的效率 以及如何使用爬虫代理IP来避免被网站封禁 概述 多线程和异步技术都
  • STM32与物联网02-网络数据收发

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Android Bundle类

    今天发现自己连Bundle类都没有搞清楚 于是花时间研究了一下 根据google官方的文档 http developer android com reference android os Bundle html Bundle类是一个key
  • 蓝桥杯Python常用基础知识

    转化整数 a int x 把a变为函数 a lambda x x 2 a 2 以空格结尾 for i in range 10 range 0 10 if i 2 i 2 0 print i end print print n 把字符串的内容
  • mvn deploy部署报错

    问题描述 使用idea侧边栏进行公司项目的部署 双击即可部署到nexus 但是使用命令mvn clean mvn deploy部署则报错 查看maven状态 配置好maven环境变量 使用命令mvn v 查看版本信息 其中会显示图片如下 这
  • UnityAnimator游戏运行后动画不播放

    问题 动画预览正常 运行后观察Animator正常执行动画 但是场景中没有播放动画 解决方法 将Animator的CullingMode改为AlwaysAnimate
  • C++基础(10)——函数模板和类模板

    前言 本文主要介绍了C 中函数模板和类模板基本知识 6 1 函数模板 模板函数的定义 template
  • JavaWeb.购物车项目

    前言 本章纯代码 后期会修改 一 数据库代码 用户表 create table shop user id number primary key account varchar2 30 not null password varchar2 3