项目类型:java Web项目
实现语言:Java
环境要求:eclipse,JDK1.8.0_31,tomcat-8.5.31,MySQL8.0.18,jquery-3.4.1
功能要求:
1.建立数据表,创建主键,设置主键自增,添加测试数据
2.使用开发工具创建Web项目 Flight
3.为工程添加 lombok、DBUtils、 C3P0等支持
4.引入jar包
5.创建实体类
6.创建DAO组件,完成相关数据库操作,参考方法包括:
A.查询所有城市信息
B.根据起飞城市ID和到达城市ID查询航班信息,并根据起飞时间升序
7.创建业务层的 Service接口及其实现类。在实现类中注入DAO组件,并在类中实现业务逻辑和错误处理
8.创建Servlet类,为其注入业务组件,实现功能,并正确配置相关配置文件
9.创建首页面
A.完成页面设计,正确使用city表数据填充下拉列表,选项的value为城市ID,选项的文本为城市名称
B.为表单添加jQuery验证
C.通过Servlet查询符合条件的航班信息,结果按起飞时间升序排列,设置标题栏样式和隔行变色,查询条件会显在页面(在下拉列表中选中);如果没有符合条件的数据对用户进行提示。显示航班信息时,起飞城市和到达城市必须显示城市名,不可直接显示外键字段的值。
代码实现:
项目结构:
数据库
/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 8.0.18 : Database - flight
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!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 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`flight` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `flight`;
/*Table structure for table `city` */
DROP TABLE IF EXISTS `city`;
CREATE TABLE `city` (
`cityid` int(10) NOT NULL AUTO_INCREMENT,
`cityname` varchar(20) NOT NULL,
PRIMARY KEY (`cityid`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
/*Data for the table `city` */
insert into `city`(`cityid`,`cityname`) values (1,'北京'),(2,'天津'),(3,'石家庄'),(4,'太原'),(5,'广州'),(6,'济南'),(7,'兰州'),(8,'成都'),(9,'沈阳'),(10,'长春'),(11,'哈尔滨');
/*Table structure for table `flight` */
DROP TABLE IF EXISTS `flight`;
CREATE TABLE `flight` (
`flightid` int(10) NOT NULL AUTO_INCREMENT,
`flightno` varchar(10) NOT NULL,
`departurecity` int(10) NOT NULL,
`departuretime` datetime NOT NULL,
`arrivalcity` int(10) NOT NULL,
`arrivaltime` datetime NOT NULL,
PRIMARY KEY (`flightid`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
/*Data for the table `flight` */
insert into `flight`(`flightid`,`flightno`,`departurecity`,`departuretime`,`arrivalcity`,`arrivaltime`) values (1,'A1234',1,'2020-01-27 13:39:32',2,'2020-01-27 14:39:49'),(2,'A1235',1,'2020-01-02 13:40:34',2,'2020-01-02 15:40:48'),(3,'A1236',1,'2020-01-28 15:41:19',2,'2020-02-01 17:41:27'),(4,'B1001',4,'2020-01-01 13:42:10',5,'2020-01-01 15:42:15'),(5,'C1001',6,'2020-01-30 13:42:40',7,'2020-01-29 16:42:45'),(6,'C1002',6,'2020-01-30 13:43:16',8,'2020-01-30 15:43:06'),(7,'D1001',9,'2020-01-06 14:43:44',10,'2020-01-06 17:43:51'),(8,'D1002',9,'2020-01-31 13:44:26',7,'2020-01-31 16:44:32');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="fservice" value="cn.kgc.tangcco.chenxiangjian.service.imp.FlightServiceImp"></bean>
<bean id="fdao" value="cn.kgc.tangcco.chenxiangjian.dao.imp.FlightDaoImp"></bean>
</beans>
c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置,当使用ComboPooledDataSource无参构造器时,使用的就是这个配置 -->
<default-config>
<!-- 基本配置 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/flight?useSSL=false&serverTimezone=UTC
</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">****