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

ARTICLE DETAIL

資訊詳情

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

JavaWeb寵物商城課設(shè)源碼全解析:數(shù)據(jù)庫(kù)、核心代碼與部署排錯(cuò)

JavaWeb寵物商城課設(shè)源碼全解析:數(shù)據(jù)庫(kù)、核心代碼與部署排錯(cuò) 簡(jiǎn)介基于Javaweb的網(wǎng)上寵物銷(xiāo)售商城系統(tǒng)是一份面向JavaWeb學(xué)習(xí)者的完整項(xiàng)目資料特別適合課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或商城類(lèi)項(xiàng)目實(shí)戰(zhàn)參考。資源覆蓋前臺(tái)展示、購(gòu)物車(chē)、訂單管理、后臺(tái)管理等核心場(chǎng)景可幫助讀者理順電商系統(tǒng)的典型業(yè)務(wù)流程與編碼結(jié)構(gòu)。壓縮包整體約27.24MB主要文件包括Java源代碼、SQL數(shù)據(jù)庫(kù)腳本和論文文檔源代碼可直接導(dǎo)入開(kāi)發(fā)工具運(yùn)行數(shù)據(jù)庫(kù)腳本包含建表及初始數(shù)據(jù)論文可供撰寫(xiě)設(shè)計(jì)說(shuō)明書(shū)時(shí)參考。目前已有37人學(xué)習(xí)瀏覽。由于資料同時(shí)具備源碼、數(shù)據(jù)庫(kù)與論文三層配套拿到手既能通過(guò)實(shí)際代碼驗(yàn)證功能也能按文檔理解設(shè)計(jì)思路省去自行搭建環(huán)境和梳理表結(jié)構(gòu)的時(shí)間適合希望從零完成一個(gè)可演示寵物商城的初中級(jí)開(kāi)發(fā)者快速入手。1. 網(wǎng)上寵物銷(xiāo)售商城一份JavaWeb課設(shè)源碼包能讓你少走多少?gòu)澛菲谀┶s課設(shè)的時(shí)候打開(kāi)一個(gè)“基于Javaweb的網(wǎng)上寵物銷(xiāo)售商城系統(tǒng)源代碼數(shù)據(jù)庫(kù)論文.rar”里面裝的就是一套能跑的JavaWeb完整案例Servlet/JSP寫(xiě)的前后端、MySQL的建庫(kù)腳本、一篇可以直接當(dāng)說(shuō)明書(shū)用的論文。很多人以為難點(diǎn)在“看懂代碼”實(shí)際上十次有八次翻車(chē)在“跑不起來(lái)”數(shù)據(jù)庫(kù)連不上、Tomcat端口沖突、編碼亂碼、表名和代碼對(duì)不上。這篇文章就按你拿到壓縮包后的操作順序從技術(shù)棧識(shí)別、數(shù)據(jù)庫(kù)初始化、核心鏈路代碼一直講到部署排錯(cuò)最后給出四個(gè)能加分的增強(qiáng)點(diǎn)。適合在做JavaWeb課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的人也適合剛學(xué)完Servlet和MySQL想練一個(gè)完整項(xiàng)目的初學(xué)者。2. 先拆三件套源代碼、數(shù)據(jù)庫(kù)腳本和論文在項(xiàng)目里的真實(shí)分工收到rar后的第一件事不是解壓雙擊也不是急著往IDEA里拖而是先搞清楚氣里面三樣?xùn)|西各自負(fù)責(zé)什么。源代碼是主體數(shù)據(jù)庫(kù)腳本是地基論文是說(shuō)明書(shū)三者的關(guān)系一句話(huà)就能說(shuō)清論文描述系統(tǒng)應(yīng)該有什么數(shù)據(jù)庫(kù)決定系統(tǒng)拿什么存代碼決定系統(tǒng)怎么跑。很多課設(shè)包打開(kāi)后發(fā)現(xiàn)代碼能編譯但頁(yè)面全報(bào)錯(cuò)問(wèn)題幾乎都出在第二樣?xùn)|西沒(méi)裝好。2.1 技術(shù)棧識(shí)別先判斷是ServletJSP還是SSM再動(dòng)手解壓之后別急著點(diǎn)開(kāi)某個(gè).java文件先在根目錄掃一眼有哪些標(biāo)志性文件。JavaWeb課設(shè)包通常走兩條路線傳統(tǒng)的是Servlet JSP JDBC MySQL特征是有web.xml代碼里能搜到大量extends HttpServlet稍微新一點(diǎn)的是SSMSpring SpringMVC MyBatis特征是有applicationContext.xml、spring-mvc.xml這一組配置文件。兩條路線的導(dǎo)入方式、運(yùn)行方式、排錯(cuò)方式完全不一樣看錯(cuò)一步后面全亂。區(qū)分它們最快的辦法是看項(xiàng)目里有沒(méi)有pom.xml。有pom.xml就是Maven工程IDEA導(dǎo)入后會(huì)自動(dòng)下載依賴(lài)沒(méi)有pom.xml只有一堆jar塞在lib目錄或WebContent/WEB-INF/lib下就是傳統(tǒng)Web項(xiàng)目導(dǎo)入時(shí)需要手動(dòng)Add as Library。我一般會(huì)用下面這條命令把關(guān)鍵文件一次性找出來(lái)# 解壓后先看根目錄 ls -la # 定位關(guān)鍵標(biāo)記文件SQL腳本、Maven配置、web.xml find . -maxdepth 4 \( -name *.sql -o -name pom.xml -o -name web.xml \) | head -20這條命令解決的問(wèn)題很實(shí)際有些課設(shè)包把SQL腳本藏在兩層目錄下面不搜一下根本找不到。find的管道參數(shù)head -20是為了防止目錄結(jié)構(gòu)太亂時(shí)輸出刷屏如果只找到pom.xml和web.xml沒(méi)有sql文件那SQL腳本大概率在README里寫(xiě)了路徑或者根本沒(méi)打包進(jìn)來(lái)得回去找下載頁(yè)面。Windows用戶(hù)沒(méi)有find命令直接在資源管理器里搜“*.sql”和“pom.xml”一樣能達(dá)到目的。識(shí)別出技術(shù)棧后順手記下三件事JDK版本、Tomcat版本、MySQL版本。這三個(gè)版本是后面所有報(bào)錯(cuò)的根源版本記錯(cuò)會(huì)讓后面的修改方向完全跑偏。判斷對(duì)象看到這個(gè)文件/特征得出結(jié)論Maven工程pom.xml用IDEA以Maven方式導(dǎo)入依賴(lài)由Maven管理傳統(tǒng)Web工程lib下很多jar無(wú)pom.xml手動(dòng)添加依賴(lài)到項(xiàng)目結(jié)構(gòu)里SSM框架applicationContext.xml、spring-mvc.xml配置入口在Spring配置不走web.xml直連Servlet/JSPweb.xml 大量HttpServlet子類(lèi)入口是web.xml配置的servlet-mapping2.2 目錄結(jié)構(gòu)與源碼分層拿到包后先看這五個(gè)位置確認(rèn)技術(shù)棧之后就按固定順序掃一遍目錄我習(xí)慣看五處根目錄的README或說(shuō)明文檔、數(shù)據(jù)庫(kù)腳本位置、JDBC配置文件、web.xml或Maven坐標(biāo)、JSP頁(yè)面數(shù)量。這套順序?qū)?yīng)的是“項(xiàng)目怎么啟動(dòng)、數(shù)據(jù)怎么連、功能有多全”三個(gè)核心問(wèn)題。課設(shè)項(xiàng)目的源碼分層一般長(zhǎng)這樣pet_shop/ ├── src/com/pet/shop/ │ ├── entity/ # User.java Pet.java Order.java │ ├── dao/ # UserDao.java PetDao.java OrderDao.java │ ├── service/ # UserService.java OrderService.java │ └── web/ # LoginServlet.java RegisterServlet.java ├── WebContent/ │ ├── index.jsp │ ├── WEB-INF/ │ │ └── web.xml │ └── static/ # css / js / images ├── database/ │ └── pet_shop.sql ├── 論文.doc └── 說(shuō)明文檔.txt這個(gè)分層順序不是隨便排的entity對(duì)應(yīng)數(shù)據(jù)庫(kù)表的對(duì)象映射dao負(fù)責(zé)增刪改查service寫(xiě)業(yè)務(wù)流程web下的Servlet只做參數(shù)接收和頁(yè)面跳轉(zhuǎn)。課設(shè)包采用這種分層一方面是課程里就是這么教的答辯護(hù)時(shí)能講清楚層次關(guān)系另一方面是代碼量不大四個(gè)包各自管一攤出了問(wèn)題容易定位??吹綄?shí)體類(lèi)可以順手打開(kāi)看一眼字段名后面導(dǎo)入數(shù)據(jù)庫(kù)時(shí)能對(duì)照上。2.3 論文與代碼的一致性校驗(yàn)別讓文檔和代碼打架三件套里最容易出問(wèn)題的其實(shí)是論文。下載包里那篇論文通常是從某個(gè)學(xué)長(zhǎng)學(xué)姐手里流轉(zhuǎn)下來(lái)的系統(tǒng)功能描述、界面截圖和實(shí)際代碼大概率對(duì)不上。答辯時(shí)老師翻論文問(wèn)“你這個(gè)查詢(xún)功能在哪個(gè)頁(yè)面”你說(shuō)沒(méi)有這就麻煩了。校驗(yàn)方法很簡(jiǎn)單把論文目錄里的功能大綱列出來(lái)和代碼里的Servlet類(lèi)、JSP頁(yè)面挨個(gè)對(duì)一遍。IDEA里按兩次Shift鍵可以全局搜索輸入“WebServlet”能列出所有Servlet路徑數(shù)一下數(shù)量然后去對(duì)比論文里“系統(tǒng)功能結(jié)構(gòu)圖”畫(huà)了幾個(gè)模塊。我見(jiàn)過(guò)最離譜的是一篇論文寫(xiě)了六個(gè)模塊代碼里只有登錄和商品列表兩個(gè)能跑。另外要重點(diǎn)檢查數(shù)據(jù)庫(kù)字段名的一致性問(wèn)題。常見(jiàn)的坑是論文的ER圖里字段叫user_nameSQL腳本里叫username代碼里用的是name三個(gè)地方三個(gè)叫法。遇到這種情況以SQL腳本為準(zhǔn)把代碼里的字段名全局替換掉編譯跑一遍后基本能消除大部分SQLException。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)與初始化把SQL腳本跑成能用的寵物商城表結(jié)構(gòu)寵物商城這類(lèi)課設(shè)數(shù)據(jù)庫(kù)跑不跑得起來(lái)決定了整個(gè)項(xiàng)目能不能啟動(dòng)。前面識(shí)別技術(shù)棧時(shí)找到的.sql腳本接下來(lái)就要派上用場(chǎng)。在導(dǎo)入之前最好先把腳本里的建表語(yǔ)句完整讀一遍不要無(wú)腦執(zhí)行——很多腳本文件里缺CREATE DATABASE這行執(zhí)行完一臉懵因?yàn)閴焊鶝](méi)建庫(kù)。3.1 五張核心表的設(shè)計(jì)要點(diǎn)用戶(hù)、分類(lèi)、寵物、購(gòu)物車(chē)、訂單網(wǎng)上寵物商城雖然叫“商城”但課設(shè)級(jí)別的表結(jié)構(gòu)不會(huì)太復(fù)雜核心就五張表用戶(hù)表、寵物分類(lèi)表、寵物商品表、購(gòu)物車(chē)表、訂單表。下面這份DDL是常見(jiàn)的課設(shè)版設(shè)計(jì)我按自己習(xí)慣加了t_前綴目的是避開(kāi)order這類(lèi)MySQL保留字。CREATE DATABASE IF NOT EXISTS pet_shop DEFAULT CHARACTER SET utf8mb4; USE pet_shop; CREATE TABLE t_user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(64) NOT NULL, phone VARCHAR(20), address VARCHAR(255), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_category ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_pet ( id INT AUTO_INCREMENT PRIMARY KEY, category_id INT, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INT DEFAULT 0, image VARCHAR(255), description TEXT, FOREIGN KEY (category_id) REFERENCES t_category(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_cart ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, pet_id INT, quantity INT DEFAULT 1, UNIQUE KEY uk_user_pet (user_id, pet_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_order ( id INT AUTO_INCREMENT PRIMARY KEY, order_no VARCHAR(32) NOT NULL UNIQUE, user_id INT NOT NULL, total_amount DECIMAL(10,2) NOT NULL, status TINYINT DEFAULT 0 COMMENT 0待支付 1已支付 2已發(fā)貨 3已完成, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_order_item ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT NOT NULL, pet_id INT NOT NULL, price DECIMAL(10,2) NOT NULL, quantity INT NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;為什么要按這個(gè)結(jié)構(gòu)建表每個(gè)決定后面都有成本。價(jià)格字段用DECIMAL(10,2)而不是FLOAT或DOUBLE是為了避免浮點(diǎn)數(shù)精度問(wèn)題最經(jīng)典的翻車(chē)案例是0.1加0.2算出來(lái)是0.30000000000000004訂單金額對(duì)不上很尷尬。訂單拆成t_order和t_order_item兩張表是標(biāo)準(zhǔn)的主從表設(shè)計(jì)一個(gè)訂單里可能同時(shí)有貓糧和貓砂兩件商品訂單主表記總價(jià)和狀態(tài)訂單明細(xì)表記每件商品的單價(jià)和數(shù)量統(tǒng)計(jì)“這個(gè)月賣(mài)了什么”時(shí)直接查明細(xì)表就行。購(gòu)物車(chē)表用了一個(gè)唯一索引uk_user_pet保證同一用戶(hù)加同一商品時(shí)數(shù)據(jù)庫(kù)層面不會(huì)出現(xiàn)兩條重復(fù)記錄代碼里做累加時(shí)會(huì)簡(jiǎn)單很多。外鍵在課設(shè)表里可以保留但要注意FOREIGN KEY會(huì)讓刪除分類(lèi)時(shí)受到限制如果測(cè)試時(shí)想刪掉某個(gè)分類(lèi)卻被外鍵攔住可以先把對(duì)應(yīng)寵物分類(lèi)下的pet記錄清掉再刪分類(lèi)。有些課設(shè)包的腳本里故意不加外鍵理由是“代碼里控制了邏輯外鍵影響插入性能”這是沒(méi)必要的設(shè)計(jì)潔癖課設(shè)階段有外鍵更容易講清楚表關(guān)系。3.2 導(dǎo)入SQL腳本的兩種方式命令行與圖形工具拿到.sql文件后導(dǎo)入方式跟著你的習(xí)慣走。命令行方式適合快速執(zhí)行圖形工具方式適合一邊導(dǎo)一邊看表結(jié)構(gòu)。無(wú)論哪種方式第一件事都是確認(rèn)MySQL服務(wù)已經(jīng)啟動(dòng)然后確認(rèn)腳本第一行有沒(méi)有CREATE DATABASE沒(méi)有的話(huà)先手動(dòng)建庫(kù)再導(dǎo)入。# 方式一先登錄MySQL再執(zhí)行腳本 mysql -u root -p # 進(jìn)入MySQL命令行后執(zhí)行 SOURCE /path/to/pet_shop.sql; # 方式二不進(jìn)入交互模式直接導(dǎo)入 mysql -u root -p pet_shop pet_shop.sql方式二有個(gè)大坑命令行里的pet_shop這個(gè)數(shù)據(jù)庫(kù)得先存在否則導(dǎo)入會(huì)直接報(bào)錯(cuò)“Unknown database”。所以我個(gè)人更習(xí)慣方式一先登錄進(jìn)去用SHOW DATABASES;確認(rèn)庫(kù)存在再用SOURCE執(zhí)行腳本。如果SQL腳本本身帶了CREATE DATABASE IF NOT EXISTS那方式一執(zhí)行會(huì)非常干凈執(zhí)行結(jié)束后用USE pet_shop; SHOW TABLES;驗(yàn)證。圖形工具Navicat/DBeaver導(dǎo)入時(shí)有一個(gè)操作順序問(wèn)題左側(cè)連接里先選中pet_shop這個(gè)數(shù)據(jù)庫(kù)再右鍵“運(yùn)行SQL文件”而不是直接在連接的根節(jié)點(diǎn)上運(yùn)行。在根節(jié)點(diǎn)運(yùn)行腳本時(shí)如果腳本第一行是CREATE DATABASE還好說(shuō)萬(wàn)一腳本只有CREATE TABLE沒(méi)有USE語(yǔ)句就會(huì)報(bào)“No database selected”。3.3 JDBC連接參數(shù)與驅(qū)動(dòng)加載數(shù)據(jù)庫(kù)連不上的大部分原因都在這里數(shù)據(jù)庫(kù)表建好了接下來(lái)是讓Java代碼連上來(lái)。課設(shè)項(xiàng)目一般用一個(gè)jdbc.properties或db.properties文件放連接參數(shù)再配合一個(gè)工具類(lèi)讀取參數(shù)并返回Connection。MySQL 5和MySQL 8的驅(qū)動(dòng)類(lèi)名不一樣這個(gè)區(qū)別就是經(jīng)典的黑匣子報(bào)錯(cuò)“ClassNotFoundException”的來(lái)源。jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/pet_shop?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8 jdbc.usernameroot jdbc.password123456import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { private static final String DRIVER com.mysql.cj.jdbc.Driver; private static final String URL jdbc:mysql://localhost:3306/pet_shop ?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8; private static final String USERNAME root; private static final String PASSWORD 123456; static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { throw new RuntimeException(MySQL驅(qū)動(dòng)加載失敗請(qǐng)檢查jar包是否放入WEB-INF/lib, e); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWORD); } public static void close(Connection conn, Statement stmt, ResultSet rs) { if (rs ! null) { try { rs.close(); } catch (SQLException ignored) {} } if (stmt ! null) { try { stmt.close(); } catch (SQLException ignored) {} } if (conn ! null) { try { conn.close(); } catch (SQLException ignored) {} } } }這段代碼里必須盯住三個(gè)參數(shù)。serverTimezoneAsia/Shanghai是處理MySQL 8時(shí)差問(wèn)題的不寫(xiě)它會(huì)出現(xiàn)“The server time zone value”的異常堆棧characterEncodingutf8是中文能正常存取的前提頁(yè)面亂碼時(shí)先查這一項(xiàng)useSSLfalse是關(guān)閉SSL握手加上它能省掉一大串證書(shū)告警日志。驅(qū)動(dòng)類(lèi)名com.mysql.cj.jdbc.Driver是MySQL 8之后的寫(xiě)法如果項(xiàng)目用的驅(qū)動(dòng)jar是5.x版本類(lèi)名要改回com.mysql.jdbc.Driver不改就會(huì)ClassNotFoundException。連接池這個(gè)概念課設(shè)階段可以先不引入但DBUtil里把資源關(guān)閉寫(xiě)成一個(gè)標(biāo)準(zhǔn)方法是個(gè)好習(xí)慣。很多課設(shè)代碼只關(guān)了Connection不關(guān)Statement和ResultSet跑幾次后MySQL報(bào)“Too many connections”就是連接泄漏。另外注意這套工具類(lèi)里沒(méi)有讀取properties文件而是寫(xiě)死了常量這是為了讓新手一眼看清參數(shù)正式項(xiàng)目里建議用Properties類(lèi)加載配置文件避免改密碼還要重新編譯。4. 核心代碼實(shí)現(xiàn)登錄、購(gòu)物車(chē)、下單三條鏈路怎么串起來(lái)數(shù)據(jù)庫(kù)沒(méi)問(wèn)題后代碼跑不起來(lái)的原因就只剩下框架配置和邏輯鏈路。寵物商城最核心的鏈路是三段用戶(hù)登錄、加入購(gòu)物車(chē)、提交訂單。這三段能把Servlet、DAO、Service、JSP所有層次串起來(lái)代碼讀完基本就能舉一反三覆蓋其余頁(yè)面。4.1 用戶(hù)登錄與Session管理從表單到Filter攔截器登錄功能的代碼結(jié)構(gòu)是最標(biāo)準(zhǔn)的JavaWeb請(qǐng)求響應(yīng)鏈路一條線走下來(lái)JSP表單提交用戶(hù)名密碼 → LoginServlet接收參數(shù) → UserDao查詢(xún)數(shù)據(jù)庫(kù) → 比對(duì)密碼 → Session保存登錄態(tài) → 重定向到首頁(yè)??创a時(shí)先看LoginServlet這一段后面的業(yè)務(wù)基本都是它的復(fù)制粘貼變體。WebServlet(/login) public class LoginServlet extends HttpServlet { private final UserService userService new UserService(); Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(UTF-8); String username request.getParameter(username); String password request.getParameter(password); User user userService.login(username, password); if (user null) { request.setAttribute(error, 用戶(hù)名或密碼錯(cuò)誤); request.getRequestDispatcher(/login.jsp).forward(request, response); return; } HttpSession session request.getSession(); session.setAttribute(user, user); response.sendRedirect(request.getContextPath() /index.jsp); } }登錄失敗用forward轉(zhuǎn)發(fā)回login.jsp登錄成功用sendRedirect重定向到首頁(yè)這個(gè)差別是JavaWeb課設(shè)很喜歡問(wèn)的考點(diǎn)。forward是服務(wù)器內(nèi)部跳轉(zhuǎn)地址欄不變可以把request里的error屬性帶到頁(yè)面sendRedirect是瀏覽器重新發(fā)起請(qǐng)求地址欄變成index.jspSession里的內(nèi)容依然有效。如果用sendRedirect去傳error信息就必須用URL參數(shù)拼接或者Session中轉(zhuǎn)因?yàn)樾抡?qǐng)求不會(huì)帶著舊request。登錄成功后Session里存了user對(duì)象那怎么保證沒(méi)登錄的人不能直接訪問(wèn)訂單頁(yè)面靠Filter攔截器。這是課設(shè)代碼里經(jīng)常留白的地方很多完整的課設(shè)包會(huì)寫(xiě)一個(gè)LoginFilter但有些基礎(chǔ)的包就沒(méi)寫(xiě)需要自己補(bǔ)上WebFilter(/*) public class LoginFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req (HttpServletRequest) request; HttpServletResponse resp (HttpServletResponse) response; String uri req.getRequestURI(); if (uri.endsWith(/login.jsp) || uri.endsWith(/login) || uri.contains(/static/) || uri.equals(req.getContextPath() /)) { chain.doFilter(request, response); return; } HttpSession session req.getSession(false); if (session ! null session.getAttribute(user) ! null) { chain.doFilter(request, response); } else { resp.sendRedirect(req.getContextPath() /login.jsp); } } }這段Filter里放行的URL要特別留意登錄頁(yè)、登錄接口、靜態(tài)資源CSS/JS/圖片必須放行否則會(huì)出現(xiàn)登錄頁(yè)樣式全丟、還沒(méi)輸入賬號(hào)就被攔截回登錄頁(yè)的死循環(huán)。req.getContextPath() /放行的是首頁(yè)因?yàn)楹芏囗?xiàng)目把index.jsp當(dāng)作根路徑訪問(wèn)。我第一次寫(xiě)Filter時(shí)忘了放行靜態(tài)資源結(jié)果登錄頁(yè)的樣式表全部404看起來(lái)就像頁(yè)面崩了實(shí)際上是被攔截了。注意Filter里用getSession(false)而不是getSession()加false時(shí)如果用戶(hù)沒(méi)登錄過(guò)就不會(huì)自動(dòng)創(chuàng)建一個(gè)Session避免每個(gè)游客都被塞一個(gè)無(wú)效會(huì)話(huà)。4.2 購(gòu)物車(chē)與訂單事務(wù)邊界數(shù)據(jù)庫(kù)層的原子操作購(gòu)物車(chē)有兩種實(shí)現(xiàn)思路一種是把購(gòu)物車(chē)數(shù)據(jù)存在Session的Map里用戶(hù)加購(gòu)時(shí)修改Session下單時(shí)一次性寫(xiě)入數(shù)據(jù)庫(kù)另一種是每次加購(gòu)都寫(xiě)數(shù)據(jù)庫(kù)的t_cart表。課設(shè)包常見(jiàn)的是前一種實(shí)現(xiàn)簡(jiǎn)單且不碰數(shù)據(jù)庫(kù)刷新頁(yè)面數(shù)據(jù)不丟因?yàn)镾ession還在但換瀏覽器、清緩存后購(gòu)物車(chē)就空了。后一種穩(wěn)定但代碼量翻倍。先看下單部分因?yàn)檫@里藏著整個(gè)項(xiàng)目最值錢(qián)的一段事務(wù)代碼。提交訂單的動(dòng)作本質(zhì)是往t_order插一條總訂單往t_order_item插N條明細(xì)把t_pet里對(duì)應(yīng)寵物的庫(kù)存減掉。這三個(gè)操作必須是一個(gè)整體任何一個(gè)失敗都不能留下半截?cái)?shù)據(jù)——比如插了訂單主表但明細(xì)沒(méi)插進(jìn)去或者庫(kù)存減了但訂單沒(méi)生成。public boolean createOrder(int userId, MapInteger, Integer cartMap) { Connection conn null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); BigDecimal totalAmount BigDecimal.ZERO; for (Integer petId : cartMap.keySet()) { Pet pet petDao.findById(conn, petId); totalAmount totalAmount.add(pet.getPrice().multiply(BigDecimal.valueOf(cartMap.get(petId)))); } String orderNo PO System.currentTimeMillis(); int orderId orderDao.insertOrder(conn, userId, orderNo, totalAmount); for (Integer petId : cartMap.keySet()) { int quantity cartMap.get(petId); Pet pet petDao.findById(conn, petId); orderDao.insertOrderItem(conn, orderId, petId, pet.getPrice(), quantity); petDao.updateStock(conn, petId, pet.getStock() - quantity); } conn.commit(); return true; } catch (Exception e) { e.printStackTrace(); try { if (conn ! null) { conn.rollback(); } } catch (SQLException ex) { ex.printStackTrace(); } return false; } finally { try { if (conn ! null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }這段代碼的關(guān)鍵是conn.setAutoCommit(false)必須寫(xiě)在第一條關(guān)掉自動(dòng)提交后后面所有SQL都在同一個(gè)事務(wù)里執(zhí)行遇到異常執(zhí)行conn.rollback()回滾到事務(wù)開(kāi)始前。注意所有的DAO方法都接收conn參數(shù)而不是自己?jiǎn)为?dú)從DBUtil拿連接這樣才能保證大家用的是同一個(gè)Connection。很多課設(shè)包沒(méi)傳這個(gè)參數(shù)每個(gè)DAO自己調(diào)一次DBUtil.getConnection()結(jié)果就是事務(wù)完全失效主表插進(jìn)去了明細(xì)出異常庫(kù)存少了一半還查不出原因。事務(wù)之外還有一個(gè)必須看的邏輯下單前查庫(kù)存。上面代碼里的findById拿到當(dāng)前庫(kù)存再在updateStock里減掉這個(gè)過(guò)程在并發(fā)場(chǎng)景下會(huì)出現(xiàn)超賣(mài)——兩個(gè)人同時(shí)買(mǎi)最后一件商品兩個(gè)線程都查到庫(kù)存為1各自減1后庫(kù)存變成-1。課設(shè)答辯時(shí)這個(gè)問(wèn)題基本不會(huì)被追問(wèn)但代碼review時(shí)能主動(dòng)提一句“這里應(yīng)該用UPDATE t_pet SET stock stock - ? WHERE id ? AND stock ?”面試官會(huì)對(duì)你另眼相看。4.3 商品列表與分頁(yè)LIMIT參數(shù)與翻頁(yè)鏈接的實(shí)現(xiàn)首頁(yè)展示寵物列表是商城門(mén)面課設(shè)項(xiàng)目一般做成分頁(yè)列表每頁(yè)8條或12條。分頁(yè)的本質(zhì)是兩條SQL一條查總數(shù)一條按LIMIT取當(dāng)前頁(yè)數(shù)據(jù)。public class PetDao { public ListPet findByPage(int offset, int size) { String sql SELECT * FROM t_pet ORDER BY id DESC LIMIT ?, ?; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, offset); ps.setInt(2, size); try (ResultSet rs ps.executeQuery()) { ListPet list new ArrayList(); while (rs.next()) { Pet pet new Pet(); pet.setId(rs.getInt(id)); pet.setName(rs.getString(name)); pet.setPrice(rs.getBigDecimal(price)); pet.setStock(rs.getInt(stock)); pet.setImage(rs.getString(image)); list.add(pet); } return list; } } catch (SQLException e) { throw new RuntimeException(分頁(yè)查詢(xún)失敗, e); } } public int count() { String sql SELECT COUNT(*) FROM t_pet; try (Connection conn DBUtil.getConnection(); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(sql)) { rs.next(); return rs.getInt(1); } catch (SQLException e) { throw new RuntimeException(查詢(xún)總數(shù)失敗, e); } } }LIMIT后的第一個(gè)參數(shù)是偏移量含義是跳過(guò)多少條記錄。比如每頁(yè)8條第2頁(yè)的偏移量就是(2-1)88從第9條開(kāi)始取。這個(gè)公式要在Servlet里算好再傳進(jìn)DAO不要在SQL里用表達(dá)式PreparedStatement的參數(shù)綁定更安全。COUNT()那條SQL用的Statement而不是PreparedStatement因?yàn)闆](méi)有參數(shù)直接執(zhí)行即可但注意rs.next()后要取的是第1列索引從1開(kāi)始。JSP端的翻頁(yè)鏈接也很容易一起實(shí)現(xiàn)核心是拼接當(dāng)前路徑帶上page參數(shù)。常見(jiàn)做法是在Servlet里用request.setAttribute(currentPage, page)和request.setAttribute(totalPage, totalPage)傳給JSPJSP里用${currentPage gt 1}判斷是否需要顯示“上一頁(yè)”按鈕用${currentPage lt totalPage}判斷“下一頁(yè)”。整個(gè)鏈路是點(diǎn)翻頁(yè)鏈接 → 瀏覽器跳轉(zhuǎn)到/PetListServlet?page2 → Servlet重新查數(shù)據(jù)庫(kù) → 轉(zhuǎn)發(fā)到pet_list.jsp再渲染這是典型的MVC循環(huán)。5. 部署運(yùn)行與常見(jiàn)問(wèn)題排查5個(gè)讓課設(shè)翻車(chē)的真實(shí)現(xiàn)場(chǎng)代碼看完、數(shù)據(jù)庫(kù)導(dǎo)完最后一步是把項(xiàng)目跑起來(lái)。JavaWeb項(xiàng)目在IDEA里的運(yùn)行配置是“IDEA運(yùn)行JavaWeb項(xiàng)目配置”這個(gè)操作的核心場(chǎng)景創(chuàng)建一個(gè)Tomcat運(yùn)行配置Deployment里添加war包或war exploded指定Application context然后Run。但這個(gè)環(huán)節(jié)有一批特別常見(jiàn)的報(bào)錯(cuò)幾乎每一個(gè)跑過(guò)課設(shè)包的人都至少撞過(guò)其中兩三個(gè)。5.1 環(huán)境與數(shù)據(jù)庫(kù)連接的三類(lèi)高頻報(bào)錯(cuò)現(xiàn)象一Tomcat能啟動(dòng)但訪問(wèn) http://localhost:8080 顯示404或者能訪問(wèn)Tomcat默認(rèn)首頁(yè)但訪問(wèn)不到寵物商城頁(yè)面。原因IDEA里Deployment的Application context配置成了/項(xiàng)目部署名和訪問(wèn)URL對(duì)不上或者根本沒(méi)添加war包到Tomcat。解決打開(kāi)Run → Edit Configurations → Deployment選項(xiàng)卡確認(rèn)有寵物商城項(xiàng)目的ArtifactApplication context填/pet_shop然后訪問(wèn) http://localhost:8080/pet_shop/ 看是否出首頁(yè)。改完后一定要重新構(gòu)建再啟動(dòng)熱部署有時(shí)候不刷新Artifact?,F(xiàn)象二控制臺(tái)報(bào)“Access denied for user rootlocalhost (using password: YES)”。原因jdbc.properties里的密碼和MySQL實(shí)際密碼不一致或者M(jìn)ySQL 8默認(rèn)用了caching_sha2_password認(rèn)證舊版JDBC驅(qū)動(dòng)不認(rèn)識(shí)這個(gè)認(rèn)證插件。解決先確認(rèn)密碼拼寫(xiě)沒(méi)抄錯(cuò)再去查MySQL版本如果是MySQL 8要么升級(jí)mysql-connector-java到8.x版本要么在MySQL里執(zhí)行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密碼;刷新權(quán)限后重啟Tomcat。現(xiàn)象三報(bào)“Communications link failure”或“Connection refused”。原因MySQL服務(wù)根本沒(méi)啟動(dòng)或者M(jìn)ySQL啟動(dòng)后端口不是3306或者URL里把localhost寫(xiě)成了別的地址。解決Windows下在服務(wù)管理器里確認(rèn)MySQL80服務(wù)狀態(tài)是“正在運(yùn)行”Linux下用systemctl status mysql確認(rèn)然后在命令行執(zhí)行mysql -u root -p能進(jìn)MySQL說(shuō)明服務(wù)沒(méi)問(wèn)題最后確認(rèn)URL里不是寫(xiě)成jdbc:mysql://localhost:3306這種被復(fù)制粘貼時(shí)丟了冒號(hào)或冒號(hào)變成全角字符的情況。全角冒號(hào)的報(bào)錯(cuò)特別隱蔽肉眼幾乎看不出來(lái)。5.2 編碼、保留字與路徑問(wèn)題隱藏的翻車(chē)現(xiàn)場(chǎng)現(xiàn)象四頁(yè)面顯示“????”或中文亂碼數(shù)據(jù)庫(kù)里中文正常但頁(yè)面上全是問(wèn)號(hào)。原因JSP頁(yè)面沒(méi)指定UTF-8、Servlet接收參數(shù)時(shí)沒(méi)調(diào)setCharacterEncoding、MySQL連接URL缺少characterEncodingutf8三個(gè)環(huán)節(jié)只要有一個(gè)沒(méi)統(tǒng)一就會(huì)亂碼。解決JSP文件第一行保證pageEncodingUTF-8寫(xiě)一個(gè)EncodingFilter在doFilter第一行執(zhí)行request.setCharacterEncoding(UTF-8)和response.setCharacterEncoding(UTF-8)MySQL建庫(kù)時(shí)用utf8mb4而不是latin1。三處都改完后重啟Tomcat再測(cè)。還有一個(gè)小坑如果用的是Tomcat 8.5以下版本POST參數(shù)默認(rèn)按ISO-8859-1解碼不寫(xiě)過(guò)濾器必亂碼。現(xiàn)象五報(bào)“SQLSyntaxErrorException: Table pet_shop.order doesnt exist”或“You have an error in your SQL syntax”。原因數(shù)據(jù)庫(kù)腳本里把訂單表直接命名為order而ORDER是MySQL的保留字執(zhí)行SELECT、INSERT的SQL時(shí)必須用反引號(hào)轉(zhuǎn)義。解決最靠譜的是把表名改成t_order同時(shí)改代碼里所有SQL語(yǔ)句如果不想動(dòng)腳本就要把SQL里所有涉及order表的地方寫(xiě)成order注意是反引號(hào)不是單引號(hào)。同理字段名避免用name、status、desc這種常見(jiàn)保留字能省一堆無(wú)意中踩中的語(yǔ)法錯(cuò)誤。另外還有一個(gè)不是報(bào)錯(cuò)但很容易被忽略的路徑問(wèn)題JSP里引用的CSS/JS路徑。如果你看到的頁(yè)面沒(méi)有樣式、圖片全部裂開(kāi)先看瀏覽器F12網(wǎng)絡(luò)面板里靜態(tài)資源是否返回404再看頁(yè)面里的路徑是不是以/static/css/style.css開(kāi)頭還是相對(duì)路徑style.css。Servlet轉(zhuǎn)發(fā)到WEB-INF下的JSP時(shí)相對(duì)路徑會(huì)相對(duì)于Servlet的映射路徑解析所以靜態(tài)資源路徑最好全部用${pageContext.request.contextPath}拼出絕對(duì)路徑這個(gè)改法一勞永逸。6. 從課設(shè)到作品上線前值得補(bǔ)的四個(gè)增強(qiáng)點(diǎn)跑通只是及格線想讓這個(gè)網(wǎng)上寵物銷(xiāo)售商城在答辯或簡(jiǎn)歷上多幾分說(shuō)服力值得在原有代碼上補(bǔ)四個(gè)增強(qiáng)點(diǎn)。第一個(gè)是密碼加密。課設(shè)包里基本全是明文存儲(chǔ)密碼數(shù)據(jù)庫(kù)一打開(kāi)就能看到所有賬號(hào)的密碼答辯時(shí)被問(wèn)“密碼安全怎么保證”容易接不上話(huà)??梢韵劝裻_user表里password字段的長(zhǎng)度改成64然后在注冊(cè)和登錄時(shí)用MessageDigest做SHA-256哈?;蛘咭隿ommons-codec做MD5加鹽。改造量不大但能直接展示你對(duì)安全的基本認(rèn)知。第二個(gè)是連接池。DBUtil里每次getConnection都是DriverManager現(xiàn)連現(xiàn)斷換成Druid連接池只需要改DBUtil的靜態(tài)初始化塊配置一個(gè)DruidDataSource取連接換成dataSource.getConnection()連接池的復(fù)用機(jī)制就生效了。第三個(gè)是日志。現(xiàn)在代碼里全是System.out.println上線后根本沒(méi)法排查問(wèn)題加一個(gè)Log4j2依賴(lài)把關(guān)鍵操作——登錄成功、下單成功、庫(kù)存不足——用logger.info記錄異常用logger.error記錄這是從“能跑”到“能用”最關(guān)鍵的一步。第四個(gè)是業(yè)務(wù)校驗(yàn)。比如注冊(cè)時(shí)的用戶(hù)名重復(fù)判斷、下單前的庫(kù)存預(yù)檢、購(gòu)物車(chē)數(shù)量不能為負(fù)數(shù)這些邊界校驗(yàn)不一定在課設(shè)包里。改完這四點(diǎn)后建議按一套冒煙測(cè)試清單過(guò)一遍注冊(cè)新用戶(hù) → 登錄 → 修改個(gè)人信息 → 瀏覽商品列表并翻頁(yè) → 把一件商品加進(jìn)購(gòu)物車(chē) → 修改購(gòu)物車(chē)數(shù)量 → 提交訂單 → 在訂單列表看到剛下的單 → 管理員登錄后臺(tái)看到訂單和庫(kù)存變化。每一步通過(guò)的標(biāo)準(zhǔn)不是頁(yè)面沒(méi)報(bào)錯(cuò)而是數(shù)據(jù)庫(kù)里對(duì)應(yīng)的表產(chǎn)生了正確的數(shù)據(jù)變更。這套流程走完這個(gè)JavaWeb課設(shè)才算真正歸你所有。我早期跑一個(gè)ServletJSP課設(shè)的時(shí)候在Tomcat配置上耗了兩個(gè)晚上最后發(fā)現(xiàn)只是Deployment里沒(méi)添加Artifact。后來(lái)養(yǎng)成了一個(gè)習(xí)慣拿到任何源碼包先看README、再導(dǎo)SQL、最后拖進(jìn)IDEA跑順序不亂問(wèn)題就少一大半。希望這個(gè)順序?qū)δ阋灿杏谩1疚倪€有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天爽天天爽天天爽天天爽天天爽| 人人看人人草人人摸| 麻豆观看夏晴子| 性色天| 秋霞学生妹一二级| 色婷婷伊人| 五月天丁香久久综合| 国産精品| 婷婷丁香六月| 开心五月网| 婷婷五月丁香影院| 亚洲精品亚洲人成人网| 99久在线观看| 99综合一区| 丁香伍月婷电影全集| 婷婷香五月天| 丁香六月色婷婷| 很很干夜夜干| 色屌丝中文字幕| 精品九九视频| 春色激情| 天堂成人A片永久免费网站| 97香蕉碰碰人妻国产欧美| 丁香六月天堂| va婷婷| 激情播丁香| 五月丁香欧美综合| 国产老熟妇亲子乱对白| 久久九九中文字幕| 色婷婷久久天天性爱| 久热久re| 九色在线观看91av| 91精品又长又大又粗又爽又猛| 91黄色五月天视频| 狠狠狠狠青草| 婷婷狠狠狠爱| 婷婷少妇激情| 人妻22p| 中文AV在线观看| 超碰99热在线观看| 丁香五月综合无码趴趴| 性色婷婷| 狠狠干综合| 9久热在线视频精品| www.com在线操视频免费观看| 婷婷中文字幕欧美| 婷婷国产五月天17c| 久久探花91swag| 欧美内射AAAAAAXXXXX| 五月丁香在线观看| 99精品国产在热久久| 婷婷激情五月天在线视频| 国产亚洲99久久精品| 丁香五月91| 热久国产| 天天色爽| 五月丁香久久丝袜啪啪| 色色色色色网| 中文无码婷婷| 亚洲精品又粗又大又爽A片| 俺也去色| 激情五月婷婷她| 热婷婷久| site:901-07.com| 激情五月激情综合网一级丸片| 淫荡家庭AV| 26uuu.| 婷婷亚洲五月丁香综合在线| 婷婷丁香五月综合激情视频| 99熟女视频| 91狠狠综合久久| www99热| 国产精品久久久久久久久久| 久久99日本精品视频免费观看| 久久日韩婷婷五月| 久久五月视频| 久久五月天色| www.色五月| 精品色色| 热热99爱爱| 六月丁香综合| 天天操天天国产三级片处女学生妹| 久久99草五月婷婷| 亚洲天堂热| 丁香五月丐人妻| 夜夜操少妇| 五月中旬婷婷丁香六| 久久人妻伦理| 激情五月天网站| 无码AV免费精品一区二区三区| 色综合99无码 | 26.uuu丁香五月婷婷| 99熟女| 女人天堂av| 婷婷丁香人妻天天久久| www久久99| 亚洲啪| 久久99久久99精品免观看粉嫩| 五月天五月色婷婷综合| 99热成人精品网站| 在线看片h站| 99色免费| 婷婷五月天熟妇| 99色视频| 丁香婷婷浪潮AV久久综合| 五月色丁香| 婷婷在线五月天观看| 美女美女美女三级色天天天天天| 26uuu欧美| 亚洲99热| 亚洲婷婷丁香五月亚洲| 欧美五月丁香在线| 色综合中文| 狠狠CAO日日穞夜夜穞AV | 最近中文字幕大全免费版在线| 99热伊人综合| 亚洲成片在线观看| 亚洲国产色色| 99国产精品白浆在线观看免费| 久热精品在看| 亚州精品久久久久AV无码| 婷婷五月天影院| 91九色网| 婷婷五月天色| 91在线日| 97婷婷狠狠| 久9精品视频在线| 99视频在线观看网址| 蜜乳国产网站| 丁香五月-激情综合| 99热r| 五月天色不卡| 九伊人网| 亚洲黄色精品| 7月婷婷六月丁香| 人人综合久| 超碰熟女农村在线69| 六月丁香花婷婷| 成人无码精品1区2区3区免费看| 97操女视频| 免费99情趣网视频| 色99视频| 亚洲激情 久久| 久9视频免费播放| 99爱操| 婷婷五月天激情四射五月天激情| 99色色视频| 成人av观看| 丁香五月天成人| 日日干日日| 婷婷激情综合网| 五月天激情视频| 色天使色综合| 欧美婷婷精品激情| 欧美久人人| 天天色综合综合| 做爰丰满少妇1313| 欧洲亚洲欧洲99久久| 超碰av在线| 五月天婷婷色| 五月丁香成人网| 九九香蕉网| 久热中文字幕| 伊人激情影院| 五月天性色| 专区无日本视频高清8| 99er日韩| 亚洲亚洲人成综合网络| 激情久久综合网| 99精品视频在线观看| 日本怕怕视频| 国产午夜精品AV一区二区麻豆| 深爱 五月天| 狠狠五月天| 久热久色| 中文毛片无遮挡高潮免费| 亚洲夜五月| 久/久精品99看9| 深爱五月激情网| 开心五月婷婷| 亚洲综合在线丁香五月| 久久人操-久草婷婷-成人AV| 九色无码| 九九九九九九九热| 秋霞av不能| 婷婷久久综合| 亚洲国产色色| 激情婷婷在线中文字幕| 噜噜在线| 五月婷婷婷婷网| 日本少妇AA一级特黄大片| 99色视频在线| www久久99com| 91主播在线| 99国产在线| 色在线99| 九九家庭影院| 色婷婷丁香AV综合| 婷婷丁香六月| 79色色免费| 碰久久精品w| 少妇激情五月天| WWW免费视频碰碰碰碰| 97精品综合久久| 天天噜天天插| 日日噜噜久久婷婷五月天| 日本爆乳片手机在线播放| 99自拍视频网站| 九九碰九九爱97| 六月丁香婷婷在线波多 | 潮汕成人AV片在线| 精品久久人妻| 在线可以看的av网址| 五月天停婷基地| 久久机热/这里只有精品| 伍月激情天| 婷婷丁香成人色综合| www.婷婷五月| 色欲日日躁| 色涩影院六月丁香| 一本大道伊人AV久久综合| 可以看的AV网站| 淫视馆aV二区一区| 欧美男女婷婷| 成人综合网站| 97操视频| 日日天天干| 六月亚洲婷婷6月中文字幕| 91综合视频丁香| 97人人射| 久久久婷婷色五月资源网| 丁香色婷婷| 五月丁香久久丝袜啪啪| 激情综合网丁香| 婷婷热色| 中字幕视频在线永久在线观看免费 | 欧美va在线| 久久机热这里只有精品| 婷婷天天插天天爱| 99久久综合网| 激情综合色婷婷啪啪六月天| 大香蕉视频99| 免费看欧美成人A片无码| 欧美在线97| 婷婷综合伊人丁香| 蜘蛛女免费观看完整版高清电影| 亚洲中文av| 婷婷色综合网日韩国产| 国产精品色情AAAAA片软件| 日本久热| 一区二区免费看| 99思思热只有在这里看| 五月婷婷co.m| 六月婷婷五月丁香首页| 色五月综合网| 亚洲综合婷婷五月| 色情婷婷。| 欧美婷婷色| 九九热99熟女| 激情五月天偷拍综合网| 这里只有精品视频一区| 逼逼AV| 色婷婷五月综合在线| 激情五月综合网丁| 色五月激情五月| 综合五月婷婷| 色色综合网站| 国产亚洲在线| 99自拍视频网站| 色婷五月天激情| 色色婷五月天| 激情五月天啪啪视频| 久久色天堂| 婷婷日韩| 欧美色必爱| 亚洲综合另类| 激情综合五月| 极品人妻VIDEOSSS人妻| 国产午夜伦鲁鲁| 91操色| 亚洲人妻Av| 亚洲av电影在线| 熟妇内谢69XXXXXA片| 天天射影院| 精品婷婷| 色欲天天综合网| 天天爱天天操| 久久久久久9| 久久人妻www| 99热成人在线观看| 操人妻视频91| 五月丁香六月激情欧美综合| 天天天久久人人人合| 婷婷色五月情| 天天操天天爱天天玩| 亚洲 无码 中文字幕 中出| 激情丁香久久| 日本va欧美va精品发布视频| 六月婷婷日| 久久婷婷五月草视频在线播放| 26uuu精品一区二区| 丁香视频| 激情综合网五月| 无码橾| 欧美性爱日韩性爱| 婷婷天堂综合| 色久婷婷网| 国产裸舞福利资源在线视频| 99爱免费在线视频| 婷婷色基地| 日本五月婷| 五月综合影院| 97碰超级人人看| 九九色婷婷| 亚洲综合激| 免費亭亭成人| 色婷婷色婷婷五月| 91婷婷在线| 婷婷五月丁香久久| 99国产精品白浆在线观看免费| 中文字幕按摩做爰| 蜜桃婷婷狠狠久久综合| 人妻综合网| 色综合99| 99这里只有精彩视频| 五月丁香亚洲婷婷| AAA久久| 色婷婷成人做爰A片免费看网站| 国产FREESEXVIDEOS性中国| 免费观看欧美成人AA片爱我多深| 6 9式性爱视频在线播放| 五月婷婷综合影院| 性爱先锋AV| 99亚洲大片精品永久在线观看| av在线色五月丁香婷区久| 九九精品网| 婷婷97碰碰| 婷婷五月天激情小说| 丁香五月花影院| CAOBIBI| 免费国产视频| 男人综合网| 99热在线免费| 婷婷久久免费| 欧美成人猛片AAAAAAA| 婷婷97C| 非洲一级AV| 丁香五月婷婷六月婷婷| 性生活久久朋友人妻| 五月丁香久人妻中文| 五月婷婷激情综合| 大香AV| 五月天丁香啪啪综合| 婷婷五月天丁香久久| 99精品自拍| 精品成人无码A片观看香草视频| www.色五月| 欧美一级色| 婷婷六月久久| 电影《战争与艾拉》免费观看| 色综合久久88色综合天天人守婷| 婷婷五月丁香五月| 久久婷婷五月天大香蕉| 99色婷婷| 九色色| 91超碰九色| 99精品丰满| 亚洲色综合| 欧美狠狠地| 日韩成人网址| 丁香五月黄色| 婷婷五月情天| 久久精品一区二区三区四区| 九九色综合| 天天干 夜夜爽| 97色色婷婷| 91综合色| 99热久| 国产精品天天狠天天看| ww亚洲ww在线观看| 九九热啪啪| 六月色 亚洲| 亚洲精品操一操、噜一噜、摸一摸、爽 | 丁香五月天在线视频| 五月丁香六月玩女人| 国产婷婷色综合AV蜜臀AV| 玖玖婷婷五月| 婷婷五月激情丁香| 欧美日韩国产一区二区| 99er热精品视频| 丁香五月天视频| 久热91精品| 五月丁香花激情综合网| 色婷婷狠狠久久综合五月| 97五月天婷婷午夜| 日本一级一级一级一级| 玖玖爱综合网| 123草逼网| 久婷婷五月天影院| 成人丁香| 天啪色| 综合网五月天123| 久久久精品人妻| AV色婷婷| 五月丁香六月激情综合| 久久精品婷婷五月丁香| 激情啪啪五月| 人妻无码精品一区| 丁香五月在线人妻| 久久香蕉影院| 色婷婷视频| 五月天色婷婷综合| WWW五月天| 天天爱天天操| 九月婷婷综合八月丁香在线观看| 99精品久久| 狠狠 婷婷| 久色| 丁香五月婷婷六月婷| 99热无码精品| 久久激情视频| 激情五月网站| 99久操视频| 色五月婷婷激情五月| 亚洲妇女熟BBW| 久久久中文| 九九热欧美| 99啪啪视频| 色婷婷久久| 久久久久久综合88| 天天干夜夜谢| 婷婷久久夜| 国产午夜精品AV一区二区麻豆| 色视五月天婷婷| 五月丁香色色网| 婷丁香久综合| 97热91| 性色99| 日美三级| 蜜臀嫩草| 国产免费一区二区三州老师F1F1……| 婷婷九月在线| 色噜噜狠狠色综合AV兰草影视| 91操人视频| 五月花成人网| 婷婷五月色花丁香社区| 五月天开心色情网| 色情丁香五月天| 欧美五月停| 色欲久久久久| 久久婷五月婷| 激情操逼婷婷| 激情四射婷婷| 伊人日日干| 日韩三级视频一区二区| 狠狠色噜噜狠狠狠狠综合| 色五月综合网| 丁香婷婷天堂| 五月婷婷激情久久| 六月婷婷色五月| 91 久热| 999久久久国产精品| 六月丁香啪啪| 岛国AAAV| 五月丁香婷婷啪啪| 婷婷五月天日日日干干干| 综合婷| 噜噜视频| 婷婷综合五月天亚洲综合| 玖玖精品婷婷| 日本一毛片| 我要色综合五月婷婷| 免费日本aⅴ中文字幕| 五月婷婷六月情| 337p大胆噜噜噜噜噜91Av| 疯狂做受XXXX高潮A片| 色五月激情| 亚洲网站999| 色一情一乱一伦一区二区三区| 亚洲激情免费视频观看| 五月丁香在线视频观看| 久99热在线观看| 国产精品18久久久| 日韩高清成人| 成人婷婷桔色| 色欲五月婷婷| 草榴成人影片| 99热综合| 99精品在线观看视频| 婷婷综合成人五月天| 9有码中文| 国产乱子轮XXX农村| 欧美色频| 婷婷五月天激情五月天网站| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 亚洲天堂色色| 天天干天天做| 人人视频色| 99九九精品| 91精品国产色猫| 日韩无码色色| 超碰网站在线观看| 五月婷婷二月丁香| 五月丁香六月激情狠狠| 亚洲乱码w在线观看| 777影视理论片大全在线观看| 五月丁香婷婷爱| 婷婷丁香五月激情中文字幕版| 超碰二区| 4438激情网| 永久天堂日本| 波多婷婷久久| 香蕉AV777XXX色综合一区| 久久99精品视频| 99看片| 九九热区一区二区三区| 精品视频99看在线视频| 久久丝袜婷婷| av无码电影| 97色综合| 色色亚洲99com| 久热久| 天天色天天| 欧美三日本三级少妇三99| 丁香六月情| 久久成人精品视频| 亚洲第一视频 久久| 婷婷五月天另类视频| 色婷婷av在线观看| 五月婷久久| 天天操精品| 丰滿爆乳一区二区三区| 热99玖玖99玖玖99九九| 天堂婷婷综合| 成人AV在线中文版| av婷婷丁香| 99精品丁香五月| www.超碰97| 偷拍五月丁香| 激情五月天色播| 九九热视频这里只有精品| 另类图片色五月| 色婷婷五月在线| 超碰在线观看9| 五月婷婷,狠狠操| 激情五月丁香六月综合AVXXXX| 激情五月天综合婷婷网| 五月天婷婷影院| 久久久免费精彩视频| 婷婷丁香五月婷婷| 色欲影香| 婷婷天天日婷婷| 色婷婷五月综合| 成人午夜无码视频| 日本视频久久| www.99操.com| 六月丁香婷婷色狠狠久久| 天堂色色色| 在线资源av-超碰中文在线-成人AV| 综合一区二区三区| 六月丁香婷婷视频综合在线观看| 亚洲五月天综合色| 极品 少妇 内射| 丁香五月综合在线视频| 五月天激情网图片| 五月丁香啪| 六月婷婷五月天| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 色噜噜狠狠色综| 99热精在线九九久久保| 丁香五月激情婷婷| 26uuu在线观看| 玖玖玖婷婷婷| 精品99在线看| 深爱五月激情网| 色综合性视频| 婷婷五月天激情小说| 色色色婷婷五月天| 五月天开心网| 免费人人操| www.色五月.com| 有码人妻久久| 丰满熟女人妻一区二区三| 91精品国产99久久久久久天美| 99综合视频| 婷婷五月天免费99| 丁香婷婷色色| 久操操| 欧美综合婷婷网| 夜夜骑天天操| 亚洲另类婷婷综合| 亚洲欧洲美女在线观| 日本九九网| 久久女婷| 夜夜www| 开心激情网五月天| 99热综合网| 老师的粉嫩小又紧水又多A片视频| 中字幕视频在线永久在线观看免费 | 这里只有免费的精品| 激情综合综合综合| 开心五月婷婷婷美女| 九九AV| 色色色色欧美| 99久久9| 天天五月情| 中文字幕成人影视| 色色欧美色色色| 99在线公开视频| 五月份婷婷| 人人草人| 丁香五月花| 九九操操| 色婷婷五月天激情在线观看| 成人精品一区日本无码网| 五月天操逼网| 婷婷五月激情在线视频| 成人综合网站| 99精品国产热久久91色欲| 久久66成人网站| 伊人激情影院| 亚洲久久日| 丁香五月婷婷操逼| 天天综合天天做天天综合| 噜噜色五月| 九月丁香久久网| 蜜臀A∨在线水帘洞| 九九视屏| 99久久色| 婷婷综合六月| 国产午夜精品一区二区三区嫩草| 99久久久久| 亚洲五月停停| 亚洲AV成人精品网站在线播放| 人人色婷婷五月天| 亚洲永久免费| 五月天婷综合| www.婷婷五月| 婷婷五月丁香色色| 久久久人人人妻丝丝丝| 熟女色色一区二区| 激情婷婷人妻| 色优久久| 丁香女人五月天| 99久在线精品| 婷婷97碰碰| 丁香五月六月综合欧美| 日本精品人妻无码77777| 天天色综合天天| 色五月婷婷av| 五月停停999| 激情av在线| www.AV在线| 五月激情婷婷女| 五月天色色色网| 色婷婷成人丁香| 丁香六月情| 99人妻碰碰碰久久久久禁片| 九九黄色网| 97干97色| 国产精品大香蕉| 噜噜噜噜噜在线| 丁香婷婷性爱| 91精品久久久久久久| 婷婷六月色开 | 综合久久综合久久| 99碰超| 久久男人网婷婷| 五月中旬婷婷丁香六| 天天日中文| 色情久久久| 久9热视频在线| 天天天摸夜夜夜玩| 91国产精品视频播放| 色99色| 色九月| 九月色婷婷综合| 操日视频| 久久五月天婷婷| 婷婷月五天在线在线看| 91超级碰碰| 人人舔人人色人人高潮| 性按摩玩人妻HD中文字幕| 色情五月天首页| 成片免费播放| 久久久久久丁香五月| 日本在线观看aaa 99| 亚洲欧美一区二区三区四区爱爱动图| 2022人人操人人看| 丁香激情网| 九九视频免费| 激情深爱五月天| 丁香婷婷啪啪啪| AⅤ在线播放网| 久久色五月天| 夜夜噜夜夜奇| 97狠狠碰| 五月大香蕉| 日韩综合大黄| 五月天丁香婷婷社区| 激情五月丁香亭亭 | 五月综合丁香婷婷| 五月婷婷激情网| 丁香六月毛片| 97亚洲婷婷| 99操逼| 丁香五月冃欧美| 日本人人草草| 日日日日日| 偷拍91九色| 可以免费观看的av| 99热中国| 99自拍视频在线观看| 97精品人人A片免费看| 思思re99视频在线观看| 在线日韩视频| 日日夜夜九九| 五月天婷婷激情小说电影| 日日夜夜狠狠干| 婷婷九月激情| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 日曰躁夜夜躁2026| 色婷婷偷拍| 色五月久久成人婷婷| 六月丁香停| 五月婷婷激情网| 丁香婷婷深情五月亚洲| 六月婷婷狠狠| 亚洲性爱电影| 色色综合网www| 婷婷丁香激情综合色情| 亭亭五月天黑人2014| 大香蕉精品视频| 色就色94欧美setu| 97色色色| 亚洲欧洲午夜成人精品av| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 五月天丁香久久| 激情五月丁香五月色| 五月丁香成人| 开心激情网五月| 99热99日…..| 欧美大香蕉视频| 91男人资源站| 国产精品99久久久久久久女警| pom538精品视频| 丁香五月六月激情| 色婷婷五月天天天天天| 色丁香久久| 色色综合热| 牛色色碰| 丁香婷婷啪啪| 超碰激情网| 亚亚州久久高潮| 五月婷婷中文网| 丁香五月激情综合| 激情爱爱网站| 超碰色人妾| 97色射| 这里只有精品视频| 综合婷婷| www.minyis.com【JT】实力收量可预付QQ2101460746 | 26uuu色噜噜精品一区| 狠狠干综合网| 热热99爱爱| 人与禽A片啪啪| 一级黄色影片| 99热九九热| 久久久天天啊| 婷婷深爱五月天| 丁香五月激情视频| 五月丁香色色综合| 超碰国产在线| 91人人网| 天天色天天色天天色天天色天天色| 激情com| 六月丁香婷婷视频综合在线观看| 狠狠久久婷| 婷婷色综合网日韩国产| 五月天婷婷综合色| 色色热| 99色在线观看| 97色婷婷| www.婷婷五月| 91久久99久久91熟女精品| av中文在线| 狠狠插狠狠操| 丁香五月综合| 99热综合| 成人国产欧美大片一区| 国产人妻777人伦精品HD| 天天干天天拍| 婷婷午夜| 无码一区精品一区视频| 婷婷五月丁香青青草在线| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 久综合网| A片试看50分钟做受视频| 最近中文字幕2019视频1| 国产成人精品一区二三区熟女在线| 五月婷婷色| 欧美日韩中文国产一区发布| 操碰色一区就去操| 超级碰 久久9| 欧美婷婷精品激| 天色综合网| 亚洲小电影在线观看黄999| 九九热这里只有精品5| 五月花婷婷在线精品视频| 五月天激情在线视频| 五月婷婷之六月丁香| 好激情在线综合网| 色五月大| 天天天干夜夜夜操| 国产一区二区三区影院| www.一区二区三区| 五月婷婷六月丁香玖玖玫瑰91| 五月婷婷综合久久| 五月丁香激情片| 五月婷综合性中心| 99热中文字幕久久| 少妇高潮一区二区三区99欧美| 99热这里只有精品在线| 五月天婷婷丁香| 欧美色图片88| 亚洲操B视频| 欧洲永久精品| 夜夜撸日日骑| 丁香五月婷婷亚洲色图| 婷婷丁香人妻天天爽| 亚洲成av人影院| 色八戒操婷婷| 夜夜谢天天干| 国产婷伊人| 日韩美一级毛卡片| 91精品久久久久久| 呦呦v线| 99在线免费视频| 丁香五月婷婷基地| 91久女| 丁香五月婷婷啪啪啪| 另类丁香五月天区图| 天天干肏夜夜| 色婷婷五月综合在线| 色色五月丁香| 大香蕉在线观看9| 亚洲操逼网| 国产色五月| 色色色色av色色色色| 五月婷婷性爱| 99热香港| 久鲁鲁色网 | 99精品小视频| 色五月婷婷色| 伊人五月天久久| 天天弄天天爽| 婷婷性福五月天| 久久久久久人妻| 日本九九九九九九| 99这里精品| 久久久久亚洲AV成人无码电影| 日产精品一线二线三线芒果| 一起草日本| 五月天开心色情网| 啪啪激情综合| 色97啪啪| 天天干夜夜b| 大香蕉啪啪| 久久久91精品| www。狠狠干。com| 99热这里只有精品一区| 九九热精品在线| 91网站黄| 综合色色色| 天天射网站| www.日本91| 久久er99| 免费无码毛片一区二区A片| 色九网| 深爱五月激情| 亚洲 在线 另类| 永久的网站AAAA| 丁香婷婷性久久| 97人人妻人人艹| 99热热九九| 亚洲成人在线免费| 六月婷婷九月丁香| 五月丁香婷爱在线| 久99婷婷色综合| 99热这里只有精品手机在线观看| 九九精品综合| 97欧美在线| 俺去也五月天婷婷| 26uuu成人网| 婷婷丁香高潮了| 六月 丁香 视频| 欧美日韩99| 丁香六月激情国产| 激情丁香网| 五月丁香啪啪啪| 99热日韩| 中文字幕黄色片| 激情五月综合久久| 五月天成人在线视频网站| 色色六月| 色婷婷丁香五月丁香| 狠狠色色| 91九色|疯狂|高潮|对白|| 久色激情| 国产无人区大片| 五月丁香六月激情在线| 婷婷五月娱乐在线| http://www.sd-xiangsu.com/| a网站免费观看| 九九视频网| 天天天天操| 开心五月激情| 操操碰| 开心五月丁香综合久久| 亚洲另类在线观看| 婷婷九月激情| 99热这里是精品| 精品久久人妻热| 精品人妻伦一二三区久久| 五月丁香六月婷婷,婷| 色综合五月天| 婷婷五月开心中文字幕色| 疯狂做受XXXX高潮A片| 26UUU欧美激情一区二区| 久久久亚洲精品一区二区三区浴池| 国产成人VA| 中文字幕日本最新乱码视频 | 激情五月婷婷网| 婷婷香香五月| 婷婷爱五月| 桃色激情婷婷伊人网| 欧美搡BBBBB摔BBBBB| 五月丁香久久久| 热99.com婷婷| 精品爆操| 婷婷五月天av| 大地资源色婷婷视频在线| 日日操日日干| 69精品无码一区二区三区| 99热综合| 欧洲不卡视频| 丁香五月久久| 五月婷婷免费在线观看| 第四色色六月色综合| 婷婷五月丁香六月| 91丨九色丨熟女|新版| 五月丁香啪啪| 怡红院院久久| 蜜乳人妻一区二区三区| 久久久精品AV| 成人五月天在线视频在线观看| AV成人在线网站| 99r这里| 色www.con| 精品久久久人妻| 色五月婷婷、老熟女| 九九色中文| 色欧美影院| 九九视频网| 色色色激情网| 无码色| 99国产er热视频| 五月天婷婷激情六月久久| 播五月开心婷婷欧美综合| 狠狠操之狠狠操| 99爱在线| 国产无套精品一区二区| 99久久成人| 久久99久久久| 激情综合一| 激情网综合| 日本九九网| 99精品免费视频| 精品A√| 成人在线视频网| 激情AV网| 噜噜操操| 天天模,夜夜模夜夜爽| 9热在线视频| 久久99视频| 91午夜激情| bbwcuckold精品熟妇| 国产成人精品一区二区三区视频| 97se视频在线| 五月丁香网中文字幕| 97人妻碰碰碰久久香蕉| 人妻日日日| 超碰久热| 99精品免费欧美小视频 | 91丨九色丨43老版熟女| 淫荡工a| www.色婷婷| 欧美A片在线视频免费观看| 性一交一乱一交A片久久四色| 26uuu国产色| 丁香六月婷婷综合欧美| 亚洲春色奇米影视| 99爱在线精品视频免费观看| 日日日天天干| 亚洲色色在线| 操人久久| 五月激情综合婷婷| 欧洲色色| 丁香色综合| 五五月丁香花激情综合网| se.久久视频在线观看| 色色色五月天婷婷| 99热在线观看免费精品| 九九热大香蕉| 99久久久| 热久久视频99| 综合久久婷婷五月丁香| 在线观看中文字幕亚洲| 九一牛视频探花| 免费看欧美成人A片无码| 亚洲九区| 九九精品在线观看视频6| 夜夜骑日日操| 丁香六月婷婷开心| 久久99精品久久久久久噜噜| 琪琪狠狠干| 东京热五月婷婷| 综合激情婷婷| 激情五月综合婷婷| 婷婷色操| WWW,五月| 丁香六月激情蜜桃| 开心久久爱五月天| 国产日批视频免费播放| 五月天天堂久久| 极品五月天| 性色九九| 五月丁香花成人社区| 狠狠色婷婷| 丁香婷婷五月| 色五月涩涩婷婷| 亚洲日日操| 九九九九九九九热| 婷婷成人综合免费视频| 性欧美日本| 色婷婷69| 丁香五月激情网| www.久久久久久久久久久| 五月婷婷综合在线视频| 日韩免费视频| 天天干天天插| 极品少妇XXXX精品少妇偷拍| 天天拍天天操| 九九av| 婷婷色婷婷| 99精品视频在线观看| 99久热| 五月天综合网| 中文字幕日产A片在线看| 午夜一区| 综合五月天| 大香蕉久久| AA丁香综合激情| 激情网五月天| 色狠狠综合| 中文字幕免费高清电视剧| 日本不卡高字幕在线2019| 午夜不卡久久精品无码免费| 色狠狠色噜噜AV天堂五区| 五月婷婷av在线| 另类婷婷五月天啪帕帕| 无人区码一码二码三码医生系列| 亚洲乱码日产精品BD| 丁香九月激情| 午夜天堂一区人妻| 日本久久99| 欧美激情性做爰免费视频| 国产肥白大熟妇BBBB视频| 免费看欧美成人A片无码| 无码99| 亚洲精品久久久无码| 久久日婷婷| 丁香五月九九| 在线中文字幕av| 婷婷香蕉| 深爱五月天 开心网| 婷婷深爱五月丁香网| 熟女激情五月天| 成人在线综合| 亚洲99热| 成人无码精品1区2区3区免费看| 大香蕉久久伊人网| 国产精品人妻在线网址| 亚洲区,视频区,视频区免费| 人色五月天婷婷| 婷婷激情小说| 婷婷伊人网| 中文字幕丰满孑伦无码专区| 影音先锋男人AV资源站| 中文久久婷婷| 丁香五月亚洲激情婷婷射| 天天天日天天天干| 五月丁香六月激情视频| 丁香五月婷婷网| 牛牛热这里只有jingpin| 日韩一级网站| 日本色99| 1995年关宝慧版蜘蛛女| 婷婷深爱五月天| 99色网站| 色婷丁香91| 日韩超碰在线| 熟女乱论网| 色色色com| 五月天丁香网| 丁香五月瑟瑟| 韩国19 主播内部福利vip免费播放| 91婷婷| 激情深爱综合网| 91久久婷婷| 丁香av网| 色欲五月婷婷| 激情婷婷五月天伊人在线观看 | 狠狠干五码| 色999五月色| 久热9| 98永久精品| 人人爱天天摸摸天天爱| 人妻久久久久久久| 丁香婷婷综合激情五月色| 1024欧美日韩精品久久久| 婷婷在线观看五月天在线视频| 综合色播| 亚洲天堂aaa| 久99久视频| 婷综合六月| 第二色AⅤ| 日韩高清成人| 婷婷综合中文字幕| 久久这里只精品66| 五月天婷婷激情在线色图| 国产成人精品一区二三区熟女在线| 美女91一起草| 天天色综合色| 久婷五月| 丁香六月婷婷久久综合| 国产精品视频网| 99热99热在线观看| 久久99综合网| 成人龟情网丁香五月| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 狠狠色丁香婷婷五月| 日日夜夜青青草| 婷婷成人AV| 热99精品视频| 五月天精品| 九热久| 久久视频婷婷视频| 日本婷久久| 97se在线视频| 丁香六月av| 五月丁香香蕉| 骚五月婷婷| 丁香五月激情鲁| 欧亚成人A片一区二区| 91精品啪| 五月丁香色狠狠干大屄| 大香蕉啪啪啪| 久久九九网| 亚洲综合无码| 一级七香蕉| 日本欧美国产| 高清一区二区三区日本久| 四虎成人精品永久免费AV九九| 五月丁香亚洲综合| 狠狠干.com| 97资源碰碰| 狠狠爱婷婷丁香| 香蕉97碰碰碰超视精品| 思思久久99热只有频精品66| 小香蕉av| 色综合开心五月深爱五月| 操一操干一干| 无码色色色色色| 久久婷婷91| 人人叉久| 啪啪小说五月天| 亚洲色图五月丁香五月婷婷| 伍月婷丁香婷| 五月天激情丁香| AV在线资源| 久9久9久9久9久9久9| 五月丁香啪啪综合网| 丁香五月欧美午夜视频| 色婷婷情片| 国产性爱一级| 午夜婷婷久久| 久热AA| 国产成人在线不卡AV| 五月婷婷色五月| 婷婷丁香精品视频在线观看| 亚洲综合狠狠艹| 激情综合网激情五月俺也去| 第四色婷婷色五月| 香蕉曰比| 色婷婷裸体色性在线| 9色小视频在线观看| 99热这里只有精品1| 性爱五月婷| 欧美色五月| 色播激情| 天天五月天综合网址| 丁香社92视频| 激情网站综合五月天| 新激情婷婷| 天天五月情| 性爱五月婷| 五月天激情网站| 狠狠综合网| 欧美大香蕉视频| 91九色精品女同系列| 激情婷婷五月天| 丁香五月激情六月欧亚激情综合导航 | 66久久视频在线| 五月丁香777| 色五月av伊人| 婷婷五月激情黄色| 99成人精品视频| 99视频在线播放大全| 超碰在线综合| 女人露出p毛视频www网站| 无码少妇高潮喷水A片免费| 欧美天天性| 亚洲成片在线观看| 五月丁香亚洲综合| 六月丁香婷婷综合狠狠爱夜夜爱| 99热在线只有精品| 人妻AV中文系列| 91视屏在线观看com.wwwvv| 五月天丁香久久综合| 国产va视频| 久久久www| 丁香五月天堂网| 久久小片| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 狠狠香蕉| 深爱婷婷色| 狠狠久久婷婷| 国产欧洲欧洲精品久久| 99久久婷婷国产综合精品草原| 亚洲愉拍99热成人精品| 色中色综合| 人人操日| 亚洲亚洲人成综合网络| 第五色色色婷婷| 五月婷婷激情网| 亚洲最大成人综合网720P| 色综合伊人网| 久久 婷婷 五月天| 免费视频无码| 人人摸人人| 99 热| 五月天大香蕉婷| 欧美成人va| 六月丁香成人| 五月天丁香欧美激情|