色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Java學(xué)生火車票訂票系統(tǒng):JSP+Servlet+JDBC實現(xiàn)與并發(fā)控制

Java學(xué)生火車票訂票系統(tǒng):JSP+Servlet+JDBC實現(xiàn)與并發(fā)控制 簡介面向?qū)W生群體的火車票訂票系統(tǒng)完整項目基于企業(yè)級開發(fā)技術(shù)構(gòu)建集后臺管理與前臺購票于一體涵蓋車次維護、學(xué)生寒暑假半價優(yōu)惠、團體購票等典型業(yè)務(wù)場景適合Java學(xué)習者作為課程設(shè)計或畢業(yè)設(shè)計參考。資源共三百一十八個文件以依賴庫、源碼、頁面及編譯產(chǎn)物為主另含數(shù)據(jù)庫腳本、前端樣式腳本、工程配置文件壓縮包約二十四兆目錄結(jié)構(gòu)清晰完整可直接導(dǎo)入集成環(huán)境運行與學(xué)習。當前已有三千二百四十八人學(xué)習下載具有較好參考熱度。通過項目可系統(tǒng)掌握分層架構(gòu)設(shè)計、服務(wù)器頁面技術(shù)、數(shù)據(jù)庫連接與操作、業(yè)務(wù)邏輯封裝等實際技能理解用戶管理、訂單處理、車次信息維護、優(yōu)惠策略實現(xiàn)等完整流程同時學(xué)習如何整合常見開源框架、優(yōu)化前后端交互對從零完成一個可用系統(tǒng)很有助益。1. JAVA學(xué)生火車票訂票系統(tǒng)為什么它是課程設(shè)計里的“常青樹”如果你在 Java 課程設(shè)計、畢業(yè)設(shè)計或者簡歷項目里見過“學(xué)生火車票訂票系統(tǒng)”這個名字不用懷疑它被選中的頻率高得驚人。原因不在于它要處理多么復(fù)雜的業(yè)務(wù)而在于它用最少的實體把“學(xué)生、車次、訂單、余票”四個核心概念串成了一條完整的業(yè)務(wù)閉環(huán)——登錄、查票、下單、支付、退票、后臺管理——這幾乎覆蓋了 Java 后端開發(fā)從 Servlet 到 JDBC 再到前端頁面的全部基本功。這套系統(tǒng)真正能解決的是如何用 Java Web 里的“老三樣”JSP Servlet MySQL 做出一個能跑、能講、能答辯的完整項目。它適合兩類人——正被課程設(shè)計逼著交代碼的學(xué)生以及準備 Java 面試想找個業(yè)務(wù)場景把八股文落到代碼里的求職者。很多熱詞里提到 java 課程設(shè)計案例源碼、java 面試題這類系統(tǒng)恰恰是把它們串起來的最好載體。2. 從選題到技術(shù)棧選型為什么用 JSP Servlet 而不是 Spring Boot做學(xué)生火車票訂票系統(tǒng)首先要想清楚一個實際問題你是在做課程設(shè)計不是在做鐵路 12306。這意味著你不需要分布式架構(gòu)、不需要消息隊列、不需要 Redis 緩存機票余量你要的是在一個兩周到一個月的時間周期內(nèi)把業(yè)務(wù)邏輯完整實現(xiàn)并能在答辯現(xiàn)場講清楚。2.1 需求先立住學(xué)生端的“查票—鎖定—出票”閉環(huán)把標題里提到的“訂票”二字拆開看學(xué)生視角下有四個核心頁面登錄/注冊頁學(xué)生學(xué)號作為賬號密碼存數(shù)據(jù)庫可加一個 student 字段標識身份車次查詢頁按出發(fā)地、目的地、日期篩選車次展示余票數(shù)和坐席信息訂票頁選擇車次、坐席等級提交訂票請求訂單頁查看已訂訂單、退票管理員視角再補兩個車次信息管理、訂單狀況查看。整個系統(tǒng)就兩張角色表加兩個業(yè)務(wù)對象數(shù)據(jù)模型不超過 5 張表。這也是我建議課程設(shè)計別隨意加需求的理由——表建得越多后面的聯(lián)查和事務(wù)處理越容易出現(xiàn)答辯時講不清的坑。2.2 技術(shù)棧取舍Spring Boot 不一定適合所有課程設(shè)計現(xiàn)在的 Java 課程設(shè)計里很多同學(xué)一上來就用 Spring Boot MyBatis Plus。這個選擇本身沒有錯但有一個很現(xiàn)實的問題框架幫你把建立連接、關(guān)閉連接、事務(wù)處理全都封裝掉了出了問題反而看不到底層的邏輯。我一般會建議學(xué)生火車票訂票系統(tǒng)這類業(yè)務(wù)閉環(huán)清楚的項目用 JSP Servlet JDBC 更劃算。原因有三面試時無論問 Java 基礎(chǔ)還是 Java 八股文從 Servlet 生命周期到 JDBC 的 Connection 管理都能直接對應(yīng)到代碼里項目體積小一個 Tomcat 加一個 MySQL 就夠不依賴 Maven 拉一大堆間接依賴出錯了可以自己調(diào)試斷點直接打在 doGet/doPost 方法里不需要在 Spring 容器初始化里翻黑匣子當然如果你的課程設(shè)計明確要求用框架那改成 Spring Boot 也無妨核心表結(jié)構(gòu)和訂票事務(wù)邏輯是完全一致的只是把 JDBC 換成 MyBatis 的 Update 注解。2.3 部署視圖JDK、Tomcat、MySQL 三者的配合關(guān)系在寫代碼之前先把運行環(huán)境理順。我見過太多同學(xué)代碼寫完了結(jié)果卡在 java 環(huán)境變量配置上javac 命令找不到Tomcat 啟動一閃而過——這都屬于環(huán)境問題不屬于業(yè)務(wù)問題。這套系統(tǒng)的典型部署結(jié)構(gòu)是JDK 8編譯和運行 Java 代碼Tomcat 8.5/9.xServlet 容器負責接收 HTTP 請求并轉(zhuǎn)給 ServletMySQL 5.7/8.0存儲學(xué)生、車次、訂單數(shù)據(jù)Maven可選管理依賴和打包 war提示JDK 和 Tomcat 的版本要對齊。JDK 8 可以配 Tomcat 9但 JDK 17 直接配老版本 Tomcat 會出現(xiàn)反射訪問報錯這是課程設(shè)計階段最常見的翻車點。3. 用工程方式跑通“學(xué)生火車票訂票系統(tǒng)”建表、建工程、調(diào)通這個階段的目標只有一個——讓系統(tǒng)能在本地跑起來。我按通常的做法分三步建庫建表、建 Maven 工程、寫 JDBC 工具類。每一步都有目的地不是為寫代碼而寫代碼。3.1 建庫建表學(xué)生表、車次表、訂單表一次到位的數(shù)據(jù)結(jié)構(gòu)火車票訂票系統(tǒng)的表結(jié)構(gòu)比一般的學(xué)生管理系統(tǒng)多一張車次表而且這張表是整個項目的核心。因為訂票動作的本質(zhì)是“檢查余票、生成訂單、扣減余票”車次表就是那根串起所有業(yè)務(wù)的線。CREATE DATABASE train_ticket DEFAULT CHARACTER SET utf8mb4; USE train_ticket; CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, student_no VARCHAR(20) UNIQUE NOT NULL COMMENT 學(xué)號登錄賬號, password VARCHAR(64) NOT NULL COMMENT 建議 MD5 后存入, real_name VARCHAR(50) NOT NULL COMMENT 乘車人姓名, student_type TINYINT NOT NULL DEFAULT 1 COMMENT 1 本科2 研究生用于票價打折判斷, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE train ( id INT PRIMARY KEY AUTO_INCREMENT, train_no VARCHAR(10) UNIQUE NOT NULL COMMENT 車次編號如 G1024, departure VARCHAR(50) NOT NULL COMMENT 出發(fā)地, arrival VARCHAR(50) NOT NULL COMMENT 到達地, depart_date DATE NOT NULL COMMENT 發(fā)車日期, depart_time TIME NOT NULL, arrive_time TIME NOT NULL, hard_seat INT NOT NULL DEFAULT 0 COMMENT 硬座余票, soft_seat INT NOT NULL DEFAULT 0 COMMENT 軟座余票, price DECIMAL(10,2) NOT NULL COMMENT 硬座票價 ); CREATE TABLE ticket_order ( id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(32) UNIQUE NOT NULL COMMENT 訂單號可用時間戳隨機數(shù)生成, student_id INT NOT NULL, train_id INT NOT NULL, seat_type TINYINT NOT NULL COMMENT 1 硬座2 軟座, seat_count INT NOT NULL DEFAULT 1 COMMENT 購票張數(shù), total_price DECIMAL(10,2) NOT NULL, status TINYINT NOT NULL DEFAULT 0 COMMENT 0 已出票1 已退票2 已過期, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_order_student FOREIGN KEY (student_id) REFERENCES student(id), CONSTRAINT fk_order_train FOREIGN KEY (train_id) REFERENCES train(id) ) COMMENT 訂單表退貨即改 status;建表時有三個點值得注意。第一訂單表里不冗余存車次號而是用 train_id 外鍵關(guān)聯(lián)這樣改車次信息不會影響歷史訂單。第二硬座和軟座余票分兩列存是為了在訂票時對不同的席別執(zhí)行對應(yīng)的更新語句。第三student_type 這個字段很多同學(xué)會忽略但學(xué)生票是打折票評論票價時它會派上用場。3.2 用 Maven 起一個 war 工程pom.xml 的關(guān)鍵依賴很多課程設(shè)計項目不用 Maven直接手動導(dǎo)入 jar 包也能跑。但我還是建議用 Maven好處是依賴傳遞不用自己管打包成 war 丟給 Tomcat 就能部署。新建一個名為 train-ticket 的 Maven 工程packaging 設(shè)為 war。project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.course/groupId artifactIdtrain-ticket/artifactId version1.0.0/version packagingwar/packaging dependencies dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version4.0.1/version scopeprovided/scope /dependency dependency groupIdjavax.servlet.jsp/groupId artifactIdjavax.servlet.jsp-api/artifactId version2.3.3/version scopeprovided/scope /dependency dependency groupIdjavax.servlet/groupId artifactIdjstl/artifactId version1.2/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.29/version /dependency /dependencies build finalNametrain-ticket/finalName plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.8.1/version configuration source1.8/source target1.8/target /configuration /plugin /plugins /build /project這里注意兩個關(guān)鍵字。scope 為 provided 的 servlet-api 和 jsp-api 在編譯時需要但 Tomcat 里已經(jīng)有這兩套類庫打包進 war 反而容易引發(fā)類沖突。mysql-connector-java 的版本要跟你本地的 MySQL 對應(yīng)——MySQL 8.x 就用 8.0.x 的驅(qū)動MySQL 5.7 則建議用 5.1.49混用會出現(xiàn)連接失敗。3.3 連接數(shù)據(jù)庫JDBC 工具類與連接參數(shù)工程建好后第一步先做數(shù)據(jù)庫連接。我習慣把連接參數(shù)放在 db.properties 文件里方便不同機器上改配置而不是硬編碼在 Java 類中。這是 java 開發(fā) api 接口與部署時最常見的規(guī)范化習慣。jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/train_ticket?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai jdbc.usernameroot jdbc.password123456然后寫一個 DBUtil 類用靜態(tài)代碼塊加載驅(qū)動對外提供獲取連接和關(guān)閉資源的靜態(tài)方法。package com.course.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.io.InputStream; import java.util.Properties; public class DBUtil { private static String url; private static String username; private static String password; private static String driver; static { try (InputStream in DBUtil.class.getClassLoader() .getResourceAsStream(db.properties)) { Properties props new Properties(); props.load(in); driver props.getProperty(jdbc.driver); url props.getProperty(jdbc.url); username props.getProperty(jdbc.username); password props.getProperty(jdbc.password); Class.forName(driver); } catch (Exception e) { throw new ExceptionInInitializerError(數(shù)據(jù)庫配置加載失敗: e.getMessage()); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, username, password); } public static void close(ResultSet rs, Statement stmt, Connection conn) { try { if (rs ! null) rs.close(); } catch (SQLException e) { } try { if (stmt ! null) stmt.close(); } catch (SQLException e) { } try { if (conn ! null) conn.close(); } catch (SQLException e) { } } }關(guān)于這段工具類有三個參數(shù)值得細說。getResourceAsStream 里寫的是“db.properties”這意味著文件必須放在 src/main/resources 目錄下否則運行時會報空指針。Class.forName(driver) 在 MySQL 8.x 驅(qū)動中可以省略因為 SPI 機制會自動注冊但保留它對理解 java 反射機制有好處。close 資源的順序必須從里到外——先 ResultSet再 Statement最后 Connection順序反了連接可能不會被正常釋放。4. 訂票與退票的核心動作事務(wù)邊界、條件更新與余票鎖定查個車次、看個余票這些頁面寫起來不難真正讓這個項目有技術(shù)含量的是訂票那一步。這也是面試官最愛問、答辯時老師最愛追問的地方兩個學(xué)生同時買同一趟車次最后一張票你的余票數(shù)會不會變成負數(shù)4.1 查余票到扣余票的事務(wù)邊界不能拆開訂票動作從用戶點下“購買”按鈕開始到訂單落庫結(jié)束中間包含三步查詢車次余票是否充足、往訂單表插入記錄、扣減車次余票。這三步必須在一個事務(wù)里完成任何一個失敗都要回滾。如果你把查余票放在一個 Servlet 里扣余票再放到另一個方法里中間隔了一次網(wǎng)絡(luò)往返那么在高并發(fā)下就會有問題——第一次查詢看到余票 1 張另一個請求搶先扣掉了你后面的扣減就變成負數(shù)。這里的關(guān)鍵是把三步操作放進同一個數(shù)據(jù)庫事務(wù)里。用原生的 JDBC 寫法核心就是把 setAutoCommit(false)、commit、rollback 放在正確的位置。package com.course.service; import com.course.util.DBUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class TicketService { /** * 訂票查詢余票 - 插入訂單 - 扣減余票三步作為一個事務(wù) */ public boolean bookTicket(int studentId, int trainId, int seatType, int count) { Connection conn null; PreparedStatement queryTrain null; PreparedStatement insertOrder null; PreparedStatement updateSeat null; ResultSet rs null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); // 關(guān)閉自動提交手動控制事務(wù) long price 0; int leftSeat 0; queryTrain conn.prepareStatement( SELECT hard_seat, soft_seat, price FROM train WHERE id ? FOR UPDATE); queryTrain.setInt(1, trainId); rs queryTrain.executeQuery(); if (rs.next()) { leftSeat (seatType 1) ? rs.getInt(hard_seat) : rs.getInt(soft_seat); price rs.getLong(price); } else { conn.rollback(); return false; } if (leftSeat count) { conn.rollback(); // 余票不足回滾直接返回 return false; } String orderNo System.currentTimeMillis() (int)(Math.random() * 1000); insertOrder conn.prepareStatement( INSERT INTO ticket_order(order_no, student_id, train_id, seat_type, seat_count, total_price, status) VALUES(?,?,?,?,?,?,0)); insertOrder.setString(1, orderNo); insertOrder.setInt(2, studentId); insertOrder.setInt(3, trainId); insertOrder.setInt(4, seatType); insertOrder.setInt(5, count); insertOrder.setLong(6, price * count); insertOrder.executeUpdate(); String seatCol (seatType 1) ? hard_seat : soft_seat; updateSeat conn.prepareStatement( UPDATE train SET seatCol seatCol - ? WHERE id ? AND seatCol ?); updateSeat.setInt(1, count); updateSeat.setInt(2, trainId); updateSeat.setInt(3, count); int rows updateSeat.executeUpdate(); if (rows 0) { conn.rollback(); // 扣減失敗說明余票又被別人搶了回滾 return false; } conn.commit(); return true; } catch (SQLException e) { try { conn.rollback(); } catch (SQLException ex) { } e.printStackTrace(); return false; } finally { DBUtil.close(rs, queryTrain, null); DBUtil.close(null, insertOrder, null); DBUtil.close(null, updateSeat, conn); } } }這段代碼里有兩個容易被忽視的細節(jié)。查詢語句加了FOR UPDATE意味著查到的車次行會被鎖定直到事務(wù)提交或回滾其他事務(wù)修改這一行的操作會被阻塞。這是用 MySQL 實現(xiàn)行鎖最簡單的方式。另一個細節(jié)是 UPDATE 語句在 SET 后面把 X X - ? 和條件X ?寫在了一起這不僅是業(yè)務(wù)判斷也是一個防負數(shù)的“保險栓”——如果余票已經(jīng)不夠UPDATE 影響行數(shù)是 0程序就知道要回滾了。4.2 簡單的 UPDATE 條件更新就能控制并發(fā)有的同學(xué)會問我能在 UPDATE 之前先 SELECT 一次判斷余票嗎能但會有競態(tài)條件。SELECT 和 UPDATE 中間的那幾十毫秒里另一個事務(wù)可能已經(jīng)扣掉了余票。正確做法是把判斷放進 UPDATE 的條件里用受影響行數(shù)來判定。上面的代碼把WHERE id ? AND hard_seat ?作為條件數(shù)據(jù)庫在更新時會自動加鎖同一時刻只有一個事務(wù)能修改這一行后面的事務(wù)要么等前面的提交后重新判斷余票要么看到影響行數(shù)為 0 直接失敗。這種做法適合課程設(shè)計里的絕大多數(shù)場景。Redis 分布式鎖、ZooKeeper 分布式鎖在這些業(yè)務(wù)量面前屬于過度設(shè)計——你寫出來了答辯老師反而會問“你為什么要用分布式鎖”你解釋不清楚那就是給自己挖坑。4.3 學(xué)生票的身份校驗與退票的狀態(tài)流轉(zhuǎn)學(xué)生票和普通票的核心差異在身份校驗。訂票時要驗證登錄用戶是學(xué)生身份也就是 student 表里必須有對應(yīng)記錄并且 student_type 是有效值。同時一張學(xué)生票通常有乘車次數(shù)或折扣限制簡單的做法是在下單前查一次該學(xué)生本月的有效訂單數(shù)。退票邏輯恰好是訂票的逆向操作先把訂單狀態(tài)從 0 改為 1再把對應(yīng)車次的余票加回來。這里也要注意事務(wù)一致性——如果出現(xiàn)狀態(tài)改為已退票、余票卻沒加回去那這個 bug 線上能查瘋。public boolean refundTicket(int orderId, int studentId) { Connection conn null; PreparedStatement queryOrder null; PreparedStatement updateOrder null; PreparedStatement updateSeat null; ResultSet rs null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); // 1. 查詢訂單校驗歸屬和狀態(tài) queryOrder conn.prepareStatement( SELECT * FROM ticket_order WHERE id ? AND student_id ? FOR UPDATE); queryOrder.setInt(1, orderId); queryOrder.setInt(2, studentId); rs queryOrder.executeQuery(); if (!rs.next()) { conn.rollback(); return false; } if (rs.getInt(status) ! 0) { conn.rollback(); return false; } int trainId rs.getInt(train_id); int seatType rs.getInt(seat_type); int seatCount rs.getInt(seat_count); // 2. 改訂單狀態(tài) updateOrder conn.prepareStatement( UPDATE ticket_order SET status 1 WHERE id ?); updateOrder.setInt(1, orderId); updateOrder.executeUpdate(); // 3. 回補余票 String seatCol (seatType 1) ? hard_seat : soft_seat; updateSeat conn.prepareStatement( UPDATE train SET seatCol seatCol ? WHERE id ?); updateSeat.setInt(1, seatCount); updateSeat.setInt(2, trainId); updateSeat.executeUpdate(); conn.commit(); return true; } catch (SQLException e) { try { conn.rollback(); } catch (SQLException ex) { } e.printStackTrace(); return false; } finally { DBUtil.close(rs, queryOrder, null); DBUtil.close(null, updateOrder, null); DBUtil.close(null, updateSeat, conn); } }退票的查詢也加了 FOR UPDATE因為要先鎖定訂單行再判斷狀態(tài)否則可能出現(xiàn)一個訂單被同時退兩次的情況——兩個請求都讀到 status0然后都執(zhí)行退票。加了行鎖后第二個請求會等待第一個請求提交再讀到的狀態(tài)就是 1 了。5. Java 課程設(shè)計的避坑清單環(huán)境變量、JDBC連接、重復(fù)下單寫項目的過程往往不是被業(yè)務(wù)邏輯難倒而是被環(huán)境、部署和細節(jié)問題磨得不耐煩。這一章集中整理我在類似系統(tǒng)里踩過的坑按“現(xiàn)象 → 原因 → 解決”來寫遇到同樣問題時可以直接對照排錯。5.1 javac 不是內(nèi)部或外部命令現(xiàn)象在 cmd 窗口運行javac -version報錯但 java -version 有輸出。原因這是最典型的 java 環(huán)境變量配置不全問題。java 命令能運行是因為系統(tǒng)找到了 JDK 里的 java.exe但 javac 需要 JAVA_HOME 和 PATH 同時配置。解決新建系統(tǒng)變量 JAVA_HOME值指向 JDK 安裝根目錄例如 C:\Program Files\Java\jdk-8u202Path 變量里新增%JAVA_HOME%\binCLASSPATH 可以配為.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。配置完成后重開一個 cmd 窗口再驗證。注意 Path 里不要忘記最前面的點號它表示當前目錄否則類文件在默認包下可能加載不到。5.2 啟動 Tomcat 但瀏覽器訪問 8080 無響應(yīng)現(xiàn)象Tomcat 啟動日志顯示 Server startup但瀏覽器能打開 localhost:8080 卻打不開你的項目頁面或者端口已被占用。原因端口沖突是最常見的。另一個 Java 進程或別的服務(wù)占用了 8080。解決在 Tomcat 的 conf/server.xml 里把 Connector 的 port 屬性改成 8081 或 9090改后重啟。如果不知道誰占用了端口Windows 下運行netstat -ano | findstr 8080把最后一位 PID 在任務(wù)管理器里結(jié)束掉。另外war 包沒成功部署也會出現(xiàn)這個現(xiàn)象去 Tomcat 的 webapps 目錄看一眼你的 war 包是否還在、是否多解壓出一個同名文件夾。5.3 JDBC 連接報 ClassNotFoundException現(xiàn)象控制臺輸出java.lang.ClassNotFoundException: com.mysql.jdbc.Driver或者com.mysql.cj.jdbc.Driver找不到。原因MySQL 驅(qū)動 jar 沒有包含在 WEB-INF/lib 下。非 Maven 工程常見手動復(fù)制 jar 時放錯了位置。解決Maven 工程就先mvn clean install重新打包然后看 war 包里是否包含 mysql-connector 的 jar手動工程就確認 jar 文件在WEB-INF/lib/目錄下不是放在src目錄就了事。順便檢查一下驅(qū)動類名——MySQL 8.0 連接時用的是com.mysql.cj.jdbc.Driver老驅(qū)動com.mysql.jdbc.Driver在 8.x 版本已被標記廢棄會出現(xiàn)警告但不影響運行。5.4 查詢出的中文數(shù)據(jù)在頁面上變成問號現(xiàn)象頁面顯示“???”但數(shù)據(jù)庫里存的漢字正常。原因字符集沒有統(tǒng)一。數(shù)據(jù)庫創(chuàng)建時用了 utf8mb4但 JDBC 連接串里沒有指定 characterEncoding或者 JSP 頁面沒有聲明 pageEncoding。解決把 db.properties 連接串改為jdbc:mysql://localhost:3306/train_ticket?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai。JSP 文件頭部加% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8%。另外Tomcat 8 以后默認 URI 編碼是 UTF-8如果項目部署在老版本 Tomcat還需要在 server.xml 的 Connector 上補一句URIEncodingUTF-8。5.5 瀏覽器刷新導(dǎo)致訂單重復(fù)提交現(xiàn)象用戶點一次“訂票”按鈕跳轉(zhuǎn)到訂單頁按 F5 刷新之后數(shù)據(jù)庫里出現(xiàn)兩條一模一樣的訂單。原因刷新動作重新發(fā)送了上一次的 POST 請求。這是 Servlet 開發(fā)里最經(jīng)典的重復(fù)提交問題屬于“基本功但一不留神就翻車”的典型。解決第一種方式是訂票成功后立刻重定向也就是用resp.sendRedirect(/train-ticket/orderList)而不是request.getRequestDispatcher(...).forward(...)刷新只刷新訂單列表頁不會重發(fā) POST。第二種方式是在表單里埋一個一次性 token提交前從 session 取出來比對用完立刻刪除。第二種更嚴密但第一種足夠應(yīng)付課程設(shè)計而且代碼簡單得多。提示這段避坑清單幾乎可以原樣復(fù)用在任何 JSP Servlet 的課程設(shè)計項目上不只是火車票訂票系統(tǒng)。遇到問題先確認是環(huán)境層、連接層還是業(yè)務(wù)層——按照這個順序排查一般不會卡死。6. 演示與答辯用一個可講的技術(shù)點讓“老項目”看起來專業(yè)系統(tǒng)能跑通只是第一步“能講清楚”才是課程設(shè)計的得分關(guān)鍵。你不需要在答辯時背完整個項目的每一行代碼但必須能針對幾個核心點展開讓對方看出你真的動手寫了而不是從哪份 java 課程設(shè)計源碼里原封不動抄來的。6.1 給訂票操作加一條“可觀察”的審計日志很多同學(xué)的項目做完了連一條日志都沒有。答辯時老師問“你這個系統(tǒng)怎么定位問題”答不上來。我建議在訂票和退票的關(guān)鍵節(jié)點輸出日志字體上用 System.out.println 或 java.util.logging 都行關(guān)鍵是要有。// 在 TicketService.bookTicket 方法的 commit 之前 System.out.println([訂票成功] orderNo orderNo , studentId studentId , trainId trainId , seatType seatType , count count , time new java.util.Date());這段日志不是給自己看的是給答辯老師演示用的。當你在現(xiàn)場買一張票控制臺窗口里滾出一條清晰的“訂票成功”記錄這一下就把你的系統(tǒng)從“死代碼”變成了“活系統(tǒng)”。6.2 寫一個本地冒煙腳本證明業(yè)務(wù)鏈路是通的比日志更進一步的做法是寫一個簡單的測試類不依賴瀏覽器直接調(diào)用 TicketService 驗證訂票和退票的邏輯。這樣你可以在答辯前確認代碼沒被改壞也可以在講并發(fā)控制的時候現(xiàn)場跑給老師看。package com.course.test; import com.course.service.TicketService; public class SmokeTest { public static void main(String[] args) { TicketService service new TicketService(); // 參數(shù)依次是 studentId, trainId, seatType(1硬座 2軟座), 購買數(shù)量 boolean success service.bookTicket(1, 1, 1, 1); System.out.println(訂票結(jié)果: (success ? 成功 : 失敗)); // 注意訂單ID需要根據(jù)實際插入結(jié)果修改 boolean refund service.refundTicket(1, 1); System.out.println(退票結(jié)果: (refund ? 成功 : 失敗)); } }冒煙腳本不需要做成單元測試那么正規(guī)它的作用是驗證三個關(guān)鍵點tomcat 里的類路徑?jīng)]問題、數(shù)據(jù)庫連接串沒寫錯、訂票和退票的鏈路是通的。你在答辯前跑一遍如果某一步失敗那就是環(huán)境有問題而不是到現(xiàn)場才發(fā)現(xiàn)頁面打不開。6.3 應(yīng)對“你這個項目有什么亮點”的標準答案答辯時最怕被問“和別人的課程設(shè)計有什么不同”。不要回答“我用了 Maven”或者“我的界面比較好看”這些都不構(gòu)成技術(shù)亮點。你可以從下面三個方向里選一個講事務(wù)與并發(fā)控制講清訂票時 FOR UPDATE 和條件更新為什么能防超賣 技術(shù)含量高幾句話就能讓聽懂的人知道你認真做過訂單狀態(tài)流轉(zhuǎn)講清訂票、退票、過期三種狀態(tài)的邊界條件和切換邏輯 體現(xiàn)你對業(yè)務(wù)的理解而不是只會在 Servlet 里增刪改查數(shù)據(jù)表設(shè)計合理性講清為什么車次表要分開存硬座余量和軟座余量、為什么不直接冗余車次名到訂單表 體現(xiàn)你有建模意識這是許多初級開發(fā)都不具備的這三個點正好對應(yīng)了這篇項目的三個核心模塊。把它們講透勝過大而全地復(fù)述一遍項目是干什么的。我自己的習慣是堅持項目里的每一行關(guān)鍵 SQL 都能手寫出來。因為面試官和老師都清楚課程設(shè)計要求不高項目用得再花哨也不如你自己能解釋得清楚來得實在。把這個學(xué)生火車票訂票系統(tǒng)做成一個能跑、能講、能回答追問的完整閉環(huán)其實就是一次很好的基礎(chǔ)功訓(xùn)練。希望這個方向能幫到你少走一點我在課程設(shè)計時期走過的彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品区国产区一区二区三区| 亚洲 另类 丝袜 自拍 动漫| www成人啪啪18秘 免费| 91天美| 国产高清不卡视频| 欧美在线视频99| 牛牛操视频逼| 97精品| 大香蕉在线SuP| 最新中文字幕在线亚洲| 久操网线| 狠狠色伊人亚洲综合网站色| 热热色中文无码| 久久精品国产久精国产| 亚洲熟女一区| 口爆综合网| 国产 日韩 欧美高清| 久久男人的天堂| 色网1| 久久香蕉超碰97国产精品| 激情久久久| 襙一襙| 97色涩| 青青草视频这里只有精品| 久久精品中文字幕无码l| 人人妻人人玩人人澡人人爽| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 97免费视频在线| 99re6国产精品99re在线| 日本一级二级三级网站| 人人艹亚洲| 狠狠爱大香蕉| 色香AV| 综合性视频99| 好一吊区二区| 麻豆福利视频导航| 久久天天艹| 精品国产91久久久久久一区黄无| www.人人cao| 欧美在线永久天堂| 狠狠中文字幕| 黑人精品XXX一区一二区| 狠狠躁日日躁夜夜躁A| 99re只有精品| 不卡码视频| 人妻久久久久久| 欧美日韩操逼嗦吊| 天天综合色| 久/久精品99看9| 国产色精品午夜大片| 国产成人精品无码久久| 日韩亚洲中文有码视频| 久久国内| 91美女中出| 91精品丝袜在线观看| 欧美性爱日韩性爱| 搡老女人老妇女AAA一VU麻豆| 十八禁av无码免费网站APP| 九色精品视频导航1| 欧美福利视频啊啊啊啊 | 老子午夜伦不卡影院| 综合另类| 精品高清一区二区三区三州| 免费伦费视频在线观看| 国产精品色色| 欧美 青青草| 330Dv国产女人终合视频极品人与兽| 精品91摸| 中文字幕免费看| 操熟女91| 成人一二| 国产精品久久久久久片| 亚洲色啪| 激情综合亚洲| 人妻密肉在线观看| 欧美中字不卡| 熟妇的味道HD中文字幕| 国产又大又硬又长又粗| 九九九九九九九精品视频| 色五月婷婷麻豆在| 国产美女91| 亚洲国产综合图区中文字幕 | A V视频日本| 欧美激情中文字幕另类小说| 91久久国产综合久久| 亚洲一区二区 麻豆传媒| 狠狠操狠狠燥| 午夜操一操| 特级特黄一级毛片免费| 婷婷综合激情| 97操在线| 伊人网青青| 玖玖玖玖精品国产剧情| 欧美伦乱爱| 91欧美少妇| a片自拍直播视频| av绯色| 尹人免费观看视频在线| 强奸乱伦αv片| 日韩av影片在线观看| 91美女在线精品视频| 熟女精品一区二区在线观看| 插入逼91| 国产乱码久久| 精品美女少妇一区二区| 一级黄色视频网| 精品少妇人妻av久久免费| 激情五月天婷婷| 国产后入内射| 日韩精品一区二区日韩| 91久久久久久久久久久| 久久大香蕉97| 精品v日韩欧美国产| 蜜桃不卡一区二区| 超碰97护士| 天天干人妇| 亚洲视频,小说| J?P?NESEHD熟女熟妇伦| 水野优香在线观看| 夜夜嗨一区二区三区直播内容| 岛国在线国产| 色 婷97| 大香久久| www.色99| 午夜传煤十二区精品| 免费超碰97在线观看| 日本不卡卡一区| 蜜臀久久久99久久久久 | 麻豆视频国产一区二区| 色久综合| 天天噜| 日本三级大片| 校园春色欧美| 欧美性爱18观看| 欧美日韩夜夜| 九九综合九九综合| 伊人97色天使| 亚洲精品九九九| 蜜臀av一区二区三区免费观看| 少妇熟女视频一区二区三区 | 91九九九小逼| 九九精品无码专区免费| 精品176精品2| 日韩成人精品视频自拍| 91精品老女人| 9999伦理视频| 国产一区二区av综合| 久久视频少妇美女| 国内毛片无遮挡国产| 欧美色图偷拍另类| 久草网站免费在线观看| 少妇高潮九九九九九九九| 婷婷五月天激情网| 欧美九九九| 五月丁香| 日韩av电影成人在线| 97玖玖超碰| 欧美性爱免费短视频| 一牛一区二区三区久久| 99热思思| 69少妇一区二区| 超碰97欧美日韩| 亚洲欧美中文日韩视频中国语| 亚洲第二页| 丁香五月影院| 国产v片在线免费观看| 日韩国产十八禁| av无码av无码专区| 久久老女人| 97日视频| 操91| 无码免费在线观看黄色片| 白丝在线一区| 2010男人的天堂| 欧美不卡在线一区二区| 熟女熟妇一区二区三四区| www久久99| 91天天综合日韩欧美| 久久久久久91香蕉国产| 日本高清一区二区在线| 国产精品另类| 97视频620| 国产18精品亚洲精品| 97在线视频观看| 欧美美女后入| 色噜噜人妻丝袜AV资源| 日本不卡三级网在线播放| 欧美性生活免费网| 色吧 综合| 中文字幕乱偷人妻久久艾草网| 黑人操一区二区| 大香蕉78| 啊啊啊免费| 日韩一级二级三级免费看完整版国语版 | 97色碰| 亚洲文学偷乱拍啪啪啪啪| 啪啪综合网| 一本色道久久天天射天天干| 国产60页| 五十路一区无码| 色香综合天天影视综合 | 国产精品自产拍在线观看社区| 2017天天拍大香蕉| 精品福利| 9Ⅰ超碰| 国产蜜臀在线| 欧洲大香蕉| 天天天天天天天天综合| 综合亚洲情色| 青青草十区九区爱夜| 色综合天天| 抽插无码高清一区| Blackedraw视频一区二区| 香伊人在线| 亚洲图片第一页| 欧美亚洲中文字幕| 青青色在线观看| 日韩欧美传媒一区国产| 大色综合| 日本爽爽爽爽爽爽免费视频| 色操逼网| 久久精品中文字幕无码l| ji熟女.com| 国产强奸乱伦无码视频| 9久在线视频只有精品| 久久超碰网| 国产精品乱码久久久、久久| 色大师网站www永久网站视频| 伊人激情| av天堂影视中文在字幕在线中文| 熟女人妻av在线资源,黄色的资源| 成年人性爱日韩| 欧美三级中文字幕hd| 操逼国产免费| 黄aaaaaaaaaaaaaaaaaa色网站 | 久草精品国产蜜臀| 男人成人黄色视频在线观看免费下载| 欧美第五页| 亚洲色性| 日韩激情毛片一级久久久| 麻豆国产97在线| 欧美日韩中文字幕不卡| 欧美成人免费在线观看| 牛牛操视频逼| 国产福利av精彩对白| 97人人超| 91女神在线视频| 97免费视频网| 美女十八禁| 国产高清自拍视频| 欧美亚洲日本视频久久久| 操逼逼无码| 97婷婷色| 午夜后入| 加勒比aⅴ| 在线毛片片免费观看| 92性色国产午夜福利在线661| 国产日韩无码一区二区三区久久区| 秋霞网—男女啪啪亚洲免费体验区| 欧美亚洲第一页| 激情综合网五月婷婷| 91蜜臀熟女| 亚洲性图91| 丝袜美腿操av| 国产亚洲精品精AV.| 婷婷AV一区二区三区| 性爱乱伦网址| 欧美在线色图| 78操B| 91P0RNY大屁股人妻| 人人操人人搞人人草| 超碰成人免费| 亚洲熟女乱综合一区二区三区| 欧美亚洲特P| 噜噜噜在线视频| 99色在线视频| 欧美在线色| 熟妇色99| 99精品无码| 久久女同性恋一二区| 色色九区| 欧美日韩香蕉| 青青草吊丝| 国产后入清纯| 免费αⅴ在线观看| 二对二中文字幕。| 少妇久久| 蜜臀久久99精品久久综合| 国桃视频产巨乳精品一区二区在线| 97爱啪| 亚洲无码国产探花在线观看| 色九九综合| 中国黄色特级精品一区二区三区片| 久热最新在线杭州| 91在线欧色| 国产又粗又长又大的视频| 美女写真| 97AV在线免费观看| 日韩强奸av| 超91综合网| 国产精品白丝www| 亚洲国产无码精品首页久久久| 精品一区二区麻豆| 欧美日韩另类在线播放| 亚洲综合888| 999综合网| 综合色图,成人综合网| 超碰 欧美| 爱媛媛久久国产福利| 97久久国产亚洲精品超碰热| 亚洲女毛多水多21P| 亚洲男人天堂视频| 久久五月天婷婷| 婷婷丁香人妻| 综合激情婷婷| 91美女片在线| 97 亚洲 日韩 欧美 在线| 国产99999| 久久久精品国产亚洲伊人| 天啪| 少妇六月天| 亚洲av国产av综合av卡| 欧美亚州综合图片| 欧洲色| 天堂综合网| 成人夜夜爽| 91精品91久久久久77777俄罗斯老妇姓x| 婷婷综合五月| 久久久国产av美女私房| 国产久久日韩网站导航| 精品成人亚洲午夜电影| 亚洲 欧美 日本 国内 首页| 五月丁香| 色翁荡息又大又硬又粗又爽| 亚洲一区中文字幕| 麻豆区99999| 精品久久久高清无码| 激情四射五月天| 97久久久| 国模无码人体一区二区三| 91超碰碰在线| 亚洲s在线观看| 亚洲色图图片| 97干综合网| 婷婷中文字幕| 思思热久久成人| 欧美色干| 香蕉免费一区二区三区不读| 国产日韩欧美三级片| 亚洲在线欧美| 日本精品一区二区三| 久久免费老司机精品| 亚洲精品三区在线观看| 日韩熟女精一区二区三区不卡| 综合色色网| 国产无码精品无码| 亚洲久久天堂| av麻豆啪啪| 五月婷婷五月天| 熟女这里只有精品6| 一区二区三区色综合| 亚洲欧美精品91| 色色毛片| 99re视频在线播放青草| 天天综合欧美综合| 啊啊啊啊嗯嗯嗯用力好爽| 天天视频网站黄| 欧美色图亚洲色| 国产精品天干天干综合网麻豆| 久热99| 91精品人| 亚洲另类春色| 狠狠色五月亚洲91| 91国产伊人大香蕉| 日本精品九九九| 日本三级韩国三级99| 国产h片在线观看视频| 国产成年女黄特黄| 欧美综合另类| 人妻久久一区二区三区 | av 模特一区了| 丰满人妻一区二区三区免费,| 美國A片| 亚洲国产ⅴ高清在线观看| 91丨人妻丨国产丨丝袜| 日韩三级伊人| 久热一区二区| 中文字幕av亚洲精品| 好爽视频在线观看视频| 久久九九97| 久操免费电影| 中国91AV| 4虎在线观看| 天天综合网~91| 超碰在线97国产| 大鸡巴久久久| 亚洲熟妇图片| 久草资源在线视频官方总站日韩丝袜美腿| 熟女被操视频网址| 色色五月天婷婷| 日韩中文字幕二区| 婷婷久久综合| 亚洲综合色男人网| 日日橹狠狠爱欧美超碰| 欧美韩国你懂得在线| 亚洲欧美中日韩| 天天干天天日天天射黄色大片| 99re9在线| 日本色色网| 东京成人一区| 天堂在线一区二区| 鸥美极品| 中文字幕人妻丝袜乱一区三区| 中文字幕欧美日本乱码一线二线 | 青青伊人这里只有精品| 九九探花视频在线观看| 女人综合网| 97天天日| 影音先锋每日最新资源在线观看 | 亚洲国产精品99久久久| 久久精品日韩| 999国产精品999| 久久人妻视频网| 偷拍 亚洲| 久久大线蕉一区| 亚洲熟女乱色一区二区三区久久久| 亚洲国产青青| 亚洲在线欧美| 国产黄色视频久久| 亚洲天堂7777| 欧美精品成人亚洲| 久草在| 亚洲欧美综合网站| 日韩成年人性爱视频| 岛国毛片在线观看免费| 啊v视频在线观看| 99久久com免费视频′| 四虎884a| 亚洲色棕合| 亚洲精品熟妇1区2区3区。| 久久久久少妇| 强免费黄色网址| 旡码电影特区| 国产少妇内射| 操操逼视频| 在线日韩视频| 黑人精品久久97| 日韩无码一区二区三区| 最新中文字幕在线亚洲| 97二区四区| 免费成人在线熟妇网| 久久久亚洲精品中文字幕人妻| 午夜毛片亚洲精品片国产久久久| av在线免费一区二区| 色av中文字| 夜夜狠狠躁日日躁色视频| 久久久555| 十八岁啪啪视频免费看| 一区=区三区视频| 久久久久深夜无码| 久久国产在线一区二区| 久久欧美按摩999| 色偷偷超碰亚洲| 香蕉国产精品麻豆亚洲欧美日韩| 99热66| 国产自啪精品视频网站黑丝| 老熟妇一区二区三区啪啪| 久久久偷拍| 久久精品国产亚洲AV片多多| 久久久久一本一区二区青青蜜月| 青青草福利视频| av资源在线观看少妇| 禁止观看美女黄| 色欲久久99国产精品久久久久久| 中国探花熟女| 男人天堂导航| 人人插人人搞人人操| 中文一区在线日| ,成人免费啪啪视频| 九九九九九九亚洲| 亚洲 欧美 日韩 国产一区二区 | 成人无码欧美一级A片狼牙直播| 国产精品一二三在线看| 亚洲日韩东京热一区| 超碰无码加勒比| 亚洲素人网| 日本欧美一区二区三区免费| 青青草成人视频在线观看二区| 亚洲伊人久久综合97| 综合国产97| WWW啪啪的com| 色老牛| 懂色av色欲av蜜臀av| 日日A∨| 亚洲va有码在线天堂| 97国产精品久久久久 | 刺激性视频黄页| 四虎国产精品永久在线囯在线 | 日本精品五区| 岛国AV一区二区电影| 人人看人人插| 天天干1区2区在线| 色婷婷电影| 思思热在线视频免费| 亚洲 另类 丝袜 自拍 动漫| 伊人影院综合是一个与深夜成人在线| 国产蜜臀在线| 一区二区偷拍拍视频| 美国黄片aaa| 人妻黑丝袜电影| 日韩av一级黄片| 91久久久久| 啊啊啊不要好疼视频| 91美女网站| 97 国产一区| 亚洲欧美自拍偷拍| www国产精品| 中文字幕日韩精品一区二区三区| 91人妻Pr| 一个色导综合| 麻豆天美在线| 91撸色网 玖玖网 欧美| 国产高清成人mv在线观看| 亚洲视频精选| 乱子伦一区二区三区国产精品| 国产在线精品偷| 欧美亚洲| 国产精品69久久久久孕妇欧美| 丰满人妻一区二区三区在线| 99久久久久久久久| 欧美福利视频啊啊啊啊| 伊人欧美大香蕉视频| 激情综合五月天| 强奸乱伦中文字幕AV| 天天拍夜夜| 久久精品电影| 久久久久9999妇女| 超碰91在线| 亚洲阿v天堂无码z2018| 欧美精品三级黄片| 国内精品久9| 日韩少妇无吗| 国产人妻一区二区三区欧美毛片| 亚洲老熟妇xxx| 天堂无码精品国产久| 天天伊人| 久久亚洲一区女同性恋中文字幕| 色综合久久夜色精品国产天堂| 区日韩亚洲乱码av电影| 丁香九月激情| 最新中文字幕在线亚洲| 亚洲精品毛片在线观看| 91人精品妻入口| 97爱综合| 精品人妻av区天天看片| 久草精品在线| 一本色道人妻久久| 国产视频97| 日本加勒比无码专区一二三| 啊啊啊啊啊啊啊啊啊啊在线观看| 91nbbbbbb| 欧美内射少妇| 97超碰天天| 国产欧美一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 女优大全 - 91n| 色综合 加勒比| 亚洲资源网| 亚洲熟妇综合久久久久久| 99色日| 中文字幕人妻色偷偷久久皮| 日韩超碰精品综合| 美女的肌被草喷水视频| 欧美72网页| 日韩在线97| 青青欧美在线| 欧美日本久久精品一区| 伊人久久国产免费观看视频| 欧美色图亚州激情| 中日韩久久人妻一区二区| 中文字幕精品久久久久人妻红杏ⅰ| 欧美熟妇操操视频| 亚洲色图 综合| 97jingpin| 友优传媒精品在线一区二区| 欧美日韩1234| 乱伦熟妇一区二区| 搞中出久久| 人人操人人叉人人插人人| www.久久| 99自拍B亚洲 | 无码人妻精品酒店| 精品无码一区二区三区| 精品国产91av一区二区三区| 少妇干B| 干婷婷综合网| 99少妇精品视频| 美女淫穴| 春色综合免费| 干少妇视频| 国产精品爽爽v| 色色色色网站| 91亚洲不卡一区| 操淫穴亚洲五月丁香 | 色综合色综合网| 亚洲精品丝袜| 九99久久| 国产91会所女技师在线观看| 中国乱伦一区二区| www.91色综合| 亚洲素人网| 蜜臀99久久精品久久久久| 色欲三区| 亚洲综合九九| 日本最新免费韩国1区2区视频播放| 国产精品国产| 人人摸.人人色| 欧美很很操视频| 蜜桃视频一区二区三区在线观看| 夜夜爽夜夜摸夜夜操免费视频| 天美精品原创av片国产| www国产天美久久久| 国产后入精品| 热久久无毒不卡| 试看日韩黄片| 91久久久久久久久久久| 视频黄站| 性暴力欧美猛交在线直播| 五月婷久久| 99re在线视频这里只有精品| 无遮挡男女激烈动态图| 欧美激情综合色综合啪啪五月| 热久久国产精品视频大陆精品| 亚洲综合九九| 国产99 中文字幕日韩小视频| 日韩欧亚太美不卡| 深夜视频| 91久热| AV色五月天| 黄片免费视频2019| 91丨国产丨白浆| 亚洲97超碰| 色综合尤物| 熟妇的味道HD中文字幕| 美女露胸露屁股| 一区二区中文| 东京热激情视频一二三区| 亚洲色图 91| 一区二区三区免费岛国片| 久久亚码| 欧美黄色大片在线观看| 九九九久千久久激情蜜桃在线看| 91精品人妻一区二区三区蜜桃| 精品偷拍13p欧美dodk视频| 中文字幕97色| 亚洲黄色视频在线观看视频| 97视频观看| 国产精品乱码久久久久久久久| 亚洲操人| 日韩毛片9| 亚洲天堂99| 蜜区区视频79| 欧美日韩99| 精品一区二区三区蜜桃| 午夜男人一级A片7777| 蜜臀av网址| HEYZO高无码国产精品227| 风骚少妇视频中文字幕| 立川理惠加勒比无码| 欧美精品亚洲精品日韩传电影| 亚洲欧美综合区自拍另类| 久热久| 日韩av在线播放不卡| 狠狠操狠狠燥| 中文字幕一区av| 亚洲色图8| 91oumei| 一级毛片电影免费看| 射欧美综合| 久久久精品网| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 99无码狠狠久久| 久久中文色图| 久操操AV电影| 日韩欧美~中文字| 五月天综合| 狠狠婷婷亚洲中文综合久久| 国产精品情侣啪啪| 亚洲导航深夜福利| 91白虎| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 日韩免费人妻色情网站| 大香蕉乱级| 97国产伦理| 91黑丝露脚| 亚洲成人免费中文字幕| 久久日韩肥臀| 超碰97男人| 亚洲国产高清福利视频| 人人模人人看| 青青草华人在线欧美在线| 97超碰国产精品| 韩国黄片aaaa| 一区AV| 玖色av| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 97在线/亚洲| 久草资源在线视频官方总站日韩丝袜美腿| 亚洲欧洲中文日韩女优乱码| 唯美清纯 妖精视频| 亚洲色性情三级| 九九久久99| 富女玩鸭子一级毛片| 老鸭窝日丰县女人| AV天天综合| 成人性爱全视频观看| 91色人妻| 好爽视频在线观看视频| 久久精品视频一区三区小泽玛利亚| 五月天成人综合| 人看人人摸人人操| 手机午夜电影神马久久| 欧美色97| 加勒比东京热五月天天堂网| 艾草av| 婷婷久久综合| 精品v日韩欧美国产| 亚洲图片色图欧美另类| 国产精品扒开腿做爽爽爽视频| 亚洲色图综合网| 国产视频一区二区三区久久亚洲天堂| 亚洲激情网一二三四区| 另类 日韩 熟女| 亚洲国产精品V?在线播放| 精品97久久| 日本久久久精品电影| 超碰人妻中文在线| 中文字幕精品人妻丝袜| 一起草AV| 乱伦熟女区| 日本成人电影资源网| 翔田千里爆乳巨臀无码| 亚洲国产成人精品999| 97欧美精品| 97亚洲色图| 性感美女91影视| 欧美影音在线| 中出后入| 五月开心久久AV官网| 欧美国产有色电影| 久久久18禁| 日本加靬比网站发布页| 狠狠激情综合狠狠操中文字幕| 黄片无码在线制服| 欧美性巨大╳╳╳╳╳高跟鞋| 免费人成在线观看网站品爱网| 精品中文字幕第一页| 国产精品午夜福利亚洲综合网| 精品午夜福利导航| 成人羞羞视频国产| 99蜜桃臀亚洲成人在线观看| 99啪| 91丨九色丨国产打屁股| 欧美视频在线视频免费va| 大香蕉黄色一级片免费看| 日韩精品 视频一区二区| 浪人综合网| 一区三区啪啪| 日韩无码嘿咻黑热久| 夜夜嗨AV一区天天| 国产视频一区二区三区久久亚洲天堂| 视频二区美腿丝袜制服人妻欧美| renqi久久久久久久久久久久| 女同在线视频一区| 亚洲午夜AV| 天天综合精品| 爽爽淫人网| 午夜天堂精品久久| 人妻五十路在线| 欧美亚洲韩国视频十五区| 成人怡红院| 91被操| 岛国网址国产 | а√天堂资源官网在线资源| 日韩欧洲操屄视频| 久久久久久精品免费看A级| 亚洲AV无线| 97五月天| 欧美A√综合网 | 日日躁夜夜躁狠狠躁超爽| 最新亚洲黄色免费电影| 91精品国产日韩欧美综合| 欧美黄色大香蕉一区二区| 久久久久久久久久久人妻| 亚州综合AⅤ| 91中文字幕在线观看| 成人自拍三级在线观看| 国产热RE99久久6国产精品首| 亚洲精品视频二区| 日韩人妻精品中文字幕| 欧美AB在线| 色婷婷视频| 理论久久婷婷网 8| 福利大香蕉| 日产操逼| 久久九色| 中文一区二区| 视频国产成人精品日本亚洲18| 亚洲第2页| 骚逼一区二区| 久久久久久久九九九九| 国产黄色 A 片免费看| 欧美成人亚洲精品| 亚州熟妇精品| 亚州综合在线| 久久鲁干| 久久AV色| 国产一区二区在线播放量| 婷婷操逼| 成年女人黄网站| 99爱精品| 亚洲高清在线se| 天天操人人操狠狠插| 天美精品av| 青青草五月份天| 国产成人免费观看在线视频| 强上我不卡卡| 一起草视频在线| 六月丁香五月婷婷| 大干人妻| 波多野结衣先锋影音| 99热在线不卡| 香蕉欧美| 欧美一区91大爱| 蜜臀久久久99久久久久 | 欧美一区二区传媒| 波多野结衣之双飞调教在线播放| 日本在线激情一区二区三区 | 亚洲一卡二卡在线免费| 五月婷婷影院| 成人性生活高清视频在线播放| 日亚韩精品视频二区三| 人人爽人人精品乱人伦AV| 免费一级a毛片久久久久久鸭绿欲| 精品人人| 亚洲男人天堂av| 国产精品一区人妻精品阁在线| 久久精品无码熟妇一区二区三区视频导航 | 亚洲制服aⅴ中文字幕| 欧美 亚洲 大香| 2024黄色视频| juliaann精品熟女一区| 超碰精品日韩欧美国产| 中文字幕视频在线观看一区二区| 男人的天堂kva| 久久曰曰| 好涩综合| 久久精品国产免费观看99| 欧美综合色图网| 色综合色综合网| 在线观看午夜婷婷久久久久清性观看| AAAAAAAAA黄片| 亚洲天天影视色综合| 日本成人免费一区二区三区| 久插不卡| 夜夜天天噜狠狠爱2021| 乱理日韩中文| 亚洲美女自拍偷拍视频| 激情婷婷丁香网| 久久久久成人亚洲国产| www男人天堂| 97九色人妻| 97超碰美女| 成人无码专区精品视频| 黄色AAAAA欧美| 夜精品久无码| 操婷婷逼| 男人久久天堂| 亚洲色图 图片| **一级毛片国产| 伊人九九| 密臀视频一区二区三区| 亚洲无码久久久久久久| 精品日日人妻| 亚洲人在线| 九月丁香综合网| 清纯唯美综合亚洲| 一色网男人的天堂| 国产乱伦亚洲色图高清无码| 性交一区二区在线播放| 久久久无码精品人妻二区| 91久久精品蜜臀| 美国黄片aaa| 蜜桃香蕉久草精品在线| 台湾大香蕉99热| 爽 好舒服 无码刺激久久| 韩国三级色呦呦| 4虎在线视频| 精品国产嫩穴视频| 日韩簧片免费看| 婷婷激情五月综合| 快点操死我| 99精品在线| 一类av片在线看| 国产美女自拍视频| 最新9久久久9免费视频| 色噜噜综合在线| 欧洲性爱无码区| 9 1果冻精品视频| 日本99一区二区| 91oumei| 乱伦图一区| 亚洲男人电影天堂| 人妻精品一区二区三区| 久噜噜| 久久久艹艹艹| 久操热| 最新中文字幕精品在线| 9久在线视频只有精品| 亚洲 欧美 日本 国内 首页| 欧美日韩国产电影| 精品人妻夜夜草| 激情五月婷| 影音先锋乱| 97精品熟女少妇一区| www熟女乱伦com| 午夜性生活av免费在线看| 国产超碰97| 操淫穴亚洲五月丁香 | 久久精品国产亚洲粉嫩| 亚洲伊人久久精品影院| 熟女欧美日韩综合婷婷| 成人综合色网| 午夜精品探花| 91黑人无码激情在线| 在线观看免费视频国产| 草草影院最新网址| 国产精品午夜福利亚洲综合网| 色臀AV| 中文字幕AV中出| 日韩欧美~中文字| 国产青视频| 国产一区二区三区不卡手机在线| 91大学精品激情戏| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 久久av网| 91操人| 激情视屏国产乱伦强奸| 草草影院最新网址| www.yeyecao| 无码 黑人一区二区三区| 久久香蕉国产线看观看亚洲女人 | www超碰| 亞洲久久直播| 日韩AV无码中文一区二区| 人妻乱仑一区二区三区| 欧美顶级黄色大片免费| 五月天欧美色图| 6080yy午夜理论三级一区二区三区无码| 国产高清午夜成人在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 丁香九月婷婷| 久久综合18p| 久肏视频字幕| 国产精品国产亚洲区艳妇糸列| 爱媛媛久久国产福利| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 日本一区二区亚洲综合| 操屄不卡视频| 曰本精品久久久| 五月天欧美色图| dy888午夜老子影视达达兔| 国产福利av精彩对白| 大香蕉欧美伊| 欧美亚洲丝袜人妻制服中文99| 精品一级毛片在线观看| 色久综合| 精品无码一区二区人妻久久蜜桃| 欧美性爱第一页久久| 99性爱视频| 美女诱惑在线一区| 五月天婷婷在线看| 伊人天堂在线| 久久久青青草| 99亚洲天堂| 日韩人妻精品| 亚洲欧美自拍偷拍| 九热大香蕉| 伊人国产成人av网站| 天天操天天插| 可乐操亚洲蜜911| 欧亚性爱在线视频| 亚州中文字幕超碰97| 欧美性xxxxx狂欢| 精精夜夜| 亚洲熟女av中文字幕| 丁香五月激情综合| 国产蜜臀在线| 美国一区二区三区视频| 和协影院中文字幕三区| 成人五级久久| 99热在线不卡| 性色av大全| 一区二区三区精品黑丝白丝酒店对鸡 | 亚洲天天在线| av天堂影视中文在字幕在线中文| 丰满欧美放荡少妇在线| www.国产高潮精品| 欧美人妻另类在线| 操婷婷逼| 中日992视频| 人妻 丝袜美腿 中文字幕| 国产免费久久精品99re韩国| 99久久久久久亚洲精品不卡| 青青草伊人久久| 囯戸精品高潮呻吟旡码| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 六月丁香婷| 中文乱码字幕观看| 蜜色网色哟哟| 密臀视频三区免费网站| 欧美九九爱| 天天看精品动漫视频一区| 老熟女熟妇| 国产操伦| 日本一卡二区在线| 久久‘黄片视频| 农村少妇久久久久久久| 亚洲国产第一页综合视频| 色天天野狼综合社区| 精品少妇一区二区三区在线视频| 天天舔日美女视频| 男人的天堂2018东京热啪啪啪| 91在线视频国产网站| 91欧美偷拍| 91强奸乱轮| 欧美—性—交—色| 97人亚洲综合字幕| 伊人激情五月天一区二区| 亚洲黄色电影| 97青青操视频| 丰满人妻aA一区二区三区| 成熟熟女国产精品一区二区| 一级A片女人高潮叫床| 91人人| 亚洲精品国产精品乱码不卡| 九九无码视频| 一区二区三区国产在线播放| 欧美熟女丝袜| 五月激情综合网| 91精品91久久久久77777俄罗斯老妇姓x| 熟女欧美日韩综合婷婷| 国产一区二区欧美日本| 欧美亚洲自拍另类人妻| 中文字幕视频免费| 伊人天堂在线| 操逼逼中文字幕| 羞涩视频| 综合av影片| 免费人成?大片在线播放| 日韩三级在线观看网站| 色爽——AV| 欧美爆操91| 强奸乱伦av电影| 日韩成年人性爱视频| 欧美一区二区三区成人性生活| 国产亚洲人妻综合日韩 久久| 大香蕉免费3| 超碰碰小说97| 青青草伊人久久| 激情五月天色色网| 国产亚洲精品美女久久久| 97久久超碰日韩精品| 国产视频第2页| 91亚洲人电影| 五月色网| 一区二区免费电影久久| 在线中文AV| 欧美美女自慰一区二区三区| 久艾草在线精品视频在线观看| 丰满人妻-区二区三区免费看 | 中文字幕 国产区| 精品九九国产无码| 一本久道久久综合狠狠爱一密臀精| 久草热制服丝袜在线观看 | 曰韩人妻中文字幕在线| 老女人碰碰在线碰碰视频| 久久久夜夜嗨免费视频| 久久免费99精品久久久久久| 欧亚三区动漫| 国产女人9999| 看看小穴| 成人性爱电影一区二区| 日日夜夜精品视频| 情色大香蕉| 无码久| 久插综合| 久久久草成人网站久久久草成人久久久草久久久 | 51国产午夜精品视频| 激情一区二区| 久久久亚洲熟妇资源| 97国产精品久久久久| 级品肉射| 久热久操| 亚洲熟女乱色一区二区三区| 婷婷婷婷婷婷久久久久| 九九九九九九九九九国产精品| 欧美综合中文| 亚洲欧美激情小说| 亚洲欧美日韩国产丝袜自拍中文| 人人操天天爽| 五月天激情四射| 丁香五月激情综合| 插穴性爱视频在线观看| 欧亚成人| 欧美性爱第一区| 无码天天操| 91精品久久久久五月天精品| 骚逼一区二区| 日韩中文字幕视频在线观看| 在线观看成人性爱免费小视频| 日韩性爱1级片视频| 久久精品国产亚洲妲己影视| 操东北女人| 一级二级在线观看| 蜜臀久久99精品久久久久电影| 欧美精品亚洲精品日韩传电影| 成人一区二区三区四区| 美女AV一区二区| 97色97好| 亚洲熟久久| 夜夜爽夜夜摸夜夜操免费视频| 亚洲熟妇综合久久久久久| 九九这里只有精品| 四虎免费在线播放| 国产在线激情| 精品人妻中文字幕高清| 秋霞网无码| 乱伦图一区| 天天干人妇| 9/A片| 天天碰操中国年青熟妇| 国产久久日| 午夜久久久| 欧美综合91| 手机看片91人妻| 嫩草一区二区在线观看| 久久精品国产96精品亚洲拳交| 另类天堂| 美女人妻色网站| 色综合20p| 亚洲欧洲无码一区夜| 日本 情色 1区| 欧美人妻一区二区| 91香蕉国产尤物视频| 91精品人妻偷情| 日韩卡一卡二卡三在线| 激情综合五| 乱理日韩中文| 2020天天色综合|