JavaWeb商城订单模型+分页模型(JavaWeb+jsp+Ajax)

本文详细介绍了基于Java Web的书城项目中订单管理的实现,包括订单模型的基本功能如创建、查看、发货等,分页模型用于显示所有订单,以及使用Ajax实现发货功能的局部页面更新。文章涵盖了数据库表设计、servlet方法、jsp页面展示以及Ajax交互的全过程,并解决了在开发过程中遇到的bug。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

书城项目完整版:https://github.com/AsajuHuishi/bookStore

昨天实现了订单模型的全部基本功能,这里首先简单介绍订单模型,然后以订单模型的查看所有订单功能为例介绍分页模型,然后以发货功能为例介绍ajax局部更新页面,同时回顾我在写代码时遇到并解决的几个bug。

1. 订单模型

订单基本功能

订单模型的基本功能包括:

  • 生成订单(用户)
  • 查看所有订单(管理员)
  • 查看我的订单(用户)
  • 查看订单详情(管理员,用户)
  • 发货(管理员)
  • 签收(用户)

实体类和数据库表建立

建立订单类 Order:除了订单号,还包括根据用户结账的购物车信息获取商品总价,根据登录信息获得用户id(外键),根据结账时间获取建立订单的时间,以及一个唯一的订单号。
建立订单项类 OrderItem:一个购物车包含多个商品项,对应地,一个订单类有多个订单项,订单项的属性(商品id,名称,单价,购买数量,总价格)都来自购物车里的商品项。一个订单的多个订单项使用相同的订单号(外键)。

CREATE TABLE t_order(
`order_id` VARCHAR(50) PRIMARY KEY,
`create_time` DATETIME,
`price` DECIMAL(11,2),
`status` INT,
`user_id` INT,
FOREIGN KEY(`user_id`) REFERENCES t_user(`id`)
);
CREATE TABLE t_order_item(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(100),
`count` INT,
`price` DECIMAL(11,2),
`total_price` DECIMAL(11,2),
`order_id` VARCHAR(50),
FOREIGN KEY(`order_id`) REFERENCES t_order(`order_id`)
);

DESC t_order;

订单servlet

订单的servlet代码,这里的每一个方法对应上面的一个功能。

package indi.huishi.web;

import com.google.gson.Gson;
import indi.huishi.pojo.*;
import indi.huishi.service.OrderService;
import indi.huishi.service.impl.OrderServiceImpl;
import indi.huishi.utils.JdbcUtils;
import indi.huishi.utils.WebUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class OrderServlet extends BaseServlet{
   
    OrderService orderService = new OrderServiceImpl();
    /**
     * 去结账
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    protected void createOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   

        System.out.println("结账");
        // cart和用户user都在session里
        User user = (User) req.getSession().getAttribute("user");
        // 如果User==null没有登录,转到登录页面
        if(user==null){
   
            req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp);
            return;
        }
//        System.out.println("OrderServlet当前线程"+Thread.currentThread().getName());
        Cart cart = (Cart) req.getSession().getAttribute("cart");
        if(cart!=null){
   
            // 使用事务
            String orderId = null;
            orderId = orderService.createOrder(cart, user.getId());
            req.getSession().setAttribute("orderId",orderId);
            resp.sendRedirect(req.getContextPath()+"/pages/cart/checkout.jsp");
        }
    }

    /**
     * 查询所有订单(未使用)
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    protected void showAllOrders(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
//        System.out.println("查询所有订单");
        // 获得日期 金额 详情(订单项) 发货状态
        List<Order> orders = orderService.showAllOrders();
        req.setAttribute("orders",orders);
        // 请求转发
        req.getRequestDispatcher("/pages/manager/order_manager.jsp").forward(req,resp);
    }

    /**
     * 查询所有订单--分页
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    protected void showAllOrdersByPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        System.out.println("查询所有订单分页");
        // 获取当前页数和每页的条目数量
        int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1);
        int pageSize = 4;
        // 生成当前页的对象
        Page<Order> page
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值