在完成购物车和登录注册之后剩余一个部分:订单相关
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