how2j.cn

-->
下载区
文件名 文件大小
请先登录 4m
增值内容 4m
4m

解压rar如果失败,请用5.21版本或者更高版本的winrar

点击下载 winrar5.21
步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 模仿和排错   
步骤 3 : 准备数据SQL   
步骤 4 : 页面截图   
步骤 5 : OrderServlet.java   
步骤 6 : Order.java   
步骤 7 : web.xml   
步骤 8 : listOrder.jsp   
步骤 9 : 查询功能讲解   
步骤 10 : 发货功能讲解   
步骤 11 : 增加,修改,删除功能   

步骤 1 :

先运行,看到效果,再学习

edit
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
页面截图
步骤 5 :

OrderServlet.java

edit
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package tmall.servlet; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import tmall.bean.Order; import tmall.dao.OrderDAO; import tmall.util.Page; public class OrderServlet extends BaseBackServlet { public String add(HttpServletRequest request, HttpServletResponse response, Page page) { return null; } public String delete(HttpServletRequest request, HttpServletResponse response, Page page) { return null; } public String delivery(HttpServletRequest request, HttpServletResponse response, Page page) { int id = Integer.parseInt(request.getParameter("id")); Order o = orderDAO.get(id); o.setDeliveryDate(new Date()); o.setStatus(OrderDAO.waitConfirm); orderDAO.update(o); return "@admin_order_list"; } public String edit(HttpServletRequest request, HttpServletResponse response, Page page) { return null; } public String update(HttpServletRequest request, HttpServletResponse response, Page page) { return null; } public String list(HttpServletRequest request, HttpServletResponse response, Page page) { List<Order> os = orderDAO.list(page.getStart(),page.getCount()); orderItemDAO.fill(os); int total = orderDAO.getTotal(); page.setTotal(total); request.setAttribute("os", os); request.setAttribute("page", page); return "admin/listOrder.jsp"; } }
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
Order.java
package tmall.bean; import java.util.Date; import java.util.List; //import tmall.dao.OrderDAO; import tmall.dao.OrderDAO; public class Order { private String orderCode; private String address; private String post; private String receiver; private String mobile; private String userMessage; private Date createDate; private Date payDate; private Date deliveryDate; private Date confirmDate; private User user; private int id; private List<OrderItem> orderItems; private float total; private int totalNumber; private String status; public String getStatusDesc(){ String desc ="未知"; switch(status){ case OrderDAO.waitPay: desc="待付款"; break; case OrderDAO.waitDelivery: desc="待发货"; break; case OrderDAO.waitConfirm: desc="待收货"; break; case OrderDAO.waitReview: desc="等评价"; break; case OrderDAO.finish: desc="完成"; break; case OrderDAO.delete: desc="刪除"; break; default: desc="未知"; } return desc; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPost() { return post; } public void setPost(String post) { this.post = post; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getUserMessage() { return userMessage; } public void setUserMessage(String userMessage) { this.userMessage = userMessage; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public Date getPayDate() { return payDate; } public void setPayDate(Date payDate) { this.payDate = payDate; } public Date getDeliveryDate() { return deliveryDate; } public void setDeliveryDate(Date deliveryDate) { this.deliveryDate = deliveryDate; } public Date getConfirmDate() { return confirmDate; } public void setConfirmDate(Date confirmDate) { this.confirmDate = confirmDate; } public String getReceiver() { return receiver; } public void setReceiver(String receiver) { this.receiver = receiver; } public String getOrderCode() { return orderCode; } public void setOrderCode(String orderCode) { this.orderCode = orderCode; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<OrderItem> getOrderItems() { return orderItems; } public void setOrderItems(List<OrderItem> orderItems) { this.orderItems = orderItems; } public float getTotal() { return total; } public void setTotal(float total) { this.total = total; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public int getTotalNumber() { return totalNumber; } public void setTotalNumber(int totalNumber) { this.totalNumber = totalNumber; } }
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>OrderServlet</servlet-name> <servlet-class>tmall.servlet.OrderServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>OrderServlet</servlet-name> <url-pattern>/orderServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>UserServlet</servlet-name> <servlet-class>tmall.servlet.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserServlet</servlet-name> <url-pattern>/userServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>ProductImageServlet</servlet-name> <servlet-class>tmall.servlet.ProductImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ProductImageServlet</servlet-name> <url-pattern>/productImageServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>CategoryServlet</servlet-name> <servlet-class>tmall.servlet.CategoryServlet</servlet-class> </servlet> <servlet> <servlet-name>ProductServlet</servlet-name> <servlet-class>tmall.servlet.ProductServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ProductServlet</servlet-name> <url-pattern>/productServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CategoryServlet</servlet-name> <url-pattern>/categoryServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>PropertyServlet</servlet-name> <servlet-class>tmall.servlet.PropertyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>PropertyServlet</servlet-name> <url-pattern>/propertyServlet</url-pattern> </servlet-mapping> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>tmall.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>BackServletFilter</filter-name> <filter-class>tmall.filter.BackServletFilter</filter-class> </filter> <filter-mapping> <filter-name>BackServletFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@include file="../include/admin/adminHeader.jsp"%> <%@include file="../include/admin/adminNavigator.jsp"%> <script> $(function(){ $("button.orderPageCheckOrderItems").click(function(){ var oid = $(this).attr("oid"); $("tr.orderPageOrderItemTR[oid="+oid+"]").toggle(); }); }); </script> <title>订单管理</title> <div class="workingArea"> <h1 class="label label-info" >订单管理</h1> <br> <br> <div class="listDataTableDiv"> <table class="table table-striped table-bordered table-hover1 table-condensed"> <thead> <tr class="success"> <th>ID</th> <th>状态</th> <th>金额</th> <th width="100px">商品数量</th> <th width="100px">买家名称</th> <th>创建时间</th> <th>支付时间</th> <th>发货时间</th> <th>确认收货时间</th> <th width="120px">操作</th> </tr> </thead> <tbody> <c:forEach items="${os}" var="o"> <tr> <td>${o.id}</td> <td>${o.statusDesc}</td> <td>¥<fmt:formatNumber type="number" value="${o.total}" minFractionDigits="2"/></td> <td align="center">${o.totalNumber}</td> <td align="center">${o.user.name}</td> <td><fmt:formatDate value="${o.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td><fmt:formatDate value="${o.payDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td><fmt:formatDate value="${o.deliveryDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td><fmt:formatDate value="${o.confirmDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td> <button oid=${o.id} class="orderPageCheckOrderItems btn btn-primary btn-xs">查看详情</button> <c:if test="${o.status=='waitDelivery'}"> <a href="admin_order_delivery?id=${o.id}"> <button class="btn btn-primary btn-xs">发货</button> </a> </c:if> </td> </tr> <tr class="orderPageOrderItemTR" oid=${o.id}> <td colspan="10" align="center"> <div class="orderPageOrderItem"> <table width="800px" align="center" class="orderPageOrderItemTable"> <c:forEach items="${o.orderItems}" var="oi"> <tr> <td align="left"> <img width="40px" height="40px" src="img/productSingle/${oi.product.firstProductImage.id}.jpg"> </td> <td> <a href="foreproduct?pid=${oi.product.id}"> <span>${oi.product.name}</span> </a> </td> <td align="right"> <span class="text-muted">${oi.number}个</span> </td> <td align="right"> <span class="text-muted">单价:¥${oi.product.promotePrice}</span> </td> </tr> </c:forEach> </table> </div> </td> </tr> </c:forEach> </tbody> </table> </div> <div class="pageDiv"> <%@include file="../include/admin/adminPage.jsp" %> </div> </div> <%@include file="../include/admin/adminFooter.jsp"%>
步骤 9 :

查询功能讲解

edit
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
查询功能讲解
public String list(HttpServletRequest request, HttpServletResponse response, Page page) { List<Order> os = orderDAO.list(page.getStart(),page.getCount()); orderItemDAO.fill(os); int total = orderDAO.getTotal(); page.setTotal(total); request.setAttribute("os", os); request.setAttribute("page", page); return "admin/listOrder.jsp"; }
<c:forEach items="${os}" var="o"> <tr> <td>${o.id}</td> <td>${o.statusDesc}</td> <td>¥<fmt:formatNumber type="number" value="${o.total}" minFractionDigits="2"/></td> <td align="center">${o.totalNumber}</td> <td align="center">${o.user.name}</td> <td><fmt:formatDate value="${o.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td><fmt:formatDate value="${o.payDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td><fmt:formatDate value="${o.deliveryDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td><fmt:formatDate value="${o.confirmDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td> <button oid=${o.id} class="orderPageCheckOrderItems btn btn-primary btn-xs">查看详情</button> <c:if test="${o.status=='waitDelivery'}"> <a href="admin_order_delivery?id=${o.id}"> <button class="btn btn-primary btn-xs">发货</button> </a> </c:if> </td> </tr> <tr class="orderPageOrderItemTR" oid=${o.id}> <td colspan="10" align="center"> <div class="orderPageOrderItem"> <table width="800px" align="center" class="orderPageOrderItemTable"> <c:forEach items="${o.orderItems}" var="oi"> <tr> <td align="left"> <img width="40px" height="40px" src="img/productSingle/${oi.product.firstProductImage.id}.jpg"> </td> <td> <a href="foreproduct?pid=${oi.product.id}"> <span>${oi.product.name}</span> </a> </td> <td align="right"> <span class="text-muted">${oi.number}个</span> </td> <td align="right"> <span class="text-muted">单价:¥${oi.product.promotePrice}</span> </td> </tr> </c:forEach> </table> </div> </td> </tr> </c:forEach>
步骤 10 :

发货功能讲解

edit
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
发货功能讲解
public String delivery(HttpServletRequest request, HttpServletResponse response, Page page) { int id = Integer.parseInt(request.getParameter("id")); Order o = orderDAO.get(id); o.setDeliveryDate(new Date()); o.setStatus(OrderDAO.waitConfirm); orderDAO.update(o); return "@admin_order_list"; }
	public String delivery(HttpServletRequest request, HttpServletResponse response, Page page) {
		int id = Integer.parseInt(request.getParameter("id"));
		Order o = orderDAO.get(id);
		o.setDeliveryDate(new Date());
		o.setStatus(OrderDAO.waitConfirm);
		orderDAO.update(o);
		return "@admin_order_list";
	}
步骤 11 :

增加,修改,删除功能

edit
增值内容,请先登录
完整的J2EE模仿天猫项目,使用J2SE、前端技术(包含所有前端jsp文件)、J2EE一整套技术栈, 从无到有涵盖全部147个知识点,475个开发步骤, 充实J2EE项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2021-01-18 疑问
星归




为什么会报错,明明有getStatusDesc方法呀

							
org.apache.jasper.JasperException: 在 [43] 行处理 [/admin/listOrder.jsp] 时发生异常

40:             <c:forEach items="${os}" var="o">
41:                 <tr>
42:                     <td>${o.id}</td>
43:                     <td>${o.statusDesc}</td>
44:                     <td>锟�<fmt:formatNumber type="number" value="${o.total}" minFractionDigits="2" /></td>
45:                     <td align="center">${o.totalNumber}</td>
46:                     <td align="center">${o.user.name}</td>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	tmall.servlet.BaseBackServlet.service(BaseBackServlet.java:68)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	tmall.filter.BackServletFilter.doFilter(BackServletFilter.java:32)
	tmall.filter.EncodingFilter.doFilter(EncodingFilter.java:16)


2 个答案

how2j
答案时间:2021-01-18
好的。。。

星归
答案时间:2021-01-18
解决了,原来是数据库的status为null



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2020-11-22 修改库存的问题
jjr8112

本项目中虽然在orderItem的对象中有购买数量number这一属性,但是在购买收货后进入原商品页面库存未变。要完善这一功能需要在order上加操作还是在orderItem上加操作?求思路




2 个答案

那年的雪
答案时间:2020-12-22
个人感觉 1. 代码应该写在在OrderServlet的delivery()方法里; 2. 在ProductDao里,写根据OrderItem对象,扣减相应库存的方法; 期间会用到OrderItemDAO的listByOrder(oid) 方法来辅助实现;

how2j
答案时间:2020-11-24
库存应带设计在 Product表上



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-03-19 product.firstProductImage是什么时候设置上的?
2019-07-09 请问一下关于button元素的oid自定义属性的问题
2019-07-07 这个超链是跳到前端商品展示么?


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 16 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-天猫整站J2EE-订单管理 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图