位置: IT常识 - 正文

JavaWeb购物系统(六)购物车订单模块的实现(java web购物系统)

编辑:rootadmin
JavaWeb购物系统(六)购物车订单模块的实现 效果图

推荐整理分享JavaWeb购物系统(六)购物车订单模块的实现(java web购物系统),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javaweb购物网站,购物系统java代码,javaweb购物商城,javaweb购物网站,java在线购物系统,javaweb购物车系统,javaweb购物网站,java在线购物系统,内容如对您有帮助,希望把文章链接给更多的朋友!

有订单时的效果图 无订单时的效果图 订单详情页

功能生成订单订单页的展示查看订单详情正文说明

和购物车同样的,首先得知道我们的订单对应的哪个实体对象。一个用户可能有多条订单记录,一个订单里边可以包含多个商品(也可以理解为多个购物项)。理清这个逻辑之后,我们就可以得到两个实体:订单实体类和详细的订单项 对应到界面上就是如下图:

order.jsp(订单页)<%@ page import="com.service.OrderService" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%><%@ page import="com.myUtil.ProcessUtil" %><%@ page import="com.entity.Order" %><%@ page import="java.util.List" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%-- Created by IntelliJ IDEA. User: huawei Date: 2022/10/22 Time: 20:02 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>我的订单</title> <!-- 新 Bootstrap5 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css"> <%--icon图标--%> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css"> <!-- popper.min.js 用于弹窗、提示、下拉菜单 --> <script src="https://cdn.staticfile.org/popper.js/2.9.3/umd/popper.min.js"></script> <!-- 最新的 Bootstrap5 核心 JavaScript 文件 --> <script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.min.js"></script> <script type="text/javascript" src="script/jquery-3.6.0.min.js"></script></head><body><% OrderService orderService = new OrderService(); String userId = ProcessUtil.getUserIdBySessionId(session); List<Order> orderList= orderService.showAllOrder(userId); if (orderList!=null && orderList.size()!=0){ session.setAttribute("orderList",orderList); }%><nav class="navbar-expand-lg navbar navbar-dark bg-primary"> <div class="container-fluid "> <a class="navbar-brand" href="#">我的订单</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="/MyProject/index.jsp">Home</a> </li> </ul> </div> </div></nav><c:if test="${empty sessionScope.orderList}"> <div class="container" > <div class="card position-relative" style="margin: 50px;height: 280px;background: #ffffff url(img/CartBackground.png) no-repeat; background-position: center left;"> <div class="position-absolute top-50 start-50 translate-middle"> <h7> 您还未购买过任何商品哦!赶紧行动吧!您可以: </h7><br> <a class="btn btn-primary btn-lg" href="/MyProject/index.jsp">购物</a> </div> </div> </div></c:if><c:if test="${!empty sessionScope.orderList}"> <div class="container"> <div class="card"> <table class="table table-hover text-center"> <tr> <td>订单号</td> <td>下单时间</td> <td>总价</td> <td>状态</td> <td>详情</td> </tr> <c:forEach items="${sessionScope.orderList}" var="order"> <tr style="vertical-align: middle !important;text-align: center;"> <td> <%--<img style="width: 100px;height: 100px" src="${or}"/>--%> <span>${order.id}</span> </td> <td> <%--分割下单时间--%> <c:set value="${fn:split(order.create_time,'T')}" var="time"></c:set> <c:forEach var="tm" items="${time}"> ${tm} </c:forEach> </td> <td>${order.price}</td> <td>0</td> <td><a type="submit" class="btn btn-danger" href="/MyProject/orderDetail.jsp?orderId=${order.id}">查看</a></td> </tr> </c:forEach> </table> <div class="row justify-content-between"> </div> </div> </div></c:if></body></html>订单的展示

这里通过在jsp页面,调用service层的showAllOrder()来获取所有的订单列表。然后通过for-Each来将列表的每条信息渲染到前端页面

订单的查看

和前面几节讲的留言删除、删除购物项思路一样,通过携带唯一标识ID(下单时间的毫秒数)来查看对应订单的详细信息。因为查看订单详情需要跳转页面,所有我们这里采用<a></a>标签来进行跳转。相关代码:

<td><a type="submit" class="btn btn-danger" href="/MyProject/orderDetail.jsp?orderId=${order.id}">查看</a></td>orderDetail.jsp(订单详情页)<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page import="com.entity.OrderItem" %><%@ page import="com.service.OrderItemService" %><%@ page import="java.util.List" %><%@ page import="com.service.OrderService" %><%@ page import="com.myUtil.ProcessUtil" %><%-- Created by IntelliJ IDEA. User: huawei Date: 2022/10/22 Time: 22:40 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>订单详情页</title> <!-- 新 Bootstrap5 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css"> <%--icon图标--%> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css"> <!-- popper.min.js 用于弹窗、提示、下拉菜单 --> <script src="https://cdn.staticfile.org/popper.js/2.9.3/umd/popper.min.js"></script> <!-- 最新的 Bootstrap5 核心 JavaScript 文件 --> <script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.min.js"></script> <script type="text/javascript" src="script/jquery-3.6.0.min.js"></script></head><body><% OrderItemService orderItemService = new OrderItemService();// String orderId = (String)session.getAttribute("orderId");// if (orderId==null){ // 当用户重新登录之后/重启服务器,seesion域中会清空orderId。所以需要 String orderId = request.getParameter("orderId");// } List<OrderItem> orderItems = orderItemService.showAllOrderItem(orderId); if (orderItems !=null && orderItems.size()!=0){ session.setAttribute("orderItems",orderItems); }%><nav class="navbar-expand-lg navbar navbar-dark bg-primary"> <div class="container-fluid "> <a class="navbar-brand" href="#">订单详情页</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="/MyProject/index.jsp">Home</a> </li> </ul> </div> </div></nav><c:if test="${!empty sessionScope.orderItems}"> <div class="container"> <div class="card"> <table class="table table-hover text-center"> <tr> <td>订单号</td> <td>商品名称</td> <td>价格</td> <td>数量</td> <td>总价格</td> </tr> <c:forEach items="${sessionScope.orderItems}" var="orderItem"> <tr style="vertical-align: middle !important;text-align: center;"> <td>${orderItem.order_id}</td> <td> <img style="width: 100px;height: 100px" src="${orderItem.img}"/> <span>${orderItem.name}</span> </td> <td>${orderItem.price}</td> <td>${orderItem.count}</td> <td>${orderItem.total_price}</td> </tr> </c:forEach> </table> </div> </div></c:if></body></html>订单详情的展示JavaWeb购物系统(六)购物车订单模块的实现(java web购物系统)

在上边查看详情页按钮的代码中可以看到,跳转的不是Controller层,而是跳转到了orderDetail.jsp页面。在详情页面,通过请求携带的订单Id,来获取数据库的中的订单项数据。

不知道大家到这里会不会很奇怪?订单项是一个对象,订单也是一个对象。我们的订单和订单项的展示,都需要从数据库来获取,那么这两个对象是什么时候存储到数据库中的呢?

别急。下边就是答案: 当我们在购物车中点击结算按钮的时候,他就会生成订单对象以及和它对应的订单项。 我们这里解释一下,它的前后端是如何处理的:

// 结算$("#settlement").click( function () { $.post( "/MyProject/orderProcessServlet", { method: "" }, function (data) { if ("success" == data){ alert("订单生成成功!"); location.reload(true); } }, "json" ) })

这段js代码在上一章节中,因为它属于购物车部分。是发送结算请求。请求地址是/orderProcessServlet,即我们的订单对应的Controller层。

OrderProcessServlet(订单处理层)package com.controller;import com.entity.*;import com.google.gson.Gson;import com.myUtil.JdbcUtil;import com.myUtil.ProcessUtil;import com.service.OrderService;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;public class OrderProcessServlet extends HttpServlet { private OrderService orderService = new OrderService(); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { HttpSession session = request.getSession(); Cart cart = (Cart) session.getAttribute("cart"); String userId = ProcessUtil.getUserIdBySessionId(session); if (cart==null || cart.getItems().size()==0){ response.sendRedirect("/MyProject/index.jsp"); return; } if (cart!=null){ // 对生成订单进行事务控制 String orderId = null; try { orderId = orderService.saveOrder(cart, Integer.parseInt(userId)); JdbcUtil.commit(); session.setAttribute("orderId",orderId); response.getWriter().write(new Gson().toJson("success")); } catch (Exception e) { // 如果出错事务回滚 JdbcUtil.rollback(); e.printStackTrace(); } } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { doPost(request, response); }}orederService(订单处理的业务层)package com.service;import com.dao.GoodsDao;import com.dao.OrderDao;import com.dao.OrderItemDao;import com.entity.*;import java.time.LocalDateTime;import java.util.HashMap;import java.util.List;public class OrderService { private OrderDao orderDao = new OrderDao(); private OrderItemDao orderItemDao = new OrderItemDao(); private GoodsDao goodsDao = new GoodsDao(); // 生成订单 public String saveOrder(Cart cart, Integer userId){ // 生成订单号 String orderId = String.valueOf(System.currentTimeMillis()); // 订单生成时间 LocalDateTime createTime = LocalDateTime.now(); Order order = new Order(orderId,createTime,cart.getTotalPrice(),0,userId); // 保存order表到数据库 orderDao.addOrder(order); // 构建orderItem,并保存到数据库 HashMap<Integer, ShopCarItem> items = cart.getItems(); for (Integer goodId : items.keySet()) { ShopCarItem item = items.get(goodId); OrderItem orderItem = new OrderItem(null, item.getImg(), item.getGoodsName(), item.getPrice(), item.getNumber(), item.getTotalPrice(), orderId); orderItemDao.addOrderItem(orderItem); // 得到商品信息 Goods goods = goodsDao.showDataById(String.valueOf(goodId)); // 更新库存 goods.setInventory(goods.getInventory() - item.getNumber()); // 更新到数据库 goodsDao.updateStock(goods); } // 清空购物车 cart.removeAll(); return orderId; } // 显示所有订单 public List<Order> showAllOrder(String userId){ return orderDao.showAllOrder(userId); }}

接着上边的逻辑,当生成订单请求发过来之后,在这Controller层调用Service层的saveOrder()进行了订单的生成,而且在Service层我们进行了订单保存,订单项的保存。而且我们注意到saveOrder()的参数是Cart购物车对象和用户Id。因为订单和订单项的所有信息都是从购物车来获取的,而且每个订单得有对应的用户(我们得保证自己的订单不能出现在别人的页面上,对吧^_^)。 当然生成订单之后还得清空购物车。

orderItemServicepackage com.service;import com.dao.OrderItemDao;import com.entity.OrderItem;import java.util.List;public class OrderItemService { private OrderItemDao orderItemDao = new OrderItemDao(); // 显示所有订单项 public List<OrderItem> showAllOrderItem(String orderId){ return orderItemDao.showAllOrderItem(orderId); }}orderDaopackage com.dao;import com.entity.Order;import java.util.List;public class OrderDao extends BasicDao<Order> { // 生成订单 public Boolean addOrder(Order order){ String sql = "INSERT INTO `order` VALUES('"+order.getId()+"','"+order.getCreate_time()+"',"+order.getPrice()+","+order.getStatus()+","+order.getMember_id()+")"; return dmlData(sql); } // 显示所有订单 public List<Order> showAllOrder(String userId){ String sql = "SELECT * FROM `order` WHERE `member_id`='" + userId + "'"; List<Order> orders = queryMulti(sql, Order.class); if (orders!=null){ return orders; } return null; }}orderItemDaopackage com.dao;import com.entity.OrderItem;import java.util.List;public class OrderItemDao extends BasicDao<OrderItem>{ // 添加订单项 public Boolean addOrderItem(OrderItem orderItem){ String sql = "INSERT INTO `order_item` VALUES(NULL,'"+ orderItem.getImg() +"','"+ orderItem.getName() + "',"+ orderItem.getPrice() +","+ orderItem.getCount() +","+ orderItem.getTotal_price() +",'"+ orderItem.getOrder_id() +"')"; return dmlData(sql); } // 显示所有订单项 public List<OrderItem> showAllOrderItem(String orderId){ String sql = "SELECT * FROM `order_item` WHERE `order_id`='"+ orderId +"'"; List<OrderItem> orderItems = queryMulti(sql, OrderItem.class); if (orderItems != null){ return orderItems; } return null; }}order(订单实体类)

订单实体类拥有属性:

订单号(订单结算的毫秒时间)订单生成时间订单金额订单状态(这里我们没有太多的功能,所以默认是0)订单所属者(每个订单属于哪个用户)package com.entity;import java.math.BigDecimal;import java.time.LocalDateTime;public class Order { // 订单号 private String id; // 订单生成时间 private LocalDateTime create_time; // 订单金额 private BigDecimal price; // 订单状态 private Integer status; // 该订单对应的用户id private Integer member_id; public Order() { } public Order(String id, LocalDateTime create_time, BigDecimal price, Integer status, Integer member_id) { this.id = id; this.create_time = create_time; this.price = price; this.status = status; this.member_id = member_id; } public String getId() { return id; } public void setId(String id) { this.id = id; } public LocalDateTime getCreate_time() { return create_time; } public void setCreate_time(LocalDateTime create_time) { this.create_time = create_time; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Integer getMember_id() { return member_id; } public void setMember_id(Integer member_id) { this.member_id = member_id; } @Override public String toString() { return "Order{" + "id='" + id + '\'' + ", create_time=" + create_time + ", price=" + price + ", status=" + status + ", member_id=" + member_id + '}'; }}orderItem(订单项实体类)

订单项的实体类拥有的属性:

订单项唯一的标识Id商品图片商品的价格商品数量订单项的总价格订单项的所属的订单(订单项都是从属于某一个订单)package com.entity;import java.math.BigDecimal;public class OrderItem { // 订单项的自增ID private Integer id; // 商品图片 private String img; // 商品名 private String name; // 商品价格 private BigDecimal price; // 商品数量 private Integer count; // 订单项的总价 private BigDecimal total_price; // 对应的订单号 private String order_id; public OrderItem() { } @Override public String toString() { return "OrderItem{" + "id=" + id + ", img='" + img + '\'' + ", name='" + name + '\'' + ", price=" + price + ", count=" + count + ", total_price=" + total_price + ", order_id='" + order_id + '\'' + '}'; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public OrderItem(Integer id, String img, String name, BigDecimal price, Integer count, BigDecimal total_price, String order_id) { this.id = id; this.img = img; this.name = name; this.price = price; this.count = count; this.total_price = total_price; this.order_id = order_id; } 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 BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } public BigDecimal getTotal_price() { return total_price; } public void setTotal_price(BigDecimal total_price) { this.total_price = total_price; } public String getOrder_id() { return order_id; } public void setOrder_id(String order_id) { this.order_id = order_id; }}order表的设计列名数据类型长度主键?非空?自增?idvarchar64√√create_timedatetime√pricedecimal11,2√statuetinyint32√memberint√orderItem表的设计列名数据类型长度主键?非空?自增?idint√√√imgvarchar500√namevarchar500√pricedecimal11,2√countint√total_pricedecimal11,2√order_idvarchar64√

这里我们得保证实体类的属性名要和对应表的字段名保持一致!!!

本文链接地址:https://www.jiuchutong.com/zhishi/295162.html 转载请保留说明!

上一篇:【uni-app】小程序实现微信在线聊天(私聊/群聊)(小程序uniapp怎么用)

下一篇:Linn of Quoich瀑布旁的碗状岩石洞,苏格兰阿伯丁郡 (© AWL Images/Danita Delimont)(fall 瀑布)

  • 电脑上的时间怎么设置自动更新(电脑上的时间怎么显示到桌面)

    电脑上的时间怎么设置自动更新(电脑上的时间怎么显示到桌面)

  • 我的世界绊线钩怎么用(我的世界绊线钩英文名)

    我的世界绊线钩怎么用(我的世界绊线钩英文名)

  • 电脑怎么同时打开两个窗口

    电脑怎么同时打开两个窗口

  • 充电不显示双引擎(充电不显示双引闪电)

    充电不显示双引擎(充电不显示双引闪电)

  • 苹果平板home键在哪里(苹果平板home键失灵修复方法)

    苹果平板home键在哪里(苹果平板home键失灵修复方法)

  • 苹果11横屏竖屏在哪设置(苹果11横屏竖屏在哪里调胜率)

    苹果11横屏竖屏在哪设置(苹果11横屏竖屏在哪里调胜率)

  • 看视频怎么调节亮度(看视频怎样调亮度调节)

    看视频怎么调节亮度(看视频怎样调亮度调节)

  • 手机如何剪辑视频不要的部分(手机如何剪辑视频中不好的片段)

    手机如何剪辑视频不要的部分(手机如何剪辑视频中不好的片段)

  • OPPO手机卡一卡二移动数据怎么切换(oppo手机卡一卡二怎么切换流量)

    OPPO手机卡一卡二移动数据怎么切换(oppo手机卡一卡二怎么切换流量)

  • qq用户数据包含什么(qq用户数据包含下载的图片吗)

    qq用户数据包含什么(qq用户数据包含下载的图片吗)

  • 打印机感光鼓在哪(打印机感光鼓断开怎么弄)

    打印机感光鼓在哪(打印机感光鼓断开怎么弄)

  • 酷我音乐会员下载的歌是永久的吗(酷我音乐会员下载的歌曲下到U盘不会过期)

    酷我音乐会员下载的歌是永久的吗(酷我音乐会员下载的歌曲下到U盘不会过期)

  • 苹果手机没有id可以用吗(苹果手机没有id密码怎么恢复出厂设置)

    苹果手机没有id可以用吗(苹果手机没有id密码怎么恢复出厂设置)

  • 为什么企鹅电竞直播不了(为什么企鹅电竞没了)

    为什么企鹅电竞直播不了(为什么企鹅电竞没了)

  • 韩剧tv怎么调超清(韩剧tv怎么缩小)

    韩剧tv怎么调超清(韩剧tv怎么缩小)

  • ios13怎么设置视频壁纸(iphone13pro视频设置)

    ios13怎么设置视频壁纸(iphone13pro视频设置)

  • word 增加新的一条目录(word新加一页怎么设置)

    word 增加新的一条目录(word新加一页怎么设置)

  • vivox25参数(vivox22参数)

    vivox25参数(vivox22参数)

  • 苹果11怎么插耳机(苹果11怎么插耳机蓝牙)

    苹果11怎么插耳机(苹果11怎么插耳机蓝牙)

  • oppoa9和a9x的手机壳可以共用吗(oppoa9x跟a9手机一样吗)

    oppoa9和a9x的手机壳可以共用吗(oppoa9x跟a9手机一样吗)

  • Win10累积更新补丁KB5007186推送,2004 版本即将停止支持(附下载)(win10 累积更新)

    Win10累积更新补丁KB5007186推送,2004 版本即将停止支持(附下载)(win10 累积更新)

  • 气泡星云 (NGC 7635) (© NASA, ESA, and the Hubble Heritage Team STScI/AURA)(气泡星云图片)

    气泡星云 (NGC 7635) (© NASA, ESA, and the Hubble Heritage Team STScI/AURA)(气泡星云图片)

  • Python命令行如何运行文件(python命令行如何退出)

    Python命令行如何运行文件(python命令行如何退出)

  • 递延所得税资产和所得税费用的关系
  • 应交增值税和未交增值税都有余额
  • 离职员工奖金发放规定
  • 企业所得税季度申报表怎么填
  • 消费税基本特点?
  • 超率累进税率定义
  • 公司内部个人股份怎么算
  • 年初存货跌价准备余额是上年末结转的吗
  • 人工费已经支付怎么入账
  • 装修公司开劳务费发票可以有材料进项票吗
  • 集团内部资产无偿划转是否纳税增值税
  • 促销费可以开专票吗
  • 核销贷款收回会计分录
  • 企业的期间费用包括什么
  • 小规模纳税人企业所得税怎么计算
  • 可以把两张发票合写在记账凭证上吗
  • 进项税使报表应交税费负数如何处理?
  • 减税降费新政策解读
  • 申报表作废后怎么显示的是已申报,不能重新申报
  • 吸收合并税费
  • 怎么判断分红前已提取足够法定公积金?
  • 主营业务收入写不写明细
  • 跨年付上年租金帐务处理?
  • 先征后返的会计分录
  • 企业接到银行收账通知
  • 污水处理费该谁交
  • win 11 bug
  • 这张磁盘有写保护无法格式化
  • 差额增值税发票和全额增值税发票
  • php基础教程
  • php获取ftp文件目录
  • 金融公司呆账对当事人有什么影响
  • 无人蹭网 网络还不好
  • PHP:pcntl_signal_dispatch()的用法_PCNTL函数
  • 设备拆修痕迹影响大吗
  • javascript创建对象及应用
  • passwd -s命令
  • 本地住宿费能报销吗
  • 小微企业能申请留抵退税吗?
  • 购买加油卡如何做会计分录
  • php实现站内消息推送
  • 前端培训费用大概多少
  • 织梦内容页模板修改
  • 季度所得税怎么算
  • 捐赠支出怎么抵税
  • 金税盘一天可以开多少张发票
  • mongodb 根据条件查询数量
  • MongoDB中MapReduce编程模型使用实例
  • 信息技术服务费的税率是多少
  • 投资收益记账
  • 同一控制下长期股权投资的入账价值
  • 企业破产作用
  • 事业单位取暖费2023
  • 残疾人保障金的工资按实发还是应发
  • 专用发票怎么网上申领
  • 购入固定资产一次性税前扣除
  • 无票收入怎么报增值税
  • 明细账的作用
  • win7经典版怎么换回win10
  • mac上怎么取消itunes自动续费
  • win8摄像头设置
  • macbook怎么剪视频软件
  • linux如何更改默认的运行级别
  • kernel32在哪个文件夹
  • windows8更新不了怎么办
  • win8.1开不了机怎么办
  • 深入剖析kubernetes pdf
  • cocos2dx开发的游戏
  • unity对象池优缺点
  • Intermediate Unity 3D for iOS: Part 1/3
  • 安卓笔记软件squid使用教程
  • html+css网站设计基础教程
  • js判断元素是否显示
  • jquery 插件写法
  • 浅蓝色html代码
  • 税收分类分级管理是什么
  • 物业管理用房如何申请
  • 安置房公摊面积多少属于正常范围
  • 天津税务陈岩
  • 福建税务局电子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设