久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

JavaWeb訂餐系統(tǒng)源碼拆解:從環(huán)境部署到訂單事務(wù)與權(quán)限控制

JavaWeb訂餐系統(tǒng)源碼拆解:從環(huán)境部署到訂單事務(wù)與權(quán)限控制 簡介這是一套基于JavaWeb實現(xiàn)的必勝客在線訂餐系統(tǒng)項目包面向正在學習JavaWeb、準備課程設(shè)計或畢業(yè)設(shè)計的學生與初級開發(fā)者圍繞用戶注冊登錄、菜單瀏覽、購物車、下單支付及后臺菜品與訂單管理等典型餐飲業(yè)務(wù)場景展開可幫助讀者打通從需求分析、數(shù)據(jù)庫設(shè)計到前后端交互的完整鏈路。壓縮包共1307個文件約66.88MB以png、jpg等頁面圖片素材java源碼、class編譯文件、jsp與html視圖、css與js腳本以及jar依賴、xml與properties配置和sql建表腳本為主基本覆蓋開發(fā)、部署與數(shù)據(jù)初始化所需內(nèi)容。目前已有2518人學習。項目采用MVC思路組織Servlet、JSP與JavaBean配合數(shù)據(jù)庫訪問層完成業(yè)務(wù)邏輯讀者可重點研讀請求處理、數(shù)據(jù)校驗、訂單狀態(tài)流轉(zhuǎn)與頁面異步交互也能從配置和目錄結(jié)構(gòu)中理解Tomcat部署方式適合作為課程設(shè)計模板或JavaWeb綜合實踐參考。1. 拿到一個 JavaWeb 訂餐系統(tǒng)源碼包先分清它是 JSPServlet 還是 SSM把壓縮包解開之后第一件事不是打開 IDE 新建工程而是先ls一遍目錄。JavaWeb 這個詞在課程設(shè)計資源里覆蓋的跨度極大一種是最經(jīng)典的 JSP Servlet JDBC 直連 MySQL 的三層結(jié)構(gòu)另一種是 Spring SpringMVC MyBatis 的整合工程兩者的啟動方式、依賴管理甚至配置文件的后綴都不一樣。這個在線訂餐系統(tǒng)屬于哪一類決定了你接下來半小時是順風順水還是連續(xù)翻車。它真正值錢的地方在于提供了一條完整的點餐鏈路菜單瀏覽、加入購物車、提交訂單、后臺改單四段都能跑通而不是一堆互不相干的 CRUD 頁面拼起來的樣子貨。適合兩類人趕課程設(shè)計需要一套能演示、能講清邏輯的骨架以及剛學完 Servlet 想找一個有業(yè)務(wù)味道的練手項目而不是繼續(xù)在圖書管理系統(tǒng)的增刪改查里打轉(zhuǎn)。下面按「先判斷、再跑通、后拆解、最后避坑」的順序走每一步都落到你能直接抄的命令和參數(shù)上。2. 環(huán)境對齊JDK、Tomcat、MySQL 三件套版本核對這類包最容易出問題的地方不在代碼而在版本。課程設(shè)計資源普遍有年份包里的mysql-connector-java-5.1.x.jar配 MySQL 8 會直接報驅(qū)動類找不到j(luò)avax.servlet與jakarta.servlet混用則會在 Tomcat 10 上整站 404。我一般會先把版本關(guān)系釘死再談別的。2.1 看目錄判斷技術(shù)棧用一次 find 摸清家底傳統(tǒng)工程和 Maven 工程的區(qū)分非常明顯看有沒有pom.xml就夠了。但光看這個還不夠得順手把 jar 包、SQL 腳本、配置文件全撈出來心里有張地圖后面排錯才不會靠猜。你看到的目錄/文件大概率是什么后續(xù)動作WEB-INF/web.xmlWEB-INF/lib/*.jarsrc傳統(tǒng) JSPServlet 工程按普通 Web 工程導入jar 手動掛到 classpathpom.xmlsrc/main/javasrc/main/webappMaven 工程多為 SSM先mvn dependency:tree看依賴有沒有沖突applicationContext.xml/spring-mvc.xmlSpring 系整合檢查包掃描路徑和數(shù)據(jù)源 Bean*.sql常見名order_db.sql、db.sql建庫建表腳本先導庫再改連接參數(shù)jdbc.properties/db.properties連接參數(shù)外置優(yōu)先改這里別動 Java 源碼里的硬編碼# 解壓后先做一次結(jié)構(gòu)掃描別急著導 IDE unzip -q online-order.zip -d order-src cd order-src # 1. 看清目錄層級判斷是 webapp 結(jié)構(gòu)還是標準 Maven 結(jié)構(gòu) find . -maxdepth 3 -type d | sort # 2. 把所有 jar 列出來重點看 mysql 驅(qū)動和 servlet-api 的版本 find . -name *.jar -exec basename {} \; | sort -u # 3. 定位三個關(guān)鍵文件web.xml、pom.xml、建庫腳本 find . \( -name web.xml -o -name pom.xml -o -name *.sql -o -name jdbc.properties \) -print這三條命令里第一條決定導入方式第二條決定版本兼容性第三條決定你改配置時該打開哪個文件。第二條尤其關(guān)鍵如果看到mysql-connector-java-5.1.47.jar而你本機是 MySQL 8就要么換成mysql-connector-java-8.0.x要么把驅(qū)動的類名從com.mysql.jdbc.Driver改成com.mysql.cj.jdbc.Driver兩者只能選一個混著來必報ClassNotFoundException。servlet-api 的 jar 如果出現(xiàn)在WEB-INF/lib里部署前記得刪掉容器自己會提供重復了會引發(fā)類加載沖突。2.2 數(shù)據(jù)庫先跑通建表、導數(shù)據(jù)、改四個連接參數(shù)代碼可以慢慢看數(shù)據(jù)庫必須先活。絕大多數(shù)「頁面空白、后臺報 500」的根因都是連接串里缺參數(shù)或者庫名對不上。-- 建庫時字符集一次到位別用默認的 latin1 再回頭改 CREATE DATABASE IF NOT EXISTS order_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE order_db; -- 菜品表status 控制上下架stock 用于下單時扣減 CREATE TABLE dish ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INT NOT NULL DEFAULT 0, img VARCHAR(255) DEFAULT NULL, -- 只存相對路徑如 /upload/dish/1.jpg status TINYINT NOT NULL DEFAULT 1 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 訂單主表total 是下單瞬間的金額快照 CREATE TABLE orders ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(32) NOT NULL UNIQUE, user_id INT NOT NULL, total DECIMAL(10,2) NOT NULL, status TINYINT NOT NULL DEFAULT 0, -- 0待支付 1已支付 2配送中 3已完成 4已取消 create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_user (user_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;連接參數(shù)建議單獨放一個 properties 文件改的時候不用重新編譯# src/main/resources/jdbc.properties jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://127.0.0.1:3306/order_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrue jdbc.usernameroot jdbc.password改成你自己的密碼連接串里的四個參數(shù)各自管一件事缺一個就會以很奇怪的方式失敗characterEncodingutf8決定中文能不能正常入庫serverTimezoneAsia/Shanghai不加MySQL 8 會報時區(qū)異常訂單時間直接是 nulluseSSLfalse是為了本地開發(fā)省掉證書握手allowPublicKeyRetrievaltrue是 MySQL 8 默認認證插件下必須開的否則第一次連接就被拒絕。密碼不要留在代碼里也不要提交到任何倉庫這是血淚經(jīng)驗。// 讀取配置并統(tǒng)一管理連接避免每個 DAO 里都寫一遍 DriverManager public class DBUtil { private static final Properties PROPS new Properties(); static { try (InputStream in DBUtil.class.getClassLoader() .getResourceAsStream(jdbc.properties)) { PROPS.load(in); Class.forName(PROPS.getProperty(jdbc.driver)); // 老驅(qū)動這里會拋異常 } catch (Exception e) { throw new ExceptionInInitializerError(數(shù)據(jù)源初始化失敗: e.getMessage()); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection( PROPS.getProperty(jdbc.url), PROPS.getProperty(jdbc.username), PROPS.getProperty(jdbc.password)); } }這段代碼的關(guān)鍵在靜態(tài)塊Class.forName一旦失敗整個類初始化就崩報錯會非常明確地指向驅(qū)動問題比運行時在某個 DAO 里拋NullPointerException好排查得多。getResourceAsStream用的是 classloader 路徑所以jdbc.properties必須放在src/main/resources或者WEB-INF/classes下放錯位置讀出來就是 null。2.3 編譯、打包、部署war 包怎么放context path 怎么定Maven 工程一條命令解決傳統(tǒng)工程走 IDEA 的 Artifacts 配置兩條路都要清楚。# Maven 工程跳過測試直接打包 mvn -DskipTests clean package # 產(chǎn)物一般在 target 下確認 war 包名字 ls -lh target/*.war # 丟進 Tomcat 的 webappswar 名就是 context path cp target/order.war $CATALINA_HOME/webapps/ # 啟動并觀察日志重點看有沒有 SEVERE 和數(shù)據(jù)庫連接異常 $CATALINA_HOME/bin/startup.sh tail -f $CATALINA_HOME/logs/catalina.out如果 war 包叫order.war訪問地址就是http://localhost:8080/order/末尾的斜杠不能省省了在部分容器版本上會 404。非 Maven 工程則要把WEB-INF/lib下所有 jar 一起打進 artifact 的WEB-INF/lib漏一個就是NoClassDefFoundError。啟動日志里如果出現(xiàn)Communications link failure說明 MySQL 沒起來或端口不通出現(xiàn)Unknown database order_db說明建庫腳本沒執(zhí)行或者庫名改了沒同步這兩類錯誤占首次部署失敗的八成以上先看日志再改代碼。3. 訂單主鏈路從加購物車到落庫的四個關(guān)鍵節(jié)點點餐系統(tǒng)的業(yè)務(wù)復雜度幾乎全壓在訂單上。菜單和用戶是靜態(tài)數(shù)據(jù)訂單是有狀態(tài)、有并發(fā)、有金額的寫得好不好在這里拉開差距。這一段拆的是包里最值得看的部分也是二次改造時最容易改出 bug 的地方。3.1 購物車放 Session 還是放數(shù)據(jù)庫課程設(shè)計級項目基本都是 Session簡單直接但也埋著坑。// 購物車結(jié)構(gòu)dishId - {數(shù)量, 下單時的單價快照} // 不直接緩存 Dish 實體避免菜品改價后購物車金額跟著漂 public class CartItem implements Serializable { private Integer dishId; private String name; private BigDecimal price; // 加入購物車時鎖定的價格 private int qty; // getter / setter 省略 } // 加購已存在就累加數(shù)量不存在就新建 WebServlet(/cart/add) public class CartAddServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int dishId Integer.parseInt(req.getParameter(dishId)); int qty Integer.parseInt(req.getParameter(qty)); HttpSession session req.getSession(); MapInteger, CartItem cart (MapInteger, CartItem) session.getAttribute(cart); if (cart null) { cart new LinkedHashMap(); // 保持加入順序頁面顯示更穩(wěn)定 session.setAttribute(cart, cart); } CartItem item cart.get(dishId); if (item null) { Dish dish dishService.findById(dishId); // 查一次庫拿名稱和價格 item new CartItem(dishId, dish.getName(), dish.getPrice(), 0); cart.put(dishId, item); } item.setQty(item.getQty() qty); resp.sendRedirect(req.getContextPath() /cart/list); } }用LinkedHashMap而不是HashMap是為了讓購物車列表按用戶加購順序展示HashMap的遍歷順序在不同 JDK 版本上并不一致偶爾會出現(xiàn)「加了兩道菜順序亂跳」的玄學現(xiàn)象。價格在加購時鎖進CartItem是為了給下面的事務(wù)做鋪墊——下單時必須用鎖定的價而不是下單瞬間重新查庫的價。Session 方案的天花板也很清楚換瀏覽器購物車就沒了多實例部署時不共享。要往生產(chǎn)方向走就得把購物車落到cart表用user_id dish_id做唯一鍵INSERT ... ON DUPLICATE KEY UPDATE qty qty ?一條 SQL 搞定累加。這一步改造量不大但講清楚為什么改比直接堆一個 Redis 更有說服力。3.2 下單事務(wù)金額快照、明細落庫、庫存扣減必須在一個事務(wù)里這是整個項目最該逐行讀的方法。寫錯的話線上表現(xiàn)就是「訂單成功了但庫存沒動」或者「扣了庫存訂單沒生成」。public String submitOrder(int userId, MapInteger, CartItem cart) throws SQLException { Connection conn null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); // 關(guān)閉自動提交事務(wù)從這里開始 // 1. 先算總額并生成訂單號簡化版生產(chǎn)建議用雪花或號段 String orderNo OD System.currentTimeMillis(); BigDecimal total BigDecimal.ZERO; for (CartItem it : cart.values()) { total total.add(it.getPrice().multiply(BigDecimal.valueOf(it.getQty()))); } // 2. 主表落庫status0 待支付 long orderId orderDao.insert(conn, orderNo, userId, total, 0); for (CartItem it : cart.values()) { // 3. 明細表存價格快照歷史訂單不受后續(xù)改價影響 orderItemDao.insert(conn, orderId, it.getDishId(), it.getPrice(), it.getQty()); // 4. 帶條件的庫存扣減影響行數(shù)為 0 說明庫存不夠 int affected dishDao.reduceStock(conn, it.getDishId(), it.getQty()); if (affected 0) { throw new SQLException(庫存不足, dishId it.getDishId()); } } conn.commit(); return orderNo; } catch (SQLException e) { if (conn ! null) conn.rollback(); // 任何一步失敗整體回滾 throw e; } finally { if (conn ! null) { conn.setAutoCommit(true); conn.close(); } } }配套的扣減 SQL 必須是帶條件的更新不能先 select 再 update-- 用一條語句完成「判斷 扣減」把并發(fā)判斷交給數(shù)據(jù)庫 UPDATE dish SET stock stock - #{qty} WHERE id #{dishId} AND stock #{qty};AND stock qty這個條件就是并發(fā)防線。兩個用戶同時搶最后一份MySQL 的行鎖會讓第二條更新看到扣減后的值條件不成立返回影響行數(shù) 0Java 層據(jù)此拋異?;貪L。如果改成先SELECT stock判斷夠不夠、再UPDATE中間那段窗口期足夠插進另一個事務(wù)超賣就發(fā)生了。同一個Connection貫穿所有 DAO 也是必須的很多人圖省事在每個 DAO 里各自getConnection()那種寫法下setAutoCommit(false)完全失效回滾只回滾了個寂寞。3.3 訂單狀態(tài)機別讓后臺能隨便改狀態(tài)狀態(tài)字段用數(shù)字沒問題問題在于沒有約束。后臺管理頁面上一個「修改狀態(tài)」的下拉框如果直接UPDATE orders SET status ?運營手一抖就能把已完成的訂單改回待支付。-- 只允許合法躍遷待支付(0) - 已支付(1) - 配送中(2) - 已完成(3) -- 取消只允許從 0 或 1 發(fā)起 UPDATE orders SET status #{to} WHERE id #{orderId} AND status #{from};執(zhí)行后檢查影響行數(shù)為 0 就提示「訂單狀態(tài)已變化請刷新后重試」。這一招順帶解決了重復提交用戶連點兩次「確認收貨」第二次的from已經(jīng)不是 2 了更新自然失敗不會重復觸發(fā)積分或通知邏輯。狀態(tài)躍遷表建議直接寫死在 Service 里用一個MapInteger, SetInteger存允許的下一狀態(tài)比散落在各個 if 里安全得多。這里不需要上狀態(tài)機框架但要有一張明確的表至少自己排錯時能一眼看出哪條路徑是非法的。3.4 分頁與菜品圖片兩個小功能兩個大坑分頁別用LIMIT offset, size配全表COUNT(*)就完事菜品表數(shù)據(jù)量小的時候看不出問題做二次開發(fā)一造幾萬條數(shù)據(jù)就慢了。常規(guī)寫法是兩條 SQL一條SELECT ... ORDER BY id DESC LIMIT ?, ?一條SELECT COUNT(*) FROM dish WHERE status 1兩條共用同一套 where 條件條件拼錯就會導致「總數(shù) 100 條但翻到第 3 頁就空了」。// 分頁參數(shù)做邊界收斂防止 page0 或 size10000 這類臟輸入 int page Math.max(1, Integer.parseInt(req.getParameter(page) null ? 1 : req.getParameter(page))); int size 8; // 每頁固定 8 道菜前端三列布局剛好 int offset (page - 1) * size; ListDish list dishDao.findByPage(offset, size); int total dishDao.countOnSale(); int pages (total size - 1) / size; // 向上取整別用整除圖片上傳這塊包里常見的做法是把文件存到webapp/upload/下數(shù)據(jù)庫里存相對路徑/upload/dish/xxx.jpg。存相對路徑而不是D:/tomcat/webapps/...這種絕對路徑是能不能換機器部署的分水嶺。文件名一定要重命名成 UUID 或時間戳別用原始文件名中文名加特殊字符在部分容器上會導致 404上傳目錄也別放在WEB-INF里面那個目錄瀏覽器根本訪問不到。4. 登錄、權(quán)限與后臺管理過濾器與參數(shù)綁定后臺管理是這類項目里最容易被忽略的部分因為它「能跑就行」。但恰恰是后臺頁面越權(quán)訪問、SQL 拼接、明文密碼三個問題經(jīng)常同時出現(xiàn)。4.1 編碼過濾器與登錄攔截兩個 Filter 各管一件事編碼問題統(tǒng)一在入口解決別在每個 Servlet 里寫setCharacterEncoding。WebFilter(/*) // 攔截所有請求順序上要排在登錄過濾器之前 public class EncodingFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding(UTF-8); // 只管 POST 體 resp.setCharacterEncoding(UTF-8); resp.setContentType(text/html;charsetUTF-8); chain.doFilter(req, resp); } } WebFilter(urlPatterns {/order/*, /cart/*, /admin/*}) public class LoginFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest r (HttpServletRequest) req; HttpSession session r.getSession(false); // 注意false別順手創(chuàng)建新會話 if (session null || session.getAttribute(loginUser) null) { ((HttpServletResponse) resp).sendRedirect(r.getContextPath() /login.jsp); return; // 不往下走請求到此為止 } chain.doFilter(req, resp); } }getSession(false)這個參數(shù)是重點。寫成getSession()或getSession(true)每個未登錄請求都會創(chuàng)建一個空會話內(nèi)存里堆一堆無用的 Session 對象壓測時看著內(nèi)存曲線往上走還找不到原因。兩個過濾器的執(zhí)行順序由web.xml里的filter-mapping聲明順序決定或者在注解場景下靠過濾器名字母序所以正式項目里建議統(tǒng)一寫在web.xml里順序看得見。4.2 后臺越權(quán)前端隱藏菜單不叫權(quán)限控制后臺頁面常見做法是登錄后按角色渲染菜單管理員看得到「菜品管理」普通用戶看不到。但菜單只是a標簽地址欄直接敲/admin/dish/list照樣能進。真正的攔截必須在服務(wù)端做。// 后臺攔截角色不匹配直接打回首頁別只靠隱藏鏈接 WebFilter(/admin/*) public class AdminFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest r (HttpServletRequest) req; User user (User) r.getSession().getAttribute(loginUser); if (user null || user.getRole() ! 1) { // 1 管理員 ((HttpServletResponse) resp).sendError(403); return; } chain.doFilter(req, resp); } }sendError(403)比sendRedirect更合適越權(quán)訪問不該被靜默重定向成「正?!沽鞒倘罩纠镆哺菀锥ㄎ弧=巧侄斡谜麛?shù)沒錯但要定義成常量或者枚舉別在十個地方散寫role 1后期加一個「店長」角色就得全局搜索替換。4.3 密碼存儲與 SQL 注入兩道必須自己守的線用戶表里存明文密碼是這類課程設(shè)計包里最常見的減分項。改造成本其實很低。// 注冊與登錄都用占位符字符串拼接一律不許出現(xiàn) public User login(String username, String rawPwd) throws SQLException { String sql SELECT id, username, pwd_hash, salt, role FROM user WHERE username ?; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setString(1, username); try (ResultSet rs ps.executeQuery()) { if (!rs.next()) return null; String salt rs.getString(salt); String expect rs.getString(pwd_hash); // 加鹽摘要同一密碼在不同用戶下哈希值不同彩虹表失效 String actual DigestUtils.sha256Hex(salt rawPwd); return expect.equalsIgnoreCase(actual) ? mapRow(rs) : null; } } }PreparedStatement的占位符不只是防注入還能讓數(shù)據(jù)庫復用執(zhí)行計劃username a OR 11這種輸入會被當成普通字符串處理。至于密碼最低要求是加鹽哈希別用 MD5 裸哈希要更穩(wěn)一點就換 BCrypt自帶鹽值和計算強度代價是登錄時多花幾十毫秒。這里還有一個細節(jié)登錄失敗時不要區(qū)分「用戶不存在」和「密碼錯誤」統(tǒng)一提示「用戶名或密碼錯誤」否則等于免費提供賬號枚舉接口。5. 避坑與排查五條踩過的記錄按現(xiàn)象對號入座以下五條是我拆這類包時按出現(xiàn)頻率排的基本覆蓋了從解壓到跑通的全過程。遇到問題先按「現(xiàn)象」對照比漫無目的地翻代碼快得多。5.1 啟動與部署類問題記錄一訪問首頁 404日志里沒有任何異?,F(xiàn)象Tomcat 啟動成功localhost:8080能出貓頁但訪問項目路徑就是 404catalina.out干干凈凈。原因war 包沒有真正解壓或者 context path 和你想的不一樣。常見于 war 包名帶版本號如order-1.0.war實際路徑是/order-1.0/也可能是web.xml里url-pattern寫成了/index而首頁文件叫index.jsp容器沒配歡迎頁。解決先ls $CATALINA_HOME/webapps/確認解壓出來的目錄名訪問地址嚴格按目錄名來檢查web.xml里有沒有welcome-file-list沒有就手動訪問/index.jsp驗證最后看server.xml里 Connector 的端口是不是被改過。記錄二啟動報 ClassNotFoundException: com.mysql.cj.jdbc.Driver現(xiàn)象應(yīng)用能起來但一碰數(shù)據(jù)庫就拋異常堆棧里明確寫著驅(qū)動類找不到。原因三種可能——jar 沒打進WEB-INF/lib打進去了但是 5.1.x 版本類名應(yīng)該是com.mysql.jdbc.Driver或者容器本身帶了一個老版本驅(qū)動類加載時先命中了它。解決find . -name mysql-connector*.jar確認驅(qū)動文件存在MySQL 8 用com.mysql.cj.jdbc.Driver5.7 用com.mysql.jdbc.Driver兩者不能混如果容器lib目錄下也有同名驅(qū)動刪掉容器里的那份讓應(yīng)用自帶的生效。5.2 數(shù)據(jù)與編碼類問題記錄三菜品名稱入庫變成問號頁面顯示亂碼現(xiàn)象后臺新增一道菜數(shù)據(jù)庫里查出來是???或者頁面標題上出現(xiàn)一串菱形方塊。原因鏈路上有三處字符集任何一處是 latin1 都會斷。數(shù)據(jù)庫/表沒設(shè)utf8mb4連接串缺characterEncodingutf8JSP 頁面沒寫% page contentTypetext/html;charsetUTF-8 %。解決先SHOW CREATE TABLE dish;看表字符集不對就ALTER TABLE dish CONVERT TO CHARACTER SET utf8mb4;再核對連接串的編碼參數(shù)最后統(tǒng)一在過濾器和 JSP 頭部各設(shè)一次三處齊了才不會漏。已經(jīng)寫成問號的數(shù)據(jù)改不回來只能重錄所以建庫那一步別偷懶。5.3 業(yè)務(wù)邏輯類問題記錄四下單提示成功但庫存數(shù)字紋絲不動現(xiàn)象訂單列表里有新訂單明細也對可菜品表里stock一直是原值。原因庫存扣減的 SQL 放在了事務(wù)之外或者 DAO 各自開了連接主事務(wù)回滾了它也不知道還有一種情況是扣減語句寫成了SET stock ?直接賦值而不是stock stock - ?看著執(zhí)行成功其實把庫存改成了固定值。解決確認所有 DAO 方法接收同一個Connection參數(shù)并且沒有內(nèi)部getConnection()確認扣減用的是stock stock - #{qty}并且?guī)ND stock #{qty}最后在commit()之前打斷點看每一步的影響行數(shù)是不是都在預期內(nèi)。這類問題最典型的特征是「部分成功」一旦見到部分成功先懷疑事務(wù)邊界。5.4 靜態(tài)資源類問題記錄五菜品圖片上傳成功頁面上一片裂圖現(xiàn)象上傳接口返回成功數(shù)據(jù)庫里img字段也有值但img src...顯示不出來瀏覽器控制臺 404。原因存的是絕對路徑如D:\upload\1.jpg瀏覽器沒法訪問或者文件寫到了WEB-INF/upload下這個目錄對外不可見再或者img字段存的是upload/1.jpg而頁面在/dish/list這種二級路徑下相對路徑解析錯了。解決統(tǒng)一存以/開頭的應(yīng)用內(nèi)相對路徑頁面渲染時拼上${pageContext.request.contextPath}上傳目錄放在webapp下而非WEB-INF下如果用到 SpringMVC檢查mvc:resources有沒有把/upload/**映射到實際目錄漏了配置就算文件真實存在也是 404。6. 二次改造讓這套骨架從「能演示」變成「能講清楚」跑通只是及格線。這套代碼真正的價值在于它的結(jié)構(gòu)足夠干凈改起來不牽一發(fā)動全身。我一般的改造順序是先補數(shù)據(jù)一致性再補交互最后才是加功能因為前兩步?jīng)Q定了你改動之后還敢不敢繼續(xù)動。改造點具體做法驗證方式購物車持久化新建cart表user_iddish_id唯一鍵用ON DUPLICATE KEY UPDATE做累加換瀏覽器登錄購物車內(nèi)容還在訂單號生成時間戳換成「日期 庫自增序列」或雪花算法并發(fā)壓 50 單order_no 無重復重復提交防護訂單表加token字段頁面渲染時下發(fā)提交時校驗并刪除連點提交按鈕只生成一單后臺權(quán)限細化角色常量抽成枚舉AdminFilter按 URI 前綴分級普通賬號直敲后臺地址返回 403慢查詢治理給orders(user_id, create_time)加聯(lián)合索引EXPLAIN看 type 從 ALL 變 ref改造完怎么確認沒改壞我的習慣是準備一份最小回歸清單每次動完代碼照著走一遍比憑記憶點頁面靠譜得多# 用 curl 做一輪冒煙比手點快也方便比對返回 BASEhttp://localhost:8080/order # 1. 登錄拿會話把 cookie 存下來后續(xù)請求帶上 curl -s -c /tmp/ck.txt -d usernametestpassword123456 $BASE/login -o /dev/null -w login:%{http_code}\n # 2. 加購兩道菜看是否 302 到購物車 curl -s -b /tmp/ck.txt -d dishId1qty2 $BASE/cart/add -o /dev/null -w add:%{http_code}\n # 3. 提交訂單返回體里應(yīng)帶訂單號 curl -s -b /tmp/ck.txt -X POST $BASE/order/submit | grep -o OD[0-9]* # 4. 直接查庫核對庫存是否真的減了 2 mysql -uroot -p -e SELECT id,name,stock FROM order_db.dish WHERE id1;這套腳本的意義在于把「頁面看起來正常」換成「數(shù)據(jù)確實對上了」。第 3 步拿到的訂單號要和第 4 步的庫存變化對得上才算真的通過只看到跳轉(zhuǎn)到成功頁就收工很容易漏掉事務(wù)沒生效的情況。還有一個容易被忽略的點改完之后記得把web.xml里的歡迎頁、過濾器順序、jdbc.properties三者再對一遍。我吃過一次虧把數(shù)據(jù)庫從本地換到另一臺機器只改了 properties 忘了改連接池的初始化參數(shù)結(jié)果應(yīng)用啟動正常第一次下單才報錯排查了半天才想起是兩個配置源。從那以后我每次動配置都強制先把「啟動 → 登錄 → 加購 → 下單 → 后臺改狀態(tài)」這條鏈路空跑一遍再改代碼雖然多花五分鐘但省下的往往是半個下午。這套訂餐系統(tǒng)的包就放在那里按上面的順序拆一遍比自己從零搭一個骨架要快得多希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
av午夜影院在线播放| 亚洲中文字幕熟女| 亚洲男人的天堂V| 亚洲青青草| 日韩欧美国产高清视频| 一级一性爱免费视频| 久久天天躁日日躁狠狠躁| 成在线人在线观看视频| 国产熟女无套内射| 天天插天天操天天摸天天射天天看| 乱伦系列一区二区| 国产午夜福利专区综合| 日韩精彩视频| 麻豆精品天美| 久热色情精品| 一级特级aaaa毛片免费观看| 精品无码久久久久久国产浪潮| 欧美A√综合网 | 国内精品99999| 久久色人体| 99久久久久久久久| 久久精品欧美一区二区三区不卡| 97超碰欧美精品| 无码久| 国产成人网址| 国模无码一区二区三区在线| 操逼视频国产无套| 99热在线播放| 91在线观看,天天综合| 99re在线观看| AV丝袜少妇| 嗯嗯嗯好爽| 国产尤物AV尤物在线观看不卡| 婷婷色综合欧美日韩| 天天夜夜久久| 口爆欧美91| 婷婷在线视频| 91 丝袜在线| 欧美1727免费观看视频| 色婷婷丁香五月| 337p大胆噜噜噜噜噜91Av| 91在线视频观看国产| 精品无码少妇| 亚洲同性aV综合| 欧美日韩另类字幕中文| 日本一久是| 欧美一区二区日韩传媒搭讪精品| 久久亚洲人妻| 天天日天天色| 日本特黄f c2| 国产成人资源| 99热在线不卡| 综合网少妇| 色狠狠一区二区三区香蕉| 五月天欧美色图| 亚洲91大片| 伦在线97| 久久夜精品一区二区三区| 午夜啊啊啊| 国产综合久久久鬼色| 青青草视频在线观看一区二区| 四虎永久在线精品免费网址| 久久成年精品| 男女性扦B| 99999这里都精品| 日本黄色天堂| 超碰久久.com| av毛片aaaaa免费看| 老熟妇乱轮| 亚洲日韩精品久久久久一区壹牛| 国产精品 久久久精品一牛| 成 人 A V免费视频在线观看| 超碰97国产欧美| 超碰人妻97| 视频不卡中文字幕| 草草电影院| 女人被男人桶爽视频网站| 国产精品ⅴ无码大片在线看.| 91女日逼| 日韩高清黄片| 精品人妻av在线播放| 欧美成人午夜免费福利785| 人人考人人摸人人干| 狠狠躁AV| 日本高清加勒比| 九一亚洲国产免费| 久久精品电影| 被男人吃奶很爽的毛片| 熟女人妻一区二区三区| 激情四射婷婷四五月天| 9999九九九久久久| 一级性爱网| 美女啊啊啊啊啊啊| 亚洲精品乱码久久久久久蜜桃麻豆| 成人情色一区二区| 亚洲风情在线观看| 自拍偷拍 高清无码| 日本欧美国内在线| 国产精品熟女AV中文字幕在线播放| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 狠狠操狠狠爱| 九九RE视频在线精品| 老熟女熟妇| 超碰在线1234区| 丁香婷婷五月| 性爱乱伦一区| 97视频620| 少妇三p| 在线αⅴ| 日韩人体偷拍| 一区超碰一区| 亚洲一区日韩精品| 日本有码久久| 亚洲天在线| 在线看的av| 视频二区美腿丝袜制服人妻欧美| 久9爱经典视频| 思思热一热婷婷热一热| 久久久久久少妇| 黑人免费福利视频| 亚洲性爱高潮影院| 蜜臀网 一区| 岛国黄色大片网站| 精品丰满熟妇人妻一区| 25国产精品免费观看| 91 丝袜在线| 亚洲激情综合另类| 99ri在线视频| 91丝袜美女视频| 99热最新| 日韩射精| 亚洲 综合 欧美| 久艹99| 性爱免费视频成人| 亚洲欧洲激情| 精品无码欧美三级| 第四色亚洲色图| 丰满人妻区一区二区三| 大香蕉免| 在免费jIzzjIzz在线视频| 怡红院怡春院| 被男人吃奶很爽的毛片| 欧美色九九| 欧美激情在线观看视频| 国产精品色色| 99啪| 午夜福利成人免费视频| 熟女人妻精品一区二区视频| 高清无码人妻久久久一区二区三区aⅴ| 久久精彩视频| 草莓精品视频在线免费观看| 亚洲成人在线高清| 免费啪啪av| 色吧 综合| 久久久久久网址| 亚洲影院成人| 亚洲午夜福利在线影院| 色香蕉影院| 国产成人资源| 一起草三级AV电影在线观看 | 伊人一区二区在线播放| 日韩图色| 土豪酒店各种姿势玩弄极品幼稚| 人人妻人人色一区二区三区| 美日韩一二三区| 欧美色图私拍91| 青草影院内射高潮| 91熟女丨91老女人| 三级特黄60分钟播放| 乱伦AVxx| 婷婷色色五月| 97天天插| 伊人一区二区三区| 91久热| 精品在线观看视频在线| 亚洲 91 在线| 超碰97色色| 91亚州欧美| 丰满人妻一区二区三区免费| 少妇啪啪自拍| 人看人人摸人人操| 久久久熟妇熟女国产| 九九这里只有精品| 久草福利在线资源站| 蜜臀精品1区2区| 97在线观看视频| 天天澡天天爽日日AV| 一区二区三区精品久久| 成人在线永久| 国产对白刺激视频| 日韩99神马视频片| 日韩免费高清大片在线| 久久9 9 9精品| 自慰白浆在线观看| 日韩欧美麻豆 | 中文字幕在线观看丝袜| 激情内射| 天天干天天干天天| 一区二区三区高清| 美女刺激久久国产欧美| 2017,超碰| 欧美性天天影视| 3P丝袜熟女 色综合| 天天弄天天操| 翔田千里无码一区| 欧亚成人在线视频| 久久久久成人亚洲国产| 欧美色图在线视频少妇| www.99在线| 人妻精品一区二区| 又黄又粗又硬又长又大| 国产色精品午夜大片| julia在线观看久久| 免费视频97| 国产精品电影| 日韩精品 欧美激情| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 好吊色一区| 97综合国产精品高潮久久| 91丨九色丨大屁股| 精品视频一区二区| 天天日骚逼熟女| 蜜乳AV一区二区三区四| 国产suv精品一区二六| 熟女突然公开看18禁影片| 亚洲男人天堂av| ai欧美亚洲小说| 操操啪| 久久婷婷综合国际产色怕| 丁香六月啪啪| 久久精品91| 精品少妇一区二区三区免费观看| 亚洲成人黄色在线观看| 精品美女少妇一区二区| 夜夜骑操视频| 亚州色图欧美| 91l欧美在线| 女人的久久久| 狠狠干婷婷| 五月天久久婷婷亚洲| 麻豆91熟妇人妻中文字幕茄子| 亚欧美天堂在线| 伊人激情| 91亚洲黑人| 家庭乱伦网站国产| 成人午夜高潮av猛片| 99精品在线| 五月天欧美色图| 久久伦理视频久久大香蕉视频| 色情综合网| 天天干天天舔| 久久久亚洲高清不打码| 精品无码久久久久久国产浪潮| 天天舔日美女视频| 伊人欧美大香蕉视频| 中出20p| 久久伦理视频久久大香蕉视频| 91中文在线| 开心五月激情网| 天堂岛av| 夜夜嗷嗷一区二区| 久久久久久裸体| 精品无吗久久| 成人一级二级| 久久久一区二区三区麻豆| 欧美久久人体| 久9热| 天天综合网~69| 国产在线综合网| 岛国在线国产| 婷婷综合网站| 男生女生啊啊啊啊| 久久精品99久久久久久| 国产精品香蕉| 欧美成人性爱视频大全| 大香网站| 91九色丨国产丨爆乳| 亚洲激情 欧美色图| 成人精品水蜜桃久久久久久久| 果冻传媒A片麻豆熟妇人妻| 婷婷五月天激情四射| 精品成人无码| 老女人爆菊| 欧美综合制服在线| 91骚熟女| 日本99视频| 色爽——AV| 国产精品高潮久久久无码| 可以在线观看AV的网站| 国产妇女精品视频青青草| 亚洲 日本 不卡| 顶级丝袜熟女一区二区三区| 久久亚洲不卡一区二区三区| 夜夜国产一区| 加勒比在线观看一区二区| 九九热精品在线| 后入综合久久| 国产av美女被艹的乱叫| 亚洲偷91色| 国产精品爽爽va在线观看98| 天天舔九色婷婷| 操b在线观看| 97精品久久久久久久| 亚洲无 码A片在线观看麻豆| 97色色色| 亚洲熟妇自偷自拍另欧美| 日韩精品第3页| 91美女在线| 日本国产欧美高清在线| 国产精品乱码久久| 九九九九九九九| 九九九九九九九精品视频| 无码高清操逼| 少妇大屁屁| 欧美日韩大陆黑人少妇99| 亚洲另类电影| 亚洲天堂99| 欧美天天干| 亚洲色婷婷久久久综合日本| 大屁股国产在线视频| 水澄无码AV| 成人综合久久精品色婷婷| 放黄片放3级黄片没穿衣服| 久久性爱视频99| 日韩 成人 有码| 精品免费1| 校园春色综合| 97亚洲资源| 亚洲情色一区综合| 天天摸天天碰天天添青青| 久久a久久| 亚洲中文字幕妇伦久久| 精品97精品97| 精品欧美日韩在线观看| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 精品少妇一区二区三区| 欲色综合| 伊人专区一区二区三区| 懂色中文一区二区三区| 日本高清_区二区三区| 欧美日韩国产中文精品字幕自在自线 | 国产精品久久妻无码网站| 亚洲激情在线观看一区| 国产精品亚洲一区二区三区四区| 亚洲男人天堂Av| 校园春色综合色| 蜜乳av一区二区三区四区不卡| 夜色97| av强奸乱轮| 国产人伦a片信息免费片| 国产欧美亚洲精品a第2页| 青青草中文-久久青草精品一区二区三 | SS久久| 91在线一起| 国产91亚洲精品一区二区三区| 熟女色综合久久| 久久美女国产| 1024亚洲中文字幕久在线看片你懂的 | 久久综合国产精品国产| 亚洲综合激情五月久久| 校园春色欧美| 成人av毛片在线观看| 日本www操操操| 久久天天摸| 超碰一区二区| 亚洲中文日韩欧美大香蕉视频| 久久久久久裸体| www.av家庭乱伦| 91女网站| 97欧美精品综合| 欧美亚洲综合色| 1区2区3区中文字幕日韩| 国产乱码久久| 亚洲欧美97| 国产色精品午夜大片| 中文字幕啊啊啊在线观看视频| 伊人久久婷婷| 中文字幕精品日韩中文字幕| 久久99国产综合精品女同| av凤凰久久久| 99操碰| 东京热男人的天堂网| 老熟妇乱轮| 26uuu国产免费观看| 亚洲精品一卡二卡三卡福利视频网站| 久久久免费一级黄片| 中文字幕免费在线观看| 99精品在线观看| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 日本高清视频xxxx| 美女熟妇色| 天美av在线观看| 91夜夜蜜桃臀1区2区3区| 国产福利电影| 日韩三级在线观看mp4| 大香蕉伊人亚洲| 色婷婷基地| A级片一区| 97免费视频在线| 综合激情一一91| 91青青草| 99re99在线视频| 欧美日韩国产中文精品字幕自在自线| 污电影在线观看| 丁香五月婷婷基地| 国产毛片久久久久久久| 久久久久久人体| av操操不卡| 九九综合久久| 欧 美 自 拍 偷 拍| 78m成人视线| 日韩欧美被操黄免费观看| 免费在线观看国内色片网站网址| 国产精品视频在线观看| 97精品97久久| 久久综合女优| 青青草日本无码| 亚洲中文字母在线播放| 97Ai亚洲| 青青草原成人| 老色鬼成人精品视频下载大在线观看| 手机不卡视频不卡在线一二三区| 色婷婷激情| 韩国成人精品久久久免费看| 国产肏逼网站| 中文字幕在线免费观看2| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 久久专区| 可免费观看的av毛片中日美韩| 高清不卡 中文 人妻| 91色综合激情| 天天看特黄的免费网站| 欧美色天堂网在线视频| 99re99视频在线免费观看| 天堂av2019| 爱干爱射网啊啊啊| 久久有碼| 怡红院亚洲怡春院av| 色老牛| 亚洲淫色网中文| 亚洲在高跟鞋自慰久久在色线| 国产久久久9999| 91高跟美女在线播放| 伊人玖玖网| 国产视频小说| 91爱| 在线色导航| 亚洲成A∨人影院在线欢看| 熟女突然公开看18禁影片| 大香蕉综合在线| 射 色综合| 国产妇女精品视频青青草| 99色日| 欧美久久人体| 日韩欧美成人性爱在线| 91啪啪视频| 蜜臀AV成人精品蜜臀AV久久| 少妇激情AV| 亚洲天堂五月天国产| 日韩欧美国产一区二区三区四区| 992这里有精品| 超碰久久草| 91制服丝袜中文字幕| 超碰色男人操熟女| 爆乳免费黄网站| 五十路人妻在线| 黑人免费福利视频| 黄色乱论网站| 91色亚洲| 青青操轻轻| 2026国产精品视频| 久久伊人亚洲AV无码网站| 久久久18| 亚洲精品熟妇1区2区3区。| 隔壁邻居波多野结衣中文字幕 | 国产精品久久泡妞网站| 中文操嬖片。| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 91丝袜美女视频| 亚洲图片偷拍视频区| 91精品人妻五十路| 欧洲一级性爱视频在线观看| 欧美91网站| 少妇无码av专区线| 9999九九九久久久| 人妻精品一区二区在线| 久久久久久裸体| A V视频日本| 天天操天天日天天干| 精品日韩中文在线| 熟妇国产免费一区| 中文字幕大片三级狠狠干| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 欧美玖玖爱免费玖玖| 日韩激情啪啪啪| 亚洲男人天堂视频| 日韩欧美视频青青| 91免费看一区二区三区| 熟妇高潮精品一区二区三区下载| 国产男人又猛又粗又爽| 97这里有精品| 国产欧美日韩臀| 精品亚洲黄色片 国产精品导航一区二区| 中国黑人三级片网站上区| 亚洲成人日韩小说| 天天天干977| 精品免费一区二区三区在线亚洲人成| 97超碰磁| 美女9118禁| 神马久久久久久久久久| 蜜桃无码AV一区二区| 亚洲九九九| 久久高清无码夜夜操| 伊人色综合网| 口爆吞精在线观看| 成人五月天丁香激情综合| 日本中文字幕一区| 中文字幕在在线观看网站| 久久人人爽爽人人爽人人片αV| 成人开心网在线视频| a男人的天堂| 久久婷婷色| 欧美另类精品xxxx| 黑人美精品 A片| 欧美精品69性爱| 色五月av| 97国产精品一区二区传媒公司| 日日干男人的天堂| 欧美偷| 亚洲三级网址久久最新| 丝袜AV一二三区| 婷婷五月天激情小说| 约操熟妇| 999岛国大片| 成人八戒网站| 亚洲无码久久久久久久| 很很热性爱视频| 殴美在线AⅤ| 插日本熟女视频| 伊人久久大香大香线蕉中文| 强奸乱伦动态污图免费 | AAA久久| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 尤物网站91| 啊啊嗯嗯好爽| 性爱视频啪啪啪啪| 国产人妖视频一区在线观看| 欧美丰满少妇xx高潮| 久久一级无码精品毛片6| www.大香| 中文字幕日韩国产传媒欧美精品| 亚州色图第三区| 大香蕉十区| 亚洲色情在线影视| 中文字幕成人乱码熟女精品国50 | 亚洲综合电影| 国岛片视频| www欧美性爱| 久久女人视频| 欧美性第1页| 亚洲色图欧美激情| 岛国在线一区二区三区| 青青草九九九九九| 欧美中字不卡| 2021国产成人精品久久| 黄片免费看黄片免费看| 久久e6只有精品| 视频一区二区免费在线| 国产高清在线观看欧美| 校园春色综合| 91亚洲欧美激情| 户外裸露刺激视频第一区| 亚洲日韩av一区二区三区百合| 素颜老阿姨乱情色| 国产操逼网站亚洲一级黄色| 天堂8在线新版官网| 97欧美| 激情五月天视频| 综合色久欲| 久久久久久久伊人精品| 在线观看A啊啊啊| 校园春色综合网| 日韩一区二区精品视频| 九九超碰综合网| 日韩人妻一区二区精品| 精品二区三四区五电影 | 97天天摸天天碰| 亚洲综合在线91| 五月丁香综合啪啪| 啊啊啊想要| 96精品在线| 曰韩中文人妻视频| 国产传媒一区日韩| 乳欲人妻办公室奶水| 中文久久96| 日本三级R| 好涩综合| 密臀AV在线| 国产欧美精选激情视频| 天天超级碰碰碰| 国产综合操逼高清| 翔田千里A片一区二区| 欧美精品久久96人妻无码| 五月婷网站| 久热精品在线| 成人精品电影| 艹少妇网站| 精品国产乱码久久久久久蜜臀| 99re8超碰| 人人射人人操人人摸| 偷拍自拍在线视频观看| 中文字幕无码不卡啪啪| 97干日韩| 日韩欧美中文| 久久原创中文| 日韩钢筋无码高清啾啾啾| 黄色片G G G| 国产精品夜夜| 日韩探花精品在线视频| 99热亚洲| 啊啊啊啊啊好舒服视频| 日本女人久久久| 久久亚洲欧美中文字幕国语| 婷婷激情综合网| 伊人青青草久久| 久久人妻熟女一区二区 | 亚洲一区制服诱惑| 婷婷色色五月天福利| 亚洲精品人妻吞精av| 欧美色图天堂网m| 一区二区三区四区理论片| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 性生活无遮挡纯毛片在线看| 青青青在线高清视频在线一二三四区| 人人操我人人干| 综合网欧美在线| 97伊人超碰| WWW黄片COM| 青青草无码视频| 日本成人A片免费看| 91人人看| 91色综合| 激情露脸爱| 亚洲中文字幕在现观看| 白丝AV网站| 国产亚洲福利第一页丝袜| 国产av青草| 日韩免费在线观看不卡| 97视频在线观看高清资源| 天天做天天爱夜夜爽毛片试看| 亚洲有薄码区日本系列中文字幕| 欧美 亚洲 在线| 超碰性爱97| 欧美人妻少妇| 国产夜夜艹| 日本操逼视频不卡直接放| 老司机久久| 超碰色综合| 麻豆天美传媒在线视频天堂| 天天草夜夜草高潮片| 亚洲诱惑天堂 | 青草青草久热| 亚洲美女精品九九视频| 久久嫩草国产成人一区| 91社区拍啪人妻| 9精品久久久久| 天堂av2019| 综合久久久久久久综合网| 日韩精品一区,二区 九九...老司机| 偷窥自拍亚洲天堂网爆| 试看60秒 爽| 久久超碰av在线| 蜜臀国产AV中文字幕| 91亚洲综合在线| 亚洲棕合电彰| 丰满人妻-区二区三区免费| 蜜乳视频网站| 中文视频在线观看| 黄久久| 强上我不卡卡| 岛国成人av在线播放网址| 亚洲色交| 四虎影视国产精品| 330dv亚洲成年视频网| 欧美人妻精品| 九九综合久久| 国产呦精品一区二区三区下载| 97超碰磁| 99精品国产户外露出| 熟女熟妇一区二区三四区| 日日日大屁股骚女人精品| 黄色乱论网站| 中文字幕一区 二区三四五 区日 日骚| 精品久久久久久中文| 超碰无码加勒比| 国产操逼网站亚洲一级黄色| 超碰97欧美| 玖玖久久久| 久久区| 久久久999国产精品| 久久亚洲天堂| 日韩AV噜噜噜一区二区三区四区| 日韩欧美女求操每天更新| 91色伦| 黑人性欧美| 欧美热图99| 久久久日本电影| 精品蜜乳AV免费观看| 精品欧美А∨无码黑人大荫蒂| 国产精品成人久久一区二区三区 | 清纯唯美综合| 日日骚中文字幕| 亚洲国产精品V?在线播放| 日韩操逼HD| 唐山老熟妇露脸啪啪叫| 黄片色区软件| 一块操欧美性爱| jiujiujiujingpin| 青娱乐老司机视频| 日韩在线地址一| 人人干人人操人人..com| 伊人精品久久网站| 99老司机精品视频在线观看| 国产超碰人人爽人人做| 国产精品视频白浆免费| 久久丁香| 少妇专区一二三四五| 成人草草视频| 精品毛片av一区二区| 丁香五月婷婷色| 中 文字幕一区二区三四 五 区日 日 骚| 欧美伦乱爱| 久久精品久| 操逼日韩无码| 人人澡人人弄| 人妻三级在线中文字幕| 户外裸露刺激视频第一区| 爆乳免费黄网站| 激情文学小说一区二区| 大香蕉www.超碰| 欧日韩不卡视.频| 国产夫妻性生活视频| 91伊人久| 日本 免费 一区二区三区 久久香蕉| 精品丰满熟妇人妻一区| 中文字幕在线观看永久| 91女网站| 思思久热在线精品66| 久久精品国产亚洲AV片多多| 久久精品99久久久久久| 亚洲精品国产日韩无码AV永久免 | 91丝袜美腿片| 女同女同恋久久级三级| 麻豆久久久久久久久丝袜| 97精品视频| 91九九九馒头| 91亚洲高清| 爱爱动态120秒| 久久东京热久久| 91欧美高清| 国产视频第二页| 日韩丝袜人妻AV| 天堂v无码免费视频| 欧美色66| 精品v日韩欧美国产| 国产精品国产精品国产| 福利天天都操| 九九色综合| 国产精品美女久久久久久网站| 人妻少妇蜜桃视频欧美一区| 超碰免费97| 青青草字幕AV| 中文字幕av亚洲在线| 欧美宗合色| 免費人妻夜夜爽天天爽爽一区| 成人精品在线免费视频| 色眯眯av| 日韩乱插| www.伪伪| 日韩无码专区| 九九九久久久久| 波多野结衣先锋影音| 蜜臀Av一区二区三区| 九九九综合精品| 亚州操逼网| 日本性感人妻91| 快灬快灬 一下爽蜜桃在线观看| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 国产尤物在线三区| 搡老女人老妇女老妇老熟女怎么读| 日韩激情毛片一级久久久| 麻豆色99999| 久久99精品九九久久久婷婷| 嗯嗯啊在线视频| 99日精品欧美国产| 伊人网综合在线视频| 亚洲精品久久久久毛片A片拉屎 | 久久草视频污视频| 嗯嗯嗯啊啊啊在线免费观看| 色爱国产| 亚洲五码一区二区三区| 亚洲精品性爱片| 中文字幕丰满子伦无码专区在线视频最新| 手机av亚洲丝袜美腿日韩第一页二页| 国产乱码久久| 国产极品999| 天天欧美欧美亚洲网| 五月激情啪啪| **一级毛片国产| 三级三久久线久久99久目本WW| 日韩亚洲中文有码视频| 污污汅18禁网站在线永久免费观看 | 蜜臀Av一区二区三区| 亚洲高清欧美总合| 后入综合久久| 色逼综合| 婷婷超| 性饥渴少妇av无码毛片| 中文字幕五月婷婷免费| 亚洲精品人妻在线| 一本色道综合久久欧美| h无码动漫在线观看| 亚洲国产麻豆一区二区三区| 一起草精品人妻| av一区二区三区 中文| 欧美色五月| 综合日本女人伊人| 精爱久久| 欧美精品久久96人妻无码| 久久欧美1卡2卡3| 91丝袜人妻| 亚洲国产综合久久天堂| 日韩av三四区| 亚洲欧美经典一区二区| 国产 无码 一区二区| 3571色综合一区二区二区| 亚洲免费日韩在线一区二区| 嫩草 我啊~嗯~在线| 粉嫩AV一区二区夜夜| 久久中文字幕在线观看| 另类小说综合网| 婷婷导航| 亚洲清纯唯美| 免费精品无码一级毛片牛牛影视 | 色图综合网| 日韩强奸av| 人妻精品综合中文字幕在线 | 夜夜爽夜夜操| 久操视频资源站公开| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 天天亚洲| 偷窥自拍亚洲天堂网爆| 91美女色视频亚洲| 狠狠操,使劲操| 射 色综合| 久久九九97| 激情五月天色播| 午夜亚洲| 香蕉人人操tv| 4虎在线视频| www..com操老师| 天天天乱色综合全| 青娱乐老司机视频| 97激情97激情| 精品欧美А∨无码黑人大荫蒂| 中文字幕日韩综合| 少妇激情一区二区三区视频| 欧美视频边做饭边橾| 天天干夜夜肏| 成人免费不卡在线视频| 精品国产乱子伦一区二区三区,精品一| 日本在线不卡v二区| 妇女乱色二区| 久久丁香五月天| 国产精品一区二区三| 日日日日日| 91精品人妻偷情| 欧美一区二区传媒| 搡老熟女老女人老熟妇免费视频| 亚洲素人综合| 欧美毛片在线网| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲Av噜噜一区二区三区妖精| 嫩草在线视频| 精品制服美女中文一区二区三区| 99久久99久久综合| 美女啊啊啊啊啊啊| 骚熟女吞| 欧美日韩理论一区| 中文字幕乱在线伦视频中文字幕乱码在线| 国产性爱欧美性爱在线 | 日本九九久久99| 日韩人妻有码免费视频| 亚洲熟妇自偷自拍另欧美| 99久久精品欧美国产| 青青草色AV| 成人色女网| 午夜免费福利视频一区| 日日干天天干夜夜爽| 亚洲色综网| 色女网日韩| 亚洲啪啪性视频| 人人艹亚洲| 久久久久久久久久久免费精品| 97视频在线观看网站| 欧美18禁91| 五月丁香综合激情| 无色无码| 色狠狠 - 百度| 日韩无码一级黄色av片| 中出人妻中文字幕91在线| 日韩情色AV| 91男女啊啊啊| 最新欧洲欧美日本激情网站| 精品人妻av在线播放| 女人与公拘交酡2020视频| 91丝袜在线观看| 偷拍导航视频网站| 日韩无码第3页| 999九九九九国产动| 久久久久9999妇女| 亚洲天堂自拍| 久久久久久91香蕉国产| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美极品美女aaaaaa级黄片| 97精| 久久久久久久人妻丝袜| 啊啊啊啊啊好多水| 日韩免费中文字幕视频| 操婢日韩| 国产九九九九九九九九| 亚洲古典另类欧美在线| 欧美性爱十八禁| 日本99热| 97精彩视频网站| 超碰人妻中文在线| 97欧美久久久久久久| 亚洲综合草草| 啊啊啊久久| 亚洲精品性爱片| 成人性爱电影网| 日本特黄f c2| 日韩欧美偷拍美女视频| 色噜噜人妻av中文字幕| 秋霞Av理论一级在线| www.久久制服糖| 亚洲精品视频在线播放| 伊人久久亚洲中文字幕| 欧美,亚洲,日韩,v,天堂,手机在线观看| 另类图片五月天| 操逼免费视频无码国产| 久久这里只精品99re66图| 91色综合激情| 国内外激情在线| 亚洲精品白浆高清久久久久久| 日本久久精品| 精品一区二区三区四区外站| 嗯嗯不要 视频| 亚洲欧美在线观看免费| 日本有码久久| 欧美亚洲手机在线| 黄色免费网页无码| 久久 亚洲 日韩 人妻| 超碰人妻久久| 69精品人人人人| 97中文字幕一区| 亚洲五码一区二区三区| 啊啊好多水| 欧美国产精品久久九九| 久久久久久亚洲精品不卡人乳| 九九五月天| 熟女乱伦二区| 嗯嗯啊好爽| 九久9精品| 熟女高潮合集-永久久久-成人AV| 欧美日韩97在线| AV综合中文字幕干| 蜜臀久久99'精品久久久| 久久久久久久久久久免费精品| 日韩性爱视频免费在线| 99最新日韩偷拍视频| 午夜天堂啪啪| v91av| 亚洲天堂区| 999久久久免费精品国产牛牛| 最新日韩黄片| 诱惑网综合| 亚洲精品一二三四区| 日本成a人v网站在线观看| 操B久久| 亚洲日韩美女中文字幕乱| 91久久久久| 天天摸,夜夜摸| 亚洲精品国产熟女| 五月天亚洲网| 91精品国产综合久久久蜜臀| 无码久久国产 | 国产精品久久99日日| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 激情综合五月| 欧美性爽xyxOOOO| 五月天欧美色图| 2020视频1区2区3区| 午夜男人的天堂| 色www精品视频在线观看| 婷婷激情五月| 琪琪精品免费一区二区三区 | 99re这里只有精品3| 欧美一区二区三区四区综合| 国产情色第一第二页在线观看| 99视频自拍| 精品中文字幕第一页| 综合网欧美| 精品人妻一区二区免费看| 精品乱码久久久久| 男人亚洲91首页在线| av日韩在线观看电影| 99婷婷一区二区| 精品一区二区三区麻豆| 97久久国产精品| 人妻久久久| 黄色av片三级三级三级免费看| 国产一区二区三区白丝| 亚洲有码视频二区| 3级毛片一二| 亚洲人人夜夜澡人人爽| 99久久9| 午夜欧美J进J出白浆流出久久久| 国产 日韩 欧美 人妻 熟女 中文| 天久久久噜噜噜久久国产精品爽爽| AV天黑人| 欧美日韩系列| 精品女同一区| 久久精品国产亚洲粉嫩| 热热色青青草| 中文字幕日韩情色| 亚洲色棕合| 综合色好色| 淫荡网址| 欧美精品成人一区二区在线观看| 99re98| 激情婷婷综合久久| 激情天天视频| 美女写真| 色综合天天| 欧美日韩国产中文超碰| 亚洲高清内射| 不卡六六在线91| 日韩精品人妻中文字幕不卡乱码| 九九热av| 加勒比海人人操超碰在线| 亚洲精品97| 一级AV性爱| 岛国AB视频| 天堂九九九九九九九九九| 久久亚洲影院一区二区| 大香蕉在线86| 亚洲91综合| 97综合国产| 色五天伊人| 国产精品久久久久久久毛片1| 天天操天天插| 久久夜精品一区二区三区| 性欧美91| 中文字幕精品久久久久人妻红杏ⅰ| Julia在线播放亚洲久久| 久久久久久国产精品免费网站| 熟女人妻一区二区三区| 老熟女熟妇| 亚洲日韩电影| 综合免费无码中文| 国产亚洲99久久精品| 操亚州| 欧美日本成人一区二区| 久久久97| 欧美高潮| 久久久久久电影| 射丝袜高跟鞋99| 久操免费观看| 日韩激情啪啪| 草B在线| 国产自产一区视频在线| 丁香五月天婷婷姐| 国产拍偷精品网站| 一二三四日本视频高清| 中文字幕日韩情色| 激情五月丁香五月| 99这里只有精品| 爱av免费| 男人的天堂视频精品乱在线| 国产精品久久久久综合| 丝袜高跟澳门91视频| 青草av在线| 67914在线兔费成人视频| 亚洲.欧美.丝袜.中文.综合| 亚洲成A∨人影院在线欢看| 特级大荫道BBwBBwBBW| 免费看片黄| 欧美大片一区二区三区| 成人三级片无码| 91n.欧美| 日本99热| 久久精品国产精品一区| 四虎884a| 亚欧国产无码精品在线| 久久久久久久| 日韩av熟女一区二区三区成人| 51国产午夜精品视频| 99re这里| 色99在线| 久久精品中文字幕观看| 久久精品一区一起草| 大胆91| 另类 日韩 熟女| 丰满少妇一区二区三区免费看| 人妻精品一区二区在线| 黑人免费福利视频| 劲爆欧美人妖三区91| AV天天综合| 天天天天天天天天天天干美女| 久久黄人人爽视频| 一区二区三区色综合| 亚洲日韩AV视色| 亚洲成人久久一区二区| 国产一级高清免费观看| 日韩精彩视频| 亚洲免费97免费| baisiav| 任你爽视频| 少妇干B| 免费1级a做爰片观看| 大学生美女口爆| 91亚洲网站| 日韩特一级久久| 综合色久欲| 欧洲精品一二三在线| 亚洲淫色网中文| 精品国产一区二区三区久久久蜜臀| 99色色网| 99re视频在线观看这里只有精品| 美国人人操人人操| 中文字幕精品日韩中文字幕| 国产精品96| 蜜臀久久99精品久久久久久婷婷| 97在线播放 | 另类欧美| 精品无码少妇| 97综合激情| 97天天| 国产欧美日本亚洲精品| 国产精品女aA片爽爽视频| 激情小说在线视频| 91天天| 高清成年美女黄网站免费大全| 无遮挡一级毛片视频免费的| 老熟女乱伦一区| 色官网在线| 97操碰| 国产精品久久久蜜臀| 四虎免费看黄|