javaWeb购物车案例(上)

目录

用户登录界面 login.jsp

用户登录操作页面  doLogin.jsp

主页主界面  index.jsp

添加购物车操作界 doAddCart.jsp

商品实体类  Goods.java

用户实体类 User.java

数据库帮助类  DBHelper.java

用户数据库访问接口  IUserDao.java

用户数据库访问实现类 UserDaoImpl.java

商品数据库访问接口  IGoodsDao.java

商品数据库访问实现类 GoodsDaoImpl.java

用户业务逻辑处理接口  IUserBiz.java

用户业务逻辑处理实体类  IUserBizImpl.java

商品业务逻辑处理接口  IGoodsBiz.java

商品业务逻辑处理实现类  GoodsBizImpl.java


 

用户登录界面 login.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!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">没有账号?</button>
    </div>
</form>
</body></html>

用户登录操作页面  doLogin.jsp

<%@ page import="com.zking.biz.IUserBiz" %>
<%@ page import="com.zking.biz.impl.UserBizImpl" %>
<%@ page import="com.zking.pojo.User" %>
<%@ page import="java.util.List" %>
<%@ page import="com.zking.vo.CarItem" %>
<%@ page import="java.util.ArrayList" %><%--
  User: hgh
  Date: 2022/4/13
  Time: 8:53
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    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));
 
    System.out.println(user + "---jsp");
 
    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");
%>
}

主页主界面  index.jsp

<%@ page import="com.zking.pojo.User" %>
<%@ page import="com.zking.biz.IGoodsBiz" %>
<%@ page import="com.zking.biz.impl.GoodsBizImpl" %>
<%@ page import="com.zking.pojo.Goods" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<!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") %>
<div class="container">
  <table class="table">
    <tr>
      <th>商品序号</th>
      <th>商品名称</th>
      <th>商品单价</th>
      <th>商品描述</th>
      <th>操作</th>
    </tr>
    <%
      IGoodsBiz goodsBiz=new GoodsBizImpl();
      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="doAddCart.jsp?id=<%=goods.getId()%>" class="btn btn-primary">添加购物车</a>
        </div>
      </td>
    </tr>
    <%}%>
  </table>
</div>

</body>
</html>

添加购物车操作界 doAddCart.jsp

<%@ 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");
%>

商品实体类  Goods.java

package com.zking.pojo;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.apache.commons.codec.digest.DigestUtils;
 
import java.math.BigDecimal;
import java.math.BigInteger;
 
@SuppressWarnings("all")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class Goods {
 
    private Integer id;
    private String name;
    private Integer price;
    private String info;
 
}

用户实体类 User.java

package com.zking.pojo;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
 
 
@SuppressWarnings("all")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class User {
 
    private Integer id;
    private String account;
    private String password;
 

}

数据库帮助类  DBHelper.java


package com.zking.util;
 
import oracle.jdbc.driver.OracleDriver;
 
import java.sql.*;
 
@SuppressWarnings("all")
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","tiger");
        } 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.println(DBHelper.getCon());
    }
 
}

用户数据库访问接口  IUserDao.java


package com.zking.dao;
 
import com.zking.pojo.User;
 
@SuppressWarnings("all")
public interface IUserDao {
 
    User login(User user);
 
}
 

用户数据库访问实现类 UserDaoImpl.java

package com.zking.dao.impl;
 
import com.zking.dao.IUserDao;
import com.zking.pojo.User;
import com.zking.util.DBHelper;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
@SuppressWarnings("all")
public class UserDaoImpl implements IUserDao {
 
    private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;
 
    @Override
    public User login(User user) {
        System.out.println(user.getAccount());
        try {
            con=DBHelper.getCon();
            ps=con.prepareStatement("select * from shop_user where account=?");
            ps.setString(1,user.getAccount());
            rs=ps.executeQuery();
            if(rs.next()){
                System.out.println("------------");
                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;
    }
 

}

商品数据库访问接口  IGoodsDao.java


package com.zking.dao;
 
import com.zking.pojo.Goods;
 
import java.util.List;
 
@SuppressWarnings("all")
public interface IGoodsDao {
 
    //查询所有
    List<Goods> getAll();
 
    //查询单个
    Goods getOne(Integer id);

}

商品数据库访问实现类 GoodsDaoImpl.java


package com.zking.dao.impl;
 
import com.zking.dao.IGoodsDao;
import com.zking.pojo.Goods;
import com.zking.util.DBHelper;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
 
@SuppressWarnings("all")
public class GoodsDaoImpl 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;
    }
 
}

用户业务逻辑处理接口  IUserBiz.java

package com.zking.biz;
 
import com.zking.pojo.User;
 
@SuppressWarnings("all")
public interface IUserBiz {
 
    User login(User user);
 
}

用户业务逻辑处理实体类  IUserBizImpl.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;
 
@SuppressWarnings("all")
public class UserBizImpl implements IUserBiz {
 
    private IUserDao userDao=new UserDaoImpl();
 
    @Override
    public User login(User user) {
        User u = userDao.login(user);
        System.out.println(u+"---biz");
        if(u!=null){
            if (u.getPassword().equals(user.getPassword())) {
                return u;
            }
        }
        return null;
    }
 

}

商品业务逻辑处理接口  IGoodsBiz.java

package com.zking.biz;
 
import com.zking.pojo.Goods;
 
import java.util.List;
 
 
@SuppressWarnings("all")
public interface IGoodsBiz {
 
    //查询所有
    List<Goods> getAll();
 
    //查询单个
    Goods getOne(Integer id);

}

商品业务逻辑处理实现类  GoodsBizImpl.java

package com.zking.biz.impl;
 
import com.zking.biz.IGoodsBiz;
import com.zking.dao.IGoodsDao;
import com.zking.dao.impl.GoodsDaoImpl;
import com.zking.pojo.Goods;
 
import java.util.List;
 
@SuppressWarnings("all")
public class GoodsBizImpl implements IGoodsBiz {
 
    private IGoodsDao goodsDao=new GoodsDaoImpl();
 
    @Override
    public List<Goods> getAll() {
        return goodsDao.getAll();
    }
 
    @Override
    public Goods getOne(Integer id) {
        return goodsDao.getOne(id);
    }
 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值