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

ARTICLE DETAIL

資訊詳情

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

JavaWeb超市管理系統(tǒng)畢業(yè)設(shè)計(jì):基于JSP+Servlet+MySQL的完整實(shí)現(xiàn)方案

JavaWeb超市管理系統(tǒng)畢業(yè)設(shè)計(jì):基于JSP+Servlet+MySQL的完整實(shí)現(xiàn)方案 簡(jiǎn)介基于 Java Web 的超市管理系統(tǒng)畢業(yè)設(shè)計(jì)項(xiàng)目?jī)?nèi)含完整源碼、數(shù)據(jù)庫(kù)腳本和運(yùn)行配置面向計(jì)算機(jī)、通信、人工智能、自動(dòng)化等專(zhuān)業(yè)的學(xué)生、老師及從業(yè)者。項(xiàng)目經(jīng)過(guò)調(diào)試與測(cè)試答辯評(píng)審分達(dá) 98 分整體可作為期末課程設(shè)計(jì)、課程大作業(yè)或畢業(yè)設(shè)計(jì)的直接參考。壓縮包共 386 個(gè)文件大小 10.36MB其中 49 個(gè) Java 源文件和 56 個(gè) JSP 頁(yè)面構(gòu)成主要業(yè)務(wù)邏輯與頁(yè)面層98 個(gè) class 文件為編譯后字節(jié)碼可直接部署運(yùn)行SQL 腳本可快速導(dǎo)入建庫(kù)另有 XML 配置、CSS/LESS/SCSS 樣式、JavaScript 腳本及圖片等資源覆蓋前端展示與后端處理所需內(nèi)容。項(xiàng)目中控制器、DAO 實(shí)現(xiàn)類(lèi)與 JSP 頁(yè)面分層明確可快速定位商品、會(huì)員、供應(yīng)商、結(jié)賬等核心功能入口。已有 156 人學(xué)習(xí)使用適合作為入門(mén)到進(jìn)階的實(shí)踐素材基礎(chǔ)較好的讀者可在現(xiàn)有功能模塊上繼續(xù)擴(kuò)展也可以按自身需求調(diào)整業(yè)務(wù)邏輯具有較強(qiáng)的二次開(kāi)發(fā)價(jià)值。1. 這個(gè) javaweb 超市管理系統(tǒng)到底在做什么值不值得選每年畢業(yè)季總有人從各種渠道下載到基于 javaweb 的超市管理系統(tǒng)這類(lèi)項(xiàng)目解壓后對(duì)著十幾個(gè)文件夾和一坨 XML 配置發(fā)呆要么數(shù)據(jù)庫(kù)連不上要么頁(yè)面 404最后一邊罵怎么跑不起來(lái)一邊又找下一個(gè)源碼包。實(shí)際上這個(gè)題目是 javaweb 方向最穩(wěn)妥的畢業(yè)設(shè)計(jì)選題之一它不追求新框架而是把 JSP、Servlet、MySQL、JDBC 這一套經(jīng)典技術(shù)棧完整串起來(lái)做成一個(gè)業(yè)務(wù)閉環(huán)完整的系統(tǒng)。你做完它既能在答辯時(shí)把每一行代碼講明白又能在簡(jiǎn)歷上寫(xiě)?yīng)毩⑼瓿蛇M(jìn)銷(xiāo)存核心模塊設(shè)計(jì)與實(shí)現(xiàn)。如果你正在糾結(jié)選題或者已經(jīng)在做但卡在某個(gè)環(huán)節(jié)這篇文章把從建庫(kù)到部署的完整方案拆開(kāi)講。這個(gè)系統(tǒng)的價(jià)值不在于超市這個(gè)業(yè)務(wù)本身而在于它覆蓋了 javaweb 項(xiàng)目最常見(jiàn)的三類(lèi)核心需求登錄權(quán)限控制、商品進(jìn)銷(xiāo)存數(shù)據(jù)流轉(zhuǎn)、報(bào)表統(tǒng)計(jì)。這些能力換個(gè)殼放到圖書(shū)管理、藥店管理、倉(cāng)庫(kù)管理系統(tǒng)里完全通用。它的技術(shù)棧舊但不過(guò)時(shí)——你去看很多公司的老舊維護(hù)項(xiàng)目還在用 JSPServlet 的并不少見(jiàn)。適合的人群很明確JavaWeb 剛學(xué)完、需要鞏固綜合能力的學(xué)生以及想快速搭建一個(gè)能演示、能答辯、能寫(xiě)進(jìn)簡(jiǎn)歷的項(xiàng)目的人。2. 選型與數(shù)據(jù)庫(kù)設(shè)計(jì)為什么用 JSPServlet 而不是 Spring Boot2.1 技術(shù)選型畢業(yè)設(shè)計(jì)場(chǎng)景下 jspservlet 依舊是穩(wěn)妥方案很多人會(huì)問(wèn)現(xiàn)在企業(yè)里都用 Spring Boot為什么畢業(yè)設(shè)計(jì)還選 Servlet這不是技術(shù)落后而是答辯邏輯決定的。畢業(yè)設(shè)計(jì)評(píng)委會(huì)問(wèn)你連接池怎么做請(qǐng)求怎么分發(fā)事務(wù)怎么控制如果你用 Spring Boot這些都被框架封住了你說(shuō)不出底層實(shí)現(xiàn)只能答框架幫我處理了這在本科答辯里很吃虧。而 JSPServlet 這套組合你能明確說(shuō)出瀏覽器發(fā)請(qǐng)求到 TomcatServlet 接收請(qǐng)求調(diào)用業(yè)務(wù)層業(yè)務(wù)層通過(guò) JDBC 操作 MySQL數(shù)據(jù)渲染到 JSP 頁(yè)面返回。這條鏈路每一個(gè)環(huán)節(jié)都是你自己的代碼評(píng)委看得見(jiàn)你的工作量。常見(jiàn)做法是三層的 MVC 結(jié)構(gòu)JSP 負(fù)責(zé)頁(yè)面展示Servlet 負(fù)責(zé)接收請(qǐng)求和控制跳轉(zhuǎn)ServiceDAO 負(fù)責(zé)業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù)操作。有些同學(xué)會(huì)把業(yè)務(wù)全寫(xiě)在 Servlet 里頁(yè)面里嵌大量 Java 代碼系統(tǒng)照樣能跑但數(shù)據(jù)庫(kù)連接不關(guān)、SQL 拼字符串這些問(wèn)題會(huì)在答辯時(shí)被追問(wèn)得很痛苦。我一般建議用 Druid 連接池配合 JdbcTemplate 或者原生 JDBC 封裝既避免手寫(xiě)連接管理的低級(jí)錯(cuò)誤又保留了 SQL 的可見(jiàn)性。2.2 建庫(kù)建表八張表拆解超市業(yè)務(wù)的最小閉環(huán)數(shù)據(jù)庫(kù)是標(biāo)題里含數(shù)據(jù)庫(kù)的分量所在表結(jié)構(gòu)設(shè)計(jì)得好不好答辯時(shí)一眼就能看出來(lái)。超市管理系統(tǒng)最少需要八張表用戶表、商品分類(lèi)表、商品表、供應(yīng)商表、進(jìn)貨單表、進(jìn)貨明細(xì)表、銷(xiāo)售單表、銷(xiāo)售明細(xì)表。用戶表管登錄分類(lèi)表管商品的層級(jí)歸類(lèi)商品表是核心進(jìn)貨和銷(xiāo)售通過(guò)單據(jù)表加明細(xì)表的方式記錄這樣每一筆業(yè)務(wù)都有據(jù)可查。先創(chuàng)建數(shù)據(jù)庫(kù)再按依賴順序建表以下是核心建表腳本MySQL 5.7 及以上均可運(yùn)行CREATE DATABASE IF NOT EXISTS supermarket_db DEFAULT CHARACTER SET utf8mb4; USE supermarket_db; -- 用戶表區(qū)分管理員、收銀員、倉(cāng)管員 CREATE TABLE t_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(32) NOT NULL UNIQUE COMMENT 登錄名, password VARCHAR(64) NOT NULL COMMENT 存儲(chǔ)MD5加密后密文, real_name VARCHAR(32) COMMENT 姓名, role TINYINT NOT NULL DEFAULT 1 COMMENT 1管理員 2收銀員 3倉(cāng)管員, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB COMMENT用戶表; -- 商品表中庫(kù)存字段承擔(dān)關(guān)鍵預(yù)警職責(zé) CREATE TABLE t_product ( id INT PRIMARY KEY AUTO_INCREMENT, category_id INT NOT NULL COMMENT 關(guān)聯(lián)分類(lèi)表, product_code VARCHAR(32) NOT NULL UNIQUE COMMENT 商品編碼掃碼槍掃的就是它, product_name VARCHAR(64) NOT NULL, spec VARCHAR(64) COMMENT 規(guī)格如500ml/瓶, unit VARCHAR(8) NOT NULL COMMENT 單位瓶/包/盒, purchase_price DECIMAL(10,2) NOT NULL COMMENT 進(jìn)價(jià)成本計(jì)算依據(jù), sale_price DECIMAL(10,2) NOT NULL COMMENT 售價(jià), stock INT NOT NULL DEFAULT 0 COMMENT 當(dāng)前庫(kù)存, stock_min INT NOT NULL DEFAULT 10 COMMENT 庫(kù)存預(yù)警下限, status TINYINT DEFAULT 1 COMMENT 1上架 0下架, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB COMMENT商品表;這段 SQL 里最值得注意的設(shè)計(jì)決策是庫(kù)存字段直接冗余在商品表里。有些教程會(huì)把庫(kù)存設(shè)計(jì)成每次進(jìn)貨和銷(xiāo)售時(shí)去單據(jù)明細(xì)表里 SUM 計(jì)算得到理論上更規(guī)范但實(shí)際業(yè)務(wù)里每次查詢商品都要掃描所有明細(xì)數(shù)據(jù)庫(kù)壓力和代碼復(fù)雜度都不合算。在超市這種高頻讀商品的場(chǎng)景下冗余一個(gè) stock 字段讓查詢變成一次主鍵讀取配合事務(wù)控制來(lái)保證不超賣(mài)是工程上更務(wù)實(shí)的做法。商品編碼 product_code 建議用純數(shù)字條碼格式后面對(duì)接掃碼槍輸入時(shí)不需要改代碼。供應(yīng)商表、進(jìn)貨單表和明細(xì)表的結(jié)構(gòu)同樣要注意關(guān)聯(lián)方式。進(jìn)貨單主表只存供應(yīng)商、操作員、總金額、進(jìn)貨時(shí)間每一條商品進(jìn)入進(jìn)庫(kù)明細(xì)表。這種主表明細(xì)表的設(shè)計(jì)在銷(xiāo)售單上同樣適用是進(jìn)銷(xiāo)存系統(tǒng)的通用范式。下面把這三張表的建表語(yǔ)句補(bǔ)全CREATE TABLE t_supplier ( id INT PRIMARY KEY AUTO_INCREMENT, supplier_name VARCHAR(64) NOT NULL, contact VARCHAR(32) COMMENT 聯(lián)系人, phone VARCHAR(20), address VARCHAR(128) ) ENGINEInnoDB COMMENT供應(yīng)商表; -- 進(jìn)貨單主表一筆進(jìn)貨對(duì)應(yīng)一條記錄 CREATE TABLE t_stock_in ( id INT PRIMARY KEY AUTO_INCREMENT, supplier_id INT NOT NULL, user_id INT NOT NULL COMMENT 操作員, total_amount DECIMAL(10,2) NOT NULL COMMENT 進(jìn)貨總金額冗余存儲(chǔ)便于統(tǒng)計(jì), stock_in_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB COMMENT進(jìn)貨單主表; -- 進(jìn)貨明細(xì)一條主表記錄對(duì)應(yīng)多行商品 CREATE TABLE t_stock_in_item ( id INT PRIMARY KEY AUTO_INCREMENT, stock_in_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL COMMENT 進(jìn)貨數(shù)量, price DECIMAL(10,2) NOT NULL COMMENT 當(dāng)時(shí)進(jìn)價(jià)商品改價(jià)不影響歷史單據(jù) ) ENGINEInnoDB COMMENT進(jìn)貨明細(xì)表;明細(xì)表里冗余 price 字段是一個(gè)關(guān)鍵設(shè)計(jì)如果商品進(jìn)價(jià)變動(dòng)歷史單據(jù)里的價(jià)格仍然保持錄入時(shí)的值不會(huì)跟著商品表一起變。這在做利潤(rùn)統(tǒng)計(jì)和審計(jì)時(shí)非常重要。另一個(gè)關(guān)鍵點(diǎn)是金額的冗余存儲(chǔ)進(jìn)貨單主表里的 total_amount 是通過(guò)明細(xì)算完后寫(xiě)進(jìn)去的統(tǒng)計(jì)某月進(jìn)貨總額直接 SUM 主表即可不用再 JOIN 明細(xì)表這是典型的以空間換時(shí)間的做法。2.3 把 SQL 導(dǎo)入數(shù)據(jù)庫(kù)并驗(yàn)證表結(jié)構(gòu)建表語(yǔ)句準(zhǔn)備好后啟動(dòng) MySQL 服務(wù)在命令行或者 Navicat 里執(zhí)行腳本。如果你用的是 MySQL 8.0 以上版本要注意驅(qū)動(dòng)和連接串的差異這在后面連接池配置時(shí)會(huì)詳細(xì)講。導(dǎo)入后執(zhí)行SHOW TABLES;應(yīng)該能看到全部八張表再執(zhí)行DESC t_product;檢查字段類(lèi)型確認(rèn)utf8mb4字符集沒(méi)有亂碼風(fēng)險(xiǎn)。創(chuàng)建一個(gè)測(cè)試用戶并插入一條商品數(shù)據(jù)方便后面聯(lián)調(diào)登錄和商品查詢功能INSERT INTO t_user(username, password, real_name, role) VALUES(admin, MD5(123456), 系統(tǒng)管理員, 1); INSERT INTO t_product(category_id, product_code, product_name, unit, purchase_price, sale_price, stock, stock_min) VALUES(1, 6901234567890, 農(nóng)夫山泉550ml, 瓶, 1.20, 2.00, 100, 20);這里插入的是 MD5 加密后的密碼實(shí)際開(kāi)發(fā)中更好的做法是 MD5 加鹽但畢業(yè)設(shè)計(jì)用 MD5 已經(jīng)足夠描述清楚你的加密方案。注意建表順序——先建用戶表和分類(lèi)表再建商品表因?yàn)樯唐繁淼耐怄I依賴分類(lèi)表如果順序反過(guò)來(lái)會(huì)報(bào) 1215 錯(cuò)誤無(wú)法添加外鍵約束。3. 搭建 javaweb 項(xiàng)目骨架Maven 結(jié)構(gòu)、連接池和第一個(gè) Servlet3.1 用 IDEA 新建項(xiàng)目并引入依賴現(xiàn)在開(kāi)始建工程。這里以 IDEA 2022 及以上版本為例新建項(xiàng)目時(shí)選擇 Maven 的 webapp 模板或者直接建一個(gè)普通 Maven 項(xiàng)目再右鍵添加框架支持—Web兩種方式都可以。項(xiàng)目結(jié)構(gòu)上src/main/java放 Java 代碼src/main/resources放配置文件和 SQL 腳本src/main/webapp放 JSP 頁(yè)面和靜態(tài)資源。這里要提醒一下很多畢業(yè)設(shè)計(jì)源碼包是從 Eclipse 導(dǎo)出的目錄結(jié)構(gòu)是 src/webroot拿到 IDEA 里要手動(dòng)調(diào)整否則部署時(shí)找不到 JSP 文件。我見(jiàn)過(guò)太多人卡在這步。在pom.xml里引入關(guān)鍵依賴版本要匹配你本機(jī)的環(huán)境和 Tomcat 版本。下面是核心依賴配置dependencies !-- Servlet APITomcat 9 對(duì)應(yīng) javax.servlet-api 4.0.1 -- dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version4.0.1/version scopeprovided/scope /dependency !-- JSP API -- dependency groupIdjavax.servlet.jsp/groupId artifactIdjavax.servlet.jsp-api/artifactId version2.3.3/version scopeprovided/scope /dependency !-- JSTL 標(biāo)簽庫(kù) -- dependency groupIdjstl/groupId artifactIdjstl/artifactId version1.2/version /dependency !-- MySQL 驅(qū)動(dòng)按本地?cái)?shù)據(jù)庫(kù)版本選擇8.0.33 兼容 5.7 和 8.0 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency !-- Druid 連接池 -- dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.20/version /dependency /dependenciesscope為 provided 的依賴在打包時(shí)不會(huì)打進(jìn)去因?yàn)?Tomcat 自帶 Servl et 和 JSP 的 API 實(shí)現(xiàn)重復(fù)打入反而會(huì)報(bào)沖突。如果本地 MySQL 是 5.6 或 5.7也可以把連接驅(qū)動(dòng)換成mysql-connector-java 5.1.49對(duì)應(yīng)的driverClassName也要同步調(diào)整。Druid 是目前國(guó)內(nèi)中小項(xiàng)目里最常用的連接池提供監(jiān)控頁(yè)面和 SQL 防注入功能答辯時(shí)可以多講它它不只是連接復(fù)用還能幫你看到每個(gè) SQL 的執(zhí)行耗時(shí)。3.2 編寫(xiě) db.properties 和 Druid 工具類(lèi)連接配置單獨(dú)放在src/main/resources/db.properties里方便切換環(huán)境。這里有一個(gè)高頻踩坑點(diǎn)MySQL 8.0 的連接驅(qū)動(dòng)類(lèi)名是com.mysql.cj.jdbc.Driver而 5.7 時(shí)代是com.mysql.jdbc.Driver抄舊源碼的人經(jīng)常在這里翻車(chē)。另外連接串里要顯式指定useUnicodetruecharacterEncodingutf8和serverTimezone否則插入中文數(shù)據(jù)會(huì)亂碼高版本 MySQL 還會(huì)直接報(bào)時(shí)區(qū)錯(cuò)誤。driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://127.0.0.1:3306/supermarket_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai usernameroot password你自己的密碼 # 初始連接數(shù)、最大連接數(shù)、最大等待時(shí)間 initialSize5 maxActive20 maxWait60000在java目錄下建com.supermarket.util.DBUtil類(lèi)。這個(gè)工具類(lèi)全局只創(chuàng)建一個(gè) DruidDataSource 實(shí)例所有 DAO 層代碼都通過(guò)它拿連接和釋放資源。注意這里必須用靜態(tài)代碼塊保證只初始化一次否則每次請(qǐng)求都新建連接池會(huì)被系統(tǒng)資源直接拖垮package com.supermarket.util; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; public class DBUtil { private static DataSource dataSource; static { try { InputStream in DBUtil.class.getClassLoader().getResourceAsStream(db.properties); Properties props new Properties(); props.load(in); dataSource DruidDataSourceFactory.createDataSource(props); } catch (Exception e) { throw new ExceptionInInitializerError(數(shù)據(jù)庫(kù)連接池初始化失敗 e.getMessage()); } } public static Connection getConnection() throws Exception { return dataSource.getConnection(); } /** 數(shù)據(jù)庫(kù)連接池中拿到的連接調(diào)用 close() 只是歸還連接 */ public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs ! null) rs.close(); } catch (Exception ignored) {} try { if (stmt ! null) stmt.close(); } catch (Exception ignored) {} try { if (conn ! null) conn.close(); } catch (Exception ignored) {} } }代碼邏輯上這類(lèi)工具類(lèi)是整個(gè)系統(tǒng)的地基。任何 DAO 里都通過(guò)DBUtil.getConnection()拿連接用完必須調(diào)用close()歸還。Druid 的close()行為不是真正關(guān)閉連接而是歸還到池里這一點(diǎn)要在答辯時(shí)說(shuō)清楚——你并不是放棄了連接而是在做連接復(fù)用。參數(shù)方面maxActive設(shè) 20 對(duì)畢業(yè)設(shè)計(jì)足夠并發(fā)量不大的情況下 20 個(gè)連接已經(jīng)富余maxWait設(shè) 60000 表示如果池里沒(méi)有空閑連接最多等待 60 秒超時(shí)則拋出異常避免請(qǐng)求無(wú)限阻塞。3.3 用 BaseServlet 統(tǒng)一請(qǐng)求分發(fā)告別 Servlet 類(lèi)爆炸如果按傳統(tǒng)方式做商品模塊要寫(xiě)商品列表 Servlet、添加商品 Servlet、刪除商品 Servlet……一個(gè)模塊三四張 Servlet 類(lèi)整個(gè)系統(tǒng)會(huì)膨脹到二十多個(gè)類(lèi)維護(hù)起來(lái)非常痛苦。這里換一種思路寫(xiě)一個(gè) BaseServlet 子類(lèi)利用反射根據(jù)請(qǐng)求參數(shù)里的action值來(lái)路由到子類(lèi)的具體方法。這是一個(gè) show 代碼功力明顯的設(shè)計(jì)答辯時(shí)講出來(lái)能加分不少。BaseServlet 代碼如下package com.supermarket.servlet; import com.supermarket.util.DBUtil; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Method; /** * 所有業(yè)務(wù) Servlet 的父類(lèi) * 子類(lèi)通過(guò)繼承它自動(dòng)獲得按 action 參數(shù)分發(fā)請(qǐng)求的能力 */ public class BaseServlet extends HttpServlet { Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding(UTF-8); String action req.getParameter(action); if (action null || action.isEmpty()) { resp.sendError(400, 缺少 action 參數(shù)); return; } try { // 反射調(diào)用子類(lèi)中與 action 同名的方法 Method method this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class); method.setAccessible(true); method.invoke(this, req, resp); } catch (Exception e) { throw new ServletException(請(qǐng)求分發(fā)失敗 action, e); } } }邏輯上所有的業(yè)務(wù) Servlet 都繼承這個(gè) BaseServlet新增加一個(gè)功能只需要在當(dāng)前 Servlet 里多寫(xiě)一個(gè) public 方法方法名就是 action 的值。例如ProductServlet里有l(wèi)ist方法和add方法前端請(qǐng)求product?actionlist就會(huì)自己走到 list 方法。到了 Servlet 3.0 以后映射關(guān)系用 WebServlet 注解寫(xiě)在子類(lèi)上不用再改 web.xml代碼能少寫(xiě)一大截。反射調(diào)用的性能損耗可以忽略不計(jì)Tomcat 會(huì)復(fù)用 Servlet 實(shí)例。對(duì)應(yīng)的寫(xiě)一個(gè) LoginServlet 演示登錄邏輯和 Session 控制WebServlet(/login) public class LoginServlet extends BaseServlet { /** 渲染登錄頁(yè)面 */ public void toLogin(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher(/login.jsp).forward(req, resp); } /** 校驗(yàn)登錄 */ public void doLogin(HttpServletRequest req, HttpServletResponse resp) throws Exception { String username req.getParameter(username); String password MD5Util.md5(req.getParameter(password)); UserDao userDao new UserDao(); User user userDao.findByUsernameAndPassword(username, password); if (user ! null) { // 存入 Session后續(xù)用過(guò)濾器判斷是否已登錄 req.getSession().setAttribute(loginUser, user); resp.sendRedirect(req.getContextPath() /product?actionlist); } else { req.setAttribute(errorMsg, 用戶名或密碼錯(cuò)誤); req.getRequestDispatcher(/login.jsp).forward(req, resp); } } }MD5Util 是一個(gè)自己封裝的工具類(lèi)對(duì)MessageDigest做包裝把密碼摘要成十六進(jìn)制字符串。注意這里有個(gè)安全習(xí)慣數(shù)據(jù)庫(kù)里存的是 MD5 密文用戶輸入密碼后要在 Java 端先加密再比較絕不能WHERE password$password直接拼接明文。登錄成功后用重定向而不是轉(zhuǎn)發(fā)這樣可以防止用戶刷新頁(yè)面時(shí)重復(fù)提交表單。Session 里的 loginUser 會(huì)被后面的登錄過(guò)濾器讀取這是 javaweb 項(xiàng)目做權(quán)限控制的標(biāo)準(zhǔn)姿勢(shì)。3.4 登錄過(guò)濾器和 web.xml 配置讓未登錄用戶無(wú)法訪問(wèn)敏感頁(yè)面登錄校驗(yàn)做完必須配上過(guò)濾器攔住那些不登錄就輸入 URL 訪問(wèn)頁(yè)面的請(qǐng)求。創(chuàng)建一個(gè) LoginFilter 實(shí)現(xiàn)javax.servlet.Filter接口在doFilter方法里判斷 Session 是否存在用戶存在就放行不存在直接重定向到登錄頁(yè)。要注意放行靜態(tài)資源和登錄相關(guān)的 URL否則模板引擎一加載 CSS 圖片就被攔住了頁(yè)面會(huì)變成純文本裸奔。filter filter-nameloginFilter/filter-name filter-classcom.supermarket.filter.LoginFilter/filter-class /filter filter-mapping filter-nameloginFilter/filter-name !-- 攔所有請(qǐng)求但靜態(tài)資源和登錄頁(yè)需要手動(dòng)放行 -- url-pattern/*/url-pattern /filter-mapping如果項(xiàng)目用的是純注解方式也可以用WebFilter(/*)但是要注意dispatcher配置在 web.xml 和注解混用時(shí)代很容易出現(xiàn)過(guò)濾器重復(fù)執(zhí)行。配置完成后啟動(dòng) Tomcat瀏覽器訪問(wèn)http://localhost:8080/supermarket/login能看到登錄頁(yè)面說(shuō)明環(huán)境已經(jīng)通了一半——接下來(lái)用測(cè)試賬號(hào)登錄并跳到商品列表頁(yè)這一條鏈路跑通后面所有模塊的排查思路就清晰了。4. 核心業(yè)務(wù)實(shí)現(xiàn)進(jìn)貨入庫(kù)和 POS 收銀的事務(wù)與庫(kù)存聯(lián)動(dòng)4.1 進(jìn)貨入庫(kù)主表明細(xì)表的寫(xiě)入邏輯超市系統(tǒng)最核心的閉環(huán)是進(jìn)貨 → 入庫(kù) → 上架 → 銷(xiāo)售 → 庫(kù)存扣減。進(jìn)貨這一步頁(yè)面是選擇供應(yīng)商 動(dòng)態(tài)添加商品行提交到后端時(shí)請(qǐng)求里會(huì)攜帶一個(gè)供應(yīng)商 ID、多個(gè)商品 ID 和數(shù)量。這里故意設(shè)計(jì)成單個(gè) Servlet 的單個(gè)方法一次性接收所有參數(shù)不能再走常見(jiàn)的逐條保存。具體邏輯拆解如下WebServlet(/stockIn) public class StockInServlet extends BaseServlet { public void add(HttpServletRequest req, HttpServletResponse resp) throws Exception { int supplierId Integer.parseInt(req.getParameter(supplierId)); int userId ((User) req.getSession().getAttribute(loginUser)).getId(); String[] productIds req.getParameterValues(productId); String[] quantities req.getParameterValues(quantity); String[] prices req.getParameterValues(price); // 內(nèi)部累加總金額同時(shí)生成主表記錄 double totalAmount 0; for (int i 0; i productIds.length; i) { totalAmount Double.parseDouble(prices[i]) * Integer.parseInt(quantities[i]); } Connection conn null; try { conn DBUtil.getConnection(); // 開(kāi)啟事務(wù)之后任何一步失敗進(jìn)庫(kù)主表都不會(huì)留下殘缺數(shù)據(jù) conn.setAutoCommit(false); StockInDao stockInDao new StockInDao(); StockInItemDao itemDao new StockInItemDao(); ProductDao productDao new ProductDao(); // 1. 插入進(jìn)貨單主表拿到自增 ID int stockInId stockInDao.insert(conn, supplierId, userId, totalAmount); // 2. 逐條插入明細(xì)表 for (int i 0; i productIds.length; i) { int productId Integer.parseInt(productIds[i]); int quantity Integer.parseInt(quantities[i]); double price Double.parseDouble(prices[i]); itemDao.insert(conn, stockInId, productId, quantity, price); // 3. 同步累加商品庫(kù)存 productDao.increaseStock(conn, productId, quantity); } // 全部成功才提交 conn.commit(); resp.sendRedirect(req.getContextPath() /stockIn?actionlist); } catch (Exception e) { // 異常則整體回滾保證數(shù)據(jù)一致 conn.rollback(); throw new ServletException(進(jìn)貨失敗已回滾 e.getMessage(), e); } finally { conn.setAutoCommit(true); DBUtil.close(conn, null, null); } } }這段代碼有兩個(gè)關(guān)鍵點(diǎn)必須講給讀者。第一是conn.setAutoCommit(false)開(kāi)啟手動(dòng)事務(wù)把插主表 插明細(xì) 更新庫(kù)存變成一個(gè)原子操作任何一步拋異常所有已執(zhí)行的操作全部回滾。如果沒(méi)有事務(wù)極容易出現(xiàn)主表寫(xiě)了一條進(jìn)貨單但庫(kù)存沒(méi)加上的臟數(shù)據(jù)。第二是 DAO 方法全部接受Connection參數(shù)——這是為了保證它們參與同一個(gè)事務(wù)而每個(gè)方法內(nèi)部不能再自己DBUtil.getConnection()拿新連接否則事務(wù)就斷開(kāi)了。這是很多不成熟的源碼最常見(jiàn)的錯(cuò)誤把事務(wù)相關(guān)的代碼寫(xiě)得看似有但實(shí)際無(wú)效。參數(shù)說(shuō)明上productIds使用getParameterValues接收同名參數(shù)數(shù)組這要求前端表單里每個(gè)商品行的name屬性都叫productId。如果實(shí)際運(yùn)行時(shí)只拿到一條數(shù)據(jù)先去看瀏覽器 Network 面板再?zèng)Q定是改前端還是改后端。totalAmount在 Java 端累加后寫(xiě)入主表避免數(shù)據(jù)庫(kù)里多次 SUM 帶來(lái)的性能浪費(fèi)。庫(kù)存更新用的increaseStock是 PreparedStatement 的UPDATE t_product SET stock stock ? WHERE id ?這比先 SELECT 再 UPDATE 的讀改寫(xiě)方式更安全不會(huì)因?yàn)椴l(fā)讀取舊值而覆蓋掉中間的變動(dòng)。4.2 收銀出庫(kù)同時(shí)扣庫(kù)存和生成銷(xiāo)售單收銀臺(tái)是另一個(gè)高頻操作。顧客選完商品后收銀員在頁(yè)面逐個(gè)掃描條碼系統(tǒng)累加購(gòu)物車(chē)最后點(diǎn)擊結(jié)算后端一次性處理生成銷(xiāo)售單主表、寫(xiě)入銷(xiāo)售明細(xì)、扣減庫(kù)存??蹘?kù)存的 SQL 非常關(guān)鍵——把它設(shè)計(jì)成條件更新只有stock 購(gòu)買(mǎi)數(shù)量時(shí)才執(zhí)行成功這正是解決超賣(mài)的方法UPDATE t_product SET stock stock - ? WHERE id ? AND stock ?前端收銀頁(yè)的核心邏輯是輸入框監(jiān)聽(tīng)回車(chē)事件條碼匹配后通過(guò) AJAX 查詢商品信息把名稱價(jià)格追加到購(gòu)物車(chē)列表。這個(gè)效果聽(tīng)起來(lái)復(fù)雜但可以用 jQuery 加少量 JavaScript 在 JSP 頁(yè)面里實(shí)現(xiàn)。關(guān)鍵代碼邏輯是每掃描一個(gè)條碼就向product?actionfindByCode發(fā)一個(gè)請(qǐng)求成功后往表格里追加一行。結(jié)算時(shí)把購(gòu)物車(chē)數(shù)據(jù)依次填到隱藏表單字段里一次性提交全部數(shù)據(jù)。這種設(shè)計(jì)要說(shuō)明的是數(shù)據(jù)量在單次幾十件以內(nèi)時(shí)完全沒(méi)有性能壓力不需要把購(gòu)物車(chē)放到 Session 里每次結(jié)算都攜帶完整商品數(shù)組即可結(jié)構(gòu)簡(jiǎn)單也不容易出錯(cuò)。4.3 庫(kù)存預(yù)警讓項(xiàng)目看起來(lái)會(huì)思考進(jìn)銷(xiāo)存之外一個(gè)加分模塊是庫(kù)存預(yù)警。商品表里的stock_min字段此刻派上用場(chǎng)商品列表頁(yè)加載時(shí)對(duì)所有stock stock_min的商品打上紅色標(biāo)記首頁(yè)再用一個(gè) SQL 查出需要補(bǔ)貨的商品數(shù)量。這個(gè)功能實(shí)現(xiàn)難度低、可視性強(qiáng)答辯時(shí)評(píng)委一般都會(huì)看上兩眼。典型實(shí)現(xiàn)是商品列表 DAO 里加一個(gè)方法public ListProduct findLowStockList(Connection conn) { String sql SELECT * FROM t_product WHERE stock stock_min ORDER BY (stock_min - stock) DESC; return queryList(conn, sql); }把低庫(kù)存列表放到后臺(tái)首頁(yè)登錄后第一眼就能看到哪些商品需要補(bǔ)貨這就是整個(gè)系統(tǒng)里最有業(yè)務(wù)價(jià)值的功能之一。從能用到好用庫(kù)存預(yù)警是一個(gè)性價(jià)比很高的功能點(diǎn)。對(duì)比維度上它和銷(xiāo)售時(shí)段統(tǒng)計(jì)報(bào)表一樣可以讓項(xiàng)目在功能列表里多出決策輔助這一分類(lèi)而后者可以基于銷(xiāo)售單據(jù)表按小時(shí)分組聚合SQL 復(fù)雜一點(diǎn)但同樣可控。5. 部署和測(cè)試避坑5 個(gè)你能遇到的痛苦時(shí)刻和對(duì)應(yīng)解法5.1 現(xiàn)象Druid 啟動(dòng)直接拋 ClassNotFoundException項(xiàng)目根本起不來(lái)這個(gè)報(bào)錯(cuò)是驅(qū)動(dòng) JAR 沒(méi)有真正進(jìn)入 Tomcat 的 classpath 造成的。原因一般是 Maven 依賴沒(méi)導(dǎo)入全或者是 IDEA 的 Artifacts 配置里沒(méi)有把 mysql-connector 這個(gè) jar 加入WEB-INF/lib。很多人只在 pom.xml 里寫(xiě)了依賴就以為萬(wàn)事大吉實(shí)際上 IDEA 要把依賴打進(jìn)去還需要重新構(gòu)建 Artifact。解決方法是打開(kāi)File → Project Structure → Artifacts在 Output Layout 里右鍵Put into Output Root把mysql-connector-java和druid的 jar 加入WEB-INF/lib然后Build → Rebuild Project。如果還是報(bào)錯(cuò)用壓縮軟件打開(kāi)生成的 war 包檢查WEB-INF/lib下有沒(méi)有這兩個(gè) jar這個(gè)土辦法最直觀。5.2 現(xiàn)象插入數(shù)據(jù)庫(kù)的中文全是問(wèn)號(hào)或者變成 ?23? 這類(lèi)亂碼原因通常是三層字符集不一致數(shù)據(jù)庫(kù)表字符集、JDBC 連接串字符集、JSP 頁(yè)面字符集。建庫(kù)時(shí)已經(jīng)用了utf8mb4連接串里也寫(xiě)入characterEncodingutf8那亂碼多半出在 JSP 或者請(qǐng)求編碼上。檢查所有 JSP 頁(yè)面開(kāi)頭是否有% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8%以及 Tomcat 是否設(shè)置了 URI 編碼在conf/server.xml的 Connector 節(jié)點(diǎn)上加URIEncodingUTF-8。GET 請(qǐng)求的參數(shù)默認(rèn)按 ISO-8859-1 解碼這是鄙視鏈最頂端一個(gè)隱藏很深的坑POST 請(qǐng)求則靠req.setCharacterEncoding(UTF-8)解決。如果你每一步都對(duì)還是亂碼用數(shù)據(jù)庫(kù)客戶端直接執(zhí)行 SQL 插入一條中文數(shù)據(jù)能正常顯示的話說(shuō)明問(wèn)題確實(shí)在應(yīng)用層。5.3 現(xiàn)象登錄后跳轉(zhuǎn)商品列表 404控制臺(tái)找不到任何錯(cuò)誤這種情況大概率不是代碼錯(cuò)了而是訪問(wèn)路徑不對(duì)。Servlet 配置的映射是/product但請(qǐng)求里寫(xiě)成了/productServlet或者 JSP 頁(yè)面里表單 action 寫(xiě)的路徑?jīng)]有帶req.getContextPath()。在 IDEA 內(nèi)置 Tomcat 中運(yùn)行時(shí)應(yīng)用上下文路徑就是部署時(shí)設(shè)置的名稱比如http://localhost:8080/supermarket_war_exploded/后面這串又臭又長(zhǎng)的路徑是 IDEA 默認(rèn)生成的應(yīng)該手動(dòng)改成/supermarket。修改方式Edit Configurations → Deployment → Application context改成/supermarket以后所有鏈接統(tǒng)一以${pageContext.request.contextPath}開(kāi)頭。這一步是新手花時(shí)間最多的地方不是代碼邏輯問(wèn)題而是工程配置問(wèn)題要一步步排查。5.4 現(xiàn)象服務(wù)器啟動(dòng)后訪問(wèn)報(bào) 500堆棧里提示 Client does not support authentication protocol requested by server這是 MySQL 8.0 特有的坑默認(rèn)密碼加密方式是caching_sha2_password而老版本的 MySQL 驅(qū)動(dòng) JDBC 不支持。解決方法是把驅(qū)動(dòng)升級(jí)到 8.0 以上或者把用戶密碼認(rèn)證方式改成mysql_native_password。在數(shù)據(jù)庫(kù)里執(zhí)行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密碼; FLUSH PRIVILEGES;如果改了還是報(bào)錯(cuò)檢查連接串里是否漏加了serverTimezoneAsia/Shanghai高版本 MySQL 驅(qū)動(dòng)要求必須顯式指定時(shí)區(qū)否則連接時(shí)會(huì)拋 SQLException。這些其實(shí)都不是復(fù)雜原理就是每個(gè)做 javaweb 的人都會(huì)走一遍的路說(shuō)出來(lái)是為了讓你遇到時(shí)不用問(wèn)人也能自己判斷。5.5 現(xiàn)象兩個(gè)用戶同時(shí)買(mǎi)同一個(gè)商品庫(kù)存變成負(fù)數(shù)這屬于典型的并發(fā)超賣(mài)問(wèn)題。原因在于用先 SELECT stock 再 UPDATE stock stock - 1兩步操作兩個(gè)請(qǐng)求同時(shí)讀到舊庫(kù)存就會(huì)互相覆蓋。解決方案就是前面收銀出庫(kù)部分寫(xiě)的條件更新 SQLUPDATE t_product SET stock stock - ? WHERE id ? AND stock ?讓數(shù)據(jù)庫(kù)自己去判斷扣減條件而不是靠 Java 代碼先查后設(shè)。這個(gè) SQL 保證了只有當(dāng)前庫(kù)存大于等于本次購(gòu)買(mǎi)數(shù)量時(shí)才會(huì)真正執(zhí)行更新JDBC 返回的影響行數(shù)為 0則說(shuō)明庫(kù)存不足本次結(jié)算直接提示用戶。這種處理在數(shù)據(jù)庫(kù)層面保證了原子性也是進(jìn)銷(xiāo)存系統(tǒng)最常被考察的點(diǎn)。6. 答辯前做這兩件事數(shù)據(jù)驗(yàn)證和報(bào)表之星系統(tǒng)功能做完別急著寫(xiě)論文先用數(shù)據(jù)驗(yàn)證證明系統(tǒng)的可靠性。準(zhǔn)備一個(gè)十行左右的 SQL 腳本模擬多次進(jìn)貨和多次銷(xiāo)售然后核對(duì)商品表庫(kù)存是否等于進(jìn)貨總量減銷(xiāo)售總量。如果一致說(shuō)明事務(wù)控制正確如果不一致回頭檢查 4.1 節(jié)里的事務(wù)邊界是否有 Service 層繞過(guò) Connection 參數(shù)的問(wèn)題。這一步的驗(yàn)證結(jié)論可以直接寫(xiě)進(jìn)畢業(yè)論文的系統(tǒng)測(cè)試章節(jié)比你隨便寫(xiě)幾行測(cè)試用例有說(shuō)服力得多。第二個(gè)加分項(xiàng)是做一個(gè)簡(jiǎn)單的近 30 天銷(xiāo)售趨勢(shì)報(bào)表頁(yè)面。SQL 用DATE_FORMAT(sale_time, %Y-%m-%d)做分組COUNT 算單量SUM 算銷(xiāo)售額每天一條記錄返回。頁(yè)面放一個(gè)表格或者用 ECharts 畫(huà)個(gè)折線圖展示波峰波谷日期。這個(gè)功能實(shí)現(xiàn)的絕對(duì)難度不大但它讓項(xiàng)目從增刪改查進(jìn)階到了數(shù)據(jù)可視化分析答辯時(shí)把亮點(diǎn)落在這里評(píng)委對(duì)工作量的認(rèn)可度會(huì)明顯不一樣。以前帶過(guò)的一個(gè)學(xué)生技術(shù)棧完全一樣就是多了這個(gè)報(bào)表答辯成績(jī)從良變成了優(yōu)。畢業(yè)設(shè)計(jì)項(xiàng)目的價(jià)值不完全在于功能數(shù)量而是在于你能把每個(gè)功能的設(shè)計(jì)緣由和工程權(quán)衡說(shuō)清楚。希望這些經(jīng)驗(yàn)?zāi)軒湍阍诖疝q前把系統(tǒng)打磨得又穩(wěn)又亮眼如果一路照著搭下來(lái)遇到什么反常識(shí)的報(bào)錯(cuò)多半是環(huán)境問(wèn)題而不是代碼問(wèn)題別急著刪代碼重來(lái)先從配置上找原因。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
午夜欧美神马久久久久| 97超碰久久| 男人的天堂va在线| 无码99| 国产白领连续中出在线播放| 亚洲国产97| hd成人一区二区在线| 欧亚乱色熟一区二区三四区| 91欧美网| 淫妻综合网| 欧美日韩系列| 九九探花视频在线观看| 97草草| 亚洲AV麻豆Aⅴ无码电影一| 无码日韩网站| 五月情色天| 99综合免费视频| 日韩熟女视频二区| 日韩成人性爱电影在线播放| 日本高清一本二本免费不卡| 国产AV久久久蜜爱影集| 91色欧美| 日韩精品中文字幕二区| 老鸭窝在线视频播放| 激情网色| 天天干1区2区在线| 亚洲强奸乱伦影视网| 骚逼一区二区| 97在线观看播放视频| 超碰1024久久| 日日操免费视频| 夜夜夜久久| 精品一级毛片在线观看| 蜜桃臀 后入 一区 二区 三区 在线| 99在线精品视频| 天天干天天拍| 人妻精品视频一区二区三区| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 国产精品对白自产拍| 亚洲精品一区二区三区在线播放 | 波多野结衣被操50分钟免费视频 | 精吧天堂| 野狼激情网| 97亚洲欧美| 天天干2019| 91精品人妻偷情| 精品一区二区麻豆| 欧美日韩国产中文精品字幕自在自线| 精品人妻一区二区三区蜜桃视频| 亚洲天堂电影精品一区| 九九热久久99精品re| 99国产精品免费| 亚洲av影院在线观看| 91综合天天看| 久久久久成人蜜桃精品| 久久久精品电影| 97热视频在线观看| 激情五月天网站| 啊啊啊网站| 熟妇高潮一区二| 综合久久欧美| 国产最火爆久久国产网站网站| 人妻内射一区二区在线视频| 久久婷婷色| 天天射天天| 日韩丨制服丨中文|在线| 男人的天堂亚洲| 五月天久久综合网| 九九九国产| 国产60区。| 91人妻Pr| 噜噜噜在线视频| 99热欧美| 好舒服视频| 九月婷婷| 免费啪啪啪网站18岁| 亚洲婷婷丁香在线| 亚洲清纯唯美| 国产91精品久久久久久久网曝门| 色色色色网站| 久草国产在线视频| 最新亚洲黄色免费电影| 97超碰影音| 操操操操网黑人| 国产精品交换一区二区| 国产精品一二三在线看| 中国AV美女| 91白嫩| 青青青青草av在线观看| 超碰久久性爱| 91一起操| 国产一区二区在线电影| 欧美性爱三区二区| 三级特黄60分钟播放| 精品黄色电影| 欧美—性—交—色| 久久视频,这里只有精品 | av线电影| 九九亚洲精品| 大香蕉十区| 国产精品久久久久久无码红治院| 青青草久久一区网| 超碰人人干| 夜色AV无码手机在线影院| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 日韩一级特黄av毛片| 亚洲加勒比| 色色97爱| 美女91AV| 97色97干| 大香蕉99re| 秋霞鲁丝午夜无码一区二区三| 97久久久精品| 骚货| 啊啊啊啊啊啊啊国| 人人乐大香蕉| 国产后入精品| 长长久久曰曰夜夜成人网| 亚洲古典另类欧美在线| 60秒免费视频| 青青草日韩免费观看高清在线| 亚洲97p| 亚洲天堂另类小说男人| 青青草原狼av| 亚洲色香| 99RE在线视频精品,这里只有精品| 人人操天天爽| 欧美在线 亚洲| 男人精品天堂一区| 大香蕉在线SuP| 超碰在线1234区| 男人的天堂com| 亚洲资源站| 大香蕉78| 中日韩欧美精品无码AⅤ一区二区| 天堂8在线新版官网| 人妻激情偷乱视频一区二区三区| 美骚妇av高清在线| 午夜福利 成人 91| 久久无码精品| 日韩无码黄色片| 亚洲色五月| 日本女厕偷拍| 日日夜夜狠狠| 一区二区偷拍拍视频| 久久婷五月| 99re这里只有精品3| 一级人妻性爱视频| 日韩欧洲操屄视频| 曰韩无码777| 91色图片| 97久久国产精品女不卡| 18禁的网站在线| 中文字幕 av v| 亚洲一区制服诱惑| 蜜乳中文字幕a在线| 免费看日产一区二区三区| 人妻天天爽夜夜爽爽| 超碰97综合网| 亚洲强奸乱伦影视网| 亚洲色欲一区二区三区| 亚州Av天美传媒| 天天噜| 亚洲系列第一页| 精品久久青青草| 久久有码视频| 丝袜熟女一区二区三区| 精品九九九九九九九九九| 久久国产在线一区二区| 六九九九| 好吊色综合| 亚洲中文字母在线播放| 东京热大香焦| 婷婷丁香五月天综合东京热| 91精品免费| 毛片久久| 欧美中字二区| 国产黄色在线播放观看| 日韩丝袜高跟制服在线观看| 日韩免费高清大片在线| 欧美第一页性| 亚洲综合欧美| 国产伦精品免编号公布| 91成人无码| 国产综合操逼高清| 四虎av在线| 狠狠干狠狠色| 欧美91变态| 国产青一二三| 狠狠操狠狠操操| 欧美一二在线| 又粗又长又爽在线观看| 91/欧美| 91丨豆花丨熟女| 91天射| 图片区小说区| 超碰 国产熟女精品一区| 老司机老司机午夜影院| 亚洲一区中文字幕| 久久大香蕉| 懂色av一区二区三区天美传媒| 久久国产视频性吧| 欧美激情性爱视频网站| 久久久涩| 99精品在线观看| 久久免费少妇| 欧美亚洲清纯| 91欧美偷拍| 男女激情黄色网址| 久操电影网| 久草久热| 久草视频分类在线| 欧美伊人久久综合网| 亚洲综合一| 久久精精区一区二区一蜜桃一区二区| 黑人精品XXX一区一二区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 殴美大黄片| 欲香欲色综合天天伊人| 久久久工口| 日本Xx性爱| 丝袜美腿av女优在线| 9ⅰ久久久天天| 69AV女优男人的天堂| 五月天婷精品激情| 天天上日日上日韩精品| 蜜臀久久久99久久久久 | 亚洲激情在线| 中文字幕视频免费| 蜜桃不卡一区二区| 亚洲啪啪性视频| 欧美性爱中文字幕无线码| 婷婷伊人五月| 超碰97精品| 国产熟码AV| 欧美 传媒 麻豆 日韩 偷拍| 亚洲欧美国产日本一区二区三区| 黄片com.| 日韩少妇一区二区三区| 综合 欧美 亚洲 日本| 97在线观看| 欧美日韩妖精91com| 97超碰无码网| 欧美日韩大陆黑人少妇99| 二区熟妇韩日| 欧美少妇色图| 91美女丝袜诱惑视频| 亚洲国产日韩欧美熟妇在线| 美女爽到高潮91| 欧洲自拍色图gif在线| 97日视频| 午夜男女爽爽爽在线视频| 国产女人和拘做爰视频| 亚洲国产精品成人无码久久久| 国产三级多多影院2022国产AA一级毛片无码 | 亚洲限制级| 美美91成人国产精品欧美精品久久久久久久 | 亚洲男人天堂2013| 91女神在线视频| 九九久久久九九| 日本九九久久99| 日韩精品操少妇| 精品人妻一区春色| 怡红院成人av| 蜜臀网址在线| 亚洲一区二区在线观看91| www.91视频网| 97资源视频| 欧美丰满熟妇XXXX性ppX人交| AV污污污污| 综合啪啪| 欧美熟妇乱码在线一区| 久久精品中文字幕女同| 日本高清加勒比| 2020中文字幕在线观看| 69一区二区| 天天激情干| 9久精品| 五月丁香六月婷| 亚洲射综合网| 极品美女嘿咻| 免费自拍三级综合| 99久久久99久久91熟女| 四虎影库国产精品免费| 色偷偷综合91久久噜噜| 一级乱伦网站| 五月丁香成人网| 欧美性生活内射| 精品成人久久久人人亚洲| 久久岛国| 18禁超污无遮挡无码免费网| www.操| 清纯唯美综合亚洲| 91视频在线观看18| 色婷婷电影| 日本加靬比网站发布页| 老色鬼成人精品视频下载大在线观看| 91肉丝| 婷婷五月天色| 任我爽在线视频免费观看 | 成人电影一区| 亚洲日本天堂| 日韩人妻一二三区视频| 欧美亚洲激情小说| av橘色网站| 一级岛国大片| 欧美中文字幕男人天堂久久精品| 日骚逼视频| 开心五月深爱五月| 激情婷婷黑人91| 激情看片网站| 超碰在线免费一区二区三区| 综合色久| 久久久久国色αv免费观看| WWW操逼| 2025亚洲男人天堂| 丰满人妻一区二区三区免费| 国内外色色色色色成人视频| 校园春色宗合网| 国产性爱在线视频一区二区| 日韩精品操少妇| 日韩中文字墓| 亚洲AV乱码专区国产噜噜亚洲 | 亚洲第一狼人丝袜美女另类| 精品9区| av网站在线观看了| 懂色av中文字幕| 91精品国产麻豆国产自产在| 日本精品一区二区三| 欧美强奸乱| 亚洲色棕合| 天天弄天天操| A级国产欧美激情在线| 色九九九综合| 99热91| 天天综合网~91| 91人妻人人妻| 乱伦av麻豆| 日韩av电影网站| 九九精品热| 欧美性爽xyxOOOO| 久久鲁夜| 黄片www.| 久久超碰com| 人人澡人人弄| 午夜精品视频777| 在线免费观看高清无码视频| 最新av在线| 嫖老熟女A片一二三区| 亚洲国产精品久久AV| 夜夜操av亚洲一区二区| caoni国产亚洲av| 四虎精品永久在线播放| 97在线亚洲| 蜜桃臀 后入 一区 二区 三区 在线| 在线国产福利网址导航| 射久久| 91嫩草在线| 日本三级日本三级三级人妇四虎| 久久一区二区三区入口| 九九热久久99精品re| 久久这里| 国产精品久久久久久 百度| 国产精品伦理| 亚洲 日本 一 二 三| 另类小说综合网| 亚洲交换| 精品人妻一区二区三区视频| 丁香五月偷拍| 久久久久久AV无码免费网站| 午夜视频好爽啊| 夜夜精品视频| 清纯唯美激情| 欧洲站一级二级三级h| 91麻豆天美国产| 色色色色色色色色色色色色色色综合| 国产99精品一区二区三区免费| 男人的天堂 在线一区| 日本天天干天天操一区| 浪人综合网| 观看免费区二区三区二| www久久久| 黄片免费看黄片免费看| 中文字幕五月婷婷免费| 国产精品黑人一区二区三区| 婷婷午夜清品久久久久久久性色视频观| 黑人综合色| 欧美午夜视频| 亚欧美综合网。| 乱码人妻一区二区三区| julia ann久久| 91熟女少妇| 国产精品3| 91精品婷婷国产综合久久| 精品久久艹| 亚洲91射| 久久久精品网站| 亚洲欧美碰碰| 97在线观看| 999精品国产高清一区二区| 强奸乱伦免费网站| www.黄色在线| 日本天天操| 久久精品国产精品亚洲艾通辽熟妇| 天天操夜夜操| 日韩av色图综合| 久草毛片电影怡| 欧美精品亚洲精品日韩传电影| 农村少妇久久久久久久| 日夜精品| 久久国产在线一区二区| 久久男女激情视频网站| 色 婷97| 天天拍天| 极品销魂美女一区二区| 亚洲欧洲精品视频发布| 极品色www影院| 在线女人91| 成人熟女区| 青青草大香蕉视频| 久久免费99精品久久久久久| 大香蕉黄色一区| 亚洲天堂第一页| 99re在线视频这里只有精品| 超碰99re| 亚洲无码一区二区三区三州| 99精品网| 91欧洲入口| 久操操AV电影| 亚洲日本成人动漫| 国产成人啪一区二区| 亚洲另类欧美精品| 激情久久久| 欧美韩国你懂得在线 | 四虎AV无码| 丝袜美腿射精91| 97视频在线播放| 亚洲第2页| 久久久影院| 青青草国产一区二区三区| 亚洲欧洲中文日韩女优乱码| 亚洲男人天堂2019| 日本三级精品| 91啪啪视频| 国产精品在线一区二区| 热思思免费视频| 亚洲综合小说另类图欧美视频激情小说色五月天 | 国产高清26uuu| 免费9 1久久| 欧美性暴力| 精品国产片亚洲一区| 欧美A√综合网| 人妻三级在线中文字幕| 丝袜美腿欧美| 日本一二三免费久久| 黑人精品成人一区二区三区| 夜夜嗨TV| 亚洲夜夜欢无码一区二区| 欧美少妇高潮视频| 99热最新网址| 欧美日韩制服| 志村玲子视频一区二区| 久久大黄片| 亚洲男人的天堂AV| 亚洲成熟国产精品美女| 欧洲一区二区| 欧美综合站| 欧美操人视频| 亚洲素人网| 在线强奷到舒服的无码视频| 少妇熟女视频一二三区| 久久婷婷一区二| 亚洲综合20p| 99re只有精品| 国产精品一级特黄aaa大片在线观看| 亚州色图片在线色| 国产农村一一级特黄毛片| yiqicaoav| 久久精品人妻一区二区| 色婷婷五月综合激情中文字幕| 国产精品另类| 91N欧美| 日本淫乱女一区二区三区视频| 天天α片| 日韩少妇一区二区三区| 国产精品ww久久| 操屄不卡视频| 91精品女厕偷拍视频| 欧美天堂亚洲电影院一区在线播放| 亚洲AV无线| 青青操综合网| 亚洲91色| 3PAV乱伦视频| 天天做天天爽| 又大又长又粗又爽又黄| 亚洲色图A| 草蕉影视亚洲无码| 思思热在线| 人妻一区视频| 高清在线不卡一区二区 视频| 久操视频免费观看| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 天天看精品动漫视频一区| 午夜九九| 欧美色图中文字幕| 色狠狠综合| 伊人女女资源在线观看| 国产福利电影| 久久久亚洲熟妇熟女| A一级色女| 国产精品欧美激在线| 啊啊啊啊嗯嗯嗯用力好爽| 久久久久亚洲Aⅴ无码| 艹精品| 日本人妻伦在线中文字幕| 麻豆成人影音在线| 职场同事知名国产国产精品久久欧美日韩 | 蜜臀99久久精品久久久懂爱| 国产日韩美女小穴视频网站不卡| 69久久| 久久久91福利姬| 美女主播色欲91抠b在线播放| 亚洲,欧美,春色,另类| www.99热| 一块操欧美性爱| 日本欧美一区二区三区免费| 草草网站影院白丝内射| 国产精品久久久无码AV网站| 搡老女人911熟妇老熟女| 91人妻视频在线| 热久久九九热| 狠色婷婷久久一区二区三区_| 日韩精品9999| 超碰久在线天天做| 伊人网一本| 久久久月天| 亚洲欧美首页| 久久精品日韩| 在线国产福利网址导航| 99操视频| 91在线页| 不卡码视频| av线电影| 人人妻人人色一区二区三区| 天天亚洲| ji熟女.com| 视频黄色国产一级| 久久久蜜桃一区二区三区| 曰韩欧美国产传媒麻豆第一区| 天天干天天日天天射黄色| 91在线免费观看处女| 欧美日韩亚洲五月天婷婷| 亚洲a色| 欧美日韩中文视频播放| 桃花色综合影院| 国产免费一区二区在线A片视频| 男人夜色天堂ss| 麻豆福利视频导航| 亚洲欧美综合图片| 久久午夜鲁丝片| 日本3级一区二区免费| 人人妻人人操人人乐| 激情五月天校园春色网| 校园春色五月天| 一区二区三区成人高清视频| 91粉芽高清在线一区二区| 91中文精品日韩欧美在线| 国产精品午夜福利视频| 婷婷爽人人婷婷爽视频| 桃花色涩综合影院| 久久久久久久久久黄色网| 久久激情婷婷| 丁香五月天堂网| 欧美韩国你懂得在线 | 欧美se亚洲| 欧美成97爱| 国产黄色av大片网站| 激情终合网| 边做饭边操逼逼| 国产超碰国产97| 91 综合网| 无遮挡h肉动漫在线观看| 欧美亚洲涩涩| 欧美v日韩v亚洲v最新在线| 91美女中出| 国产蜜臀精品一区二区尤物| 麻豆啪啪啪视频| 久久精品综合| 亚洲av无线观看| 风月影院男女十八禁| 久久一级无码精品毛片6| 欧美天天综| 久久久99免费| 蜜臀久久99精品久久久久免费观| 97操| 欧美狠狠操| 亚洲精品自拍| 三上制服丝AV| 欧美性生活免费网| 亚洲一区二区 麻豆传媒| 中文?日韩?免费?精品| 神马久久中文字幕| 97精品熟女少妇一区 | 欧美人人AAA| 亚洲Av诱惑| 久久的网站啊啊啊啊啊| 性色AV网站| 午夜欧美J进J出白浆流出久久久 | 97亚洲中文| 最新欧美色网| 黄色大片免费在线| 成熟熟女国产精品一区二区| 日本污ww视频网站| 亚州色综合| 97玖玖超碰| 日韩精品人妻一| 1024精品在线| 丝袜美腿校园春色| 亚洲成?V人片在线观看福利| 国产高清自拍视频| 国产精品久久久久久久久久久久久久久| 国产高清免费不卡av| 黄色av播放免不| 欧美制服另类丝袜| 人人摸人人添人人操| 麻豆熟妇乱妇熟色A片在线看| 久久久亚洲精品电影免费看| 丝袜美腿制服人妻二区中文字幕| 中文字幕乱码在线| 好湿好紧好爽 视频| 久久婷婷伊人| 99精品在线播放| 97在线视频免费看| 国产农村妇女精品一| 日韩八十路老熟女| 日韩综合97p| 日韩AV电影网站| 国产精品自拍欧美在线| 97色97干| 人人妻人人爽| 天天澡天天爽日日av| 欧美午夜精品久久久久久超碰| 国产精品美女在线一区| 91免费看一区二区三区| 九t超碰| 精吧天堂| 少妇与黑人高潮在线| 久久超碰久| 欧美性爱视频免费一区一A | 亚洲综合91| 亚洲欧洲激情| 999九九精品| 超碰97在线色男人??| 性性久久| 久久神马影院| 嗯嗯啊好大| 精产国品一区二三产品| 人人色97| 日本特黄f c2| WWW4虎| 久久久久久中文字幕中文字幕最新| 狠狠 91| 综合日本女人伊人| 天天肏美女| 色综合潮| 久久综合av| 骚熟女吞| 黄久在线| 97伊人| 69精品| 你懂的在线观看区国产| 日本十八禁免费看污网站| 性色av大全| 欧美国产精品| 日韩性爱免费视频在线网站| 天天操天天干一区二区 | 澳门人妻久久| 亚洲色图欧美色图制服丝袜 | 男人的天堂色偷偷青青草视频婷婷网| 久久人妻97久久久久久久| av中文字幕在线熟女| 97大色网| 青草园大香蕉| 久久蜜桃一区二区| 好属操| 一区二区三区免费视频入口| 免费一级特黄特色大片在线观看看| 五月丁香社区婷婷日韩欧美精品影院| 日本色色色| 成人影 天天操 亚洲| 新视频sss国产| 97色欧洲| 看免费一级在线播放毛片| 九九干| 麻豆60秒| 大香蕉日韩欧美| 伊人热综合| 欧美成人性爱视频大全| 亚洲春色激情小说| 亚洲drav色图| 欧美组图日韩亚洲中文字幕| 欧美日韩在线国产在线| 国产av青草| 青青草女人天天干| 国产在线综合福利网站| 超碰91在线| 欧美第38页| 国产日韩久久| av资源在线播放天堂| 性性欧美| 日韩电影在线观看网址| 亚洲AV无码国产成人| 日韩少妇在线视频| 玖玖爱在线视频免费观看| 全球成人中文在线| 韩日自拍| 大香蕉黄色一级片免费看| 九九热男人天堂| 91日韩国产欧美亚洲另类精盘州至城都 | 久操操| 青操影院| 国产第25页在线观看| 色色99| 亚洲自拍偷拍视频在线| 九九九九88| 亚洲阿v天堂在线| 青青草日本无码| 亚洲综合20p| 色蜜AV| 久久九九97| 精品毛片久久久精品毛片| 国产丝袜高跟美女av免费观看| 欧美黄色手机在线观看| 日韩二级| 精品国产乱码| 久久久久久久久九九久孕交| 强奸抽插av| 亚洲精品天天影视综合网 | 久久狠狠色噜噜狠狠狠狠97| 色99在线| 中国人高清www色视频免费| 67194无码不卡| WWW操逼| 97精品久久久久中文字幕| 豆花视频操逼网址 | 人妻二区| 精品一国2| 97久久久| 人人干黄色| 手机久操欧美综合色码| 911粉嫩人妻| 94色色电影网| 欧美 青青草| 丰满人妻无码一区二区三区| 伊人午夜福利视频| av中文在线| 新亚洲无码| 久操 高清| 日韩av影片在线观看| 1240青青草一区二区三区视频天爱| 国内97干免费看| 84YTCOM性无码| 75大香蕉| 99热超碰| 一级@啪啪视频| 久久精品区| 欧美狠狠弄| 五月婷在线| 欧美国产伊人久久久久| 亚洲综合电影| 啊啊啊啊啊舒服| 久久久久中出| 91色久| 2023天天操夜夜操| 国产精品久久久久婷婷二区次| 乱理日韩中文| 久久九九网| 国产特级毛片AAAAAA高潮流水 | 午夜精品久久久久久久99热影院| 亚洲精品三| 搞中出久久| 人妻偷拍一区二区三区| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 久热久| 久久蜜色情在线视频xxx免费观看| 99热精品免费| 国产激情在线观看| 99国产精品视频尤物| 91大神精品长腿在线观看网站| 日本幼女18+| 高清孕妇孕交 交孕妇| 极品久久久久久久久久久久久久| 一区二区三区精品黑丝白丝酒店对鸡| 亚洲av乱伦色图网站| 久久精品人人做人人看| yaouchengrenav| 69国产对白刺激| 十八禁啪啪视频| 亚州性色| 9久久久久| 欧美性xxxxx狂欢| 久色99999| 亚洲熟女av日韩熟女| 99国产精品久久久在线播放| 爱做久久久久久| 草草影院日本第一页| 凹凸视频在线一区二区| 国色天香av| 小日子操bb在线看| 精品日韩中文在线| 国产精品久久久久亚洲av| 东京热男人的天堂精品| 精品一区二区成人| 免费一级视频特黄色大片| 91九色精品熟女内射| 天天爽爽爽爽| 97久久精品国产| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 男人的天堂2019| 亚洲天堂2020| 91视频伊人| 亚洲?V无码专区在线电影| 91人妻素女| 开心五月激情网| 久久精品一区| 久久久久久久综合,国产| 九九九九亚洲| 少妇无码av专区线| 亚洲第一综合| 青青操在线亚洲视频观看欧美在线| 青女在线| 91狠狠综合久久| 午夜男女爽爽大片免费观看| 亚洲成A∨人影院在线欢看| 色色色热| 强奸熟女一区二区三区| 91色色网站| 无码 有码 国产18p| 97超碰色五月| 夜夜夜爽www精品视频| CCYY草草影院地址入口| 一区二区娱乐网站| 天天看特黄的免费网站| 欧美乱欲| 1769一区二区| 东京热av男人的天堂| 久操国产在线| 亚洲美女自拍偷拍视频| 天天日天天舔东京热 | 蜜桃在线观看一区二区三区| 四虎884| 国产精品 久久久精品一牛| 97超碰日韩| 丁香六月啪| 日本999精品| 国产高清视频无码在线| 一区二区三区在线资源| 97亚洲综合在线| 人人摸人人干人人拍97| 日韩 欧美 国产 麻豆| 韩国手机不卡无码三级视频| 九九九九九九亚洲| 最新无码国产| 97色在线观看| 天天射夜夜操| 人妻精品综合中文字幕在线| 欧美翘臀视频网站一区二区三区| 另类天堂| 农村少妇久久久久久久| 1024人妻| juliaann欧美丝袜办公室| 狠狠激情综合狠狠操中文字幕| 亚洲在钱| 丁香五月天啪啪| 啪啪啪男女亚洲中文字幕99| 婷婷五月天激情四射| 亚洲男人天堂手机版| 日夜啪电影| 美日韩男女操屄视频| 91伊人大香蕉| 思思热久久成人| 欧亚韩国999| 熟妇熟女视频一区二区三区| 亚洲综合在线第一页| 看看小穴| 午夜福利无毒不卡| 久射吧| 人人乐大香蕉| 欧美偷拍区| 欧美在线|亚洲| julia高潮后不停追击中出| 免费视频一二三区| 麻豆黄四叶草网站| 一级啊性爱在线视频| 夜夜躁狠狠躁日日躁av| 中文字幕-区二区三区四区视频中国| 99热99在线播放激情| 极品人妻少妇综合| 91天天综合网,天天综合网| 国产午夜激片Av毛片不卡| 久久久久久九| 色悠久久久av| 蜜桃久久久久久久| 久久久久国产精品片区无码直播| 91天天| 精品一区二区2| 国产农村妇女精品一| 亚洲精品乱码久久久久久蜜桃麻豆| 91人妻人人澡人人爽人人精品| 成人一区二区三区四区| 日韩精品 资源| 另类 日韩 熟女| 国产一国产一级毛片古装| 男人天堂免费| 国精品一区二区三| 久久久久久午夜男人的天堂| 人妻天天爽| 美女淫穴| 人人摸人人干| 日本大片日本一区二区免费高清| 把腿张开老子CAO烂你| 日日干天天干夜夜爽| 亚洲欧洲自拍| 久久久久久久久9| 麻豆区久久久久亚| 亚洲情色在线| 性生活久久久久久久久久| 久久9亚洲| 日本高清电影欧美色图| 这里只有精品视频在线| 丁香九月激情| 婷婷五月天影院| 蜜乳av首页| 被体育老师抱着c到高潮| 国产偷拍自拍在线视频| 中文字幕中文字幕一区二区| 天天草天天日| 四虎国产精品永久入口| 男女日B国产| 欧美性爱综合,免费| 极品综合| 亚洲?V无码专区在线电影| 在线A日本| 99久久婷婷丁香| 精品亚洲国产成人av网站| 欧美大香蕉专区网| 欧美顶级黄色大片免费| 亚洲中文字幕三级在线| 98色网| 久久久9品一区二区三区| 天天综合欧美综合| 人人搡人人肉久久精品| 国产一区二区精品在线视频| 精品少妇一区二区三区| 亚洲天堂电影网99999| 精品人妻一区二区三区在线视频不卡| 欧综合网| 日韩操p| 欧美性爱在线无码| 91 手机在线播放 绯色| 精品无码久久久久| 天天操天天舔| 极品综合| 天天干天天做| 330dv亚洲成年视频网| 成人精品水蜜桃久久久久久久| 久午视频| 另类小说综合网| 久久婷婷五月综合| 大香蕉在线免| 91丝袜人妻| AV天堂国产| 久久99网站| 青青草五月天| 丰满人妻一区二区三区色-百度| 乱伦色图网址是多少| 婷婷大香蕉| 久草线上视频免费看| 亚洲 欧美 日韩 国产一区二区| www网站黄| 99re热| 成人五级久久| 日本 成 人 小说 电影 一区二区| 一直超碰| 中文字幕97| 深夜啪啪啪视频免费| 十八禁电影伊人网| 亚洲天堂中文字| 超碰天天久久79| 久久久新亚洲AV| 中文字暮97| 嗯嗯啊啊啊好爽| 操逼日韩无码| 97视频在线观看网站| 国产精品亚洲一级av第二区| 在线黄色污污网站| www久久国产精品| 久久久久久久久久久久久久久性生活视频| 丝袜加勒比| 日本护士高潮| 亚州图片第一页| 九月丁香综合网| 97碰碰日本乱偷人妻中文的| 亚洲成人在线高清| 久久久禁| 久操网线| 俺去啦自拍| 天天躁日日躁XXXXYY| 人人澡人人澡人人| 欧美国产日韩高清在线| 少妇天堂| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 好屌色综合| 在线强奷到舒服的无码视频| 欧美黑人168页欧美黑人167| 欧美视频一区二区在线| 啊啊啊轻点在线观看| 热九九精品| 精品在线蜜臀| 日韩av色图综合| 青娱乐久久艹| 熟女91网站| 天天摸夜夜摸| 96久久精品一二三区色欲| 精品日日人妻| 国产欧美日韩臀| 久久精品国产亚洲AV无码电影| 91女日逼| 麻豆乱码久久精| 操逼操逼逼操操逼91| 国产日韩中文字幕欧美| 曰韩精品九九无码| 午夜福利1区2区3区| 亚洲人久久久网| 亚洲操操| 手机在线播放国产福利| 99re6在线视频播放免费精品| 亚洲一二三四区机械| 综合欧美日韩在线观看| 免费a v| 国产精品探花视频| 国产精品第二页| 欧美午夜视频免费观看| 一区二区三区国产精产| 国产v片在线免费观看| 九九热精彩视频| 免费观看欧美日韩操逼视频| 久久超碰日韩精品| 69人妻精品丰满熟女区| 丰满人妻av一区二区三区| 中文字幕熟女人妻丝袜丝| 日韩欧美成人性爱在线| 久久久久久九九九九-美女久久久久久久-成人AV | 秋霞一级A片黄色视频| 怡春院久久| a片亚洲一本通视频| 爱欲AV| 伊人网av| 开心五月天激情网| 日韩成人大片在线观看| 亚洲AV噜噜狠狠网址蜜桃动漫| 操屄日韩| 97天堂| 超碰免费人妻在线| 亚欧美色| 久久久精品网| 欧美+日产+中文| 欧美色综合网| 国产精品白丝www| 九久久精| 色路综合| 人妻欧美| 精品视频一二三中文| 偷拍 亚洲 欧美| 日日超碰亚洲| 97免费在线观看| 97超碰9| 亚洲精品久久久久毛片A片拉屎| 翔田千里AV无码秘 三区| 性综合网| 亚洲性爱乱操x| 亚洲精品毛片在线观看| 中文字幕在线观看永久| 淫荡熟女乱伦网| 亚洲一区二区精品福利| 亚洲一区二区性爱电影| 丁香六月激情| 欧美成人精品一区二区三区| 99国产在线绯色一区| 亚洲老司机123专区| 亚洲在钱| 玖玖久久久| 日韩精品在线放| 国产精品网址| 91free福利| 亚射在线| 97在线欧| 国产精品免费久久久久久久久久| 天堂а√在线最新版在线| 国产CHASE男男GAYGA 毛多色婷婷| 激情五月综合网| 亚州色站 日韩电影| 精品综合久久久久久97| 成人久久久| 国产亚州精品美女久久久免费| 欧美九9 9 9| 国产热av| A 天堂| 91粉嫩萝控精品福利网站_精品影音先锋国| 又大又黄国产| 久久精品无码不卡| 自拍偷拍第26| 开心五月婷婷| 五十路人妻在线| 无码免费在线观看黄色片| 99久re热视频精品98| 伊人 俄罗斯 a v| 偷拍精品一区二区三区| 肉嘟嘟www视频在线观看高清| 91国产丝袜足交精品视频| 欧美第五页| 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲97久久精品亚洲| 熟妇人妻一区二区三区| 人人妻人人玩人人澡人人爽| 久久久久亚洲?V片无码V| 第四色色综合91| 97色碰| 色欧美天天| 日本大香蕉综合网| 中文字幕免费看大片| 综合av影片| 在线有码中文字幕| 久久超碰亚洲人| 探花精品 一区二区| 操操AV电影| 欧洲综合色| 久久精品欧美一区蜜桃| 超碰九7| 亚洲精品视频二区| 亚洲欧洲自拍| 后X久久| 欧美精品宗合| 操九九九九九九| 日本一区不卡| 91久久久久久久久久久| 国产色图乱伦| 九九热超碰97亚洲最新香蕉| 黑人美精品 A片| 日韩精品作爱导航| 人妻aa| 欧美激情区| 91国产大片| 成人a大片在线观看| 人妻色情天天操| 91校园春色长篇| 欧洲黄色网| 土豪酒店各种姿势玩弄极品幼稚| 丁香五月天激情网站| 一道本东京热加勒比一区二区三区 |