Skip to content

suwe12/javaweb-servlet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简单电影购票系统 README

一、项目简介

本项目是一个基于 Servlet 的简单电影购票系统,参考MVC架构,适合初学者学习 Java Web 开发。前端使用简单的 HTML 和 JavaScript 实现,使后端学习者无需过多关注前端知识,能够将重点放在后端开发上。系统实现了电影信息展示、场次选择、座位预订、订单创建等基本功能。 学习本项目需要掌握mysql与servlet相关知识,同时完成后可以进阶springboot相关项目。

二、项目结构

1. 后端代码结构

  • com.suwe.demoservlet.controller:包含多个 Servlet 类,负责处理前端请求(如电影信息获取、场次查询、购票等)。
  • com.suwe.demoservlet.dao:数据访问对象层,负责与数据库交互(如电影信息查询、订单创建等)。
  • com.suwe.demoservlet.entity:实体类,定义数据模型(如电影、场次、座位、订单等)。
  • com.suwe.demoservlet.service:服务层,处理业务逻辑(如电影信息获取、订单创建等)。
  • com.suwe.demoservlet.utils:工具类,包含数据库连接工具。

2. 前端代码结构

  • src/main/webapp:包含 HTML 和 JavaScript 文件,实现前端页面和交互逻辑。

三、环境要求

  • Java 环境:JDK 8 及以上
  • Web 服务器:Tomcat 8 及以上
  • 数据库:MySQL 8.0

四、数据库配置

1. 创建数据库

CREATE DATABASE movie;

2. 创建表

-- 电影表  
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)
);

六个数据库表对应关系如下 电影购票sql3.bmp

3. 数据库连接配置

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";

五、部署步骤

  1. 导入项目:将项目导入 IDE(如 IntelliJ IDEA 或 Eclipse)。
  2. 配置 Tomcat:在 IDE 中配置 Tomcat 服务器并部署项目。
  3. 启动项目:启动 Tomcat,访问 http://localhost:8080/suwe/index.html 进入系统。

六、功能说明

1. 电影列表展示

  • 首页展示所有热映电影信息(海报、标题、票价、类型等)。
  • 点击电影卡片进入详情页,点击“购票”进入购票页面。

2. 购票页面

  • 选择场次后加载座位信息(黄色为可用,灰色为已售出)。
  • 选择座位后变为红色并显示总票价,点击“确认购票”创建订单。

3. 登录功能

  • 输入用户名和密码登录,成功后用户信息存储在 session 中。

七、待提升的点

  • 本购票项目并没有考虑高并发,集群以及相关线程安全问题
  • 本项目还未实现订单相关业务问题
  • 没有做到用servlet实现请求分发功能,项目存在冗余性

八、注意事项

  • 确保 MySQL 服务启动且数据库连接信息正确。
  • 项目使用 com.alibaba.fastjson 处理 JSON,需确保依赖已添加。

九、贡献

如需改进或发现 bug,请提交 issue 或 pull request。

About

基于原生java的电影购票系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published