免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

JavaWeb健身房管理系統(tǒng):從源碼部署到問題排查全指南

JavaWeb健身房管理系統(tǒng):從源碼部署到問題排查全指南 簡(jiǎn)介一套基于JavaWeb實(shí)現(xiàn)的健身房管理系統(tǒng)畢業(yè)設(shè)計(jì)源碼面向計(jì)算機(jī)相關(guān)專業(yè)學(xué)生和Java開發(fā)者可作為畢業(yè)設(shè)計(jì)、課程設(shè)計(jì)或期末大作業(yè)的完整參考方案。壓縮包共274個(gè)文件涵蓋48個(gè)Java核心邏輯文件、19個(gè)JSP頁(yè)面及18個(gè)CSS樣式同時(shí)包含JavaScript腳本、gif演示動(dòng)圖、SQL數(shù)據(jù)庫(kù)腳本等資源總量2.72MB整體結(jié)構(gòu)清晰便于快速導(dǎo)入運(yùn)行。目前已有116人瀏覽學(xué)習(xí)源碼經(jīng)嚴(yán)格調(diào)試并獲95分以上評(píng)審成績(jī)確??蛇\(yùn)行。下載后可獲得完整項(xiàng)目源碼、數(shù)據(jù)庫(kù)腳本以及各頁(yè)面操作錄屏既能用于理解健身房會(huì)員管理、課程預(yù)約、器材管理等模塊的實(shí)現(xiàn)思路也能直接作為畢設(shè)答辯與功能演示的基礎(chǔ)工程。1. “基于JavaWeb實(shí)現(xiàn)的健身房管理系統(tǒng)”能跑起來才算數(shù)先理解它在解決什么問題“基于JavaWeb實(shí)現(xiàn)的健身房管理系統(tǒng)”在畢業(yè)設(shè)計(jì)里屬于出場(chǎng)率極高但最能保底的一類選題。它把JavaWeb課程幾個(gè)核心考點(diǎn)全占了JSP/Servlet做頁(yè)面交互、JDBC連MySQL數(shù)據(jù)庫(kù)做增刪改查、三層架構(gòu)承載會(huì)員辦卡、課程預(yù)約、教練排班、到期續(xù)費(fèi)提醒這些真實(shí)業(yè)務(wù)。對(duì)準(zhǔn)備答辯的人來說真正難的從來不是“看懂代碼”而是打開壓縮包之后讓源碼和數(shù)據(jù)庫(kù)在十分鐘內(nèi)從自己電腦上跑起來。這篇文章就按這個(gè)順序講壓縮包里先看什么、數(shù)據(jù)庫(kù)表怎么建模、環(huán)境和數(shù)據(jù)庫(kù)連接池怎么配、業(yè)務(wù)代碼怎么改、運(yùn)行時(shí)五個(gè)高頻坑在哪。適合正在做JavaWeb課程設(shè)計(jì)、Java課程設(shè)計(jì)案例源碼或畢業(yè)設(shè)計(jì)的同學(xué)也適合想用一個(gè)完整案例把業(yè)務(wù)邏輯真正吃透的初學(xué)者。2. 先拆包再寫代碼JavaWeb健身房管理系統(tǒng)的文件結(jié)構(gòu)、三層架構(gòu)與數(shù)據(jù)庫(kù)建模健身房管理系統(tǒng)這類源碼包最怕一解壓就盲目點(diǎn)“運(yùn)行”。很多老工程不是Maven標(biāo)準(zhǔn)結(jié)構(gòu)而是用IDEA的Java EE向?qū)傻钠胀╓eb工程部署方式和源碼存放路徑跟教科書示例不太一樣。我建議按下面的順序拆能少走一半彎路。2.1 壓縮包里通常有哪些文件先分清源碼目錄、數(shù)據(jù)庫(kù)腳本和說明文檔打開zip后大概率會(huì)看到四類東西。別急著點(diǎn)開任何代碼先按表格里的檢查點(diǎn)過一遍。路徑/文件作用動(dòng)手前確認(rèn)點(diǎn)src 或 src/main/java存放Servlet、Service、DAO、實(shí)體類看包名有沒有分層找JDBC工具類在哪WebContent / web / src/main/webappJSP頁(yè)面、CSS、JS、圖片看login.jsp和index.jsp確認(rèn)登錄入口.sql 文件 / database目錄建庫(kù)建表腳本與測(cè)試數(shù)據(jù)看建表語句有沒有DROP TABLE和INSERT說明文檔/配置文檔環(huán)境版本、部署步驟確認(rèn)JDK/Tomcat/MySQL版本要求如果工程帶pom.xml說明作者把工程改成了Maven結(jié)構(gòu)依賴統(tǒng)一依賴maven管理。如果沒有pom.xml你通常會(huì)在WEB-INF/lib下看到mysql-connector-java.jar這類依賴。這里最容易踩坑的是“源碼放對(duì)了但依賴少一個(gè)jar”后文第5章專門講。數(shù)據(jù)庫(kù)腳本有的叫g(shù)ym.sql有的叫fitness_manager.sql打開先看前三行確認(rèn)數(shù)據(jù)庫(kù)名、字符集以及表名大小寫。絕大多數(shù)畢設(shè)工程用MySQL“基于JavaWeb實(shí)現(xiàn)的健身房管理系統(tǒng)”里的“數(shù)據(jù)庫(kù)”基本就是指MySQL腳本按MySQL來準(zhǔn)備環(huán)境不會(huì)錯(cuò)。2.2 三層架構(gòu)與MVC為什么JavaWeb項(xiàng)目要把控制器、業(yè)務(wù)、DAO分開健身房管理系統(tǒng)的代碼好不好改取決于它有沒有把三層架構(gòu)分開。常見的分層如下視圖層JSP頁(yè)面。負(fù)責(zé)展示和收集表單頁(yè)面里盡量不寫Java業(yè)務(wù)代碼??刂破鲗覵ervlet。負(fù)責(zé)接收請(qǐng)求、調(diào)用Service方法、跳轉(zhuǎn)頁(yè)面。業(yè)務(wù)層Service。負(fù)責(zé)辦卡、預(yù)約、續(xù)費(fèi)提醒這類業(yè)務(wù)規(guī)則事務(wù)通常寫在這一層。數(shù)據(jù)訪問層DAO JDBC。負(fù)責(zé)數(shù)據(jù)庫(kù)增刪改查只談數(shù)據(jù)不談業(yè)務(wù)。如果工程里一個(gè)Servlet把查詢和頁(yè)面輸出全干了系統(tǒng)也能運(yùn)行但你要加一個(gè)“會(huì)員到期自動(dòng)提醒”就會(huì)很痛苦因?yàn)槟悴恢罃?shù)據(jù)從哪來、該改哪里。MVC和三層架構(gòu)不是同一個(gè)概念但在JavaWeb里經(jīng)常一起出現(xiàn)三層架構(gòu)管職責(zé)劃分MVC管頁(yè)面交互方式。JSP充當(dāng)ViewServlet充當(dāng)ControllerModel由Service、DAO和實(shí)體類共同組成。啟動(dòng)項(xiàng)目前建議先看兩個(gè)入口會(huì)員管理的Servlet和它的DAO這是整條鏈路的骨架。提示如果看到JSP里直接寫了JDBC代碼說明工程沒有分層。能跑但改起來風(fēng)險(xiǎn)高答辯時(shí)也容易被追問“為什么不分層”。建議至少把數(shù)據(jù)庫(kù)訪問抽到一個(gè)工具類里否則后續(xù)改造的每一處都可能是雷。2.3 數(shù)據(jù)庫(kù)表怎么建模會(huì)員卡、課程預(yù)約與教練排班的表結(jié)構(gòu)健身房管理系統(tǒng)的核心不是頁(yè)面是數(shù)據(jù)庫(kù)設(shè)計(jì)。常見的表至少有這些會(huì)員表、員工表/教練表、課程表、預(yù)約記錄表、卡券訂單表。下面是簡(jiǎn)化版表結(jié)構(gòu)很多畢設(shè)工程的核心表就長(zhǎng)這樣-- 會(huì)員表存卡種和有效期 CREATE TABLE member ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE COMMENT 登錄名, phone VARCHAR(20), card_type VARCHAR(20) COMMENT 月卡/季卡/年卡, card_start DATE NOT NULL, card_end DATE NOT NULL, status TINYINT DEFAULT 1 COMMENT 1正常 0停用, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 課程表 CREATE TABLE course ( id INT PRIMARY KEY AUTO_INCREMENT, course_name VARCHAR(100) NOT NULL, coach_name VARCHAR(50), max_num INT DEFAULT 10 COMMENT 最大預(yù)約人數(shù), remain INT DEFAULT 10 COMMENT 剩余名額, course_time DATETIME ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 預(yù)約記錄表 CREATE TABLE booking ( id INT PRIMARY KEY AUTO_INCREMENT, course_id INT NOT NULL, member_id INT NOT NULL, booking_time DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_course_member (course_id, member_id), CONSTRAINT fk_booking_course FOREIGN KEY (course_id) REFERENCES course(id), CONSTRAINT fk_booking_member FOREIGN KEY (member_id) REFERENCES member(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;這段SQL里有幾個(gè)關(guān)鍵參數(shù)值得注意。ENGINEInnoDB必須保留因?yàn)橐С质聞?wù)課程預(yù)約扣減名額和插入預(yù)約記錄得在同一個(gè)事務(wù)里完成。CHARSETutf8mb4解決中文和特殊符號(hào)存儲(chǔ)問題老工程里常見的utf8在MySQL 8下已經(jīng)不夠用。card_start和card_end選DATE而不是DATETIME因?yàn)檗k卡只關(guān)心日期不關(guān)心時(shí)刻DATE類型還能直接配合DATEDIFF做到期提醒。UNIQUE KEY uk_course_member是防重復(fù)預(yù)約的數(shù)據(jù)庫(kù)層保障后面第4章的課程預(yù)約事務(wù)會(huì)用到它。如果你的壓縮包里數(shù)據(jù)庫(kù)腳本沒有這些約束建議在理解表關(guān)系后手動(dòng)補(bǔ)上這是相冊(cè)管理系統(tǒng)最值得留的一層保險(xiǎn)。3. 把源碼和數(shù)據(jù)庫(kù)跑起來JDK、Tomcat、MySQL和IDEA的完整復(fù)位很多老JavaWeb項(xiàng)目跑不起來不是代碼問題是環(huán)境版本錯(cuò)位。尤其是JDK、Tomcat、MySQL三方版本互相不兼容時(shí)日志里全是ClassNotFound和Connection refused你根本分不清是配置錯(cuò)還是依賴缺。這一章給出一套最穩(wěn)的組合和復(fù)現(xiàn)步驟。3.1 環(huán)境選型JDK 1.8、Tomcat 8.5、MySQL 5.7為什么最省事這里直接給參數(shù)對(duì)比照著選能省下大量排錯(cuò)時(shí)間。組件推薦版本備選踩坑點(diǎn)JDK1.8Java 811老工程編譯級(jí)別如果是1.8用JDK 11要改Project Structure和Language levelTomcat8.59.0Tomcat 10起包名從javax改成jakarta老JavaWeb代碼啟動(dòng)直接報(bào)ClassNotFoundExceptionMySQL5.78.0用MySQL 8時(shí)驅(qū)動(dòng)版本要跟著換URL還要加serverTimezone參數(shù)IDEA2020.3及以上社區(qū)版社區(qū)版需要插件或使用外部Tomcat專業(yè)版自帶Tomcat集成為什么首選Java 8因?yàn)榻^大多數(shù)JavaWeb畢設(shè)源碼都是當(dāng)年用JDK 8寫的字節(jié)碼版本和IDEA默認(rèn)編譯級(jí)別能對(duì)上。JDK 11能跑但老項(xiàng)目里如果有JAXB相關(guān)依賴會(huì)缺包屬于自找麻煩。Tomcat 8.5兼容javax.*包Servlet 3.1規(guī)范是這套技術(shù)棧的舒適區(qū)。MySQL 5.7與老版mysql-connector-java的配合最沒有幺蛾子只要數(shù)據(jù)庫(kù)腳本本身沒有用到MySQL 8才有的語法就能直接導(dǎo)。如果你手里只有MySQL 8.0驅(qū)動(dòng)務(wù)必?fù)Q成8.0.xURL里加上serverTimezoneAsia/Shanghai否則第5章會(huì)專門講這個(gè)坑。3.2 導(dǎo)入數(shù)據(jù)庫(kù)用兩行命令把SQL腳本灌進(jìn)MySQL拿到gym.sql之類腳本后我一般不用Navicat的導(dǎo)入按鈕先用命令行導(dǎo)入。原因是命令行能直接看到報(bào)錯(cuò)圖形工具經(jīng)常把錯(cuò)誤吞到一個(gè)日志文件里反而增加定位成本。# 第一步創(chuàng)建數(shù)據(jù)庫(kù)指定utf8mb4字符集 mysql -uroot -p -e CREATE DATABASE IF NOT EXISTS gym_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 第二步把SQL腳本灌進(jìn)gym_db mysql -uroot -p -D gym_db gym.sql參數(shù)說明-u指定用戶名-p讓MySQL提示輸入密碼-e直接執(zhí)行后面的SQL語句。-D表示選擇當(dāng)前數(shù)據(jù)庫(kù)等價(jià)于USE gym_db。是shell重定向把文件內(nèi)容作為mysql命令的輸入。如果腳本第一行已經(jīng)有CREATE DATABASE和USE語句第二步可以簡(jiǎn)化成mysql -uroot -p gym.sql省得指定-D。導(dǎo)入完成后用mysql -uroot -p -D gym_db -e SHOW TABLES;檢查表是否齊全數(shù)一下表數(shù)量跟說明文檔對(duì)得上再進(jìn)入下一步。注意SQL文件路徑如果包含空格或中文建議把文件先移到D:/gym.sql這類簡(jiǎn)單路徑否則某些Windows終端會(huì)把路徑截?cái)鄬?dǎo)致導(dǎo)入失敗。3.3 修改數(shù)據(jù)源與數(shù)據(jù)庫(kù)連接池db.properties里每個(gè)參數(shù)都有用傳統(tǒng)的JavaWeb工程通常用一個(gè)db.properties或jdbc.properties保存數(shù)據(jù)庫(kù)配置再用一個(gè)工具類讀取。下面是最常見的內(nèi)容jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/gym_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai jdbc.usernameroot jdbc.password123456 jdbc.initialSize5 jdbc.maxActive20逐個(gè)說參數(shù)。jdbc.driver對(duì)應(yīng)MySQL驅(qū)動(dòng)的類名5.x版本用com.mysql.jdbc.Driver8.x版本用com.mysql.cj.jdbc.Driver寫錯(cuò)啟動(dòng)就報(bào)ClassNotFoundException。jdbc.url里的useUnicodetruecharacterEncodingutf8是解決中文亂碼的關(guān)鍵useSSLfalse是關(guān)閉SSL握手否則MySQL 8會(huì)默認(rèn)嘗試SSL導(dǎo)致連接變慢。serverTimezoneAsia/Shanghai是MySQL 8.0以上版本必須加的時(shí)區(qū)參數(shù)。最后的initialSize和maxActive是連接池初始連接數(shù)和最大連接數(shù)沒有連接池的工程這兩個(gè)參數(shù)不會(huì)出現(xiàn)。如果項(xiàng)目里用的是Druid或者commons-dbcp的連接池工具類的初始化方式不同但properties里這幾個(gè)值一般都要保留。配套的JDBC工具類常見寫法是public class DbUtil { private static final Properties PROPS new Properties(); static { try (InputStream in DbUtil.class.getClassLoader() .getResourceAsStream(db.properties)) { PROPS.load(in); Class.forName(PROPS.getProperty(jdbc.driver)); } catch (Exception e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException { // 每次調(diào)用從DriverManager拿新連接適合demo生產(chǎn)建議改用連接池 return DriverManager.getConnection( PROPS.getProperty(jdbc.url), PROPS.getProperty(jdbc.username), PROPS.getProperty(jdbc.password)); } }這段代碼的核心邏輯在靜態(tài)代碼塊里加載properties文件、注冊(cè)驅(qū)動(dòng)保證整個(gè)應(yīng)用只初始化一次。getResourceAsStream(db.properties)從classpath根目錄找文件所以db.properties要放在src目錄或resources目錄下而不是WEB-INF里面。代碼里注釋也寫了每次DriverManager.getConnection在并發(fā)高時(shí)是性能瓶頸畢設(shè)如果被問到“怎么優(yōu)化”答案就是換Druid或C3P0連接池把getConnection改成從池里借連接。3.4 在IDEA里配置Tomcat并部署JavaWeb工程這是“idea運(yùn)行javaweb項(xiàng)目配置”的熱搜問題也是最容易卡殼的一步。老工程部署步驟相對(duì)固定打開IDEA用File - Open直接選中解壓后的工程目錄等待索引完成。確認(rèn)Project Structure里的SDK是1.8Language level是8。如果工程不是Maven項(xiàng)目還需要在Project Structure - Modules - Dependencies里把WEB-INF/lib下的jar全部加入。新建Tomcat運(yùn)行配置Run - Edit Configurations - - Tomcat Server - Local。如果IDEA里沒有Tomcat選項(xiàng)進(jìn)入Settings - Build, Execution, Deployment - Application Servers點(diǎn)把本地的Tomcat安裝目錄指定進(jìn)去。在Deployment標(biāo)簽頁(yè)點(diǎn) - Artifact選項(xiàng)目名:war exploded。這里建議用war exploded改完JSP不用重新打包刷新頁(yè)面就能看到變化。把Server標(biāo)簽頁(yè)里的HTTP port改成8080或者改成一個(gè)不容易沖突的端口。點(diǎn)擊運(yùn)行瀏覽器訪問http://localhost:8080/項(xiàng)目名/login.jsp。配置完成后不要急著點(diǎn)運(yùn)行先單獨(dú)跑一下連接檢查把數(shù)據(jù)庫(kù)配置錯(cuò)誤和Tomcat部署問題分開日志里才不會(huì)什么都混雜在一起public class CheckDb { public static void main(String[] args) { // 只驗(yàn)證數(shù)據(jù)庫(kù)連通性不啟動(dòng)Tomcat try (Connection conn DbUtil.getConnection(); Statement st conn.createStatement()) { ResultSet rs st.executeQuery(SELECT COUNT(*) AS total FROM member); rs.next(); System.out.println(member count rs.getInt(total)); } catch (Exception e) { // 如果這里報(bào)錯(cuò)先檢查db.properties再檢查MySQL服務(wù)是否啟動(dòng) e.printStackTrace(); } } }這個(gè)類的價(jià)值是把“數(shù)據(jù)庫(kù)連不上”和“項(xiàng)目部署不上”兩個(gè)變量分離開。運(yùn)行它如果能打出member count 0說明JDBC、驅(qū)動(dòng)、連接URL、數(shù)據(jù)庫(kù)腳本全都沒問題問題只可能出在Tomcat側(cè)。如果它報(bào)錯(cuò)就先別碰Tomcat回頭查數(shù)據(jù)源配置。這個(gè)習(xí)慣能幫你把運(yùn)行JavaWeb項(xiàng)目時(shí)的黑匣子至少拆成兩塊。4. 業(yè)務(wù)模塊動(dòng)手改造從會(huì)員到期提醒到課程預(yù)約事務(wù)環(huán)境跑通只是開始畢設(shè)答辯和實(shí)際維護(hù)真正看重的是業(yè)務(wù)代碼。這一章挑健身房管理系統(tǒng)里三個(gè)最常被問到的業(yè)務(wù)點(diǎn)來動(dòng)手改到期提醒、課程預(yù)約搶名額、按月統(tǒng)計(jì)收入。4.1 會(huì)員到期提醒日期函數(shù)與PreparedStatement配合會(huì)員模塊除了增刪改查最常見的業(yè)務(wù)是“查出一周內(nèi)到期的會(huì)員”。這個(gè)功能用SQL的日期函數(shù)最省事SELECT id, username, phone, card_type, card_end FROM member WHERE status 1 AND card_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) ORDER BY card_end ASC;CURDATE()返回當(dāng)前日期INTERVAL 7 DAY表示7天區(qū)間。BETWEEN配合DATE_ADD可以查出從今天開始到未來7天內(nèi)到期的會(huì)員嚴(yán)格意義上是8天窗口今天到第7天。如果你只想要未來7天可以把區(qū)間改成 CURDATE() AND card_end DATE_ADD(CURDATE(), INTERVAL 7 DAY)。在Java代碼里通常不會(huì)把7寫死在SQL里而是用占位符public ListMember listExpiringMembers(int days) throws SQLException { // 用占位符?代替天數(shù)避免拼接SQL導(dǎo)致注入風(fēng)險(xiǎn) String sql SELECT id, username, phone, card_end FROM member WHERE status 1 AND card_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL ? DAY); ListMember list new ArrayList(); try (Connection conn DbUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, days); // 參數(shù)索引從1開始 try (ResultSet rs ps.executeQuery()) { while (rs.next()) { Member m new Member(); m.setId(rs.getInt(id)); m.setUsername(rs.getString(username)); m.setPhone(rs.getString(phone)); m.setCardEnd(rs.getDate(card_end)); list.add(m); } } } return list; }這里用PreparedStatement而不是Statement有兩個(gè)原因一是不用手動(dòng)拼SQL避免會(huì)員名字里的單引號(hào)把SQL弄壞二是數(shù)據(jù)庫(kù)可以復(fù)用執(zhí)行計(jì)劃循環(huán)調(diào)用多條SQL時(shí)性能更好。調(diào)用時(shí)傳入7由Service層字段判斷是“一周內(nèi)”還是“三天內(nèi)”。如果你希望提醒更準(zhǔn)確可以把DATE_ADD的間隔改成DATEDIFF(card_end, CURDATE()) 7這是很多后掛的報(bào)表SQL里常見的寫法二者效果等價(jià)。4.2 課程預(yù)約防超賣事務(wù)與唯一索引一起上健身房課程預(yù)約最容易出的問題是一個(gè)熱門課被重復(fù)預(yù)約或超員。很多人只做了前端不可點(diǎn)擊就沒管后端實(shí)際上并發(fā)場(chǎng)景下兩個(gè)請(qǐng)求都能通過檢查導(dǎo)致超賣。數(shù)據(jù)庫(kù)層已經(jīng)加了UNIQUE KEY uk_course_memberJava這邊還要把“扣名額”和“插入預(yù)約記錄”放進(jìn)同一個(gè)事務(wù)public boolean bookCourse(int courseId, int memberId) throws SQLException { Connection conn DbUtil.getConnection(); PreparedStatement deduct null; PreparedStatement insert null; try { conn.setAutoCommit(false); // 開啟事務(wù) // 先扣減剩余名額只影響remain0的行返回0說明沒名額了 String deductSql UPDATE course SET remain remain - 1 WHERE id ? AND remain 0; deduct conn.prepareStatement(deductSql); deduct.setInt(1, courseId); int rows deduct.executeUpdate(); if (rows 0) { conn.rollback(); return false; } // 再插入預(yù)約記錄唯一索引會(huì)在重復(fù)預(yù)約時(shí)拋異常觸發(fā)回滾 String insertSql INSERT INTO booking(course_id, member_id) VALUES(?, ?); insert conn.prepareStatement(insertSql); insert.setInt(1, courseId); insert.setInt(2, memberId); insert.executeUpdate(); conn.commit(); return true; } catch (SQLException e) { conn.rollback(); // 回滾已扣減的剩余名額 throw e; } finally { if (insert ! null) insert.close(); if (deduct ! null) deduct.close(); conn.setAutoCommit(true); conn.close(); } }這段代碼的次序是有講究的。先執(zhí)行UPDATE扣減并且?guī)螦ND remain 0讓數(shù)據(jù)庫(kù)自己判斷剩余名額避免“先SELECT再UPDATE”的競(jìng)態(tài)窗口。executeUpdate返回影響行數(shù)0就說明當(dāng)前沒有余量。插入預(yù)約記錄時(shí)如果同一人重復(fù)預(yù)約UNIQUE KEY會(huì)拋出重復(fù)鍵異常進(jìn)入rollback()把剛才扣掉的名額還回來。最后finally里把a(bǔ)utoCommit設(shè)回true并關(guān)閉連接不然連接歸還到連接池后可能殘留事務(wù)狀態(tài)。提示如果你看到的源碼是先查再看即先SELECT確認(rèn)名額再INSERT這在并發(fā)下會(huì)翻車。兩個(gè)請(qǐng)求同時(shí)通過SELECT都看到remain1然后兩個(gè)都執(zhí)行INSERT最終實(shí)際超約。務(wù)必改成“UPDATE條件里帶剩余名額判斷”。4.3 收入月報(bào)GROUP BY配合日期格式化統(tǒng)計(jì)營(yíng)業(yè)額健身房管理系統(tǒng)的后臺(tái)通常有一個(gè)“經(jīng)營(yíng)報(bào)表”統(tǒng)計(jì)每月賣卡和課程收入。核心SQL很經(jīng)典SELECT DATE_FORMAT(create_time, %Y-%m) AS month, COUNT(*) AS order_count, SUM(pay_amount) AS total_income FROM card_order WHERE pay_status 1 GROUP BY DATE_FORMAT(create_time, %Y-%m) ORDER BY month DESC;DATE_FORMAT(create_time, %Y-%m)把2025-03-15 10:30:00格式化成2025-03這樣GROUP BY就能把同月訂單聚合到一起。%Y是四位年份%m是兩位月份。如果寫成%y-%m年份會(huì)變成25和月份組合后排序就會(huì)錯(cuò)亂。SUM(pay_amount)統(tǒng)計(jì)已支付訂單的金額總和數(shù)據(jù)來自卡券訂單表。ORDER BY month DESC讓最新的月份排在最前面。這段SQL的參數(shù)變化點(diǎn)主要是統(tǒng)計(jì)粒度如果想看日?qǐng)?bào)把%Y-%m改成%Y-%m-%d想看按教練維度的業(yè)務(wù)量把DATE_FORMAT(create_time, %Y-%m)換成coach_name。畢設(shè)答辯時(shí)面試官大概率會(huì)問“如果數(shù)據(jù)量大怎么優(yōu)化”可以先答“給create_time建索引”再看是否需要按年份做分表或匯總表。實(shí)際工程很少直接在業(yè)務(wù)表上跑這種聚合統(tǒng)計(jì)而是定時(shí)任務(wù)把日?qǐng)?bào)寫進(jìn)統(tǒng)計(jì)表但畢設(shè)階段用這條SQL已經(jīng)足夠說明你懂?dāng)?shù)據(jù)庫(kù)分組和聚合。5. 常見問題排查五個(gè)從亂碼到端口占用的真坑這一章里的每一條都是真實(shí)跑項(xiàng)目時(shí)反復(fù)遇到的按照“現(xiàn)象、原因、解決”來寫遇到問題直接對(duì)號(hào)入座。5.1 導(dǎo)入SQL后頁(yè)面和數(shù)據(jù)庫(kù)全是中文亂碼現(xiàn)象登錄頁(yè)面能打開但頁(yè)面上會(huì)員姓名顯示成???或者數(shù)據(jù)庫(kù)里查出來是中文字符網(wǎng)頁(yè)上卻是亂碼。這個(gè)場(chǎng)景在Windows下極其常見幾乎每個(gè)用MySQL的人都撞過。原因字符集三個(gè)環(huán)節(jié)沒對(duì)齊。數(shù)據(jù)庫(kù)創(chuàng)建時(shí)用了默認(rèn)latin1或utf8JDBC連接URL沒帶characterEncodingutf8JSP頁(yè)面本身的pageEncoding也不是UTF-8。三處只要有一處不一致中文就會(huì)在寫入或讀取時(shí)變成亂碼。解決按順序檢查。第一步確認(rèn)數(shù)據(jù)庫(kù)是utf8mb4ALTER DATABASE gym_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;。第二步檢查db.properties里連接URL是否帶了useUnicodetruecharacterEncodingutf8沒有就補(bǔ)上。第三步確認(rèn)JSP文件頭有% page contentTypetext/html;charsetUTF-8 pageEncodingUTF-8 %。如果還是亂碼把IDEA右下角的文件編碼也切到UTF-8有的老工程源碼文件本身是GBK編碼讀取時(shí)按UTF-8解碼就亂這是IDE層面的坑和運(yùn)行環(huán)境無關(guān)。修復(fù)順序按數(shù)據(jù)庫(kù)、連接、頁(yè)面依次做別跳到中間瞎改不然越改越亂。5.2 Tomcat啟動(dòng)報(bào)ClassNotFoundException: javax.servlet.xxx現(xiàn)象把工程部署到Tomcat后啟動(dòng)日志里第一段異常就是ClassNotFoundException: javax.servlet.ServletException或者java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet。很多人第一反應(yīng)是缺jar往WEB-INF/lib里塞servlet-api.jar結(jié)果越塞越亂。原因新下載的Tomcat 10.x把命名空間從javax.*改成了jakarta.*老JavaWeb代碼里的javax.servlet包路徑完全找不到了。這不是缺依賴是Tomcat版本和Servlet規(guī)范不匹配往lib里塞舊jar也不能生效因?yàn)門omcat自己加載的servlet-api和lib里的jar沖突。解決換成Tomcat 8.5或9.0這是老畢設(shè)項(xiàng)目最兼容的容器。如果不想換就得把項(xiàng)目里所有import javax.servlet改成import jakarta.servlet還要把JSP的依賴也同步換掉工作量不小。所以我建議初始環(huán)境選型時(shí)直接鎖定Tomcat 8.5避免這個(gè)版本沖突。評(píng)論區(qū)里常見“Tomcat 9能跑嗎”的疑問答案是可以但要用支持Servlet 4.0規(guī)范的那版包名仍是javax。5.3 啟動(dòng)時(shí)Communications link failureMySQL 8的時(shí)區(qū)與SSL現(xiàn)象運(yùn)行連接檢查或啟動(dòng)Tomcat時(shí)日志報(bào)Communications link failure末尾帶The last packet successfully received from the server was ...。有時(shí)候連接前幾次成功過幾分鐘就斷。原因最常見的是MySQL 8.0默認(rèn)開啟了useSSLtrue而驅(qū)動(dòng)版本沒跟上其次是MySQL 8要求URL顯式指定時(shí)區(qū)不指定就用服務(wù)器默認(rèn)時(shí)區(qū)如果服務(wù)器時(shí)區(qū)是UTC客戶端和數(shù)據(jù)庫(kù)端時(shí)間就會(huì)出現(xiàn)偏移甚至直接拒絕連接。另一個(gè)可能是mysql-connector-java的版本還是5.1.x連不上MySQL 8的認(rèn)證插件。解決在JDBC URL上補(bǔ)參數(shù)?useSSLfalseserverTimezoneAsia/Shanghai。驅(qū)動(dòng)版本換成mysql-connector-java-8.0.x.jar。如果用的還是DriverManager啟動(dòng)時(shí)確保MySQL服務(wù)是開啟狀態(tài)Windows下看服務(wù)列表里的MySQLmacOS或Linux下用systemctl status mysql確認(rèn)。這里有一個(gè)排查技巧先用Navicat或命令行連一次同一個(gè)數(shù)據(jù)庫(kù)如果能連上但Java連不上問題一定在URL或驅(qū)動(dòng)版本如果命令行也連不上是MySQL服務(wù)或賬號(hào)權(quán)限問題別在Java代碼里浪費(fèi)時(shí)間。這條經(jīng)驗(yàn)我反復(fù)用過Java側(cè)的連接報(bào)錯(cuò)十有八九是配置和版本問題而不是網(wǎng)絡(luò)問題。5.4 8080端口被占用Tomcat起不來的真兇現(xiàn)象IDEA運(yùn)行Tomcat時(shí)日志出現(xiàn)Address already in use: JVM_Bind或者瀏覽器訪問8080打開的是別的頁(yè)面。這個(gè)場(chǎng)景在公司和學(xué)校機(jī)房特別多因?yàn)槠渌?wù)或之前IDE殘留的Tomcat實(shí)例還沒釋放端口。原因本機(jī)已經(jīng)有進(jìn)程監(jiān)聽8080端口。常見占用成功的情況包括另一個(gè)Tomcat實(shí)例還在后臺(tái)運(yùn)行、占用端口的程序、以及Windows下經(jīng)常見到的javaw.exe僵尸進(jìn)程。解決先確認(rèn)誰占用了端口。Windows下在命令行執(zhí)行netstat -ano | findstr 8080看到監(jiān)聽PID后用tasklist | findstr PID查是哪個(gè)進(jìn)程如果是遺留的javaw.exe直接taskkill /F /PID PID結(jié)束掉。如果不想動(dòng)進(jìn)程就改Tomcat端口。注意改端口要?jiǎng)觕onf/server.xml里的三處Server port8005 shutdownSHUTDOWN、Connector port8080、Connector port8009。只改8080不動(dòng)其他兩處也會(huì)出現(xiàn)“Tomcat能起但停不掉”的情況。IDEA里還容易忽略的一處是如果配置了Tomcat Server LocalServer標(biāo)簽頁(yè)的HTTP port和JMX port是兩個(gè)不同端口JMX端口沖突也會(huì)報(bào)錯(cuò)但報(bào)錯(cuò)信息里不會(huì)直接寫8080。遇到端口相關(guān)異常優(yōu)先看完整堆棧區(qū)分是Connector端口還是JMX端口。5.5 導(dǎo)出war包后JSP頁(yè)面打不開或樣式全丟現(xiàn)象在IDEA里運(yùn)行一切正常但導(dǎo)出war包再部署到另一臺(tái)Tomcat后登錄頁(yè)能顯示HTML但CSS和圖片全丟了或者點(diǎn)擊菜單直接404。這是一個(gè)很經(jīng)典的“打包即翻車”場(chǎng)景。原因IDEA的Artifacts配置里war包只打包了編譯后的class和部分web資源WEB-INF/lib下的第三方j(luò)ar沒有被打進(jìn)war。JSP文件如果沒放在web目錄下也會(huì)漏掉。靜態(tài)資源CSS、JS和圖片丟失通常是目錄引用問題JSP里用了/image/logo.png這種絕對(duì)路徑而部署后項(xiàng)目上下文路徑變成了/項(xiàng)目名/image/logo.png路徑自然就404了。解決在IDEA里打開Project Structure - Artifacts選中當(dāng)前的war exploded配置在Output Layout標(biāo)簽頁(yè)檢查WEB-INF/lib下是否有所有依賴jar。沒有的話右鍵Available Elements里的jar選擇Put into WEB-INF/lib。同時(shí)把web資源目錄完整加入artifact。路徑問題方面JSP里引用靜態(tài)資源建議用${pageContext.request.contextPath}/image/logo.png或者用base標(biāo)簽統(tǒng)一前綴。如果你打算把war部署到Linux服務(wù)器的Tomcat這些細(xì)節(jié)比代碼本身更容易讓你在演示當(dāng)天翻車。6. 給健身房管理系統(tǒng)加一個(gè)數(shù)據(jù)快照答辯演示前的回滾技巧所有改造和排錯(cuò)做完之后最后補(bǔ)一個(gè)我自己的習(xí)慣給這個(gè)系統(tǒng)做一個(gè)數(shù)據(jù)快照腳本。健身房管理系統(tǒng)里有會(huì)員、訂單、預(yù)約記錄演示之前你永遠(yuǎn)不知道評(píng)委或自己會(huì)不會(huì)手滑刪掉數(shù)據(jù)數(shù)據(jù)和代碼分開治理才能讓演示環(huán)境隨時(shí)重新來過。#!/bin/bash # 備份按日期生成SQL文件當(dāng)作后悔藥 mysqldump -uroot -p gym_db backup_$(date %Y%m%d_%H%M%S).sql # 恢復(fù)先刪庫(kù)再建庫(kù)避免舊數(shù)據(jù)殘留 mysql -uroot -p -e DROP DATABASE IF EXISTS gym_db; CREATE DATABASE gym_db DEFAULT CHARACTER SET utf8mb4; mysql -uroot -p -D gym_db backup_20250315_100000.sqlmysqldump的參數(shù)和mysql命令類似-u、-p指定賬號(hào)密碼后面跟庫(kù)名。備份文件名用date %Y%m%d_%H%M%S生成時(shí)間戳避免覆蓋上一次備份?;謴?fù)腳本里DROP DATABASE必須謹(jǐn)慎但演示環(huán)境里這是最快回到初始狀態(tài)的方式。如果你不想每次輸入密碼可以在命令里寫-p123456注意這種寫法不會(huì)隱藏密碼shell的history里會(huì)留下明文自己本機(jī)用可以演示機(jī)不建議。建議在正式答辯或匯報(bào)前跑一次完整恢復(fù)然后按照“會(huì)員辦卡 - 預(yù)約課程 - 查詢?nèi)請(qǐng)?bào)”的主流程走一遍。這套系統(tǒng)的表不多五張表以內(nèi)的工程手動(dòng)重置也麻煩腳本化以后恢復(fù)數(shù)據(jù)從十分鐘壓縮到十幾秒。我第一次帶人用這個(gè)工程時(shí)演示前直接在真實(shí)數(shù)據(jù)上改卡號(hào)把一條會(huì)員記錄改壞了又忘記錄原來的值最后只能重新導(dǎo)庫(kù)。從那以后我養(yǎng)成了每次演示前強(qiáng)制備份的習(xí)慣不管系統(tǒng)多簡(jiǎn)單先備份再動(dòng)手。希望這篇從拆包到排錯(cuò)的筆記能幫你在JavaWeb健身房管理系統(tǒng)這條路上少踩幾個(gè)坑也祝你的項(xiàng)目一次跑通。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产综合A片| 激情精品久久| 久久思思热视频| 岛囯综合激情网| 激情五月天婷婷在线网址发给我| 婷婷色五月综合丁香| 亚洲视频在线观看| www夜夜| 五月丁香狠狠爱婷婷综合| 狠狠爱婷婷爱| 岛国AV网站| 99在线69| 9九色首页| 婷婷五月天伊人| 能直接看的av网站| 久久这里有精品在线观看| 99热天堂| 黄色91在线观看| 性爱视频久久| 激情综合久久| 丁香六月色婷婷| 久久婷婷五月综合色播| 久久精品爱爱| 99久热| 色色色色色日韩午夜激情| www.五月婷婷久久.com| 亚洲综合无码| 五月天婷婷影院| 激情五月天啪啪视频| 丁香五月很很肏| 99久久久| 极品人妻XXXXOOOO| 无码任你操| 99爱视频在线播放| 99re鈥哸鈥唙| 婷婷五月综合亚洲| 美国十月色婷婷在线观看| 五月www| 97狠狠色| 久久人人看| 欧洲区自拍| 婷婷91视频| 久久免片| 99欧美| 97色天堂| 亚洲成人网站在线观看| 五月丁香六月激情综合| 五月婷婷丁香六月| 青草视频在线播放| 五月天大香蕉av| 色99视频| 丰满少妇猛烈A片免费看观看 | VA日本视频| 1024成人在线观看| 激情六月丁香| 99热18| 任你操精品免费| 99综合网| 99这里热| 120分钟婬片免费看| 丁香五月激情婷婷婷婷在线观看| 五月色综合| 都市激情五月婷婷亚洲| 五月婷婷婷丁香播| 婷婷视频网| 色婷婷色99国产综合精品| 色综合性视频| 天天摸天天肏| 婷婷五月在线观看| 啪啪日本欧美| 超碰不卡在线| 久草久青福利| 丁香五月综合在线观看| xxxx久| 色99在线| 激情五月综合网| 91丨九色丨熟女高潮| 丁香五月AV| 亚洲欧美成人在线| 日本美女97在线视频| 亚洲狠狠爱婷婷| 香蕉AV777XXX色综合一区| 综合色、色综合| 91色呦哟| 啪啪99| 天天久久66xxx| 妻久久久久| 黄涩毛片| 成人婷婷| 黄网在线免费| 丁香五月婷婷啪啪啪| 五月婷色| 99热6精品| 国产在线黄色| 五月丁香久久激情综合| 久色视频| 永久天堂日本| 婷五月丁香| 热99AV网站| 天天干天天拍| 五月婷婷爽爽爽| 日韩精品VIP| 97色在线观看视频| 丁香六月啪啪| 天天摸天天舔天天天天爽| 婷婷成人AV| 99综合| 久久婷婷网址| 琪琪理论片| 热99精品视频| 少妇AB又爽又紧无码网站| www久久久久久久久久久久久久久久久| 久久精品日| www.天天色综合| 久久99这里只有精品视频 | 亚洲中文字幕AV| 色色国产| 日本熟妇精品99| 婷婷五月天直播| 夜夜骑夜夜撸| 天天肏在线视频| 9久热在线视频精品| 九九热这里只有国产精品| 狠狠爱婷婷| 色情终和网| 色5月婷婷| 婷婷五月av| 欧美性生交XXXXX无码小说 | 日本五月天激情| 超碰99热| 天天情天天狠天天透| 五月天激情小说欧美激情| 婷婷伊人| 亚洲激情综合网| 思思热视频在线观看| 国产欧美精品AAAAAA片| 人人操Av| 久色网| 1024操逼视频| 久久99激情| 夜色爱爱亚洲| 婷婷色五月在线视频| 亚洲激情AV| 五月激情婷婷综合| 97碰碰在线看视频免费| 五月色婷婷影院| 久久精品亚洲一级牲爱综合| 在线超碰精品| 婷婷六月色| 九热视频在线伦| 婷婷另类开心| 韩日另类| 99在线亚洲| www,五月天激情| 色一情一乱一伦一区二区三区| 五月婷婷久久久| 色吧综合网| 久操福利| 久久五月六月| 九九热青草| 丁香婷婷精品视频| 日韩精品AV一区二区三区| site:901-07.com| 淫视馆aV二区一区| 九九热视频网站| 丁香六月婷婷| 国产精品A片| 久久精品一区二区三区四区| www一区二区三区| 乱岳熟女50岁| 日日爱激情| 伊人九九68| 婷婷色五月色妇| 日韩乱轮AV| 色综合性视频| WWW.久久99| 99性爱| 五月久久网| 成人亚洲精品| 国产性av| 九九热自拍| 丁香婷婷色九月| 女婷久久| 激情五月六月丁香| 99热99极品观看| 91精品久久久久久| 天天干天天 亚洲| 成人五月丁香花| 天天天天天日| 日韩婷婷五月| 久久99久久99www| 五月丁香影院 | 激情综合网五月在线播放| 久久婷婷六月综合综合| 欧美爆乳一区二区三区| 99九九久久| 婷婷五月影院| 久久久久人妻精品| 激情综合激情五月| 91日本在线免费| 色五月婷婷五月天| www.91有码.com| 综合 蜜月 婷婷| 色婷婷综合亚洲| 日本久久网| 精品欧美一区二区三区久久久| 五月丁香花开综合网| 99热只有精品在线| 色天堂婷婷| 99热精品在这里| 六月丁香大香蕉| 性生生活大片又黄又| 婷婷五月另类网站| 77799热| www.91AV.com| 日韩成人中文| 综合婷婷| 精品久久99码| 五月丁香婷婷基地| 五月丁香婷婷福利| 天天肏天天肏| 99热精品无码| 五月丁香无码| 丁香五月婷婷在线| 99er久久| 开心五月丁香综合久久| 日韩啪啪网| 九月婷婷人人操人人舔人人爱| 日本色99| 91九色欧美| 九九这里精品| 热99视频精品| 夜夜涩涩涩| 亚洲午夜电影| 射久久丁香五月| 亚洲视频综合网| 狠狠色婷婷7777久| 丁香五月网址| 99九九99九九九视频精彩| 五月色丁香激情| 91se在线视频| 免费看片操逼| 欧美在线视频9| 嫩草AV久久伊人妇女超级A| 最新久久网址| AV在线中文| www.色婷婷.com| Jh7Uf088VHafNm| 成人五月天综合网| 激情文学 综合 色| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 另类视频一区| 激情九月婷婷| 日本久久精品| 九色PORNY9l原创自拍| 91丨九色丨老农村| 九9九9无码| 婷婷五月综合网激情| 亚洲愉拍99热成人精品| 久久久国产精品黄毛片| 日韩AV免费电影在线播放| 狠狠干在线| 久久久久久激情| 天天操夜夜操| 淫视馆aV二区一区| 国产精品第一国产精品| 大香焦啪啪啪| 综合久久伊人| 亚洲午夜视频| 五月婷婷丁香啪啪| 99色热视频| 亚洲成人电影aaaa| 性色99| 久久96热| 婷婷五月激情网| 亚洲乱码w在线观看| 丁香五月天资源网| 中文字幕 码精品视频网站| 九九亚洲综合| 国产精品18久久久| 丁香五月婷婷老师网站| 91九色欧美| 超碰猛烈的性猛交| 亚洲丁香婷婷五月天综合色| 五月综合六月丁| 国内裸舞二区| 天天久综合| 丁香五月婷婷日本| 天天影院色| 婷婷五月天AV| 精品9197碰| 九九久久9 9在线观看| 色婷婷丁香AV综合| 天天操无码| ri电影在线| 九九这里精品| 超碰9| www.色婷婷| 校花娇喘呻吟校长陈若雪视频| 丁香,开心成人,久久| 色五月婷婷91在线| 女性自慰系列第五页| 5月丁香婷婷| 欧美婷婷五月天综合| 婷婷五月天激情电影小说| 999热这里只有精品| 丁香五月影视| 亚洲av综合在线| 婷婷五月中文字幕| 狠狠999| 欧洲激情精品婷婷| 欧美人与性动交CCOO| 丁香婷婷激情四射五月| 五月天婷婷免费| 99色色热| 91无码视频| 婷婷五月花| 国产探花一片区| 99啊精典免费视频| 丁香五月天成人| 色综合九九| 欧美性生交xXxX久久久| 伊人婷婷五月天| 五月天婷婷黄色| 五月丁香啪啪综合| 伊人久久大香线蕉AV最新午夜| 天天操夜夜爽天天操| 狠狠狠夜夜夜| 久久R激情| 狠狠爱婷婷爱| 久久人妻久久| 色色色色欧美| 色色影院aaaav| 国产va视频| 亚洲日韩久久婷婷伊人| 五月丁香WWW| 9 1超碰九色| 九九中文色色| 五月婷婷花| 操一操干一干| 色欲天天综合网| www.成人婷婷综合| 久婷婷视平| 精品视频这里只有精品| 79精品视频在线观看,| 色五月情| 婷婷亚洲五月丁香综合在线 | 三级三久久线久久99久目本WW| 色欲五月婷婷| 婷婷五月天免费99| 久久这里只有精品网| 99亚州综合精品成人网| 97人人超| 91精品91久久久中77777| 国产婷婷五月| 丁香五月婷婷日本| 久热AⅤ| 99免费视频精品| 亚洲综合在线视频| 五月 成人 婷婷| www.狠狠艹| 久久婷婷五月综合色区| 日本在线噜噜| 日韩有码一区| 五月天综合在线观看视频| 四色五月婷婷| 免费视频99| 香港九九六区八区99| 五月丁香欧美综合免费视频| 欧美A片在线视频免费观看| 丁香五月婷婷呀| 开心五月激情网| 97精品综合久久| 超碰人人干| 武则天精品久久| 丁香婷婷色色| 91人妻色色网| 少妇性按摩无码中文A片| 欧美成人无码一区二区三区| 人人摸人人操人人爱| 婷婷丁香五月激情中文字幕版| 欧美性做爰大片免费看办公室| 五月香蕉综合| 99久久婷婷| 无码G高清天| 97丨九色丨国产丨PORNY| 丁香五月宝贝激情网| 99国产精品久久久久久久久久久| 99re热免费观看视频精品| 特黄三级又爽又粗又大| 五月婷激情影院| 五月丁香久久综合| 亚洲三A| 开心五月婷婷在线| 狠狠色噜噜狠狠| 99久在线精品| 国产探花AV在线| 九月性爱网| 天天日夜夜| 色久九| 色999五月色| 人人射av| 人人插9| 99综合久久| 婷色五月| 色婷婷AV在线观看| 久久99热这里只有精品| 五月天婷婷视频30| 五月婷婷六月激情| 五月天婷婷色综合| 夜夜爽天天| 久久33视频| 啪啪一区| WWW,五月| 久久只有精品| 91婷婷色| 婷婷丁香久久网| 91婷婷色 | 国产精品第一国产精品| 伊人色综合久久久| 99热99这里有免费的精品| 亚洲第一影院高清无码网站| 国产av天堂| 欧美丁香婷婷五月天| 日本久久婷婷| 无码人妻一区二区一牛影视| 99精品在线| 激情五月天电影| 亚洲黄色影视| 日本97在线| 熟妇人妻中文字幕无码老熟妇| 婷婷丁香激情| 少妇熟女视频一区二区三区 | 97 A I色色| 另类图片婷婷五月天| 久久五月婷综合网| 色五月婷婷老师| 婷婷五月丁香五月综合网| 九九成人电影婷婷| 激情婷婷五月天日本系列| www.色色色com| 婷婷五月天论坛| 九九99精品免费播放| 永久AⅤ1| 日本人人干| 夜夜 操无码| 丁香五月天AV在线| 婷婷D区| 日本激情五月天‘| 久久精品系列| 99爽视频| 噜噜噜噜噜日本视频| 在线观看免费观看在线9久| 先锋影音av色五月天资源站| 五月婷婷中文字幕| 婷婷色在线| 成人国产欧美大片一区| 五月婷婷丁香网| 成人综合视频在线| 成人做爰A片免费看网站找不到了| 久久精品永久免费| 久久玖玖综合| 最近韩国日本免费高清观看| 婷婷五月天狠狠| 婷婷综合五月天| 婷婷久久综合| 色婷婷五月天在线观看| 五月激情丁香六月狠狠干| 五月天色小说| 亚洲成人AV在线观看| 精品人妻伦| 亚洲视频另类| 婷婷五月天小说| 丁香五月天激情网| 婷婷久久网| 婷婷五月丁香第四色超碰在线| 色天五月天在线观看视频| 色色婷婷五月天| 激情小说色五月| 久久综合影院 | 99热这里只有精品搜| 日本97在线视频| 五月激情综合网| 99热精品无码| 伊人丁香五月| 五月丁香啪啪综合网| 亚洲六月婷婷| 五月婷婷啪啪| 日韩六十路91性交电影| 大香蕉婷婷五月| 麻豆AV一区二区三区| 五月天另类激情在线| 精品网站99| 日本九九网| 婷婷成人基地| 欧美日韩一区二区三区四区| 五月成人网站| 婷激情五月| 激情五月天婷婷| 五月色情婷婷| 久久97久久99久久综合欧美| 天天日天天舔| Av九九| 日韩在线五月天婷婷| 久久香蕉丁香| 一区二区乱视频码| 夜夜嗨一区二区三区直播内容 | 99啪啪网| 大香伊人婷婷影院| 超PEN精品在线| 超碰av在线| 99久在线精品99re8热| 婷婷热婷婷色| 華人性愛AV在線| www、丁香五月天| 精品一区久热| 免看黄大片AA | 激情色色色| 色久五月天| wwccc久久久| 狠狠色色| 99在线热| 丁香五月手机在线| 伊人网啪啪| 婷婷五月综合社区在线| 综合狠久久| 久久婷婷热| 综合色播| 五月婷婷综合激情网| 亚洲天堂色色| 婷婷色五天| 激情综合网五月激情网| 婷婷五月天激情免费在线观看| 久久草婷婷丁香网站| 丁香色情五月天| 色色色激情| 超碰免费成人| 久久久com| 中文无码婷婷| 轮奸综合网| 天天狠狠婷婷在线| 欧美日本综合网| 思恩热国产视频右线观看| 九九综合伊人| 色播五月丁香| 久久久久久久综合狠狠综合| 精品久久婷婷五月天| site:pzdcoin.com| 婷婷五月天另类视频| 婷婷五月成年人| 狠狠色丁香久久久婷| 97色干| 色情五月丁香| 丁香五月婷婷啪| 精品无码av丁香五月激情| 天天肏屄夜夜爽| 综合99在线| 思思99精品视频在线观看| 日本色婷婷久久99精品91| 激情婷婷亚洲五月| 亚洲AV成人无码久久精品老人法拉利| 五月激情久久| 欧洲亚洲午夜| 99激情视频| 色九九综合| 日本天天操| 7EzOBIhNq85TO| 337久久| 欧美婷婷综合网| 五月天综合久久丁香91| 丁香五月天无码AV| 人人干AV| www.lingjunshare.com| 天天摸天天舔天天天天爽| 思思99热| 超碰91在线| 婷婷丁香成人色综合| 久久五月天丁香| 婷婷五月色色| 日本三级日本三级三级人妇四虎| 琪琪理论片| 五月激情黄色小说| 五月激情天| 丁香五月欧美午夜视频| 日韩成人av在线| 国产成人精品亚洲线观看| 狠狠爱婷婷五月天| 五月天大香蕉| 五月婷AV| 五月婷婷久久综合| 色婷婷很很十八禁| 99热99极品观看| 色噜噜狠狠色综合伊人| 青草少妇激情| 五月综合视频| 97人人干。| 天天爽人人综合免费7799| 啪啪啪五月天| 久久丝袜婷婷| 五月婷婷色在线| 色色色五月婷| 色吧网综合| 99九九热在线观看| 欧洲高清免费久久| PORNY九色9l自拍视频成人| 噜噜在线| 色七七九九| 久热这里精品免费| 色色色欧美| 少妇性BBB搡BBB爽爽爽电影| 亚洲av综合在线| 五月天婷婷基地| 亚洲人成人五月天| 综合色99| 亚洲欧洲小视频9| 丁香五月婷婷基地| 久久色情综合免费网站| 国产精品久久久久久久久久| 99热国内精品| 亚洲综合激情五月| 国产精品99久久久久久久女警| 第四色网婷婷| 乱色色色| 人人摸人人搞| enecarbon-materials.com污K127封锁请涟系@wip1688 | 大伊久久| 成片免费观看视频大全| 国产成人AV在线播放| 五月婷婷久久内射| 色五月婷婷综合| 狠狠色狠狠爱| 大香人妻| 五月婷深深爱激情网| 亚洲午夜AV| 97香蕉人人在线观看| 婷婷五月天影视| 91丨九色丨国产打屁股| 婷婷成人在线| 久久视频婷婷视频| 深爱五月天| 大香蕉五月天婷婷丁香91| 天天摸色吧天天摸色吧| 又大又粗九一在线| 亚州精品色情在线观看| 五月香婷婷| 91日视频| 五月天久久91| 色婷婷综合在线| 久久这里有精品在线观看| 天天干天天干天天干| 色墦五月丁香| 噜噜狠狠色综合久| 亚洲AV另类| 色色色色色网站| 丁香色婷婷色手机免费在线| 另类图片 五月激情| 天天日夜夜| 狠狠色综合网| 激情五月天视频| www.久操| 丁香六月婷婷色XXXXX| 丁香八月综合激情| www激情五月天| 久久探花91swag| 天天插天天| 久久九九热38| 五月天电影网| 啪啪视频99| 996日日爱| 久久综合最新网址| 超碰1999| 激情久久 婷婷| 美欧成人视频| 婷婷五月激情图片| 91蜜桃婷婷狠狠久久综合9色| 色播六月| 五月天激情小说| 99精品久久久久久久婷婷| 操碰99| 色色色色色热| 五月丁香影院| 99热777| 色吧网综合| 婷婷无码五月天| 看全色黄大色大片| 九九AV| 男人天堂伊人五月丁香| 中文字幕乱码亚洲精品一区| 99热亚洲精品66| 激情婷婷视频在线| 成人在线视频网| 久久只有这里精品免费| 99久久九九视频| 丁香五月综合在线观看| 狠狠色丁香婷婷久久综合| 狼人久草| 插少妇综合网| 丁香五月 无码| 99热精品99| 俺也去婷婷五月天第五色| 少妇AB又爽又紧无码网站| 天天夜夜六月丁香五月婷婷老师| 亚洲精品网址| 色99视频| 狠狠色丁香久久婷婷综合五月| 久久99久久久| 激情五月综合| 婷婷色情六月| 丁香五月天堂网| 久久精品A片777777| 五月天另类小说| 中文字幕不卡+婷婷五月| 丁香六月婷婷| 99热在线只有精品| 久久五月婷婷电影| 日本wwww在线| jiZZdr| 看久久性爱视频| 操碰99| 成人 在线观看国产| 综合网啪| 高清无码一区二区三区四区| h亚洲| 婷婷97狠狠成人网站| 99热这里只有精品66| 69热在线| 色婷婷综合在线| 久久久久人妻| 夜夜骑天天操| 五月丁香好婷婷姑娘综合网| 9999热在线免费观看| 色婷婷成人做爰A片免费看网站| 天天干天天色综合| 婷婷另类开心| 婷婷五月激情欧美| 日韩av在线播放综合网| 综合激情在线| 久久久五月四色| 色色自拍视频网站| 久久久久久久8| 成人无码精品1区2区3区免费看| 五月丁香久| 亚洲欧州色情在线观看| 天天拍夜夜撸| 欧美激情综合色综合啪啪五月| 日本操天堂| 99色在线| 伊人玖玖网| 婷婷五月天第四色| 狠狠操.com| 亚洲五月激情| 草久私拍| 五月天久久色| www.激情| 伊人干综合| 久久五月天婷婷| 人妻久久久久久久久妻久久久久| 亚洲综合无码| 99热99草97| 热热色色五月天婷婷| 人妻久久久久久久| 婷婷五月综合久久中文字幕| 激情五月天www| 这里只有精9| 亚洲免费看片| 综合久久五月天| 伊人大香蕉综合在线| 五月婷婷电影院| 国产精品99久久久久久久女警| 99久在线视频| 色激情五月| 天天擼久久擼在线| www.五月婷婷久久.com| 99热20| 九九视频免费| 婷婷五月色| 情色婷婷五月天| 在线成人视频免费| 国产4P视频精品五区| 婷婷五月天成人视频| 日产精品一线二线三线芒果| 玖玖在线视频| 五月婷婷综合网| 日本狠狠干| 婷色五月天| 久久性刺激| www久久艹| 影音先锋天天日| 久热这里| 青青草原伊人网| 五月婷婷六月丁香| 99久久久久久www| 99热精品在线观看| 色色色地址| 婷婷五月天激情诱惑| 丁香激情综合| 免费不卡狠操美女视频网 | 欧美五月丁香在线观看| 四虎婷婷五月天| 国产综合激情五月久久| a v色婷婷| 欧美成人网婷婷综合在线| 99 这里只有精品| 激情久久天天| 热成人网| 天天日夜夜曹| 丁香五月婷婷色偷偷| 深爱激情六月天| 免费亚洲婷婷五月| 日本啪啪天堂| 深爱五月激情五月| 伊人激情AV一区二区三区| 91九九九九| 超碰2021| 九九人人自拍| 五月丁香大香蕉| 久久与婷婷| 另类图片婷婷五月天| 天天操夜夜橾| 另类国产综合| 久热免费| 91久热| 国产免费一区二区在线A片视频| 中文字幕乱码亚洲精品一区| 欧美日韩一区二区三区四区| 亚洲有码在线视频| 91精品久久久久久| 99九色视频在线观看| 第二色AⅤ| 婷婷五亚洲| 精品99视频| 丁香六月啪| 91九色超碰| 五月丁香网站| 久热2025无码| 五月天久久网站| 色五月婷婷在线| 另类视频在线| 九色porny在线观看激情四射| 婷婷情色五月天| 欧美va国产va| 四色五月婷婷| 色婷婷香蕉| 色天堂婷婷| 六月色激情| 人妻性爱| 婷婷六月激情| 开心五月深爱五月| 丁香婷婷五月人体| 六月婷婷网| 99热在线只有精品| 99综合网| 久久 中文 日本| 人人干天天舔| 色狠狠婷婷| 欧美在线97| 成人在线二区| 天天久久狠狠色综合| site:ornaments52.com| 9l视频自拍9l九色9l成人| 久久视频在线视频| 久久9精品视频| 俺五月| 久久丁香五月| 亚洲中文字幕在线观看| 日本色图综合| 这里只有精品免费视频在线观看| 精品久久人妻| 最近免费中文字幕大全高清大全1| 日韩精品一品二区三区的使用体验 | 午夜爱爱网站| 婷婷五月色综合香五月| 大学生高潮无套内谢视频| 婷婷中文字幕在线| 五月婷婷网久久| 综合久久婷婷| 九九久久精品國產| 呦呦v线| 99黄色性生活| 欧美操我| 国产精品激情五月天色婷婷| 99热97| 五月天激情四射网站| 六月五月婷婷| www.婷婷五月天.com| 久re在线| 色欲五月婷婷| 熟女人妻一区二区三区免费看| 婷婷五月激情的图片| 天天日天天日天天搞| 成人电影一区| 91九色在线| 婷婷六月色| 国产精品黑丝| 天天干肏夜夜| 五月天婷婷小说| 一逼色综合| 国产精品热搜丁香五月婷婷| 99热这里有精品| 99小视频在线| 天天操加勒比| 色在线99| 99亚洲视频| 亚洲天堂AV综合网| 五月婷婷婷婷婷婷艺术| a久久| 日日操夜夜爽白洁| 青草五月天| 五月天婷婷av| 影音先锋一区二区三区| 182tv992tv人之初午夜免费观看| 天天日夜夜操五月| 少妇出轨做爰高潮A片| 99热主页日本| 综合激情在线视频| 色五月婷婷综合在线| 成人色色视频| 婷婷五月色综合香五月| 秋霞电影理论| 人与禽A片啪啪| www.狠狠干| 国产成人精品一区二三区熟女在线| 亚洲人成网亚洲欧洲无码久久| 99热精品在线播放| 丁香婷婷人妻| 六月天婷婷| 天天操夜夜啊| 极品人妻VIDEOSSS人妻| 婷婷5月天激情综合| 无码少妇高潮喷水A片免费| 丁香婷婷激情五月| 国产XXXX搡XXXXX搡麻豆 | 丁香六月婷婷久久综合| 天天草人人摸| 任你躁XXXXX麻豆精品| 五月天色婷婷伊人网| 久久婷婷综合色丁香| 婷久久| 激情小说五月丁香在线视频观看视频| 一本道在线电影| 婷婷五月伦理网站| wWW九九在线播放| www色五月| 99久久a线观| 人人妖人人97| 狠狠操狠狠操AV| 9九色首页| 日本久久婷婷| 狠狠大香婷婷爱| 免费观看18视频网站| 久久婷婷亚洲五月天| 人人操人人妻| 高清无码网址| 色999五月色| 青青草免费公开视频| 丁香五月天BBw| 久婷自拍视频| 激情婷婷色色| 99爱免费在线观看| 精品热青草| 久久狠狠干| 激情婷婷黄色五月 | 在线91日韩| 久久亚洲婷婷| 99视频内射三四| 爽tv | 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 激情啪啪五月| 99九九视频| 欧美色小说婷婷| 97婷婷丁香五月天激情图片| 99热9| 色婷婷色情| 狠狠爱夜夜| 色婷婷网| 婷婷六月天天| 婷婷综合久久| 六月婷婷在线| 91五月天| 亚洲熟妇AV乱码在线观看 | 婷婷99视频全集高清| 婷婷五月天AV在线| 同性gv国产精品一区二区| 9色天堂| 欧美婷婷五月丁香| 久8色色| 亚洲五月天婷婷| 色婷婷狠狠| 五月天成人在线播放丁香| 久久婷婷色情7777网站| 大香蕉220| www.99日本| 啪啪啪啪五月天| 99色.com| 北京熟妇搡BBBB搡BBBB| 天天天天干| 五月天激情网址| 亚洲人妻Av| 无码免费人妻A片AAA毛片西瓜| 第四色大香蕉| 色综久久AV| 色九九丁香九月色九九色| 久久久com| 丁XX 成人| AV国产有码| 97超碰综合| 久碰久| 激情五月婷婷五月| 思思热视频在线观看| 免費亭亭成人| 久草 天堂| 葵花AV在线| 日本久久高清| 五月婷婷激情久久| 日韩人妻无码专区| 人人97操| 狠狠精品干练久久久无码中文字幕 | 91疯狂操操操操| 色.五月综合网| 色五月激情五月| 六月丁丁香| 日本AAAAAAAAAAAAAA片| 激情五月图| 日韩无码91| 色色欧美。| 婷婷深爱五月天| 五月丁香人妻| 婷婷激情五月天亚洲综合| 午夜丁香丁香婷婷| 99玖玖精品| 日本婷婷激情四射中文字幕在线观看| 婷婷欧美| 成人视频一区| 色婷婷国产精品综合在线观看| 免费视频这里只有精品| 五月婷婷色播网| 五月婷婷免费在线| 五月丁香六月成人| 九九99精品视频在线观看| 99色网站| 五月婷婷基地| 狠狠五月天婷婷激情网。| 婷婷五日b| 播五月婷婷开心| 激情婷婷色色| 操操天堂| 中文字幕日韩成人| 奇米网大香蕉| 人人操人人看97干| 99情色五月天| 99re资源在线视频导航| 亚洲愉拍99热成人精品| 99性爱| 久久婷婷视频| 婷婷久久综合| 久久久久这里只有精品| 五月色婷婷综合| av九九| 99热在线精品观看| 97色在线| 久久五月综合| 99视频| 看片视频在线免费日产在线看| 99ER热精品视频| 亚洲激情婷婷| 日本天堂免费99| 99re视频在线播放| 99黄色性生活| 97干在线视频| 日本人妻伦在线中文字幕| 天天久综合网永久入口18| 五月婷婷综合成人| 男人的天堂97| 久久婷婷啪啪视频| 樱花99视频| 九九热在这里只有精品| 婷婷五月天激情诱惑| 五月天色色婷婷| 五月天婷婷激情在线色图| 免费看欧美成人A片无码| 青青久久五月| 小泽玛利亚视频一区二区| 夜夜 操无码| 婷婷五月天激情网址| 国产精品色色色色| 五月亭亭直播| 久久婷五月婷| 亚洲国产精品SUV| 婷婷五月丁香性爱| 久久久ww| 狠狠人人| 亚亚州久久高潮| 久久婷婷综合网| 国产FREESEXVIDEOS性中国| 91免费啪视频| 久久草中文日韩欧美| 激情五月伊人婷婷| 六月丁香成人网| 爱久综合| 成人国产欧美大片一区| 美国不卡视频| 婷婷六月丁香开心深深爱| 久久99成人性爱高清视频| 五月天久久网站| 99色视频| 亚洲4区国产欧美| 五月色婷婷在线观看| 五月婷婷开心亚州在线| 超碰激情网| 亚洲午夜成人av电影网| 久久超视频| 亚洲色婷婷激情| 天天日天天摸| 色婷婷久久| 色婷婷性爱| 成人深爱丁香五月| 开心五月婷婷婷美女| 99色| 成人在线高清| 五月丁香拍拍激情综合| 亚洲一区二区无遮挡A片| 亚洲V国产V欧美V久久久久久| 射琪琪| 婷婷五月天亚洲色| 五月丁香啪综合| 丁香婷婷五月香蕉91| 丁香大香蕉| site:feetmall.com| 五月婷婷六月丁香| 婷五月天| 五月天激情在线视频| 91九色中文字幕女在线观看| 日韩国产在线精品| 色情综合| 色色亚洲五月天| 久久婷婷视频| 成人精品视频99在线观看免费| 综合色影| 色婷婷视频综合| 99热99在线| 99男人天堂| 99热这里只有精品最新网址| 天天爱天天操| 五月丁香少妇| 亚洲情a| 日韩精品AV一区二区三区| 九九亚洲综合| 色偷偷色婷婷| 五月婷婷久草| 婷婷五月色花丁香社区| 精品综合久久久久久五月天| 亭亭色色五月天| 五月丁香偷拍| 天天免费日日夜夜夜夜| 天天日夜夜爽| 色婷婷久久| 国产免费一区二区三区三州老师F1F1.CC | www.91AV.COM| 久久久久99精品成人片| 五月婷婷无码| 91狠狠综合久久| 色婷另类| 日韩黄色AV无码| 区区欧美你爱| 免费看欧美成人A片无码| 五月丁香六月婷婷亚洲天堂网站| 91九色中文| 我想看国产大学生口爆吞精的视频| 翔田千里无码| 被男人添B超爽视频| 噜噜噜噜婷婷五月天| caop在线| 亚洲视频操| 99视频| 欧亚中文A V| 五月天色婷婷伊人网| 婷婷五月天综合亚洲| 天天日夜夜夜操操操操| 丁香五月天视频| 色色综合成人网| XX色综合| 婷婷五月天堂网| 色色激情五月天| 9l视频自拍9l九色成人| 九九99免费视频| 婷婷五月综合社区| 91丨九色丨熟女丰满| 五月天综合久久丁香91| 日韩黄色电影| 欧美色色干| 国产婷婷五月天| 激情丁香九九五月综合网| 久久艹99| 婷婷激情性爱| 久热无码| 99国产小视频2013| 天天爽天天| va婷婷在线| 免费看欧美成人A片无码| 婷婷深爱五月亚洲综合| 日韩AV无码影片| 天天天摸夜夜夜玩| 69久久久| 欧美精品18| 碰97久久| 久久五月丁香| Xx色综合| 极品少妇XXXX精品少妇偷拍 | 日日爱激情| 亚洲一区二区无遮挡A片| 91视频一起草| 99无码视频| 无码99| www.俺去也com| 久久久久久久五月| 91色逼| 新久久五月天激情| 色婷婷88| 婷婷永久在线| 激情婷婷色色| 婷婷伊人| 六月婷婷色宗合| 色吊丝av中文字幕| 五月婷婷狠狠干| 激情无码五月天| 五月婷婷av在线| 六九色综合婷婷五月天| 一区二区成人电影| 丁香激情网| 第四色首页| 综合激情在线视频| 久热无码| 婷婷五月天男人影院色色网| 99精品视频推荐| 亚洲成人五月天| 丁香色播五月天| 色婷婷五月天无码视频| 久久停停超碰| 狠狠色综合777| 天堂在线婷婷| 五月天激情四射| 五月丁香婷婷综合激情基地| 大香蕉在线观看9| 99综合免费视频| 婷婷狠狠五月综合| 4399伦理午夜| 丁香五月激情婷婷| 17.c黄色| 综合色五月| 中文字幕免费高清电视剧| 激情五月影院| 免费看欧美成人A片无码| 99re视频精品| 精品成人久久久久久久_一二三四视| 国产成人精品一区二三区熟女在线| 五月色天情| 热中文字幕| 丁香五月激情啪啪啪啪| 激情综合亚洲| 婷婷丁香五月,狠狠综合| 97极品在线| 少妇伦子伦精品无吗| 久久五月天色婷婷| 丁香激情六月天婷婷| 啪啪99| 色色欧美。|