• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

Javaweb网上商城项目实战(24)实现订单详情查询功能

项目实战 Geekerstar 11个月前 (05-27) 769次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

原理分析

具体实现

order_list.jsp中修改链接

这部分上一节图片中已经改了,这里提示一下。

<a href="${pageContext.request.contextPath}/OrderServlet?method=findOrderByOid&oid=${o.oid}">付款</a>

OrderServlet中添加findOrderByOid方法

//findOrderByOid
public String findOrderByOid(HttpServletRequest req, HttpServletResponse resp) throws Exception {
	//获取到订单oid
	String oid=req.getParameter("oid");
	//调用业务层功能:根据订单编号查询订单信息
	OrderService OrderService=new OrderServiceImp();
	Order order=OrderService.findOrderByOid(oid);
	// 将订单放入request
	req.setAttribute("order", order);
	// 转发到/jsp/order_info.jsp
	return "/jsp/order_info.jsp";
}

OrderService中添加findOrderByOid方法

Order findOrderByOid(String oid)throws Exception;

OrderServiceImp中添加实现方法

@Override
public Order findOrderByOid(String oid) throws Exception {
	return orderDao.findOrderByOid(oid);
	
}

OrderDao中添加该方法

Order findOrderByOid(String oid)throws Exception;

OrderDaoImp中实现该方法

@Override
public Order findOrderByOid(String oid) throws Exception {
	String sql="select * from orders where oid= ?";
	QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
	Order order=qr.query(sql, new BeanHandler<Order>(Order.class),oid);
	
	//根据订单id查询订单下所有的订单项以及订单项对应的商品信息
	sql="select * from orderitem o, product p where o.pid=p.pid and oid=?";
	List<Map<String, Object>> list02 = qr.query(sql, new MapListHandler(),oid);
	//遍历list
	for (Map<String, Object> map : list02) {
		OrderItem orderItem=new OrderItem();
		Product product=new Product();
		// 由于BeanUtils将字符串"1992-3-3"向user对象的setBithday();方法传递参数有问题,手动向BeanUtils注册一个时间类型转换器
		// 1_创建时间类型的转换器
		DateConverter dt = new DateConverter();
		// 2_设置转换的格式
		dt.setPattern("yyyy-MM-dd");
		// 3_注册转换器
		ConvertUtils.register(dt, java.util.Date.class);
		
		//将map中属于orderItem的数据自动填充到orderItem对象上
		BeanUtils.populate(orderItem, map);
		//将map中属于product的数据自动填充到product对象上
		BeanUtils.populate(product, map);
		
		//让每个订单项和商品发生关联关系
		orderItem.setProduct(product);
		//将每个订单项存入订单下的集合中
		order.getList().add(orderItem);
	}
	return order;
}

JSP页面

开发中,多个功能对应同一个JSP页面,为了提高代码复用率,所有的功能在向同一个JSP页面转发的时候,向request存入相同的数据(属性名一致)

因此,order_info.jsp中的页面就不需要改了

效果演示

在我们的订单展示页面,点击付款

成功跳到订单详情页面,并且成功获取到了我们订单中的商品信息,到这里我们就实现了订单详情查询功能。

源码下载

下载地址

导航目录

查看导航
丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Javaweb网上商城项目实战(24)实现订单详情查询功能
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00