MVC购物车END
order.jsp:订单界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${list == null}">
<c:redirect url="order.do"/>
</c:if>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://blog.csdn.net/qq_62217605/article/details/${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
<script src="https://blog.csdn.net/qq_62217605/article/details/${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
<script src="https://blog.csdn.net/qq_62217605/article/details/${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>我的订单</title>
</head>
<body>
<div class="container">
<h1>
您好, <small>这是订单界面</small>
</h1>
<h1>
<a href="https://blog.csdn.net/qq_62217605/article/details/index.jsp" class="btn btn-default">继续购买</a>
<a href="https://blog.csdn.net/qq_62217605/article/details/car.jsp" class="btn btn-default">返回购物车</a>
</h1>
<table class="table table-bordered table-striped">
<tbody>
<tr>
<th>订单编号</th>
<th>订单总价</th>
<th>订单操作</th>
</tr>
<c:forEach items="${list}" var="order">
<tr>
<td>${order.id}</td>
<td>${order.total}</td>
<td>
<a href="https://blog.csdn.net/qq_62217605/article/details/item.do?id=${order.id}" class="btn btn-default">查看详情</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
Item.jsp:订单详情界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${list == null}">
<c:redirect url="item.do"/>
</c:if>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://blog.csdn.net/qq_62217605/article/details/${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
<script src="https://blog.csdn.net/qq_62217605/article/details/${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
<script src="https://blog.csdn.net/qq_62217605/article/details/${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>我的订单项</title>
</head>
<body>
<div class="container">
<h1>
您好, <small>这是订单项界面</small>
</h1>
<h1>
<a href="https://blog.csdn.net/qq_62217605/article/details/index.jsp" class="btn btn-default">继续购买</a>
<a href="https://blog.csdn.net/qq_62217605/article/details/car.jsp" class="btn btn-default">返回购物车</a>
</h1>
<table class="table table-bordered table-striped">
<tbody>
<tr>
<th>订单项编号</th>
<th>订单项商品名称</th>
<th>订单项商品单价</th>
<th>订单项下单数量</th>
<th>订单项下单总价</th>
</tr>
<c:forEach items="${list}" var="item">
<tr>
<td>${item.id}</td>
<td>${item.goods.name}</td>
<td>${item.goods.price}</td>
<td>${item.quantity}</td>
<td>${item.total}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
pojo包:
Order.java:订单实体类
package com.pojo;
public class Order {
private Integer id;
private Integer userId;
private Integer total;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Order() {
// TODO Auto-generated constructor stub
}
public Order(Integer id, Integer userId, Integer total) {
super();
this.id = id;
this.userId = userId;
this.total = total;
}
@Override
public String toString() {
return "Order [id=" id ", userId=" userId ", total=" total "]";
}
}
biz包:
IOrderBiz:订单的业务逻辑层
package com.biz;
import java.util.List;
import com.pojo.Order;
public interface IOrderBiz {
int maxPK();
int insert(Order order);
List<Order> list(int userId);
}
IOrderItemBiz:订单项的业务逻辑层
package com.biz;
import java.util.List;
import com.pojo.OrderItem;
public interface IOrderItemBiz {
int maxPK();
int insert(OrderItem item);
List<OrderItem> list(Integer id);
}
biz.impl包:
OrderBizImpl:订单业务逻辑层的实现类
package com.biz.impl;
import java.util.List;
import com.biz.IOrderBiz;
import com.dao.IOrderDao;
import com.dao.impl.OrderDaoImpl;
import com.pojo.Order;
public class OrderBizImpl implements IOrderBiz{
private IOrderDao orderDao=new OrderDaoImpl();
@Override
public int maxPK() {
return orderDao.maxPK();
}
@Override
public int insert(Order order) {
return orderDao.insert(order);
}
@Override
public List<Order> list(int userId) {
return orderDao.list(userId);
}
}
OrderItemBizImpl:订单项业务逻辑层的实现类
package com.biz.impl;
import java.util.List;
import com.biz.IOrderItemBiz;
import com.dao.IOrderItemDao;
import com.dao.impl.OrderItemDaoImpl;
import com.pojo.OrderItem;
public class OrderItemBizImpl implements IOrderItemBiz{
private IOrderItemDao orderItemDao=new OrderItemDaoImpl();
@Override
public int maxPK() {
return orderItemDao.maxPK();
}
@Override
public int insert(OrderItem item) {
return orderItemDao.insert(item);
}
@Override
public List<OrderItem> list(Integer id) {
return orderItemDao.list(id);
}
}
dao包:
IOrderDao:订单的数据库访问层
package com.dao;
import java.util.List;
import com.pojo.Order;
public interface IOrderDao {
int maxPK();
int insert(Order order);
List<Order> list(int userId);
}
IOrderItemDao:订单项的数据库访问层
package com.dao;
import java.util.List;
import com.pojo.OrderItem;
public interface IOrderItemDao {
int maxPK();
int insert(OrderItem item);
List<OrderItem> list(Integer id);
}
dao.impl包:
OrderDaoImpl:订单数据库访问层的实现类
package com.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.dao.IOrderDao;
import com.pojo.Order;
import com.util.DBHelper;
public class OrderDaoImpl implements IOrderDao{
//定义资源
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
@Override
public int maxPK() {
try {
con = DBHelper.getCon();
ps = con.prepareStatement("select nvl(max(id),0) 1 from car_order");
rs = ps.executeQuery();
if (rs.next()) {
return rs.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.close(con, ps, rs);
}
return 0;
}
@Override
public int insert(Order order) {
try {
con = DBHelper.getCon();
ps = con.prepareStatement("insert into car_order values(?,?,?)");
ps.setInt(1,order.getId());
ps.setInt(2,order.getUserId());
ps.setInt(3,order.getTotal());
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.close(con, ps, rs);
}
return 0;
}
@Override
public List<Order> list(int userId) {
List<Order> list = new ArrayList<>();
try {
con = DBHelper.getCon();
ps = con.prepareStatement("select * from car_order where user_id=?");
ps.setInt(1,userId);
rs=ps.executeQuery();
while(rs.next()){
Order order=new Order();
order.setId(rs.getInt(1));
order.setUserId(rs.getInt(2));
order.setTotal(rs.getInt(3));
list.add(order);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.close(con, ps, rs);
}
return list;
}
}
OrderItemDaoImpl:订单项数据库访问层的实现类
package com.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.dao.IGoodsDao;
import com.dao.IOrderItemDao;
import com.pojo.OrderItem;
import com.util.DBHelper;
public class OrderItemDaoImpl implements IOrderItemDao{
private IGoodsDao goodsDao=new GoodsDaoImpl();
//定义资源
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
@Override
public int maxPK() {
try {
con = DBHelper.getCon();
ps = con.prepareStatement("select nvl(max(id),0) 1 from car_order_item");
rs = ps.executeQuery();
if (rs.next()) {
return rs.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.close(con, ps, rs);
}
return 0;
}
@Override
public int insert(OrderItem item) {
try {
con = DBHelper.getCon();
ps = con.prepareStatement("insert into car_order_item values(?,?,?,?,?)");
ps.setInt(1, item.getId());
ps.setInt(2, item.getOrderId());
ps.setInt(3, item.getGoods().getId());
ps.setInt(4, item.getQuantity());
ps.setInt(5, item.getTotal());
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.close(con, ps, rs);
}
return 0;
}
@Override
public List<OrderItem> list(Integer orderId) {
List<OrderItem> list = new ArrayList<>();
try {
con = DBHelper.getCon();
ps = con.prepareStatement("select * from car_order_item where order_id=?");
ps.setInt(1,orderId);
rs=ps.executeQuery();
while(rs.next()){
OrderItem item=new OrderItem();
item.setId(rs.getInt(1));
item.setOrderId(rs.getInt(2));
item.setGoods(goodsDao.one(rs.getInt(3)));
item.setQuantity(rs.getInt(4));
item.setTotal(rs.getInt(5));
list.add(item);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.close(con, ps, rs);
}
return list;
}
}
servlet包:
CalcServlet:处理订单结算的请求
package com.servlet;
import com.biz.IOrderBiz;
import com.biz.IOrderItemBiz;
import com.biz.impl.OrderBizImpl;
import com.biz.impl.OrderItemBizImpl;
import com.pojo.Order;
import com.pojo.OrderItem;
import com.pojo.User;
import org.apache.commons.codec.binary.StringUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/calc.do")
public class CalcServlet extends HttpServlet {
private IOrderBiz orderBiz=new OrderBizImpl();
private IOrderItemBiz orderItemBiz=new OrderItemBizImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//购物车在哪里?
List<OrderItem> car = (List<OrderItem>)req.getSession().getAttribute("car");
//获得用户
User user = (User)req.getSession().getAttribute("user");
//什么是结算? 将数据放到【订单】【订单项】
if(car.isEmpty()){
//返回购物车
resp.sendRedirect("car.jsp");
return;
}
//计算总和
int sum=0;
for (OrderItem item : car) {
sum =item.getTotal();
}
//优先结算订单
Order order=new Order();
order.setId(orderBiz.maxPK());
order.setUserId(user.getId());
order.setTotal(sum);
//将订单放到数据库
int i = orderBiz.insert(order);
if(i>0){
//如果订单插入成功了,则插入订单项
for (OrderItem item : car) {
//item没有id
item.setId(orderItemBiz.maxPK());
//也没有订单编号
item.setOrderId(order.getId());
orderItemBiz.insert(item);
}
//结算完毕
car.clear();
//清空价格
req.getSession().setAttribute("total",0);
}
//返回购物车
resp.sendRedirect("car.jsp");
}
}
OrderServlet:处理查看订单的请求
package com.servlet;
import com.biz.IOrderBiz;
import com.biz.IOrderItemBiz;
import com.biz.impl.OrderBizImpl;
import com.biz.impl.OrderItemBizImpl;
import com.pojo.Order;
import com.pojo.OrderItem;
import com.pojo.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/order.do")
public class OrderServlet extends HttpServlet {
private IOrderBiz orderBiz=new OrderBizImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获得用户
User user = (User)req.getSession().getAttribute("user");
List<Order> list = orderBiz.list(user.getId());
//放到请求作用域中
req.setAttribute("list",list);
//返回order.jsp
req.getRequestDispatcher("order.jsp").forward(req,resp);
}
}
ItemServlet:处理订单项详情的请求
package com.servlet;
import com.biz.IOrderBiz;
import com.biz.IOrderItemBiz;
import com.biz.impl.OrderBizImpl;
import com.biz.impl.OrderItemBizImpl;
import com.pojo.Order;
import com.pojo.OrderItem;
import com.pojo.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/item.do")
public class ItemServlet extends HttpServlet {
private IOrderItemBiz orderItemBiz=new OrderItemBizImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接受订单的id
Integer id = Integer.parseInt(req.getParameter("id"));
//根据订单id查询对应的订单项
List<OrderItem> list = orderItemBiz.list(id);
//放到请求作用域中
req.setAttribute("list",list);
//返回order.jsp
req.getRequestDispatcher("item.jsp").forward(req,resp);
}
}
源码
链接:https://pan.百度.com/s/1jVLcG9r96wjAxNXGlbnmZA?pwd=zygx
提取码:zygx
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgeikkc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01