[Day3] 购书系统:最后一步

/ 0评 / 0

在完成购物车和登录注册之后剩余一个部分:订单相关
1. 查看用户所有订单
在(任何页面中都可以)index.jsp页面上点击查看订单按钮后可以查看当前登陆用户所有的订单信息。
具体步骤:在orderlist.jsp页面中从session中取出当前登陆用户的的所有order对象,使用foreach标签循环遍历,显示所有的order信息 
2. 提交订单
在shopCart.jsp页面上点击提交订单的按钮后链接到Orderinfo.jsp页面,然后在该页面上点击确认订单按钮后才正式提交订单,将订单信息分别保存到line表中。

具体步骤:

  1) 先链接到Orderinfo.jsp页面,在该页面上从session中分别取出Customer和ShoppingCart对象并将它们的信息显示在页面,在该页面还可以修改用户信息。

  2) 实现OrderDao接口中的saveOrder()接口方法
  3) 实现IOrderService接口中的业务接口方法saveOrder()
  4) 实现ICustomerService接口中的业务接口方法update()
  5) 创建ConfirmServlet.java
  6) 在该Servlet中从session中获得Customer对象并更新属性信息,从session中获得ShoppingCart对象并将它包装成一个Order (订单)对象(注意要建立起Order对象和所有line对象之间的关联关系),最后调用ICustomerService接口中的confirmOrder ()方法和IOrderService接口中的saveOrder()方法分别进行用户信息的更新和订单保存。
  7) 提交订单成功后跳转到index.jsp,失败跳转到confirmorder.jsp页面上.
3. 查询订单明细
在Orderlist.jsp页面上点击明细按钮可以查看一个订单的明细信息。
具体步骤:1) 实现OrderDao接口中的findById()接口方法
  2) 实现IOrderService接口中的业务接口方法findById()方法
  3) 创建OrderinfoServlet.java
  4) 在该Servlet中获得从Orderlist.jsp传递过来的orderid,然后根据该orderid,调用IOrderService接口中的findById()方法查询指定的订单。
  5) 查询成功后跳转到orderinfo.jsp,在该页面上显示该订单的所有明细信息。
4.  删除订单
在listOrder.jsp页面上点击删除按钮可以删除指定的一个用户订单。
具体步骤:1) 实现OrderDao接口中的deleteOrder()方法
  2) 实现IOrderService接口中的业务接口方法deleteOrder()
而同昨日,处理办法唯一要注意的地方就是这次是有两个表的数据插入,在插入或者删除的时候有外键约束,所以删除的顺序十分重要。而为了配合后台的某些数据处理,对前台的一部分页面稍微做了一点修改

在本地测试发现没有问题之后进行最后一部:上线测试

    早在几天前就已经将Tomcat安装,现在要做的就是将项目打包,部署到服务器,修改数据库,测试。
由于在本地测试我使用的是Oracle数据库,而我在线上的数据库是mySql数据库,为了保证其稳定,我现在本地的Mysql做了一发测试:先在本地创建好数据库,导入Mysql的驱动jar包。进行测试:

-- MySQL dump 10.13  Distrib 5.7.12, for Win64 (x86_64)
--
-- Host: localhost    Database: estore
-- ------------------------------------------------------
-- Server version	5.7.17-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `tbl_book`
--

DROP TABLE IF EXISTS `tbl_book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tbl_book` (
  `id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  `price` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tbl_book`
--

LOCK TABLES `tbl_book` WRITE;
/*!40000 ALTER TABLE `tbl_book` DISABLE KEYS */;
INSERT INTO `tbl_book` VALUES (1,'JAVA核心技术',81),(2,'UNIX技术手册',21.15),(3,'ORACLE9I参考手册',108),(4,'JSP设计(第三版)',59.25),(5,'JAVA SERVLET 编程(第二版)',38.25),(6,'XML 高级编程(第2版)',97.2),(7,'精通STRUTS:基于MVC的JAVA WEB设计与开发',36.75),(8,'精通HIBERNATE:JAVA对象持久化技术详解',44.25),(9,'SPRING IN ACTION中文版',29.25),(10,'精通EJB 3.0',44.25);
/*!40000 ALTER TABLE `tbl_book` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `tbl_customer`
--

DROP TABLE IF EXISTS `tbl_customer`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tbl_customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `password` varchar(200) DEFAULT NULL,
  `zip` varchar(45) DEFAULT NULL,
  `address` varchar(200) DEFAULT NULL,
  `telephone` varchar(15) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tbl_customer`
--

LOCK TABLES `tbl_customer` WRITE;
/*!40000 ALTER TABLE `tbl_customer` DISABLE KEYS */;
/*!40000 ALTER TABLE `tbl_customer` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `tbl_line`
--

DROP TABLE IF EXISTS `tbl_line`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tbl_line` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `num` int(11) DEFAULT NULL,
  `order_id` int(11) DEFAULT NULL,
  `book_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `book_id_idx` (`book_id`),
  KEY `order_id_idx` (`order_id`),
  CONSTRAINT `book_id` FOREIGN KEY (`book_id`) REFERENCES `tbl_book` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `order_id` FOREIGN KEY (`order_id`) REFERENCES `tbl_order` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tbl_line`
--

LOCK TABLES `tbl_line` WRITE;
/*!40000 ALTER TABLE `tbl_line` DISABLE KEYS */;
/*!40000 ALTER TABLE `tbl_line` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `tbl_order`
--

DROP TABLE IF EXISTS `tbl_order`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tbl_order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cost` varchar(45) DEFAULT NULL,
  `orderdate` date DEFAULT NULL,
  `customer_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `customer_id_idx` (`customer_id`),
  CONSTRAINT `customer_id` FOREIGN KEY (`customer_id`) REFERENCES `tbl_customer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tbl_order`
--

LOCK TABLES `tbl_order` WRITE;
/*!40000 ALTER TABLE `tbl_order` DISABLE KEYS */;
/*!40000 ALTER TABLE `tbl_order` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Dumping events for database 'estore'
--

    在此之后注意将映射文件修改 毕竟SQL没有序列只能靠自增,所以要把原来的映射文件修改。

    在本地测试后发现一切正常,将项目打包后xftp上传到服务器下进行测试。(由于订单部分的2b写法 ,所以速度很慢不好意思贴网址了)

    最后附上源码:https://github.com/KelovpStrings/Estore

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注