本项目是一个基于 Servlet 的简单电影购票系统,参考MVC架构,适合初学者学习 Java Web 开发。前端使用简单的 HTML 和 JavaScript 实现,使后端学习者无需过多关注前端知识,能够将重点放在后端开发上。系统实现了电影信息展示、场次选择、座位预订、订单创建等基本功能。 学习本项目需要掌握mysql与servlet相关知识,同时完成后可以进阶springboot相关项目。
com.suwe.demoservlet.controller:包含多个 Servlet 类,负责处理前端请求(如电影信息获取、场次查询、购票等)。com.suwe.demoservlet.dao:数据访问对象层,负责与数据库交互(如电影信息查询、订单创建等)。com.suwe.demoservlet.entity:实体类,定义数据模型(如电影、场次、座位、订单等)。com.suwe.demoservlet.service:服务层,处理业务逻辑(如电影信息获取、订单创建等)。com.suwe.demoservlet.utils:工具类,包含数据库连接工具。
src/main/webapp:包含 HTML 和 JavaScript 文件,实现前端页面和交互逻辑。
- Java 环境:JDK 8 及以上
- Web 服务器:Tomcat 8 及以上
- 数据库:MySQL 8.0
CREATE DATABASE movie;-- 电影表
CREATE TABLE movies (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
price DOUBLE NOT NULL,
release_date DATE NOT NULL,
image_url VARCHAR(255),
description TEXT,
duration INT,
type VARCHAR(100),
director VARCHAR(100),
actors VARCHAR(255),
status INT
);
-- 场次表
CREATE TABLE showings (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
movie_id BIGINT NOT NULL,
theater VARCHAR(100),
show_time TIME,
date DATE
);
-- 座位表
CREATE TABLE seats (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
showing_id BIGINT NOT NULL,
seat_number VARCHAR(20),
status INT
);
-- 订单表
CREATE TABLE orders (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL,
movie_id BIGINT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
showing_id BIGINT NOT NULL,
order_time TIMESTAMP
);
-- 订单座位关系表
CREATE TABLE order_seat (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
order_id BIGINT NOT NULL,
seat_id BIGINT NOT NULL
);
-- 用户表
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
name VARCHAR(100),
phone VARCHAR(20)
);在 javaweb-servlet/src/main/java/com/suwe/demoservlet/utils/DBUtil.java 中配置:
private static final String URL = "jdbc:mysql://localhost:3306/movie?useSSL=false&serverTimezone=UTC";
private static final String USERNAME = "root";
private static final String PASSWORD = "1234";- 导入项目:将项目导入 IDE(如 IntelliJ IDEA 或 Eclipse)。
- 配置 Tomcat:在 IDE 中配置 Tomcat 服务器并部署项目。
- 启动项目:启动 Tomcat,访问
http://localhost:8080/suwe/index.html进入系统。
- 首页展示所有热映电影信息(海报、标题、票价、类型等)。
- 点击电影卡片进入详情页,点击“购票”进入购票页面。
- 选择场次后加载座位信息(黄色为可用,灰色为已售出)。
- 选择座位后变为红色并显示总票价,点击“确认购票”创建订单。
- 输入用户名和密码登录,成功后用户信息存储在 session 中。
- 本购票项目并没有考虑高并发,集群以及相关线程安全问题
- 本项目还未实现订单相关业务问题
- 没有做到用servlet实现请求分发功能,项目存在冗余性
- 确保 MySQL 服务启动且数据库连接信息正确。
- 项目使用
com.alibaba.fastjson处理 JSON,需确保依赖已添加。
如需改进或发现 bug,请提交 issue 或 pull request。
