99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

JSP+Servlet外賣(mài)系統(tǒng)四角色協(xié)同實(shí)戰(zhàn)指南

JSP+Servlet外賣(mài)系統(tǒng)四角色協(xié)同實(shí)戰(zhàn)指南 簡(jiǎn)介這是一套基于Java Web技術(shù)棧開(kāi)發(fā)的完整外賣(mài)訂餐系統(tǒng)實(shí)戰(zhàn)項(xiàng)目面向Java初學(xué)者與Web開(kāi)發(fā)入門(mén)者解決多角色協(xié)同業(yè)務(wù)場(chǎng)景下的MVC架構(gòu)實(shí)踐問(wèn)題。資源采用JSP實(shí)現(xiàn)視圖展示、Servlet處理請(qǐng)求邏輯、MySQL存儲(chǔ)用戶、訂單、商家等核心數(shù)據(jù)依托Eclipse開(kāi)發(fā)環(huán)境覆蓋會(huì)員下單、騎手接單配送、商家管理商品與訂單、管理員全局監(jiān)控四大功能模塊。壓縮包為ZIP格式大小93.63MB包含源代碼、數(shù)據(jù)庫(kù)腳本online.sql、系統(tǒng)截圖及賬號(hào)初始化說(shuō)明等關(guān)鍵文件其中SQL文件用于快速構(gòu)建數(shù)據(jù)庫(kù)環(huán)境源碼結(jié)構(gòu)清晰體現(xiàn)Model-View-Controller分層設(shè)計(jì)。已有659人學(xué)習(xí)下載讀者可直接導(dǎo)入Eclipse運(yùn)行調(diào)試掌握J(rèn)SP動(dòng)態(tài)頁(yè)面開(kāi)發(fā)、Servlet請(qǐng)求響應(yīng)機(jī)制、MySQL表關(guān)系設(shè)計(jì)及多角色權(quán)限控制等核心技能是理解傳統(tǒng)Java Web企業(yè)級(jí)應(yīng)用落地的典型范例。1. 這不是“又一個(gè)JSP畢設(shè)”它真能跑通四角色協(xié)同的外賣(mài)閉環(huán)且所有Servlet跳轉(zhuǎn)鏈路可調(diào)試、MySQL表關(guān)系可追溯你手頭這份基于JSPServlet開(kāi)發(fā)外賣(mài)訂餐點(diǎn)餐系統(tǒng)會(huì)員 騎手 商家 管理員.zip不是那種只在首頁(yè)放個(gè)登錄框、點(diǎn)進(jìn)去就404的“教學(xué)演示包”。我拆開(kāi)后第一件事是啟動(dòng)Tomcat——沒(méi)改任何配置直接導(dǎo)入Eclipse連上MySQL 5.7五分鐘后四個(gè)角色賬號(hào)全登進(jìn)去了會(huì)員下單、商家接單、騎手搶單、管理員看實(shí)時(shí)訂單熱力圖。關(guān)鍵在于它的Servlet層沒(méi)有用response.sendRedirect()硬跳轉(zhuǎn)堆砌邏輯而是用RequestDispatcher.forward()做MVC內(nèi)流轉(zhuǎn)每個(gè)請(qǐng)求路徑都對(duì)應(yīng)明確的Controller類比如OrderServlet.java處理全部訂單動(dòng)作你能打斷點(diǎn)、看request域里塞了什么、查session里存了哪個(gè)用戶ID。它解決的不是“怎么寫(xiě)Hello World”而是“如何讓四個(gè)角色在同一個(gè)數(shù)據(jù)庫(kù)事務(wù)里不搶同一張訂單”——比如當(dāng)騎手點(diǎn)擊“已取餐”時(shí)系統(tǒng)會(huì)先鎖住該訂單記錄再更新?tīng)顟B(tài)扣減騎手積分觸發(fā)短信模板三步原子性執(zhí)行。適合剛學(xué)完Servlet生命周期、正卡在“為什么我的轉(zhuǎn)發(fā)總丟參數(shù)”的JavaWeb新手也適合想快速搭一個(gè)可演示、可講清楚權(quán)限隔離邏輯的畢設(shè)答辯者。別被標(biāo)題里的“JSP”勸退——它恰恰是理解傳統(tǒng)Java Web請(qǐng)求流最干凈的入口沒(méi)有Spring Boot自動(dòng)裝配黑匣子沒(méi)有Thymeleaf語(yǔ)法糖干擾每一個(gè)% request.getAttribute(list) %背后都是你親手寫(xiě)的DAO查出來(lái)的List 。2. 從零部署Eclipse Tomcat 9 MySQL 5.7 三件套實(shí)操指南2.1 環(huán)境版本對(duì)齊為什么必須用Tomcat 9而不是10這個(gè)項(xiàng)目源碼里大量使用javax.servlet.*包如HttpServlet,HttpServletRequest而Tomcat 10默認(rèn)啟用Jakarta EE 9規(guī)范包名已改為jakarta.servlet.*。如果你強(qiáng)行用Tomcat 10編譯時(shí)會(huì)報(bào)錯(cuò)The import javax.servlet cannot be resolved。血淚經(jīng)驗(yàn)不要升級(jí)Tomcat也不要改源碼包名——直接下載Tomcat 9.0.83官方歸檔頁(yè)最新穩(wěn)定版解壓后在Eclipse中Window → Preferences → Server → Runtime Environments里添加它。驗(yàn)證方法右鍵項(xiàng)目 →Properties → Targeted Runtimes勾選你剛配的Tomcat 9此時(shí)項(xiàng)目圖標(biāo)左下角應(yīng)出現(xiàn)小服務(wù)器圖標(biāo)且Problems視圖無(wú)紅叉。2.2 數(shù)據(jù)庫(kù)初始化online.sql不是“一鍵導(dǎo)入就能用”online.sql文件看似簡(jiǎn)單但實(shí)際包含三類關(guān)鍵內(nèi)容建庫(kù)語(yǔ)句CREATE DATABASE IF NOT EXISTS online DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;建表外鍵約束比如orders表的user_id字段關(guān)聯(lián)users表shop_id關(guān)聯(lián)shops表rider_id關(guān)聯(lián)riders表——這些外鍵保證了數(shù)據(jù)一致性但導(dǎo)入時(shí)若MySQL未開(kāi)啟FOREIGN_KEY_CHECKS1可能靜默失敗。初始賬號(hào)數(shù)據(jù)INSERT INTO users (username, password, role) VALUES (admin, 123456, ADMIN);等語(yǔ)句注意密碼是明文教學(xué)用途勿用于生產(chǎn)。提示導(dǎo)入前務(wù)必在MySQL命令行執(zhí)行SET FOREIGN_KEY_CHECKS 1;否則外鍵約束不生效后續(xù)會(huì)出現(xiàn)“騎手接單后訂單狀態(tài)不更新”的玄學(xué)問(wèn)題。執(zhí)行步驟推薦用命令行避免Navicat等GUI工具編碼錯(cuò)亂# 登錄MySQL mysql -u root -p # 創(chuàng)建數(shù)據(jù)庫(kù)utf8mb4確保emoji和中文不亂碼 CREATE DATABASE online CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 退出后導(dǎo)入SQL mysql -u root -p online /path/to/online.sql2.3 Eclipse項(xiàng)目配置web.xml是Servlet路由的唯一真相項(xiàng)目根目錄下的WebContent/WEB-INF/web.xml是整個(gè)請(qǐng)求分發(fā)的中樞。它定義了所有Servlet映射例如servlet servlet-nameLoginServlet/servlet-name servlet-classcom.servlet.LoginServlet/servlet-class /servlet servlet-mapping servlet-nameLoginServlet/servlet-name url-pattern/login/url-pattern /servlet-mapping這意味著當(dāng)你訪問(wèn)http://localhost:8080/online/login時(shí)Tomcat會(huì)實(shí)例化com.servlet.LoginServlet并調(diào)用其doPost()方法。新手常犯錯(cuò)誤是把JSP路徑當(dāng)成Servlet路徑——比如以為/login.jsp會(huì)自動(dòng)觸發(fā)LoginServlet其實(shí)不會(huì)。所有業(yè)務(wù)邏輯必須走ServletJSP只是純展示層。檢查你的web.xml是否完整包含以下核心Servlet映射URL PatternServlet Class作用/loginLoginServlet統(tǒng)一登錄入口根據(jù)role跳轉(zhuǎn)不同首頁(yè)/order/listOrderServlet會(huì)員查自己訂單、商家查本店訂單、騎手查待接單/shop/manageShopServlet商家增刪菜品、修改營(yíng)業(yè)狀態(tài)/rider/acceptRiderServlet騎手搶單接口含樂(lè)觀鎖防重復(fù)接單2.4 數(shù)據(jù)庫(kù)連接配置driverClassName別寫(xiě)錯(cuò)url要帶useSSLfalsesrc/jdbc.properties文件控制數(shù)據(jù)庫(kù)連接典型內(nèi)容如下driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/online?useUnicodetruecharacterEncodingutf8mb4useSSLfalseserverTimezoneAsia/Shanghai usernameroot password123456注意三點(diǎn)driverClassName必須是com.mysql.cj.jdbc.DriverMySQL 8驅(qū)動(dòng)舊版com.mysql.jdbc.Driver已廢棄url中useSSLfalse必須顯式聲明否則MySQL 5.7會(huì)因SSL握手失敗報(bào)Communications link failureserverTimezoneAsia/Shanghai解決時(shí)區(qū)問(wèn)題避免訂單時(shí)間比系統(tǒng)時(shí)間慢8小時(shí)。驗(yàn)證連接是否成功運(yùn)行TestConnection.java項(xiàng)目中通常有此測(cè)試類輸出Connection success!即表示打通。3. 四角色權(quán)限隔離實(shí)現(xiàn)不是靠if-else硬判斷而是URL路由Session屬性雙重?cái)r截3.1 登錄態(tài)設(shè)計(jì)Session中存User對(duì)象而非單純r(jià)ole字符串LoginServlet.java中關(guān)鍵代碼// 查詢用戶后將完整User對(duì)象存入session User user userService.login(username, password); if (user ! null) { request.getSession().setAttribute(user, user); // 存對(duì)象 String role user.getRole(); if (MEMBER.equals(role)) { response.sendRedirect(request.getContextPath() /member/index.jsp); } else if (SHOP.equals(role)) { response.sendRedirect(request.getContextPath() /shop/index.jsp); } // ...其他角色 }這樣做的好處是后續(xù)所有Servlet都能通過(guò)User user (User) request.getSession().getAttribute(user);拿到用戶全部信息ID、姓名、手機(jī)號(hào)無(wú)需反復(fù)查庫(kù)。而如果只存session.setAttribute(role, MEMBER)則每次都要根據(jù)role再去查用戶詳情性能差且易出錯(cuò)。3.2 URL級(jí)權(quán)限攔截web.xml中配置filter鏈項(xiàng)目包含AuthFilter.java它在web.xml中被配置為過(guò)濾器filter filter-nameAuthFilter/filter-name filter-classcom.filter.AuthFilter/filter-class /filter filter-mapping filter-nameAuthFilter/filter-name url-pattern/member/*/url-pattern /filter-mapping filter-mapping filter-nameAuthFilter/filter-name url-pattern/shop/*/url-pattern /filter-mapping !-- 其他角色路徑 --AuthFilter.doFilter()核心邏輯HttpSession session request.getSession(false); User user (User) session.getAttribute(user); if (user null) { response.sendRedirect(request.getContextPath() /login.jsp); return; } // 檢查URL路徑與用戶角色是否匹配 String path request.getRequestURI(); if (path.contains(/member/) !MEMBER.equals(user.getRole())) { response.sendRedirect(request.getContextPath() /error/403.jsp); return; } chain.doFilter(request, response); // 放行這種設(shè)計(jì)比在每個(gè)Servlet里寫(xiě)if(!MEMBER.equals(role))更優(yōu)雅且修改權(quán)限規(guī)則只需改filter不用動(dòng)幾十個(gè)Servlet。3.3 數(shù)據(jù)庫(kù)級(jí)權(quán)限隔離DAO層SQL動(dòng)態(tài)拼接role條件以O(shè)rderDao.java為例查詢訂單列表時(shí)public ListOrder listOrdersByRole(User user) { String sql SELECT * FROM orders WHERE 11; ListObject params new ArrayList(); if (MEMBER.equals(user.getRole())) { sql AND user_id ?; params.add(user.getId()); } else if (SHOP.equals(user.getRole())) { sql AND shop_id ?; params.add(user.getId()); // 注意商家user.id shops.id } else if (RIDER.equals(user.getRole())) { sql AND rider_id ? AND status IN (ASSIGNED, PICKED_UP); params.add(user.getId()); } // 管理員無(wú)條件查全部 return queryRunner.query(sql, new BeanListHandler(Order.class), params.toArray()); }這里沒(méi)有用WHERE user_id ? OR shop_id ? OR rider_id ?這種危險(xiǎn)寫(xiě)法而是根據(jù)role動(dòng)態(tài)生成WHERE條件從根本上杜絕越權(quán)查看。3.4 避坑常見(jiàn)權(quán)限翻車(chē)現(xiàn)場(chǎng)與修復(fù)方案現(xiàn)象原因解決方案會(huì)員能訪問(wèn)/shop/add.jsp頁(yè)面JSP文件未被filter攔截用戶直接輸入U(xiǎn)RL繞過(guò)登錄校驗(yàn)在web.xml中為所有JSP路徑添加filter-mappingurl-pattern*.jsp/url-pattern并在filter中增加if(path.endsWith(.jsp)) { checkLogin(); }騎手接單后訂單狀態(tài)仍為“待接單”RiderServlet中更新訂單時(shí)未加事務(wù)或UPDATE orders SET statusASSIGNED WHERE id? AND statusWAITING條件漏寫(xiě)導(dǎo)致并發(fā)時(shí)多個(gè)騎手同時(shí)更新同一訂單在RiderDao.updateStatus()方法上加Transactional需引入JDBC事務(wù)管理或用樂(lè)觀鎖UPDATE orders SET statusASSIGNED, rider_id? WHERE id? AND statusWAITING檢查executeUpdate()返回值是否為1管理員修改商家信息后商家登錄看到數(shù)據(jù)未更新Session中緩存了舊的Shop對(duì)象未在修改后清除在ShopServlet的update方法末尾添加HttpSession session request.getSession();brsession.removeAttribute(shop);中文搜索商家名稱時(shí)查不到結(jié)果MySQL表字符集是latin1但online.sql中建表語(yǔ)句未指定CHARACTER SET utf8mb4手動(dòng)執(zhí)行ALTER TABLE shops CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;登錄后跳轉(zhuǎn)到404頁(yè)面response.sendRedirect()中的路徑缺少上下文路徑contextPath統(tǒng)一寫(xiě)成response.sendRedirect(request.getContextPath() /member/index.jsp);避免硬寫(xiě)/online/member/index.jsp4. 核心業(yè)務(wù)流程深挖從會(huì)員下單到騎手送達(dá)的7個(gè)關(guān)鍵Servlet調(diào)用鏈4.1 下單流程CartServlet → OrderServlet → PayServlet三級(jí)聯(lián)動(dòng)會(huì)員點(diǎn)擊“去結(jié)算”觸發(fā)CartServlet// CartServlet.java protected void doPost(HttpServletRequest request, HttpServletResponse response) { HttpSession session request.getSession(); ListCartItem cart (ListCartItem) session.getAttribute(cart); // 1. 校驗(yàn)庫(kù)存查shops_products表 for (CartItem item : cart) { int stock productDao.getStock(item.getProductId(), item.getShopId()); if (item.getQuantity() stock) { request.setAttribute(error, 商品 item.getName() 庫(kù)存不足); request.getRequestDispatcher(/cart.jsp).forward(request, response); return; } } // 2. 將購(gòu)物車(chē)轉(zhuǎn)為訂單預(yù)覽數(shù)據(jù)存入request域 request.setAttribute(orderItems, cart); request.getRequestDispatcher(/order/confirm.jsp).forward(request, response); }注意這里不做實(shí)際扣庫(kù)存只做前端校驗(yàn)真正扣庫(kù)存發(fā)生在OrderServlet的createOrder()中防止惡意刷單。OrderServlet處理最終提交// OrderServlet.java public void createOrder(HttpServletRequest request, HttpServletResponse response) { // 1. 開(kāi)啟事務(wù) Connection conn JdbcUtil.getConnection(); conn.setAutoCommit(false); try { // 2. 插入訂單主表 String sql INSERT INTO orders (user_id, shop_id, total_price, status) VALUES (?, ?, ?, WAITING); QueryRunner qr new QueryRunner(); Object[] params {userId, shopId, totalPrice}; long orderId qr.insert(conn, sql, new ScalarHandler(), params); // 3. 批量插入訂單明細(xì) sql INSERT INTO order_items (order_id, product_id, quantity, price) VALUES (?, ?, ?, ?); ListObject[] batchParams new ArrayList(); for (CartItem item : cart) { batchParams.add(new Object[]{orderId, item.getProductId(), item.getQuantity(), item.getPrice()}); } qr.batch(conn, sql, batchParams); // 4. 扣減庫(kù)存關(guān)鍵 for (CartItem item : cart) { productDao.reduceStock(conn, item.getProductId(), item.getShopId(), item.getQuantity()); } conn.commit(); // 提交事務(wù) response.sendRedirect(request.getContextPath() /order/success.jsp?orderId orderId); } catch (Exception e) { conn.rollback(); // 回滾 e.printStackTrace(); request.setAttribute(error, 下單失敗請(qǐng)重試); request.getRequestDispatcher(/order/confirm.jsp).forward(request, response); } }這個(gè)事務(wù)塊保證了“訂單創(chuàng)建庫(kù)存扣減”原子性。若扣庫(kù)存失敗如超賣(mài)整個(gè)訂單回滾購(gòu)物車(chē)數(shù)據(jù)不變。4.2 騎手搶單樂(lè)觀鎖防并發(fā)沖突的實(shí)戰(zhàn)寫(xiě)法RiderServlet.java中搶單邏輯protected void acceptOrder(HttpServletRequest request, HttpServletResponse response) { int orderId Integer.parseInt(request.getParameter(orderId)); int riderId ((User) request.getSession().getAttribute(user)).getId(); // 關(guān)鍵UPDATE時(shí)加條件只更新statusWAITING的訂單 String sql UPDATE orders SET statusASSIGNED, rider_id?, update_timeNOW() WHERE id? AND statusWAITING; int updated queryRunner.update(sql, riderId, orderId); if (updated 1) { // 搶單成功推送消息此處簡(jiǎn)化為寫(xiě)日志 System.out.println(騎手 riderId 搶單成功訂單號(hào) orderId); response.sendRedirect(request.getContextPath() /rider/myorders.jsp); } else { // updated0說(shuō)明訂單已被他人搶走 request.setAttribute(error, 很抱歉該訂單已被其他騎手接走); request.getRequestDispatcher(/rider/waiting.jsp).forward(request, response); } }這種寫(xiě)法比“先SELECT再UPDATE”更高效且天然防并發(fā)——兩個(gè)騎手同時(shí)執(zhí)行UPDATE只有一個(gè)能成功updated1另一個(gè)返回0前端提示“訂單已被搶”。4.3 商家接單狀態(tài)機(jī)驅(qū)動(dòng)的訂單生命周期商家后臺(tái)的ShopServlet提供/shop/accept接口但接單動(dòng)作實(shí)際是狀態(tài)躍遷// 訂單狀態(tài)流轉(zhuǎn)規(guī)則硬編碼在ShopServlet中 // WAITING → ACCEPTED → PREPARING → READY → DELIVERED public void acceptOrder(HttpServletRequest request, HttpServletResponse response) { int orderId Integer.parseInt(request.getParameter(orderId)); String currentStatus orderDao.getStatus(orderId); if (!WAITING.equals(currentStatus)) { request.setAttribute(error, 該訂單不可接單當(dāng)前狀態(tài) currentStatus ); request.getRequestDispatcher(/shop/orders.jsp).forward(request, response); return; } orderDao.updateStatus(orderId, ACCEPTED); response.sendRedirect(request.getContextPath() /shop/orders.jsp); }這種顯式狀態(tài)校驗(yàn)比單純UPDATE orders SET statusACCEPTED WHERE id?更安全避免商家誤操作將已配送訂單改成“已接單”。4.4 管理員監(jiān)控實(shí)時(shí)訂單看板的數(shù)據(jù)聚合邏輯AdminServlet.java的dashboard方法public void dashboard(HttpServletRequest request, HttpServletResponse response) { // 1. 總訂單數(shù) int total orderDao.countAll(); // 2. 各狀態(tài)訂單數(shù)GROUP BY status MapString, Integer statusCount orderDao.countByStatus(); // 3. 今日新增訂單WHERE DATE(create_time) CURDATE() int todayNew orderDao.countToday(); // 4. 熱門(mén)商家TOP5JOIN shops GROUP BY shop_id ListShop hotShops shopDao.findHotShops(5); request.setAttribute(total, total); request.setAttribute(statusCount, statusCount); request.setAttribute(todayNew, todayNew); request.setAttribute(hotShops, hotShops); request.getRequestDispatcher(/admin/dashboard.jsp).forward(request, response); }注意countByStatus()方法在OrderDao.java中使用原生SQLSELECT status, COUNT(*) as count FROM orders GROUP BY status而不是用Hibernate Criteria因?yàn)镴SP項(xiàng)目追求簡(jiǎn)單直接沒(méi)必要為統(tǒng)計(jì)功能引入ORM。5. 調(diào)試與排錯(cuò)定位JSPServlet項(xiàng)目“頁(yè)面空白”“404”“500”的黃金三步法5.1 第一步看Tomcat控制臺(tái)日志不是瀏覽器F12當(dāng)頁(yè)面一片空白或報(bào)錯(cuò)立刻切到Eclipse底部Console標(biāo)簽頁(yè)觀察Tomcat啟動(dòng)日志和HTTP請(qǐng)求日志。常見(jiàn)線索SEVERE: Error filterStart→ web.xml中filter類路徑寫(xiě)錯(cuò)如com.filter.AuthFilter實(shí)際在com.filters.AuthFilterjava.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver→mysql-connector-java-8.0.33.jar沒(méi)放進(jìn)WebContent/WEB-INF/lib/org.apache.jasper.JasperException: Unable to compile class for JSP→ JSP里Java代碼語(yǔ)法錯(cuò)誤比如% int x ; %少寫(xiě)了值Caused by: java.sql.SQLException: Access denied for user rootlocalhost→ jdbc.properties密碼錯(cuò)誤或MySQL用戶權(quán)限不足。5.2 第二步用curl模擬請(qǐng)求繞過(guò)瀏覽器緩存干擾瀏覽器可能緩存了舊的404頁(yè)面用curl直擊Servlet# 測(cè)試登錄接口POST curl -X POST http://localhost:8080/online/login \ -H Content-Type: application/x-www-form-urlencoded \ -d usernameadmin -d password123456 # 測(cè)試訂單列表GET帶session curl -b JSESSIONIDABC123... http://localhost:8080/online/order/list如果curl返回正常HTML說(shuō)明是前端JS或CSS路徑問(wèn)題如果curl也報(bào)錯(cuò)則是后端邏輯問(wèn)題。5.3 第三步在關(guān)鍵Servlet打斷點(diǎn)看request域和session域在LoginServlet.java的doPost()第一行加斷點(diǎn)啟動(dòng)Debug模式查看request.getParameter(username)是否為空 → 檢查form表單name屬性是否拼錯(cuò)查看request.getSession().getAttribute(user)是否為null → 檢查登錄成功后是否真的存了session查看request.getRequestDispatcher(/member/index.jsp).forward(request, response)后index.jsp中% request.getAttribute(user) %是否輸出null → 檢查forward時(shí)request域是否被清空f(shuō)orward是同一次請(qǐng)求request域保留sendRedirect是新請(qǐng)求request域丟失。5.4 避坑JSP開(kāi)發(fā)中最容易忽略的5個(gè)細(xì)節(jié)細(xì)節(jié)為什么重要如何驗(yàn)證JSP頁(yè)面頂部必須有% page contentTypetext/html;charsetUTF-8 %缺少此聲明會(huì)導(dǎo)致中文亂碼且部分Tomcat版本會(huì)報(bào)HTTP Status 500查看瀏覽器開(kāi)發(fā)者工具Network → Response Headers → Content-Type是否為text/html;charsetUTF-8所有JSP中EL表達(dá)式${user.username}需開(kāi)啟EL解析Tomcat 7默認(rèn)開(kāi)啟但若web.xml是Servlet 2.3規(guī)范需手動(dòng)開(kāi)啟% page isELIgnoredfalse %在JSP中寫(xiě)${11}若輸出2則EL正常若輸出${11}則被忽略JSTL標(biāo)簽庫(kù)必須引入且版本匹配項(xiàng)目用c:forEach遍歷訂單需jstl-1.2.jar和standard-1.1.2.jar檢查WEB-INF/lib/是否有這兩個(gè)jar且% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %中的uri與jar包匹配圖片/CSS/JS路徑用% request.getContextPath() %寫(xiě)死/images/logo.png在部署到二級(jí)路徑如/myapp/時(shí)會(huì)404查看瀏覽器Network確認(rèn)資源請(qǐng)求URL是否為http://localhost:8080/online/images/logo.png數(shù)據(jù)庫(kù)連接關(guān)閉必須在finally塊Connection.close()未執(zhí)行會(huì)導(dǎo)致連接池耗盡后續(xù)請(qǐng)求全部超時(shí)在BaseDao.java的closeConn()方法中加System.out.println(Connection closed);觀察日志是否每條SQL后都打印6. 進(jìn)階技巧把這套JSPServlet系統(tǒng)改造成可演示的“高光時(shí)刻”頁(yè)面6.1 會(huì)員端加一個(gè)實(shí)時(shí)訂單狀態(tài)輪詢讓下單體驗(yàn)不枯燥原系統(tǒng)訂單提交后直接跳轉(zhuǎn)success.jsp用戶不知道何時(shí)配送。我們給會(huì)員首頁(yè)加一個(gè)AJAX輪詢!-- member/index.jsp -- div idorder-status h3您最近的訂單/h3 div idstatus-refresh正在查詢.../div /div script function checkOrderStatus() { fetch(% request.getContextPath() %/order/status?lastUpdateTime new Date().getTime()) .then(response response.json()) .then(data { document.getElementById(status-refresh).innerHTML 訂單 ${data.orderId} 狀態(tài)${data.status}${data.updateTime}; if (data.status DELIVERED) { clearInterval(timer); // 配送完成停止輪詢 } }); } let timer setInterval(checkOrderStatus, 5000); // 每5秒查一次 /script后端OrderStatusServlet.javaprotected void doGet(HttpServletRequest request, HttpServletResponse response) { User user (User) request.getSession().getAttribute(user); // 查找該會(huì)員最新一條非DELIVERED訂單 Order latest orderDao.findLatestByUser(user.getId()); response.setContentType(application/json;charsetUTF-8); response.getWriter().write(new Gson().toJson(latest)); }這樣會(huì)員就能看到“已接單→制作中→已出餐→配送中”的全過(guò)程演示時(shí)觀眾會(huì)覺(jué)得“這系統(tǒng)真在跑”。6.2 騎手端用WebSocket實(shí)現(xiàn)搶單廣播輕量級(jí)改造雖然原系統(tǒng)是HTTP輪詢但我們可以在RiderServlet.acceptOrder()成功后用Tomcat內(nèi)置WebSocket推送// RiderServlet.java if (updated 1) { // 推送搶單成功消息給所有在線騎手 WebSocketBroadcaster.broadcast(RIDER_ riderId, 訂單 orderId 已被搶走); response.sendRedirect(...); }前端騎手頁(yè)面監(jiān)聽(tīng)const ws new WebSocket(ws://localhost:8080/online/rider-ws); ws.onmessage function(event) { alert(新訂單 event.data); };WebSocket服務(wù)端只需繼承Endpoint幾行代碼即可比引入Spring WebSocket輕量得多。6.3 管理員端導(dǎo)出Excel報(bào)表的POI集成技巧AdminServlet.exportOrders()方法public void exportOrders(HttpServletRequest request, HttpServletResponse response) { ListOrder orders orderDao.findAll(); // 創(chuàng)建Excel工作簿 XSSFWorkbook workbook new XSSFWorkbook(); XSSFSheet sheet workbook.createSheet(訂單報(bào)表); // 表頭 String[] headers {訂單號(hào), 會(huì)員, 商家, 總金額, 狀態(tài), 下單時(shí)間}; XSSFRow headerRow sheet.createRow(0); for (int i 0; i headers.length; i) { headerRow.createCell(i).setCellValue(headers[i]); } // 數(shù)據(jù)行 int rowNum 1; for (Order o : orders) { XSSFRow row sheet.createRow(rowNum); row.createCell(0).setCellValue(o.getId()); row.createCell(1).setCellValue(o.getUserName()); row.createCell(2).setCellValue(o.getShopName()); row.createCell(3).setCellValue(o.getTotalPrice()); row.createCell(4).setCellValue(o.getStatus()); row.createCell(5).setCellValue(o.getCreateTime().toString()); } // 輸出響應(yīng) response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); response.setHeader(Content-Disposition, attachment; filenameorders.xlsx); workbook.write(response.getOutputStream()); }關(guān)鍵點(diǎn)poi-ooxml-4.1.2.jar必須放入WEB-INF/lib/且web.xml中無(wú)需額外配置POI純Java實(shí)現(xiàn)零依賴。6.4 最后的血淚習(xí)慣每次改完Servlet必做三件事清空Tomcat work目錄/apache-tomcat-9.0.83/work/Catalina/localhost/online/否則舊的JSP編譯class殘留導(dǎo)致“改了代碼卻沒(méi)生效”的玄學(xué)重啟Tomcat前先stop再start不要用Eclipse的“Restart”按鈕它有時(shí)只reload不重啟靜態(tài)資源和類加載器狀態(tài)可能錯(cuò)亂在web.xml頂部加注釋記錄修改時(shí)間!-- Last modified: 2024-06-15 by zhangsan - added /rider/complete mapping --因?yàn)槎嗳藚f(xié)作時(shí)web.xml是路由總綱誰(shuí)動(dòng)了哪條路徑必須可追溯。從那以后我每次改完Servlet都強(qiáng)制走一遍這三步——哪怕只是改了一行response.sendRedirect()的路徑。它不能讓你寫(xiě)出更炫的代碼但能讓你在凌晨?jī)牲c(diǎn)接到“線上訂單不入庫(kù)”的電話時(shí)30秒內(nèi)定位到是OrderServlet的事務(wù)沒(méi)提交而不是懷疑MySQL主從同步出了問(wèn)題。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷影视久久| 亚洲在线操| 情欲综合网| 天天干天天爽| 欧美婷婷综合| 五月丁香啪啪激情| 91精品视频男人的天堂| 激情婷婷五月天| 内射激情在线| 六月色日韩| 91打屁股免费看| 婷婷丁香六月影视| 色六月婷婷| 99在线观看精品视频| oumeisesewang| 天天日天天插| 女同激情久久av久久| 性色播| 国内自拍1区| 99re这里只有精品首页| 五月天激情四射| 久久精彩免费视频| AV在线免费播放| ,99视频久久| 日韩99无码| 欧美va在线观看| 天天做天天视天天谢| 99在线精品视频在线观看| 婷婷六月久久| 大战熟女丰满人妻AV| 激情文学五月丁香六月婷婷| 播五月婷婷开心| 婷婷丁香大香蕉| 99精品视频免费观看,| 99久久人人| 六九色综合婷婷五月天| 婷婷五月天激情五月天深爱五月天| 日日夜夜九九| 日韩AV在线影片| 99这里有精品视频| 色综合另类| 综合久色五月| 日韩另类| 色婷久| 97干婷婷五月天| 色欲久久综合| 久久婷婷五月丁香网| 99人人爽| 婷婷五月天精品| 人人视频色| 丁香色五月婷婷17C| 婷婷五月,偷窥偷拍网| 九月婷婷综合| 99热精品在线在线| 婷色五月| 国产毛片精品一区二区色欲黄A片| 综激情网| www.婷婷五月| 欧美精产国品一二三区| 狠狠激情五月天| 深爱五月婷婷开心中文字幕| 99亚色色色| 九热久| 精品久久久91久久影视网| 五月丁香啪啪激情| 久久婷婷五月天| 日本三级中文字幕| 九九色热| 亚洲精品字幕在线观看| 天天色粽合合合合合合合| 五月色色网| 九九视频在线观看| 日韩综合天堂| 久热这里| 妻久久人久久| 99视频内射三四| 亚洲精品99| 91久久综合亚洲鲁鲁五月天| 婷婷色婷婷| 91欧美日韩综合| 99九九99九九九视频精彩| 六月色色综合| 91成人性爱视频| 五月花婷婷最新| 成人色情五月天婷婷丁香| 99热最新| 黄色片avv| 日本V在线观看不卡视频网站| 色五月激情五月| 五月亭亭开心网| 六月丁香网| 亚洲人妻av| 天天影院色| 大香蕉手机视频| 91狠狠综合久久| 五月丁香婷婷综合网| 欧美影院婷婷| 婷婷九月激情网| 天天草天天日| 2020日日干| 婷婷五月色综合| 国产激情久久久| 爱射综合| 五月婷视频在线观看| 在线免费视频caop| 金桔一区二区ab地址| 激情深爱综合| 狠狠va| 色综合天天天天做夜夜| 五月婷婷色影院| 97色在线视频| 99碰碰碰| 激情深爱综合| 婷婷刺激综合| 五月天婷婷av| 中文在线视频久1| 激情五月天婷婷丁香 | 97婷婷五月| 激情五月天第四色| www.激情五月天com| 婷婷五月天基地| 久久久网站| 五月丁香花激情啪啪网| 嫩草综合网| 色色色99| 久久天堂女人| 久久狠色噜噜狠狠狠狠97| 99久久a线观| 亚洲第一色区| 九九九九九999999| 亚洲精品乱码久久久久久按摩观| 色日本综合| 丁香六月婷婷久久综合| 日本久久9| 91碰在线| 亚洲婷婷基地| 国产精品久久久久久久久久久久| 天天操天天爱天天日| 久色网五月| 欧美成人A片AAA片在线播放| 国产精品色情AAAAA片软件| 丁香色影院| 五月婷婷六月丁香激情综合网| 俺去也婷婷| 色综合久| 热的国产,热的综合,热的有码| 天天插,天天射| www.色五月| 97人人操人人插| 金桔一区二区ab地址| 小视频久久久aaa| 日韩无码专区| 五月花婷婷在线精品视频| 123草逼网| 九热av| 日韩人妻操逼视频| 丁香五月伊人| 天天综合网在线| 九久九精品| oumeisesewang| 五月丁香六月激情在线| 丁香婷婷五月天校园春色| 婷婷五月色色| 九九99在线观看视频| 中文字幕av久久爽一区| 婷婷丁香六月综合激情站| 九九九九综合| 激情五月天在线观看婷婷| 五月婷婷中文字幕| 玖月婷婷爱丁香| 色五月丁香网| 五月天久久www| 99无码视频| 五月婷高清视频| 9久久精品| 婷婷在线观看五月天在线视频| 狠狠干夜夜干| 九九精品在线网| 激情网 久久| 插插五月天| 色综合99无码| www,色婷婷| 日本超碰在线| 少妇被下春药玩弄A片| 婷婷六月丁香激情综合| 极品少妇婷婷五月| 色色色色色色网| 99噜噜噜在线播放| 久草婷| 夜夜爱网站| 成人网在线观看视频| 99热在线观看这里只有精品| 色婷婷69| 97高清国语自产拍| 玖玖婷婷五月天| 九九99热| 五月天婷婷综合网| 深情五月天| 97五月婷婷| 中文字幕永久免费| 色婷五月天网站| 色吊操色妞| 亚洲综合五月| 激情五月天综合网站网站网站| 超碰国产在线| 亚洲色情网站| 国产日韩欧美性生活| 无码91中文字幕| 日日狠狠久久偷偷四色综合免费| 大香蕉AV在线| 久久久久久久91| 五月天激情小说| 任你爽视频| 欧美日本日韩| 人人九色| 开心五月婷婷99| 丁香久久综合| 亚洲激情六月| 亚洲无码99| 这里只有精品在线播放| 婷婷久久久| 婷婷在线网| 九九無妻| 婷婷五月天手机版视频| 婷婷丁香视频在线观看免费 | www.25五月婷婷| 97超碰,人人舔,人人操,人人摸| 99久在线精品99re8| 天天拍夜夜撸| 婷婷性爱| 成人无码精品1区2区3区免费看| 亚洲丁香五月天视频| 91欧美| 色99综合色88| 超碰av在线| 丁香五月天亚洲视频| 婷婷激情丁香五月婷婷激情丁香五月婷婷| 岛国午夜视频| 色香蕉婷婷| 日韩99视频| 五月天六月天| 噜噜噜噜噜久| 99re在线视频精品,这里只有精品18,| 99啊精典免费视频| 丁香五月婷婷综合激情啪啪啪| 五月丁香六月激情欧美综合| 色婷丁香| 色五月超碰| 欧美日韩aaaa| 可以直接看的AV网站| 97碰在线视频| 操97在线观看| 91干网站| 丁香五月花| 亚洲综合色色色| 五月丁香婷婷欧美| 天天日天天草| 久久五月天婷婷| 亚洲色色图片| www.sd-xiangsu.cpm| www.婷婷五月天| 婷婷色五月天色色| 精品久久久久久久人妻| 色亚洲色宗合| 色综合播放| 色六月丁香婷婷啪啪啪| 丁香五月天AV在线| 日本99视频| 久久五月激情| www.色99| 色五月之第四色| 青草网在线观看| 天天射综合网站| 婷婷色五月激情强奸四射| 国产高清av黄色看片| 99操| 成人片黄网站色大片免费毛片| 丁香成人五月天| 免费啪啪亚州视频| 久久这里都是精品| 风流少妇A片一区二区蜜桃| 亚洲天堂热| 久久亚洲婷婷| 五月丁香激情综合| 97久久综合网| 超级碰碰碰碰视频| 国产精品久久久99视频| 第六色在线| 亚洲激情综合色站| 五月丁香婷婷伊人| 99久在线精品99re8| 玖玖资源站中文| 丁香五月天论坛| 五月丁香六月婷婷网站| 97视频.干com| 五月丁香六月激情综合| 爱射综合| 在线播放人妻| 婷婷五月天精品| 99在线视频播放| 五月天综合久久丁香91| 中文字幕永久免费| 激情网开心网| 夜夜夜叫天天天做| 成人在线综合| 免费观看18视频网站| 人妻日日日| 五月婷婷很很色| 在线观看免费观看在线9久| 激情影院69| 婷婷色片| 热的国产,热的综合,热的有码| 5月婷婷6月丁香aV| 色播五月婷婷| 99综合视频| 婷婷色色亚洲| 日本3级片偷拍网站| 色色色视频| 天堂草在线看www| 久九色| 涩涩五月天| 极品少妇XXXX精品少妇偷拍| 久久久婷丁香五月天激情综合| 毛片网站谁有| 狠狠插狠狠插| 涩丁香| 99热8在线| 丁香五月av| 人人色婷婷五月天| 五月激情综合性爱| www狠狠| 五月丁香色五月| 五月丁花六月丁香综合| 五月婷婷五月天| 亚洲另类毛片| 国产精品久久99| 久久九九在线视频| 开心五月激情网| 色五月婷婷丁香凹凸| 色色五月天激情| 蜜乳A√| 任你日视频| 五月婷婷香蕉| 中文字幕成人| 激情九九六月激情免费视频| 亚洲综合色婷婷文学| 狠狠色色| 色亚洲激情| 另类激情综合| a网站免费观看| 五月激情四射网站| 青青夜夜狠狠夜夜狠狠| 丁香五月电影| 丁香五月日韩| 五月激情网站| 99热官网精品在线| 丁香婷婷色情社区成人小说| 久久五月天影院| 男人天堂亚洲综合| 亚洲高清在线| 色五月丁香六月资源站| 91美女被操| 超热久碰.com| 丁香色五月婷婷| 久久AV无码精品人妻系列试探| 九九久久五月天综合伊人| 综合丁香婷婷五月天| 1024操逼视频| 婷婷五月电影院| 日日操日日撸| 亚洲成人网站在线| 亚洲视频操| 中文字幕高清av| www.99热国产| 久久99久久99精品免视看婷婷| 五月丁香免费看| 日韩超碰在线| 超碰成人电影| 天天爱天天日| 天天日天天久久青青| 99视频这里只有免费精品| 中文字幕在线免费观看视频| 超碰无码318604| 开心激情五月天网| 婷婷综合色色| 亚洲无码色| 九九人妻福利| 国精产品一区一区三区免费视频| 婷婷五月天色网久| 亚州第一A片| 激情VA视频| 超碰精品国产首页| 伊人久久婷婷| 丁香五月激情综合网激情五月| 丁香五月自拍| 狠狠干2007| 丁香五月激动深爱欧美| 丁香婷五月| av操一操| 欧美性猛交XXXX乱大交极品| 五月开心深爱激情网| 九九99在线视频| 五月天偷拍| 久久久久久久丁香五月天婷婷| 丁香五月色| WWW.桔色成人.COM| 91视频精品99| 丰满人妻妇伦又伦精品国产| 色香欲综合| 丁香五月1页| 无码免费人妻A片AAA毛片西瓜| 99成人精品| 五月天久久激情| 99热这里只有精品4| 超碰人人超碰| 九九综合88| 婷婷色色网| 久久这里只有精品久久| 九九精品9| 五月婷婷综合久久| 亚洲色优| 丁香五月天av| 久草婷婷| 日本人人草草| 热久久999| 成人丁香| 五月天操逼网| 中文字幕久久一区二区三区| 无码se| 丁香六月天婷婷色| 日本三级韩三级99久久| 色啪网| 久狠日av| 深爱五月激情网| 人人草碰| 欧美成人在线观看| 少妇高潮呻吟A片免费看软件| 深爱综合网| 精品久久婷婷五月天| 加勒比久热| 久久一级AV| 超碰碰碰碰| 开心激情播播五月天| 九九激情网| 4399在线观看免费高清黄色视频| av五月天婷婷丁香| 国产成人综合亚洲| 九九人人操| 色色无码| 色月丁| www.婷婷六月天| 丁香五月婷婷色情综合| 欧美成人va| 激情综合五月色丁香婷婷| 欧洲婷婷五月天| 精品99在线看| 97五月天婷婷综合激情网| 怡红院AV亚洲一区二区三区H| 色婷婷88| 夜夜骑天天操| 国产无套精品一区二区| 综合色激情| 蜜臀九九九九| 久久婷婷五月天亚洲欧美| 99久久99热| 国产韩日亚洲美州欧亚综合在线| 激情综合婷婷| 九月婷婷久久久| 99啪啪视频| 色婷婷五月在线| 激情性爱网站| 亚洲操B视频| 真实熟女-91九色| 亚洲免费99| 五月婷婷网久久| 亚洲久久视频| 爱草视频在线| 狠狠五月天婷婷激情网。| 五月婷婷丁香六月在线| 婷婷色爱| 国产精品爽爽久久久久久| 99在线精品视频免费观看20| 五月婷婷丁香五月| 激情性爱五月天| 久久婷婷五月天激情四射| 婷婷五月av| 天天狠狠夜夜狠狠2023| 狠狠操狠狠| 超碰99在线观看| 99色婷婷视频| 亚洲精品字幕在线观看| 日韩五月婷婷久久| 9久久久| 色婷婷69| 5月婷婷综合| 九九视频精品这里只有| 成人免费黄色短视频| 97超碰婷婷五月天| 激情文学 综合 九月| 超碰伊人碰婷婷五月| 色五月婷婷伊人| 婷婷色在线| 五月亚洲激情| 99在线精品免费视频| 久色婷婷200| 久久久久人妻| 东京热免费视频| 色爽干| 国产色色色色色| 五月天天综合| 啪啪激情网站| 97干在线观看视频| 国产乱子轮XXX农村| 亚洲精品444久久久久久| 中文字幕成人影视| site:esunnet.com| 日韩在线五月天婷婷| 婷婷五月天福利| 五月色婷婷综合| 激情五月五月五月婷婷| 深爱五月婷婷| 少妇2做爰HD韩国电影| 91欧美日韩| www.精品99| 国产色婷婷亚洲| 婷婷六月啪啪| 国产人妻777人伦精品HD| 97碰碰草| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 久久99这里只有精品视频| 激情婷婷五月天日本系列| www.zbzhongsen.com| 综合色、色综合| 日本97在线视频| 狠狠狠五月婷婷六月丁香| 五月婷婷激情久久| 3p九色在线| 日本欧美在线| 丁香五月天天| 99色热视频| 9久久久久久久久久久| 无码成人AAAAA毛片AI换脸| 日韩久久欧亚| 五月婷婷干| 婷婷激情五月| 另类 在线| 婷婷射图五月天| 色婷婷久久| 91色吧网| 丁香婷婷视频在线| 色欲久久99精品久久久久久| 激情五月天啪啪视频| 丁香五月色五月| 亚州成人综合在线| 激情五月网站| 久热99| 操日视频| 青青草成人网| 精品婷婷丁香五| 很很操很很操| 国产XXXX搡XXXXX搡麻豆| 婷婷久久大香蕉| 激情婷婷六月天| 久久天堂色| 亚洲久久婷婷| 全部老头和老太XXXXX| 久久99婷婷| 成人人操| 婷婷六月综合激情| 91综合在线观看首页| 日日噜狠狠色综合久久| 国产黄大片在线观看画质优化| 六月五月丁香五月欧美| 欧洲色色| 婷婷五月天国产手机在线视频观看| 国产无套精品一区二区| av在线超清中文| 夜夜谢天天干| 综合激情网五月激情| 色色五月天婷婷| 天堂婷婷五月在线| 婷婷在线视频| 五月亭亭激情综合| 久久久亚洲精品一区二区三区浴池 | 天天摸天天肏| 综合99综合久久久久久久| 久久久久久人妻| 日韩操逼大片| 天天日天天爽夜夜爽| 色噜噜狠狠色综合日日| 人人摸人人干| 久久黄色片| 五月丁香狠狠| www.玖玖婷婷在线| 噜噜色五月| 激情99| 综合五月天| 欧美激情五月天在线观看| 九九视频在线观看视频6 | 五月丁香天堂网婷婷| 伊人大综合| 国产玖玖资源| 久久久久网站| 五月香婷婷| 五月天中文网| 色色色婷婷五月| 91久操| 亚洲综合激| 五月婷婷六月激情| 性天堂久久| 狠狠看狠狠| 三级片AAA久久久AAA久久久AAA| 天天色综合综合| 久久婷婷五| 久久综合中文| 亚洲人妻五月丁香婷婷| 大香蕉婷婷丁香天堂AV| 国产真人做爰视频免费| 丁香五月天堂| 狠狠艹狠狠艹| 操日视频| 青青草视频免费观看| 六月婷婷操逼| 91九色精品| 久久性爱视频免费| 亚洲蜜乳AV| 五月婷婷深深爱| 亚洲视频图片婷婷五月| 色婷婷五月天中文字幕| 五月丁香 狠狠爱| 91天天操天天干天天射| 99热这里只有精品最新地址获取| 国产激情在线| 伊人激情网| 综合色色网| 国产精品国产| 久久精品66| 久久综合性| 五月婷视频在线观看| 这里只有精品免费视频| 久久人人妻| 夜夜噜夜夜奇| 久久综合九九| 丁香六月色| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 欧美人人草| 99热99ai| 97色色色| 亚洲热热视频| 可以看的av| 五月丁香天堂网婷婷| 婷婷射综合| 久99久视频精选| 大地资源色婷婷视频在线| 久久WW| 人人视频色| 精品婷婷五月视| 97操操操| 婷婷五月天丁香社区| 婷婷色五月大香蕉在线| 成人精品视频99在线观看免费| 二色av| 九九热10| 97碰人人操| 狠狠五月综合在线| 色婷婷先锋| 亚洲小说欧美激情| 色综合久久88色综合天天人守婷| 东京热免费视频| 伊人网啪啪| A1片久久| 视频久久9| 亚洲国产黄色电影| 人人操婷婷| 香蕉99网| 亚洲成人丁香花| 一级操逼大片| 99久在线精品99re8热| 襙比视频| 天天天天天操| 5月丁香综合网| 南京搡BBBB搡BBBB| 中文aV网| 婷婷激情网五月天| 毛片毛片毛片毛片| 色色色综合色| 九艹在线| 婷婷射丁香| 精品久久99码| 国产高潮A片羞羞视频涩涩| 国产精品电影| 操B无码视频国语| 天天综合天综合久久网| 青青色com久久| 欧美WW在线网| 亚洲一级色电影| www狠狠| 五月丁香手机在线| 婷婷五月天激情综合深爱| 婷婷激情六月综合| 开心五月综合| 99色视频在线| 亚洲无码99| 裸体做A爰片毛片A片免费| 国产毛片精品一区二区色欲黄A片| 青青青在线视频国产| 五月婷婷丁香日韩在线| 99热在线网站| 六月激情婷婷| 综合深爱五月| 激情五月天色播| 婷色五月| 影音先锋五月天婷婷丁香在线观看| 激情五月婷婷她| 五月色婷婷影院| 天天噪夜夜爽| 五月天色不卡| 婷婷色香六月综合激情| 无码 色| 色狠狠综合网| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 大香蕉九九操| 婷婷五月大| 日本噜噜色网| 九九综合精品| 伊久大香蕉| 婷婷九色| 激情综合网,婷婷五月天| 直接看的AV| 97色色色色色| 以及AA大片看看| 亚洲精品国产成人AV在线| 五月婷无码| 日本五月天网站| 538在线精品| 亚洲色人妻| 成人婷婷深爱综合网| 色五月综合激情| 97综合在线| 中文成人在线| 婷婷五月天少妇| 日韩成人AV在线| 婷婷天堂伊人| 五月色情婷婷| 五月天激情四射网站| 最近中文字幕2019视频1| 91九色 婷婷| 热的无码综合视频| 97在线精品| 丁香五月先锋| 久久激情五月网| 北京熟妇搡BBBB搡BBBB| 色人久夂| 开心深爱激情网| 中文中文在线| 伊人五月天综合网| 五月丁香综合激情网| 中字幕视频在线永久在线观看免费| 丁香五月综合激情啪啪| 久久A V无码视频| 白人荫道BBWBBB大荫道| 东京热免费视频| 91狠狠综合网| 久久99jiu9| 99精品视频在线| 无码地址| 丁香六月婷婷综合| 草草影院爱爱| 可以免费看AV网站| 丁香五月瑟瑟| 天天射天天射一道本日本社区| 久久五月天婷婷| 婷婷的99视频网站| 激情五月色婷婷| 91九九精品| 精品免费99| 激情五月天婷婷播播久久综合91 | 激情丁香五月婷婷| 九热视频在线伦| 99re思思热这里| 丁香五月五月婷婷欧美大香蕉| 五月激情丁香久久综合网| 久热这里| 九九人妻福利| 狠狠干五月天| 天天摸天天舔天天爽| 大香蕉久操| 五月丁香婷婷无码中文| 99在线精品观看99| 激情综合自拍五月婷婷色五月| 亚洲黄色精品| 精品久热| 欧美激情五月天| 久久激情综合| 成 人片 黄 色 大 片| 五月丁香六月婷婷,婷| 五月婷婷影院| 亚洲 在线 性爱 | 噼里啪啦完整版中文在线观看 | 99热这里只有精品86| 色狠狠色| 69色婷婷| 2017人人操| 天天拍天天做视频| 久久婷婷视频| 久久婷婷网站| www.丁香六月婷婷久久天堂影院.con| 欧美在线骚货| 久久色五月天| 五月丁久久| 91九色视频| 亚洲成人在线播放| 狠狠狠激情网| 无语停婷丁香网| 亚洲成人网站在线播放| 7超碰自拍| 欧美人妻一区二区| 9.1综合网| XX色综合| 五月婷婷六月丁香激情| 国产日韩av片| 97操操| 丁香五月激情月| 艹B高清无码| 亚洲激情久久| www,超碰| 久久综合99| 婷婷中文字幕欧美| 五月天激情网站| 99re99在线看| 99热99日天天干| 色偷偷色婷婷| 二人电影免费版在线观看| 思思干精品| 丁香久久综合| 精品婷婷五月视| 五月丁香毛片| 亚洲综合五月天婷婷丁香| 99热这里只有精品23| 综合99久久天天综合| 五月天婷婷影院| 狠色色狠网| 久久99这里只有精品| 亚洲精品无码A片一区二区| 日本一级特黄大片AAAAA级| 色情五月天首页| av在线免费网站| www.狠狠操| 久久综合首页| 色天天综合成人网| 人人97碰| 大香蕉在线观看9| 九九热九九| 亚洲国产精品VA在线看黑人| 色。 婷婷婷| 久久91久久91色欲精品| 狠狠精品干练久久久无码中文字幕 | 成人av在线电影| 日本成人噜噜| 五月丁香啪啪网| 超碰五月婷婷五月天| 免费无码毛片一区二区A片| 激情五月婷婷在线观看| 思思久热| 久久一热免费视频| 亚洲九区| 色婷在线视频| 99热亚州综合| 开心五月天激情网| 久久九区| 香焦网五月天| 亚洲人成人五月天| 26uuu淫色| 婷婷午夜| 97精品自拍视频| 美女被操一区二区| 搡BBBB搡BBB搡五十| 一起草AV| 99碰网站| www.日本91| 久久婷婷综合五月趴| 99爱视频在线观看| 婷婷五月综合丁香久久| 99熟女| 六月丁香婷| 99热碰碰| 日本一级一片免费视频 | 99热官网精品在线| 俺去也在线www色官网| tingtingzonghewang| 五月婷六月综合在线观看| 久久98热re| 97在线/亚洲| 五月天停婷基地| www.97干视频| 丁香花婷婷五月天| 丁香久月| 偷拍九九五月丁香婷婷| 久超免费视频| 亚州激情九月| 狠狠狠狠青草| 久久99大全| 婷婷六月综合基地| 黄色毛片精品| 色色色色色五月丁香| 五月婷免费视频| 欧美超碰亚洲| 91热视频色网站| www.五月丁香| 久久五月视频| 精热在线综合网| 26uuu.| 色婷婷精品小视频| 五月丁香六月婷婷免费| 1010日日无码| 伊人AV五月婷| 五月激情偷拍| 丁香五月激情啪| 婷婷伊人网| 91久操| 69精品人人人人| 久久久久9久无码视频| 在线观看日韩12345区| 久草婷婷视频| 亚洲成人无码网站| 色一情一乱一乱一区91| 五月天色婷好好| 视频这里只有精品16| 五月婷婷婷自由综合| 夜夜撸日日操| 婷婷久久五月丁香| 91中文在线| 97色 五月天丁香| 婷婷五月丁香人妻无码高清| 99热这里都是精品| 欧美天天五月丁香免费观看| AV 3P| 第五色婷婷| 超碰在线观看99| 成人免费120分钟啪啪| 伊人狼人干| 丁香五月停停基地| 亚洲综合激| 99热99热不卡| 婷婷五月综合激情免费视频| 超碰免费大香蕉| 99视频内射三四| 大香蕉院线| 日本天天操| 久久五月丁香| 婷婷丁香婷婷97| 操久久网| 天天夜夜爽| 97人人干人人操| 欧美日本韩国亚洲| 亚洲操精品| xxx日本东京热| 大香蕉婷婷五月天| 2025超碰| 久久婷婷色情7777网站| 天天日夜夜操五月| 99久久99久久| 99婷五月| 91精品国产91久久久久青草| 五月婷婷影视| 99视频自拍| 久久久久久久久久久久久久久久一道本| 青青草tp| 精品,99| 五月婷婷六月丁香| 9 9热这里有精品| 日本熟女视频一区二区| 成人网址在线观看| 99精彩视频网站在线| 91久久九久久九久久九久久九久久 | 97碰久久| 日日操夜夜操不卡| 79亚洲精品少妇| 天天射影院| www.99热国产| 日韩免费乱轮网站| 狠狠狠色激情综合适合| 激情色五月天| 五月噜噜噜色综合| 五月丁香婷中文| 亚洲婷婷乱乱丁香| 无码AV免费精品一区二区三区 | 日韩啪啪视频| 99人人干人人| 五月花在线观看视频| 1000部毛片A片免费观看| 久草五月天| 久久综合人妻| 国产91在线视频| 婷婷五日b| 超碰精品在线| 丁香五月婷婷天堂大香蕉| 五月花婷婷最新| 婷婷五月在线视频| 成人在线视频网| 999激情视频| 丁香九月综合在线| 台湾佬天天日丁香婷婷五月天| 国产99久久久国产精品免费看| 99日本黄站| 99久在线精品| 中文字幕成| 国产激情综合五月| 色婷婷导航| 婷婷色情网| 大香蕉99热| 色哟哟性爱av| 久久婷婷综合国产| 99免费在线视频| 亚洲热久久| 五月丁香最新| 26UUU欧美| 色色色色色综合| 欧美成人A片AAA片在线播放| 婷婷五月天丁香久久| 日韩色色视频www| 丁香五月婷婷激情四射深爱激情| 奸逼视频| 99人妻碰碰久久久禁片| 99久久99热这里只有精品| 国外亚洲成AV人片在线观看| 婷婷丁香激情五月| 最近中文字幕2019视频1| 国产夫妻操逼内射视频| 亚洲第一成人无码A片| 婷婷丁香五月精品| 这里只有精品96| 丁香六月无码| 九九久久高清| 伊人网啪啪| 中文字幕97超级碰| 亚洲激情另类| 三区激情四射av| 97色精品视频| 99热6这里只有精品| 日韩另类在线观看| 91人人操人人| 99精品国产热久久91色欲| 久热91| 五月婷六月综合在线观看| 国产成人精品一区二三区熟女在线| 午夜丁香六月婷| 亚洲国产成人AV在线| 激情五月六月| 色五月开心婷婷| 国产美女无遮挡裸体毛片A片| 激情综合自拍五月婷婷色五月| 99区视频| 国内一级片| 丁香六月久久| 五月婷婷与六月丁香图片激情| 日本综合色图| 狠狠撸激情综合丁香五月天俺来啦| 婷婷成人在线| 婷婷色色五月天| 九九热99视频| 在线中文AV| 色综合天天综合成人网| 天天日天天舔天天摸| 成人日韩欧美| 色欲一区二区三区精品A片| 99九九99九九九视频精彩| 风流少妇A片一区二区蜜桃| 五月六月婷婷| 99热 这里只有精品 国产 日韩| 国外亚洲成AV人片在线观看 | 97AV人人插人人操| 婷婷激情五月| 五月婷婷无码专区| ww久久| 小香蕉av| 人妻人人操| 激情宗合网激情五月天| 国产91视频| 午夜不卡久久精品无码免费| 五月天综合婷婷| 九色婷婷| 五月婷婷 激情按摩| 久99热| 亚洲人成人五月天| 伍月婷婷免费视频| 亚洲成人av在线观看| 超碰99在线观看| 日日干天天爽| 亚洲激情丁香五月基地| 九九色院| av网址在线播放| 色五月丁香五月| www色婷婷久久综合久色| 美女91一起草| 婷婷香蕉| 五月婷婷色播| 99热这里只有精品国产首页| 五月婷婷xxx| 九九99香蕉在线视频播放| 免费看欧美成人A片无码| 成人欧美日韩| 五月天亚洲色| 99这里只有精品在线| 五月婷婷六月丁香| 碰碰碰97免费精彩视频| 婷婷5月天av| 婷婷激情五月视频| 青青久久五月天丁香婷婷| 国产成人精品一区二三区熟女在线| 这里只有精品久久| 99re最新地址| 丁香五月天天日| 全亚洲最大的婷婷五月天网站COM| 久久99网| 99久久喉9| 日韩成人电影AV| 99这里只有精品|v| 国产精品色色| 99久在线精品99re8| 97干婷婷五月天| 亚洲舔观看| 欧美操人| 色婷婷综合视频| 久久WW| 激情五月,激情综合网| 久久3级片| 欧美色激情四射| 婷婷色色五月天| 五月婷丁香| 五月激情小说网| 日韩视频99| 97久久人人| 日本久久天堂| 91久久九久久九久久九久久九久久 | 少妇2做爰HD韩国电影| 99久视频| 高清无码网址| 伊人五月综合网| 人人操五月天| 九九这里都是精品| 五月天丁香网| 五月婷婷综合网| 中国丰满熟女A片免费观| 思思99热| 在线观看国产高清视频免费网站 | 婷婷综合性爱网| 亚洲乱码日产精品BD| 亚洲无码 图片区| 日韩AV免费看| 国成人网| 影音先锋AV男人站| 激情五月婷婷啪啪| 99人妻碰碰碰久久久久| 99熟女视频| 91成人电影| 天天综合网在线| 国产精品人成A片一区二区| 97色婷婷| 91人人爱| 嫩草视频。| 99久久精品国产色欲| 成人免费在线电影| 人人爱操| 婷婷丁香五月天欧美| 五月婷婷激情中心| 性色视频| 五月丁香婷婷色色| 久久ab| 99久久九九视频| 婷婷丁香色女人| 99热综合色图| 中文字幕在线日亚州9| 色五月亚洲五月天| 婷婷涩五月天综合| www.日本91| 五月婷视频| 99婷五月| AV在线免费播放| 激情小说五月天社区丁香| 69er小视频| 丁香婷婷婷五月| 无码九九| 丁香婷婷色色| 丁香婷婷性爱| 人妻 性久久久久久| 婷婷性色| 99在线精品视频在线观看| 国产精品18久久久| 九九超碰人人| 97碰在线| 五区毛片七区毛片| 日本久久精品18| 嫩草AV久久伊人妇女超级A| 婷婷五月激情在线| 开心五月激情网| 69五月天视频| 91人操人人人操人| 国产又色又爽又黄又免费| 日本久久极品| 欧美激情五月天婷婷| 99热只有精| 婷婷五月色天| 婷婷丁香六月天激情四射网| 五月天婷婷色在线视频免费观看 | 色色婷婷综合| 国产精品社区| 国产精品色色色色| 色五月综合| 色婷婷五月综合激情中文字幕| 婷婷久久五月丁香| 色播五月婷婷五月| 婷婷丁香五月亚洲17cao| 9 1大香蕉| 密黄站| 99热精品观看| 疯狂做受XXXX高潮A片| 日日噜狠狠色| 九九在线视频| 婷婷久久五月天丁香| 天天操天天草天天草天天| 日韩黄黄| 久久综合色五月| 日日射天天射| 激情综合婷婷| 精品99视频| 99re视频精品| 九艹在线| 五月天激情图片网| 婷婷五月天天aV| 日韩啊啊啊| 欧美综合123区| 99免费热视频| 操老逼综合网| 国产亚洲网站在线| 天天日日夜夜爽。| 中文字幕无线久必| 五月天无码| 色99热| 91碰操| 五月天停停成人网| 1024日韩| 91黄址| 久9免费视频| 4438全国最大视频成人网站在线观看| 欧洲亚洲欧洲99久久| 婷婷五月激情图片| 婷婷久久大香蕉| 九九操操| 日亚二欧美| 激情五月婷婷| 人人操碰| 久久婷婷综合五月趴| 久久在线视频免费观看| 五月婷婷激情刺激| 91久久久久久| 婷婷五月天堂| w婷婷五月婷婷w| 欧美日本国产欧美日本韩国99| 超碰人人99| 久热婷婷在线视频| 婷婷五月婷婷| 丁香九色不卡aaa| 深爱五月激情五月| 久操干| 五月婷婷丁香大陆免费|