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

ARTICLE DETAIL

資訊詳情

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

JavaWeb蛋糕商城項(xiàng)目實(shí)戰(zhàn):從技術(shù)選型到部署避坑完整指南

JavaWeb蛋糕商城項(xiàng)目實(shí)戰(zhàn):從技術(shù)選型到部署避坑完整指南 簡介一份面向JavaWeb學(xué)習(xí)者的蛋糕商城項(xiàng)目源碼覆蓋客戶管理、商品管理、訂單管理三條主線。普通用戶可注冊、登錄、修改資料管理員能進(jìn)行客戶增刪改與密碼重置商品側(cè)實(shí)現(xiàn)了基于cookie-json的購物車、商品分類檢索、圖片上傳及條幅/熱銷/新品推薦訂單側(cè)提供用戶下單和管理員查詢刪除的完整閉環(huán)。包內(nèi)共225個(gè)文件包括52個(gè)java源文件、52個(gè)class編譯產(chǎn)物、23個(gè)jsp頁面、16個(gè)css樣式及jar依賴、jpg靜態(tài)素材和sql數(shù)據(jù)庫腳本整體10.97MB目錄結(jié)構(gòu)清晰。已有6784人學(xué)習(xí)下載適合作為課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)參考可直接導(dǎo)入并運(yùn)行用于熟悉Servlet、JSP、Cookie/JSON交互及購物車、訂單等典型業(yè)務(wù)場景。1. JavaWeb蛋糕商城到底練什么一個(gè)把Servlet、JSP和MySQL串成閉環(huán)的完整案例搜“JavaWeb蛋糕商城”的人八成都不是真想買蛋糕而是要找一個(gè)能把Servlet、JSP、MySQL、Tomcat串成完整閉環(huán)的練手項(xiàng)目。跟著黑馬JavaWeb筆記學(xué)完每個(gè)知識點(diǎn)都懂但合上筆記要自己交一個(gè)javaweb項(xiàng)目完整案例mysql版本的課設(shè)很多人卡在連IDEA運(yùn)行JavaWeb項(xiàng)目配置里的Artifact都沒搞明白。蛋糕商城這個(gè)題目恰好踩在“完整”和“可完成”的交界處注冊登錄、分類展示、購物車、訂單、后臺管理一環(huán)扣一環(huán)覆蓋JavaWeb核心考點(diǎn)又不會(huì)逼你提前碰Spring全家桶。這篇不按課件順序?qū)懓次覍?shí)際帶過的做法從技術(shù)棧、數(shù)據(jù)庫到部署坑位挨個(gè)講完適合準(zhǔn)備課設(shè)或?qū)嵱?xùn)作業(yè)的讀者照著重現(xiàn)一遍。2. 蛋糕商城技術(shù)選型與IDEA運(yùn)行JavaWeb項(xiàng)目配置JDK、Tomcat、MySQL版本怎么配2.1 技術(shù)棧怎么定Servlet/JSP還是SpringMVC別一上來就上全家桶很多第一次做JavaWeb完整課設(shè)的同學(xué)上來就糾結(jié)要不要直接用SpringBoot畢竟現(xiàn)在公司里沒人手寫Servlet了。但如果你還處于培訓(xùn)或?qū)嵱?xùn)階段答案應(yīng)該反過來看課設(shè)和實(shí)訓(xùn)練的是JavaWeb底層鏈路不是讓你把SpringBoot的自動(dòng)配置抄一遍。我一般會(huì)建議選Servlet JSP JDBC MySQL這套純JavaWeb組合。先給一個(gè)參考的版本搭配這是我實(shí)際跑通多次的組組件推薦版本說明JDK1.8Java 8與Tomcat 8.5/9.0完全兼容教程代碼最多Tomcat8.5或9.09.0對應(yīng)Servlet 4.0仍是javax命名空間MySQL5.7或8.0都可8.0需要額外三個(gè)連接參數(shù)見5.5Servlet API3.1/4.0由Tomcat內(nèi)置項(xiàng)目里不需要單獨(dú)引包第一蛋糕商城的業(yè)務(wù)量級完全不需要框架兜底。用戶注冊、商品列表、購物車、訂單這些接口用HttpServlet寫每個(gè)不過幾十行SpringMVC在這里的收益主要是路徑映射和參數(shù)綁定但這些收益在你學(xué)習(xí)時(shí)會(huì)掩蓋Servlet容器的運(yùn)行機(jī)制。第二實(shí)訓(xùn)平臺判分通常是黑盒檢測的是功能有沒有實(shí)現(xiàn)用不用框架不加分。第三純Servlet項(xiàng)目依賴少部署時(shí)一個(gè)Tomcat就解決不會(huì)出現(xiàn)Spring版本沖突這種跟業(yè)務(wù)無關(guān)的麻煩。如果一定想留一點(diǎn)現(xiàn)代感可以在JSP里用JSTL和EL表達(dá)式這個(gè)組合在黑馬JavaWeb筆記數(shù)據(jù)里也是常規(guī)操作不算超綱。JDBC部分我不建議上MyBatis原因也一樣MyBatis的Mapper代理機(jī)制會(huì)把你對Connection、PreparedStatement、ResultSet的掌控感全部拿走而這些恰恰是javaweb項(xiàng)目完整案例里最值得手寫一遍的部分。版本選擇上唯一要注意的是Tomcat 10以上。如果你手滑裝了Tomcat 10那走的是jakarta.servlet命名空間之前所有教程代碼的import javax.servlet都要改成jakarta.servlet改起來耗時(shí)不說網(wǎng)上搜到的代碼還大多沒遷移過。對于新手來說這是災(zāi)難級的翻車點(diǎn)。除非你要交的實(shí)訓(xùn)明確要求Tomcat 10否則不要為“新版”去碰這個(gè)坑。2.2 IDEA里跑通JavaWeb項(xiàng)目的最小配置Tomcat與Artifact的四個(gè)關(guān)鍵參數(shù)IDEA里的JavaWeb項(xiàng)目跟普通Java項(xiàng)目的最大區(qū)別在于你寫的代碼最終要被打成WAR或war exploded目錄丟給Tomcat執(zhí)行而IDEA幫忙做了這一步。很多人的IDEA運(yùn)行JavaWeb項(xiàng)目配置流程是點(diǎn)一下Run按鈕瀏覽器彈出404然后就沒有然后了。這里我把最容易錯(cuò)的四個(gè)參數(shù)單獨(dú)摘出來。第一個(gè)是Application Server。在Run/Debug Configurations里新建Tomcat Server Local這個(gè)下拉框選擇你本地解壓的Tomcat目錄不是IDEA自帶的那個(gè)也不是Maven倉庫里的那個(gè)。選錯(cuò)之后Tomcat會(huì)直接起不來報(bào)Error configuring application listener的錯(cuò)。第二個(gè)是HTTP port。Tomcat默認(rèn)8080如果你本機(jī)有別的服務(wù)占了8080IDEA不會(huì)主動(dòng)提示只會(huì)報(bào)Address already in use。這種時(shí)候改到8081或9090都行但注意改完之后瀏覽器訪問的地址也要跟著變否則你會(huì)花十分鐘懷疑代碼。第三個(gè)是Artifact。這個(gè)最玄學(xué)。要在Deployment標(biāo)簽頁里點(diǎn)加號選擇Artifact...把項(xiàng)目名字帶_war_exploded的那個(gè)加進(jìn)去Application context寫成/cake。這里記住war和war exploded的區(qū)別在于前者是壓縮包后者是解壓后的目錄。IDEA調(diào)試必須選exploded否則每改一次JSP都要重新打包改前端頁面會(huì)改到懷疑人生。第四個(gè)是Update resources。在Deployment頁面或Server標(biāo)簽里找到On frame deactivation和On Update action兩個(gè)下拉框都設(shè)成Update resources。這樣你改一個(gè)JSP或CSS切回IDEA窗口時(shí)熱更新直接生效不用重啟Tomcat。這個(gè)配置能幫你節(jié)約大量時(shí)間。把這四項(xiàng)設(shè)完之后正常啟動(dòng)會(huì)在控制臺看到一行信息Deployment of web application archive has finished in ... ms然后瀏覽器訪問http://localhost:8080/cake/index.jsp就能看到頁面。如果沒看到先去把第5章的404清單過一遍大概率能解決。3. 蛋糕商城的MySQL數(shù)據(jù)庫設(shè)計(jì)六張表怎么拆、訂單狀態(tài)怎么流轉(zhuǎn)3.1 用戶、分類、商品三張基礎(chǔ)表字段設(shè)計(jì)決定后面少寫多少JOIN蛋糕商城的表結(jié)構(gòu)我先給結(jié)論一共六張表——t_user、t_category、t_cake、t_order、t_order_item、t_cart_item。購物車這張表在純Servlet課設(shè)里是可選的因?yàn)楹芏喾桨钢苯影奄徫镘噷ο笕覵ession里但我建議兩套都做為什么后面單獨(dú)說。先看最基礎(chǔ)的三張表DDLCREATE DATABASE cake_shop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE cake_shop; CREATE TABLE t_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(32) NOT NULL UNIQUE, password VARCHAR(64) NOT NULL, nickname VARCHAR(32), phone VARCHAR(20), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_category ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(32) NOT NULL, sort INT DEFAULT 0 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_cake ( id INT PRIMARY KEY AUTO_INCREMENT, category_id INT NOT NULL, name VARCHAR(64) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INT NOT NULL DEFAULT 0, image VARCHAR(255), detail TEXT, status TINYINT DEFAULT 1, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_cake_category FOREIGN KEY (category_id) REFERENCES t_category(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;這里有三處是我?guī)дn設(shè)時(shí)反復(fù)強(qiáng)調(diào)的。第一庫名表名統(tǒng)一用小寫加下劃線。MySQL在Linux下對表名大小寫敏感Windows不敏感你本地寫Cake開發(fā)好好的部署到服務(wù)器上全報(bào)Table doesnt exist。第二price字段必須用DECIMAL(10,2)不可以用DOUBLE。float和double在MySQL里是近似值0.1加0.2會(huì)得到0.30000000000000004訂單金額出現(xiàn)這種誤差驗(yàn)收時(shí)會(huì)被直接扣分。第三category_id外鍵一定要建。雖然不建外鍵功能上也跑得通但評分標(biāo)準(zhǔn)里通常會(huì)看關(guān)系完整性而且建外鍵能作為一種免費(fèi)的邏輯保護(hù)刪除分類時(shí)如果已有商品引用MySQL會(huì)拒絕執(zhí)行。3.2 訂單與購物車為什么訂單明細(xì)必須單獨(dú)建表狀態(tài)機(jī)怎么設(shè)計(jì)接下來是訂單相關(guān)的三張表。表名我建議用t_order而不是order因?yàn)镺RDER在SQL里是排序關(guān)鍵字如果你直接叫order每次查詢都得加反引號轉(zhuǎn)義麻煩且容易漏。CREATE TABLE t_order ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, order_no VARCHAR(32) NOT NULL UNIQUE, total_amount DECIMAL(10,2) NOT NULL, status TINYINT NOT NULL DEFAULT 0, receiver_name VARCHAR(32) NOT NULL, receiver_phone VARCHAR(20) NOT NULL, receiver_address VARCHAR(128) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_order_user FOREIGN KEY (user_id) REFERENCES t_user(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_order_item ( id INT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, cake_id INT NOT NULL, cake_name VARCHAR(64) NOT NULL, price DECIMAL(10,2) NOT NULL, quantity INT NOT NULL, subtotal DECIMAL(10,2) NOT NULL, CONSTRAINT fk_order_item_order FOREIGN KEY (order_id) REFERENCES t_order(id), CONSTRAINT fk_order_item_cake FOREIGN KEY (cake_id) REFERENCES t_cake(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_cart_item ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, cake_id INT NOT NULL, quantity INT NOT NULL DEFAULT 1, CONSTRAINT fk_cart_item_user FOREIGN KEY (user_id) REFERENCES t_user(id), CONSTRAINT fk_cart_item_cake FOREIGN KEY (cake_id) REFERENCES t_cake(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;訂單狀態(tài)我這里用TINYINT數(shù)字表示0待支付1已支付2已發(fā)貨3已完成4已取消。不建議用字符串因?yàn)樽址疇顟B(tài)在代碼里要寫一堆equals(待支付)容易拼錯(cuò)還不容易發(fā)現(xiàn)。用數(shù)字狀態(tài)機(jī)代碼里只需要一個(gè)switch或if-else比較int值。訂單明細(xì)單獨(dú)建表的原因很簡單一張訂單可能包含多個(gè)商品如果把商品信息和訂單存在一行下單兩個(gè)蛋糕時(shí)數(shù)據(jù)要拆成兩行order_no和receiver都要重復(fù)存儲查詢時(shí)會(huì)得到兩條記錄顯示邏輯變得非常別扭。拆成t_order和t_order_item之后訂單頭存一次配送信息訂單項(xiàng)存商品。這里最關(guān)鍵的細(xì)節(jié)是order_item里的cake_name和price屬于冗余存儲。為什么因?yàn)橄聠沃笕绻笈_修改了蛋糕名稱或價(jià)格歷史訂單不能被篡改。你去任何電商平臺查幾個(gè)月前的訂單商品名和價(jià)格還是當(dāng)時(shí)下單時(shí)的樣子靠的就是這層快照。第一次做課設(shè)的人很容易只存一個(gè)cake_id查詢時(shí)去JOIN蛋糕表這在展示歷史訂單時(shí)就是大坑。如果你打算把這個(gè)項(xiàng)目交到頭歌這類實(shí)訓(xùn)平臺上訂單快照就是評分點(diǎn)里經(jīng)常被扣分的位置。3.3 用一份SQL腳本把蛋糕商城的數(shù)據(jù)初始化跑起來數(shù)據(jù)庫建完之后頁面還是空的這時(shí)候最需要一份初始化數(shù)據(jù)不然代碼調(diào)通后看到的是空白列表影響調(diào)試信心。我一般會(huì)準(zhǔn)備一份包含分類、商品和測試賬號的INSERT腳本INSERT INTO t_category (name, sort) VALUES (奶油蛋糕, 1), (慕斯蛋糕, 2), (翻糖蛋糕, 3), (cupcake, 4); INSERT INTO t_cake (category_id, name, price, stock, image, detail) VALUES (1, 草莓奶油蛋糕, 128.00, 50, /images/cake1.jpg, 新鮮草莓動(dòng)物奶油6寸), (1, 芒果奶油蛋糕, 118.00, 50, /images/cake2.jpg, 大顆芒果果肉夾心), (2, 巧克力慕斯, 98.00, 30, /images/cake3.jpg, 66%黑巧克力慕斯), (3, 生日派對翻糖蛋糕, 198.00, 10, /images/cake4.jpg, 可定制主題圖案); INSERT INTO t_user (username, password, nickname) VALUES (admin, 123456, 管理員), (demo, 123456, 演示用戶);執(zhí)行方式有兩種在IDEA的Database面板新建MySQL數(shù)據(jù)源后右鍵運(yùn)行腳本或者直接命令行執(zhí)行mysql -uroot -p cake_shop.sql。跑完后執(zhí)行select count(*) from t_cake;看到返回4條記錄說明數(shù)據(jù)庫部分已經(jīng)通了。這里順帶提一個(gè)mysql連接驅(qū)動(dòng)類的坑因?yàn)閹缀趺總€(gè)做javaweb項(xiàng)目完整案例mysql方案的都會(huì)碰到。如果你用的是mysql-connector-java 5.x驅(qū)動(dòng)類是com.mysql.jdbc.Driver如果用8.x驅(qū)動(dòng)類變成com.mysql.cj.jdbc.Driver而且連接URL里必須加allowPublicKeyRetrievaltrue和serverTimezoneAsia/Shanghai否則要么報(bào)Public Key Retrieval is not allowed要么報(bào)時(shí)區(qū)錯(cuò)誤。真因?yàn)轵?qū)動(dòng)類名報(bào)ClassNotFoundException的話優(yōu)先檢查jar是不是放在WEB-INF/lib下面IDEA里只添加了Library而沒打包進(jìn)Artifact是頭號原因。4. 蛋糕商城前后端串聯(lián)JSP頁面、Servlet控制器與Session狀態(tài)管理4.1 用JSP include與EL表達(dá)式搭出頁面骨架避免每個(gè)頁面復(fù)制粘貼純JSP做前端有一個(gè)最常見的壞味道系統(tǒng)的十個(gè)頁面頂部導(dǎo)航和底部版權(quán)各復(fù)制十份。改一次版權(quán)信息就要打開十個(gè)文件改完還經(jīng)常漏一兩個(gè)。模塊化的做法是拆公共片段JSP里用靜態(tài)include或動(dòng)態(tài)include都行對于純靜態(tài)的頭部和底部靜態(tài)include更直接% page contentTypetext/html;charsetUTF-8 languagejava % % taglib prefixc urihttp://java.sun.com/jsp/jstl/core % html head title蛋糕商城/title link relstylesheet href${pageContext.request.contextPath}/css/style.css /head body % include file/WEB-INF/views/common/header.jsp % div classcontainer h2蛋糕列表/h2 c:forEach varcake items${cakeList} div classcake-card img src${pageContext.request.contextPath}${cake.image} alt${cake.name} h3${cake.name}/h3 p價(jià)格span classprice${cake.price}/span 元/p a href${pageContext.request.contextPath}/cart/add?cakeId${cake.id}加入購物車/a /div /c:forEach /div % include file/WEB-INF/views/common/footer.jsp % /body /html這里有兩個(gè)核心機(jī)制。第一是${pageContext.request.contextPath}它動(dòng)態(tài)輸出當(dāng)前項(xiàng)目的部署路徑也就是第2章里指定的/cake。不寫死路徑的原因是項(xiàng)目換個(gè)contextPath部署所有鏈接還能正常動(dòng)。第二是JSTL的c:forEach循環(huán)它要求WEB-INF/lib下有jstl-1.2.jar和standard.jar同時(shí)JSP頂部聲明taglib。漏了jar包時(shí)頁面編譯期不報(bào)錯(cuò)運(yùn)行期才報(bào)The absolute uri cannot be resolved看到這個(gè)錯(cuò)誤第一反應(yīng)應(yīng)該是檢查jar而不是去改標(biāo)簽名。JSP里的一個(gè)原則不要往頁面里寫Java代碼塊。新手特別喜歡在% %里寫for循環(huán)和if判斷一時(shí)爽快后面一復(fù)雜就變成一團(tuán)亂麻。用EL表達(dá)式和JSTL能覆蓋90%的展示需求剩下的讓Servlet在控制器層把數(shù)據(jù)組裝好再放進(jìn)request域。4.2 登錄態(tài)與購物車Session會(huì)話和Cookie到底誰在起作用登錄功能是JavaWeb里必須手寫一遍的環(huán)節(jié)因?yàn)楹竺嫠杏脩舨僮鞫家蕾囁?。核心邏輯其?shí)就十幾行驗(yàn)證用戶名密碼后把用戶對象放進(jìn)Session再?zèng)Q定是否種CookieWebServlet(/login) public class LoginServlet extends HttpServlet { private final UserDao userDao new UserDao(); Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding(UTF-8); String username req.getParameter(username); String password req.getParameter(password); User user userDao.findByUsernameAndPassword(username, password); if (user ! null) { HttpSession session req.getSession(); session.setAttribute(loginUser, user); if (on.equals(req.getParameter(rememberMe))) { Cookie cookie new Cookie(USER_NAME, username); cookie.setMaxAge(7 * 24 * 60 * 60); cookie.setPath(req.getContextPath() /); resp.addCookie(cookie); } resp.sendRedirect(req.getContextPath() /index); } else { req.setAttribute(error, 用戶名或密碼錯(cuò)誤); req.getRequestDispatcher(/login.jsp).forward(req, resp); } } }幾個(gè)細(xì)節(jié)值得說透。doPost里第一行req.setCharacterEncoding(UTF-8)是解決中文參數(shù)亂碼的開關(guān)對所有POST請求都要有GET請求的中文亂碼則需要改Tomcat的server.xml給Connector加URIEncodingUTF-8。這兩個(gè)地方漏一個(gè)都會(huì)復(fù)現(xiàn)第5章的亂碼問題。session.setAttribute(loginUser, user)之后后面每個(gè)頁面或Servlet拿當(dāng)前用戶只需要從Session里取。但注意Session默認(rèn)超時(shí)時(shí)間是30分鐘用戶掛機(jī)太久購物車信息還在登錄態(tài)卻沒了這是正常業(yè)務(wù)行為。處理辦法是寫一個(gè)簡單的Filter攔截器Session為空就重定向到登錄頁而不是去調(diào)長Session生命周期。再談購物車。Session版的數(shù)據(jù)模型天然是一個(gè)Map蛋糕ID, 數(shù)量完全貼合購物車這個(gè)業(yè)務(wù)概念而且不涉及落庫邏輯public class Cart { private final MapInteger, CartItem items new LinkedHashMap(); public void addItem(CartItem item) { CartItem existing items.get(item.getCakeId()); if (existing ! null) { existing.setQuantity(existing.getQuantity() item.getQuantity()); } else { items.put(item.getCakeId(), item); } } public int getTotalCount() { return items.values().stream() .mapToInt(CartItem::getQuantity).sum(); } public BigDecimal getTotalPrice() { return items.values().stream() .map(CartItem::getSubtotal) .reduce(BigDecimal.ZERO, BigDecimal::add); } }這個(gè)Cart對象在用戶點(diǎn)擊“加入購物車”時(shí)從Session里取出來沒有就新建一個(gè)放進(jìn)去。Session版購物車的缺陷是換設(shè)備或清Cookie就沒了。對課設(shè)來說這不是問題因?yàn)樵u分場景默認(rèn)同一臺機(jī)器完成操作。如果導(dǎo)師明確要求購物車持久化再落t_cart_item表做法很簡單加入時(shí)INSERT刪除時(shí)DELETE展示時(shí)JOIN t_cake查最新價(jià)格。4.3 商品搜索與分頁P(yáng)reparedStatement和URL參數(shù)的邊界蛋糕列表頁幾乎必然要做的兩個(gè)功能是搜索和分頁。合在一起就暴露一個(gè)典型的新手錯(cuò)誤直接用字符串拼接SQL??催@個(gè)不推薦的寫法String sql SELECT * FROM t_cake WHERE name LIKE % keyword % LIMIT page , pageSize;這個(gè)寫法有兩個(gè)要命的問題keyword拼進(jìn)百分號里可以被SQL注入page參數(shù)拼進(jìn)LIMIT會(huì)被解析成想象不到的數(shù)值。正確寫法是用PreparedStatement占位符String sql SELECT COUNT(*) FROM t_cake WHERE name LIKE ?; PreparedStatement ps conn.prepareStatement(sql); ps.setString(1, % keyword %); ResultSet countRs ps.executeQuery(); countRs.next(); int totalCount countRs.getInt(1); sql SELECT * FROM t_cake WHERE name LIKE ? ORDER BY id DESC LIMIT ?, ?; ps conn.prepareStatement(sql); ps.setString(1, % keyword %); ps.setInt(2, (page - 1) * pageSize); ps.setInt(3, pageSize); ResultSet rs ps.executeQuery();注意LIMIT后面的兩個(gè)參數(shù)是offset和countoffset從0開始。第1頁是LIMIT 0, 10第2頁是LIMIT 10, 10換算公式是(page - 1) * pageSize。很多教程在這里直接傳page進(jìn)LIMIT第2頁查出來確實(shí)是第11到20條但第一頁LIMIT 1, 10會(huì)跳過第一條出現(xiàn)“列表頁第一頁少一個(gè)商品”的詭異bug。搜索的另一個(gè)細(xì)節(jié)是分頁頁碼鏈接要帶上一次搜索的關(guān)鍵字。JSP里生成分頁標(biāo)簽時(shí)有直接拼參數(shù)的做法a href${pageContext.request.contextPath}/cake/list?page${p}keyword${param.keyword}但keyword里如果含中文或空格直接拼到URL會(huì)出現(xiàn)編碼錯(cuò)亂??梢杂肑STL的c:url標(biāo)簽自動(dòng)編碼c:url varpageUrl value/cake/list c:param namepage value${p}/ c:param namekeyword value${param.keyword}/ /c:url a href${pageUrl}${p}/ac:url會(huì)自動(dòng)做URL編碼比手拼字符串安全得多。我還見過一種翻車方式搜索關(guān)鍵字里帶單引號比如搜“Cakes kitchen”直接字符串拼接導(dǎo)致SQL語法錯(cuò)誤用PreparedStatement后這類問題全部消失。數(shù)據(jù)量大時(shí)再考慮索引優(yōu)化在t_cake表的name字段建一個(gè)普通索引就夠了。真正決定成績的往往不是查詢性能而是搜索時(shí)結(jié)果錯(cuò)亂這種功能性問題。5. JavaWeb蛋糕商城避坑指南五個(gè)高頻翻車點(diǎn)從現(xiàn)象到根治5.1 IDEA里Tomcat啟動(dòng)成功但瀏覽器404先查contextPath和Artifact現(xiàn)象Tomcat控制臺顯示啟動(dòng)成功瀏覽器訪問http://localhost:8080/cake/卻404。這是IDEA里跑JavaWeb項(xiàng)目最最常見的問題每天都在重復(fù)發(fā)生。原因要么是Deployment里沒把Artifact加進(jìn)去項(xiàng)目根本沒部署到Tomcat的webapps目錄Tomcat啟動(dòng)的是空服務(wù)要么是Application context配錯(cuò)了你訪問/cake但實(shí)際配的是/。解決打開Run/Debug Configurations看Deployment標(biāo)簽頁下有沒有項(xiàng)目的war exploded條目再看Application context是不是/cake。改完之后重啟Tomcat不要用熱更新熱更新對Deployment結(jié)構(gòu)變化不生效。還不行就看Tomcat的webapps目錄里有沒有項(xiàng)目文件夾沒有就說明Artifact還是沒部署上。IDEA里最常見的牛角尖是把Tomcat配到了Deployment之外的項(xiàng)目結(jié)構(gòu)里實(shí)際上Tomcat只認(rèn)Deployment標(biāo)簽頁里那一份。5.2 MySQL中文數(shù)據(jù)全變問號三處字符集必須一致現(xiàn)象往數(shù)據(jù)庫插入中文蛋糕名頁面上或數(shù)據(jù)庫里顯示成“???”。有人因?yàn)檫@個(gè)重裝MySQL、換驅(qū)動(dòng)、改代碼最后發(fā)現(xiàn)只是少寫一個(gè)參數(shù)。原因MySQL的character_set_server、數(shù)據(jù)庫的charset、JDBC連接URL的characterEncoding三處只要有一處不是utf8或utf8mb4中文就出問題。最常見的是JDBC URL里沒加characterEncodingutf8。解決第一建表語句統(tǒng)一加DEFAULT CHARSETutf8mb4第二JDBC URL寫成下面這種完整形式j(luò)dbc:mysql://localhost:3306/cake_shop?useUnicodetruecharacterEncodingutf8mb4serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrue第三核對MySQL配置文件my.ini里[mysqld]段有character-set-serverutf8mb4。按這個(gè)順序排查90%的亂碼出在JDBC URL。改完URL后記得重啟Tomcat連接池里的舊連接不會(huì)自動(dòng)刷新。5.3 JSP里EL表達(dá)式原樣輸出web.xml版本與JSTL jar包沒對上現(xiàn)象頁面上直接顯示${cake.name}字符串而不是蛋糕名稱c:forEach標(biāo)簽被瀏覽器當(dāng)成普通文本??雌饋硐翊a寫錯(cuò)了其實(shí)是配套環(huán)境不對。原因JSP里啟用EL表達(dá)式要求web.xml的Servlet版本在2.4以上Tomcat 8默認(rèn)支持。但如果項(xiàng)目里放了一份老舊的web.xml聲明為2.3EL表達(dá)式會(huì)被當(dāng)成普通文本輸出。JSTL同理lib下沒有jstl和standard這兩個(gè)jarJSTL標(biāo)簽也無法解析。解決打開web.xml確認(rèn)根元素聲明版本為3.1或4.0大致寫法是web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd version3.1檢查WEB-INF/lib下是否有jstl-1.2.jar和standard-1.1.2.jar。如果都沒問題把IDEA的緩存清掉再重啟一次JSP編譯緩存有時(shí)會(huì)留下舊版本的片段。5.4 登錄后刷新就掉線JSESSIONID與Cookie路徑的糾纏現(xiàn)象登錄成功跳到首頁正常但刷新頁面或跳轉(zhuǎn)下一個(gè)頁面后登錄狀態(tài)消失又要重新登錄。原因Session依賴瀏覽器Cookie里的JSESSIONID。如果Cookie沒有被正確種下或每次請求JSESSIONID都變了Session就永遠(yuǎn)對不上表現(xiàn)就是“登錄就掉”。常見誘因有兩個(gè)項(xiàng)目路徑和Cookie的path不匹配代碼里手動(dòng)創(chuàng)建了一個(gè)同名Cookie覆蓋了JSESSIONID。解決瀏覽器F12看Network面板檢查兩次請求的Cookie頭里JSESSIONID是否一致。如果不一致說明Cookie沒寫進(jìn)瀏覽器。檢查代碼里有沒有手動(dòng)new Cookie(JSESSIONID, ...)有就刪掉再檢查Cookie.setPath是否設(shè)置為req.getContextPath() /。如果本地沒問題、部署到服務(wù)器才出現(xiàn)優(yōu)先檢查Tomcat的session cookie配置和域名可以把session超時(shí)時(shí)間調(diào)長到30分鐘以上再說。5.5 數(shù)據(jù)庫連不上報(bào)Public Key RetrievalMySQL 8.0認(rèn)證插件和驅(qū)動(dòng)類現(xiàn)象程序啟動(dòng)后第一次訪問數(shù)據(jù)庫報(bào)java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed。原因MySQL 8.0默認(rèn)使用caching_sha2_password認(rèn)證插件客戶端首次連接時(shí)需要從服務(wù)器獲取公鑰做加密握手JDBC URL里沒允許這個(gè)行為就會(huì)拋異常。另外驅(qū)動(dòng)jar是5.x還是8.x也決定了驅(qū)動(dòng)類名完全不同。解決連接URL加上allowPublicKeyRetrievaltrue同時(shí)帶上useSSLfalse避免加密認(rèn)證的另一層干擾。確認(rèn)驅(qū)動(dòng)類是com.mysql.cj.jdbc.Driver而不是com.mysql.jdbc.Driver。這個(gè)坑最容易出現(xiàn)在本地MySQL 8.0、教程代碼卻按5.x驅(qū)動(dòng)寫的場景。排查順序是先看jar在不在WEB-INF/lib再看URL參數(shù)齊不齊最后看驅(qū)動(dòng)類名對不對。6. 從能跑到能看日志、演示數(shù)據(jù)與部署細(xì)節(jié)的最后一公里6.1 用日志和斷點(diǎn)把Bug定位時(shí)間砍掉一半代碼能跑之后第一件事是加日志而不是加功能。在黑匣子階段System.out.println打印的信息沒有級別、沒有時(shí)間戳你不知道哪條日志是哪里打的。我通常會(huì)用Log4j2做最小配置log4j2.xml放在src/main/resources下根Logger級別設(shè)為DEBUG把MySQL驅(qū)動(dòng)之類的第三方日志級別調(diào)成WARN避免刷屏。這樣MySQL驅(qū)動(dòng)和框架類的調(diào)試信息不會(huì)干擾你自己業(yè)務(wù)代碼里的logger.info和logger.error能顯示完整堆棧和時(shí)間。配上日志后再遇到亂碼或Session丟失你從日志看到的不再是“頁面白屏”而是具體的異常行和參數(shù)值。IDEA里同時(shí)打幾個(gè)斷點(diǎn)配合日志看變量值變化定位時(shí)間能砍掉一半。6.2 用初始化腳本準(zhǔn)備演示數(shù)據(jù)不在現(xiàn)場造數(shù)據(jù)演示環(huán)節(jié)最怕臨時(shí)錄入數(shù)據(jù)翻車每插入一條重啟一次Tomcat。我習(xí)慣把演示數(shù)據(jù)反過來準(zhǔn)備把分類、商品、測試賬號、若干條訂單全部寫進(jìn)初始化腳本現(xiàn)場用干凈瀏覽器環(huán)境演示登錄、加購、下單流程。腳本里除了基礎(chǔ)數(shù)據(jù)再多插幾筆狀態(tài)為0的訂單現(xiàn)場演示結(jié)算時(shí)直接就能看到待支付訂單列表。注意測試賬號的密碼不要用加密邏輯因?yàn)镈emo場景里評委可能現(xiàn)場重新登錄純文本密碼最簡單也最穩(wěn)。演示前從瀏覽器開發(fā)者工具里勾選Disable cache再強(qiáng)制刷新兩次頁面模擬真實(shí)用戶的訪問鏈路。6.3 部署到服務(wù)器時(shí)的三個(gè)細(xì)節(jié)部署到云服務(wù)器時(shí)有三個(gè)比本地更容易出問題的地方。第一是數(shù)據(jù)庫連接項(xiàng)目和服務(wù)在同一臺機(jī)時(shí)數(shù)據(jù)庫URL寫localhost沒問題但云服務(wù)器的防火墻和安全組要放行3306端口否則外部連不上。第二是Tomcat端口8080要在安全組里放行想用80端口需處理root權(quán)限問題兩難時(shí)就保留8080用Nginx做反向代理。第三是靜態(tài)資源路徑頁面里所有${pageContext.request.contextPath}會(huì)自動(dòng)適配部署路徑反過來說如果早前圖省事寫死了/cake部署后這些鏈接會(huì)全部失效這也是我堅(jiān)持所有URL不寫死的原因。每個(gè)項(xiàng)目做到最后一公里拼的往往不是技術(shù)難度而是這些細(xì)節(jié)的閉環(huán)。我自己帶過的學(xué)生里不少人在本地跑得順一到服務(wù)器演示就慌。后來我養(yǎng)成了一個(gè)習(xí)慣每次部署完先從瀏覽器禁用緩存并強(qiáng)制刷新兩次再走一遍登錄、加購物車、結(jié)算、后臺管理這幾個(gè)主鏈路全部通過才算完。這個(gè)習(xí)慣幫我避開了很多線上翻車現(xiàn)在也分享給你希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁了香蕉综合| 99久久精品色老| 狠狠做深爱婷婷久久综合一区| 国产色99| 亚洲av综合在线| 开心婷婷中文字幕| 五月天色婷婷网| 久久久激情视频| 天天日夜夜| 亚洲热久久| 亚洲精品国产成人AV在线| 亚洲乱码日产精品BD| 亚洲精品永久久久久久| 天天综合社区| 99综合激情久久精品久久| 色色狼人综合| 色天使色婷婷| 六月丁香六月婷婷欧美| 激情五月色综合网| 亚洲另类AV| 久9热| 成人电影丁香六月天| 色婷丁香| 91热久久| 亚洲在线操| 婷五月天| 日韩av在线免费观看| 91av视频| 丁香花五月天婷婷成人社区 | 狠狠五月天| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 欧美成性色| 操逼综合网| 青青草国产亚洲精品久久| 激情综合色图| 丁香大香蕉| 五月天开心激情综合网| 五月婷婷六月丁香激情| 五月激情站| 99久久er| 99热6精品| 操操操操操电影网| 婷婷五月丁香网| 天天爽天天透天天爱| site:wpjngj.com| 亚洲综合99| 91精品国产99久久久久久天美| 久久婷婷六月综合综合| 中文字幕激情综合| 狠狠舔| 91综合国免费久入| 天天开心婷婷丁香五月| 色综合性视频| 色五月AV| AV性爱在线| 九九色精品| 五月激情综合网| 久久久性爱视频| 91se在线观看| 综合五月婷婷| 日本久久极品| 91狠狠色丁香婷婷综合久久精品| 婷婷亚洲五月丁香综合在线| 夜丁香综合| 天天爽,夜夜爽| 五月丁香六月激情综合欧美| 啪啪激情综合| 色五月激情五月| 日欧一片内射VA在线影院| 国产FREESEXVIDEOS性中国| 免费看欧美成人A片无码| 九九性视频| www.超碰97| 午夜微拍福利| 超碰人妻在线| 婷婷六月伊人| 亚洲热热视频| 丁香六月婷婷久久亚洲天堂| 精品思思久久| 色婷婷六月丁香综合欲精品| 夜夜爱网站| 高清一区二区三区日本久| 91色综合网站在线| 色狠狠五月天| 99热精品在线在线| 激情涩播| 久热久色| 另类 在线| 99精品免费视频| av在线播放网站| 超级97碰碰| www99精品| 99热思思在线观看| 久久色婷婷| 丁香五月综合| 丁香六月婷婷| 日本欧美成人片AAAA| 久久婷婷亚洲| 91肏| 色综合久久五月天| 五月婷婷久久大片| 多精窝99在线视频| 丁香六月啪啪| 久久久久8888| 丁香五月伊人| 91亚洲视频| 国产熟女一区二区三区五月婷| 激情网第四色| 色色五月婷婷| 色五月丁香六月资源站| 色婷婷国产精品综合在线观看| 五月丁香影视| 97精品欧美91久久久久久久| 婷婷情爱五月天6| 亚洲亚洲人成综合网络| 午夜婷婷丁香| 91久久1118| 丁香五月婷婷综合激情哟哟哟| 九九色影院| 色婷婷裸体色性在线| 色色操| 青青草婷婷久久| 色五月av伊人| 亚洲字幕AV一区二区三区四区| 五月婷婷婷综合网| 欧美影院| 日hao1区| 久婷五月| 九色视频91| 五月丁香另类图片| 伊人婷婷五月天av| 五月激情小说| 久久久jd| 九九99免费视频| 97精品综合久久内射| 五月色俺婷婷| 91 影音先锋| 9久久精品| 十区av| www.日韩艹| 五月色亚洲| 婷婷99中文字幕| 欧美激情综合色丁香婷婷五月天| 夜夜嗨一区二区三区直播内容| 狠狠艹狠狠艹| 人与禽A片啪啪| 99久在线精品99re8热| 久久99精品久久久久久三级| 六月婷婷激情| 五月婷婷激情网| 婷婷五月天色色| 成人av在线网站| 五月婷婷色播| 久久机热/这里只有精品| 久久九区| 久久9视频| 狠狠色丁香久久久婷| 久久久www| 久久综合五月| 五月婷丁香| 97操视频| 熟女少妇内射日韩亚洲| 激情综合色播| 欧日韩成人| 色婷久九| 99视频在线观看欧| 久艹伊| 五月天婷婷影院| 丁香六月激情综合网| 99久久极情精品一区| 久久久五月天网站| 久久婷婷五月天| 亚洲欧洲自拍图片专区五月天| 四LLL少妇BBBB槡BBBB| 激情五月婷婷丁香| 人妻内射麻豆视频| 日韩AV中文字幕在线| 欧美婷婷综合| 熟女激情网| 乱乱av| 狠狠的日| 婷婷六月久久| 九色自拍| 一级黄色片看看| 天天舔天天摸| 婷婷5月开心6月| 五月婷无码| 综合五月天| 丁香六月婷婷| 在线观看亚洲AV| 亚洲精品色色| 日本九九网| 亚洲无码色| 99这里只有精品在线观看| 日本在线观看91| 无码啪啪| 99亚州综合精品成人网| 无码中文一区二区三区| AV动漫不卡无码免费| 人人爽天天爽| 五月天婷婷AV| 五月丁香婷爱在线| 天天摸天天舔天天爽| 精品99*| 亚洲六月婷婷| 亚洲五月花| 丁香五月1页| 99热www| 六月综合婷婷开心伊人| 99热大| 99玖玖在线视频| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 丁香五月在线观看| 精品成人在线观看| 99热这里有精力| 夜夜 操无码| 20253AV| 亚洲成人在线播放| 五月婷婷色影院| 丁香婷五月| 91丁香五月| 色九四色| 中文字幕视频色婷婷| 久热99| 99精在线| 丁香五月综合在线视频| 秋霞电影理论| 秋霞午夜理论| bbwcuckold精品熟妇| 日本WWW九九九| 97成人操| 丁香五月停停av| 无码任你操| 色婷婷五月天视频网站| 丁香婷婷色情社区成人小说| 婷婷丁香亚洲五月天| 六月丁香啪啪啪| 丁香色五月婷婷91桃色| 亚洲激情综合五月婷婷啪啪| 丁香网五月网| 婷婷丁香五月,狠狠综合| 五月婷婷干干干| 9精品在线| 色婷婷综合成人| av在线不卡播放| 久久婷婷五月天丁香| 五月天婷婷久久| 99热啪啪| 久热9| 99这里| 久久99综合| 99色五月| 色九月婷婷| 精品99在线| 99亚洲视频| 丁香六月婷婷综合欧美| 天天操天天插| 亚洲无码另类| 99∨VTV| 久久9视频| 五月天婷婷色综合| 午夜少妇在线观看视频| 久久大国产香蕉| 丁香五月激情久久麻豆| 亚洲AV电影美洲AV电影| 大香蕉久久婷婷精品综合| 一起操最新网址| 超碰97在线观看免费| 亚洲日本三级片| 五月在线婷色| 开心久久爱五月天| 开心五月综合激情综合五月| 久久人妻伊人| 99热精品在线观看| 色情综合网| 极品人妻VIDEOSSS人妻| 91VIP在线观看| 热九九九九| 激情五月综合久久| 色五月之第四色| 亚洲 在线 性爱 | 色婷久九| 五月婷丁香在线视频在线| 五月花婷婷最新| 99热国产在线| 欧美日本国产欧美日本韩国99| WWW.婷婷| 麻豆忘忧草午夜| 97在线/日本| 97资源欧美日韩大香蕉超碰一区| 97色五月天| 亚洲色婷婷视频| 99热1| 精品人妻伦一二三区久| 亚洲成人丁香花| 996精品热视频| 97色婷婷成人综合在线观看| 五月天激情婷婷小说| 婷婷丁香五月在线播放| 婷婷欧美| 色婷婷五月影院| 五月婷丁香| 久久99久久99精品免观看软件| 99热这里只有精品66| 91好好热日本在线| ...婷婷国产成人亚洲日韩| 色婷五月天综合网| 久久综合九九| 伊人网大香| 丁香花五月天| 色屌丝中文字幕| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 久久婷婷六月综合综合| 婷婷五月丁香激情色情| 激情久久久| 色婷婷精品视频在线播放| 亭亭色色五月天| 婷婷激情网五月天| 婷婷在线视频| 最新色色五月天| 婷婷激情网五月天| 欧美 日韩 人妻 高清 中文| 久久狼人天堂| 天天做天天爱| 丁香六月欧美| 久久99成人性爱高清视频| 女婷久久| 99九九视频| 五月丁香色婷| 99免费视频| 999热这里只有精品| 99色网站| 九月婷婷综合| 91ncom.色| 色婷婷成人久久| 五月丁香少妇A| 久久99婷婷| 色青五月天| 五月激情婷婷播播网| 99免费| 久久丁香社| 五月涩涩网| 亚洲视频在线观看| 婷婷综合成人五月天| 九九热精品| 婷婷丁香九月| 激情综合无码| 亚洲五月婷婷| 天天日天天色| 国产1区2区3区在线观| 婷婷五月天综合AV| 人妻激情在线| 久99热| 久久伦乱| 超碰人人艹| 五月婷婷色播| 丁香成人五月天| 天天肏在线观看| 影音先锋91| 婷婷久久伊人| 99久.| 久久99精品久久只有精品| 老美AA片| 欧美婷婷色五月| 综合色在线| 五月天婷婷成人资源站| 婷婷色色宗合网| 久久六月综合| 久99久精品视频| 色域五月婷婷丁香| 五月婷婷激情综合在线| 日日操夜夜擼| 日韩色色视频| 国产综合视频婷婷| 超碰狠狠操| a v色婷婷| 国产,欧美,学生妹,视频| 五月天婷婷成人资源站| 色色色天堂网| 婷婷无码视频| 久久这里只有精品07| 农村熟妇高潮精品A片| www.久久五月天.com| 五月天婷婷色播综合在线| 日日操日日射| 日本一级特黄大片AAAAA级| 丁香五月日韩| 色婷婷五月天成人网| 国产精品24r| 五月亭亭开心网| 91九色无码日韩| 天天综合精品| 夜夜夜夜夜骑撸| 射区导航| 乱乱av| 日日撸夜夜操| 五月天婷婷丁香花| caopeng97人人| 日本三级中国三级99人妇网站| 激情婷婷综合| 丁香六月婷| 激情小说五月天| 色久综合天天做视频| 五月婷婷成人| 久久激丁香| 99视频在线精品| 久操热| 日本黄色三级片内射| 99热在线观看免费精品| 激情五月天综合图片小说网站| 婷婷六月偷拍| 在线只有精品| 激情四射网| www.com操| A1片久久久| WWW.久久.COM| 人人干av| 成人网站免费在线播放| WWW五月| 欧美噜噜久久久XXX| 久久婷婷大香蕉| 思思热在线视频精品| 狠狠色婷婷777| 99啪啪| 99久久偷拍视频| 亚洲精品亚洲人成人网| AV五月丁香| 婷婷五月色综合| 五月天婷婷色在线视频免费观看| 天天干天天操天天射| WWW.桔色成人.COM| 婷婷五月天成人网| 久久久久久久久久8888| 综合网啪| 99热在线播放| 五月激情婷婷六月| 五月丁香六月婷婷亚洲| 激情欧美婷五月| AAA久久久| 色色五月激情| 在线综合啪| 大地资源色婷婷视频在线| 大香蕉婷婷五月天| 日本九九网| 思思热国产| 五月花成人网| 五月六月激情婷婷| 九月婷婷综合八月丁香在线观看| 嫩草AV久久伊人妇女超级A| 丁香五月婷婷亚洲另类| 九九久久污| 日本色色视频| 久久久久久久,99精品视频| 极品人妻VIDEOSSS人妻| 国产精品久久久久久久久久免费| 日日日日日| 五月亭亭六月天| 久热91| 亚洲啪视频| 激情亭亭五月| 97AV在线视频| 久久ww| 国产激情久久久| 午夜成人天堂久久无码日韩久久| 青青草原亚洲天堂| 欧美丁香婷婷五月| 五月婷丁香| 五月婷婷六月激情| 校花娇喘呻吟校长陈若雪视频| 狠狠色婷婷7777久| 五月婷婷丁香日韩在线| 国产91在线视频| 91主播在线| 婷婷丁香黄色| 97热精品| 九九热再线九九视频免费在线观看 | 狠狠爱综合| 开心激情婷婷| 日本婷婷色| 亚洲成人AV一区在线观看| 激情电影五月婷婷| 色综合偷拍| 超碰在线观看9| 99自拍视频网站| 伊人春天av| 丁香婷婷六月激情| 久久这里只| 久久婷婷五月丁香蜜桃网| 丁香六月婷婷色XXXX| 日韩AV成人电影| 大香蕉操操| 99er6免费视频热播| 五月天免费色| 夜夜干夜夜操| 狼人久草| 九九久久精品國產| 久久五月天精品视频| 思思热在线视频99| 中文字幕,综合,91| 五月婷婷av| 精品欧美性爱超级爽| Caoub青青超碰 | 能看的av片| 精品成人a v无码内射| 影音先锋天天日| 桃色五月天| 六月婷婷综合网2| 极品色丁香| 怡红院院在线导航网| 激情综合色| 97干网站| 百度一下国产精品A| 婷婷五月大香蕉| 婷婷免费成人视频| 成人免费高清在线播放| 国产看真人毛片爱做A片| 天天操天天国产三级片处女学生妹| 久久伦乱| 久久艹 五月天| 色色色天堂网| 色青青五月| 中文AV在线观看| 婷婷五月天影院| 婷婷五月天中文字幕| 婷婷综合网在线| 综合久久99| 一起草Av| 啪啪九九色| 热九九精品| 五月天精品视频| 五月色综合| 好叼操在线观看| 99综合色色色| 综合性爱网| 激情色五月天| 婷婷综合成人五月天| w婷婷五月婷婷w| 五月刺激丁香月综合| 97人人草| 五月天婷婷AV| WWW.久久久久久久久久久久久| 丁香五月视频在线观看| 伊人在线视频| 大香蕉综合在线| 五月婷婷在线视频| 91碰九色| 99热这里只有精品3| 影音先锋自拍网| 亚洲第一色网站| www.99热| 7月婷婷六月丁香| 五月婷啪啪| 婷婷伊人綜合中文| 夜夜综合色| 九九热123| 五月综合激情图片 | 五月天丁香久久| 啪啪五月天啪啪| www,天天干| 91玖玖| 免费视频无码| 97人人操| 开心五月婷婷激情| 日韩综合网络男女香蕉a片| 婷婷五月天久久久| 五月婷婷狠狠久久| 热99在线精品| 色综合综合色| 日日操天天操| 亚洲第一色色色| 超碰在线成人| 操操操av| 婷婷视频在线| 五月天激情小说欧美激情| 亚洲av另类在线观看| 久久婷婷丁香六月天| W色综合| 色婷婷五月天综合网| 婷婷五月丁香第四色超碰在线| 久久午夜理论| 色婷婷AV在线观看| 欧美日比视频| 99热99网| 99热午夜精品| 人人摸人人澡人人| 99热这里是精品| 啪啪91| 亚洲综合婷婷| 超碰人人99| 丁香六月啪| 五月丁香婷婷AV天堂| 色一色综合| 六月婷婷在线| 大香蕉综合| 国产精品涩涩涩视频网站| 日韩六六久久电影| 免费亚洲成人电影AV| 色婷婷色99国产综合精品| 成人超碰AV| 噢美99| 99啪99| 国产亚洲色婷婷99精品| 久久看九九90| 久久五月丁香| 五月天色婷婷基地| 久久网日本| 丁香亭亭久久| 五月激情婷婷偷拍| 色色操| 99热综合在线观看| 99精品国产在热久久婷婷| 人妻久久久久久| 婷婷色情小说| 99热精品在线| 九九综合88| 天天色综网| 婷婷丁香五月欧美人| 庭庭久久内射| 大香蕉视频婷婷| 久操人妻| www.色五月.com| 丁香婷婷色五月| 真实熟女-91九色| 99这里只有| 综合五月天完整| 日韩欧美一区二区三区四区| 五月天激情日色在线| 激情婷婷六月天| 久久激情五月婷婷| 六月丁香婷婷开心综合基地| 97在线碰| 91热手机在线| 97碰碰免费.视频| 九九热在线观看视频| 天天天综合网| 丁香六月天色婷婷| 天天日天天狠狠操| 国产精品久久..4399| 五月做爱| www.9操| 狠狠穞A片一區二區三區| 丁婷婷五月天在线播放| 五月天婷婷激情春色小说| 香蕉久久国产AV一区二区| 深爱激情网婷婷| 色五月天丁香婷婷| 激情五月婷婷她| 成人亚洲精品久久久久| 亚洲激情av| 五月天激情四射| 五月天国产| 日日操,夜夜撸| 无码G高清天| 九九热亚洲中文在线观看免费| 草榴视频网| 久草婷婷视频| 亚洲婷婷综合视频| 久久五月婷综合网| 97亚洲精品| 丁香五月色情av| 婷婷综合性爱网| 97色婷婷| 婷婷中文字幕欧美| 91丨九色丨首页| 日韩人妻AV在线| 日日影院 | 色色99| 五月天综合网| 蜜臀AV在线观看| 无码日本精品XXXXXXXXX| 天天干,天天日| 亚洲久久激情| 久久久五月天| 极品少妇XXXX精品少妇偷拍| 女人被躁到高潮嗷嗷叫小| 欧美日韩欧美| 九久久婷婷| 免費观看aV在线网址| 婷婷五月天亚洲综合网| 99在线综合视频| 色婷婷色五月综合| 丁香激情四射| www.久久久久| 99热国产这里只有| 五月丁香六月婷婷手机无线| 99免费热视频| 久99热在线观看| 五月婷婷国产| 99热9999| 国产婷婷五月中文字幕高清| 人人综合五月人人婷婷| 欧美丁香婷婷五月天| 另类综合色| 外国碰视频网站97| 九九在线精品| 国产毛片操B| 色婷婷啪啪| 超碰com| 丁香六月婷婷综合激情欧美| 天天射天天射一道本日本社区 | 久操激情| 欧美美女国产日韩一区二区久| 亚洲一色色色色色色色色| 99精品无码网站| 这里只有精品无码| 五月天婷婷成人网| 欧美三级韩国三级日本三斤| 日本一级| 成人狠狠成人狠狠成人狠狠成人狠狠| 激情五月婷婷五月| 97色色网| 99色在线视频观看| 国产片天天爽夜夜爽| aaa日韩| 免费啪啪亚州视频| 日韩在线观看网址| 丁香伊人网| 逼逼AV| 久9久成人精品视频| 一本大道嫩草AV无码专区| 97人妻人人| 丁香五月综合激情久久潮喷| 激情五月天激情五月天| 激情综合五月| 情一色一乱一伦一91A| 激情五月天婷婷免费观看| 亚洲aV写真天天综合网久久| 中文字幕 中文字幕明步| 亚洲日韩久久婷婷伊人| 大香蕉520| av五月天婷婷丁香| 日韩成人综合网| 久久影视婷婷五月| 成人网站免费sxj| 丁香婷婷六月天| 亚洲激情四谢| 色VA| 97视频久久| 五月丁香色色色| eeuus五月婷| 日韩色五月| 日本玖玖在线| 色欲丁香久久| 99免费视频| 亚洲色图五月丁香| se影音资源在线观看| 久久久天堂国产精品女人| 五月天丁香婷| 五月天亚洲综合网| 久婷狼色诱惑在线| 婷婷五月俺要去| 色色色色网| 中文字幕97超级碰| 天天色天天操天天射| 激情五月婷婷综合网| 在线看片av| 婷婷五月天大香蕉在线视频观看| 久久婷婷五月综合激情国产| 夜夜撸夜夜骑| 99欧美| 日韩久久视频| 久久久久亚洲AV无码网影音先锋| 激情五月天社区| 欧美偷偷操| 五月婷婷欲色| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 99热99热不卡| 人妻激情久久| 中文aV网| 激情小说色五月| 天天天天天色| 精品人妻午夜一区二区三区四区| 丁香五月在线视频| 婷婷五月天社区| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 五月天大香焦| 激情六月婷| 97干在线免费| 五月丁香六月情| 偷偷操九九| 99精品小视频| 丁香五月天婷婷91| 五月丁香六月| 欧美天堂久久| 亚洲色啪| 欧美丁香婷婷天天操| 九九黄色网| 中文字幕日韩无码制服诱或| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 麻豆精品| 五月婷婷中文字幕| 黄网在线播放| 亚洲超碰在线| 六月丁香婷婷天堂| 久久婷婷网址| av在线免费网站 | 天天肏天天肏| 99在线视频精品| 九九九九国产| 亚洲乱码精品久久久久..| 亚洲综合婷婷| 久久久久久久五月| 婷婷中文无码| www.国产亚洲69ty.久久久久久久久久久久| 激情综合五| 日日夜夜天天爽| 久久婷婷亚洲无码一起| 五月婷婷丁香网| 殴美综合激情五月天免费视频| 丁香婷婷五月色成人网站| 天天操天天操天天操天天操天天操| 5月婷婷视频网站综合| 亚洲网在线观看| 五月丁香另类图片| 久久久com| 成人亚洲精品久久久久| XX色综合| 丁香六月 婷婷六月| 九色亚洲| 亚洲九九夜夜| 97色色色视频| 538任你爽| 婷婷香蕉精品| 久久狼人天堂| 亚洲男人的天堂婷婷色五月| 国产精品丝| 日日夜夜狠狠| 色五月天成人| 激情综合网五月天天| 久久综合9| 婷婷五月色| 婷婷五月婷| 99热99ai| 91视频久久久| 丰满少妇猛烈A片免费看观看| 色五月婷婷丁香五月| 丁香五月1页| 六月婷婷日| 色婷婷小说| 久操97| 久久这里99| 亚洲欧美婷婷五月色综合| 97伦乱| 饮料下药迷倒漂亮女同事强干| 永久AⅤ1| 99re这里只有精品免费| 五月丁香综合影院| 国产全是老熟女太爽了| 日本久久婷婷| 五月深爱网| 五月婷高清视频| 久久久宗合| 色婷大香蕉| 国产成人精品一区二三区熟女在线| 色婷久久| 夜夜操激情| 99碰碰| 熟女激情五月天 | 这里只有精品1| caopeng97日韩| 丁香五月色| 偷拍九九五月丁香婷婷| 97久久婷婷色| 成人片黄网站色大片免费毛片| 久草性爱| 激情五月婷黄版| 美女妹子后射视频网站在线观看| 蜘蛛女免费观看完整版高清电影 | 人人操AV| 激情五月婷婷开心网| 国产精品国产VA片国产| 五月婷婷六月丁| 久久综合中文| 97碰| 久操福利| 97热这里精品在线视频| 一区三区视频有限公司| 婷婷激情综合色五月久久91| 91精品久久久久久久久久| 人妻少妇色综合| 婷婷丁香六月| 亚洲热热视频| 亚洲AV成人片无码网站| 五月天婷婷基地综合网| 九九热最新视频| 色色AV色色色东莞| 五月婷婷AV| 桔色成人在线| 亚洲天码视频www蛋播视频| 五月婷综合性中心| www.思思99热| 另类小说五月天激情| 婷婷中文字幕版| 思思99re这里只有| 嫩草AV久久伊人妇女超级a| 天天插天天| 九九机热| 色色网站在线| 色久丁香五| 五月丁香婷草| 另类视频一区| 婷婷六月啪啪| 能看的AV| 五月天社区婷婷| 亚洲AV成人在线观看| 人妻视频一区而且二区| 色五月婷婷91在线| WWW·色色色·COM| 1024国产| 色色色视频免费无码 | 亚洲丁香五月天视频| 日本九九网| 超碰国产在线| 午夜性做爰电影| 碰99在线| 六月丁香激情| 五月丁香综合啪啪| 欧美亚洲999| 色婷婷先锋| 99精品小视频| AV在线观看网站| 九九热在线视频| av大片在线| 五月丁香偷拍| 亚洲黄色影视| 这里只有精品视频看看| 丁香桃色网| 九九综合九九| 香蕉97碰碰碰欧美| 热久69| 久久婷婷五月综合97色一本| 五月四色色| 另类视频五月天| 成人丁香| av人人操| 婷婷激情肏屄网| 色狠狠色狠狠| 国产99久久久| 婷婷综合婷婷| 婷婷久久五月丁香| 婷婷五月天日日日干干干| 五月天偷拍| 99色在线| 亚洲AVDVD| 99爱这里只有精品| 色五月丁香婷婷久草| 丁香婷婷啪啪| 亚洲无码你懂的| 久久er免费视频| 99热这里只有精品3| 色色亚洲| 影音先锋男人资源站一区二区| 99热这里只有精品268| 五月丁香淫淫婷婷婷| 99热这里只有精品免费| 九月婷婷激情久久| 99热精品少| 五月丁香色综合| 乱岳熟女50岁| 色狠狠综合网| 色婷婷五月天不卡| 99热综合| 久久色五月天| 精品怡红九九九| 亚洲激情五月天| 九热电影av| 操丝袜视频影院导航| 婷婷丁香18| 亚洲AV无码一区二| 天天日天天日天天搞| 五月丁香偷拍| 六月丁香六月婷婷欧美| 五月天婷婷激情春色小说| 精品色| 99精品久久久久| 婷婷丁香人妻天天| 免费看欧美成人A片无码| 亲子乱AV一区二区三区下载| 欧美xx激情视频在线观看| 亚洲视频一区| 婷婷五月综合色中文字幕| 久久九九@| 五月婷婷97| 五月丁香婷婷激激激综合网色播| 激情av| 99久在线精品99re8| 五月婷婷草| 欧美日韩精品一区二区三区钱| 婷婷激情六月综合| 国产这里只有精品| 久久久18| 91热在线| 色五月婷婷操逼| 五月激情综合网| 久久五月天丁香| 俺去也在线视频| 日韩色色色色| www,婷婷五月天777me,com| 激情婷婷| 久一这里有精品国产| 久久婷婷视频| 亭亭丁香aV| www.狠狠| 成人婷婷桔色| 亚洲人妻av伦理| 色五月激情问网站| www.婷婷五月天| 六月婷婷五月丁香首页| 久99久视频| 五月丁香美女| 99热这里只有精品8| 九九激情网| 国产激情久久| 我要色综合五月婷婷| http:色情日本com| 中出内射的人妻视频| 伊人久久婷婷五月综合97色| 国产精品久久久久久五月天加勒比| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 婷婷五月综合啪| 五月婷婷导航| 婷婷五月天久久| 色吧五月婷婷| 丁香色情五月天| 国产真人做爰视频免费| 五月天婷婷网站| 97爱艹婷婷开心丁香激情综合| 欧美性色五月天| 97自拍视频网| 婷婷五月天福利| 激情综合色网| 亚洲成av人影院| 婷婷色五月情| 色五月婷婷激情基地| 婷婷色丁香五月| 色综合色综合婷婷热| 99在线精品免费视频| 五月婷婷二月丁香| 超碰a女人的天堂| 色婷婷成人| 秋霞电影理论| 婷婷人妻激情| 97人人操人人爽| 久久这里只有精品07| aaaa久久| 亚洲六月色婷婷| 久久五月天综合视频网站| 狠狠爱深色婷婷综合| 国产激情综合五月久久| 日韩成人免费电影| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 激情五月丁香五月色| 99热这里是精品| 婷婷色播婷婷| 无码视频国内精品久久久| 99热6精品| www.粉嫩av.com| 五月 婷 久| 中文字幕在线免费观看视频| 中文aV网| 久久婷婷国产| 久久精品A片777777| 日日日日日| 5月婷婷6月丁香aV| 狠狠爱夜夜| 成功精品影院| 激情五月影院| 婷婷丁香视频在线观看免费 | 中文AV在线观看| 天堂婷婷五月色| av无码电影| 中文字幕乱码亚洲精品一区| www,com,五月色色| 五月色情网| www久久艹| 亚洲婷婷性爱| 欧美成人A片AAA片在线播放| 天天日天天日天天搞| 九九黄色网| 五月婷丁香久久综合| 欧美日韩aaa| 五月婷婷开心网| 婷婷五月天伊人网在线观看视频| 92国产福利| 五月丁香久久激情综合| 天天干天天干天天干| 99在线免费视频| 久久久五月婷婷| 开心久久xxx色| 色综合久久中文| 99情色五月天| 国产69久久久欧美黑人A片| 免费97碰碰| 欧美VA在线观看| 丁香六月亚洲| 日本高清久| 91窝窝| 五月天婷婷综合色| av九九| 国产精品大香蕉| 青青草原伊人网| 日本色色视频| 久久这里只有国产精品视频| 五月婷六月综合在线观看| 亚洲成人无码网站| 99超级超级超级碰| 黄色中文字目| 黑人糟蹋人妻HD中文字幕| 亚洲综合色色| 丁香狠狠色婷婷| 丁香色婷婷五月天| http://www.sd-xiangsu.com/| 色五月婷婷五月久久| www.激情.com.| 九九五月天| 亚洲色激情| 五月丁香久久色| 五月婷婷,六月婷婷| 色九月综合| 91黄色五月天视频| 丁香五月天堂婷婷| 激情操逼婷婷| 91919191919久久成人视频| 午夜不卡久久精品无码免费| 我爱大香蕉| 欧美性爱五月天| 婷婷五月综合网| 天天操天天操天天操天天操天天操 | 五月丁香花婷婷玉莉AV| 久久99热精品a片在线观看| 婷婷五月天激情综合| www.99热视频在线观看| 亚洲欧洲色色| 天天舔天天摸天天射| 99热国产在| 深爱激情九九五月天| 激情网站综合五月天| 激情网第四色| 久久婷婷一级片| 新伍月婷婷| 99热精品无码| 天天爱天天秀天天做| 五月丁香色婷婷久久| 香蕉国产2013| 国产无套精品一区二区| 深爱激情五月网| 欧美大肥婆大肥BBBBB| 成人午夜天| av首页在线| 91精品啪| 色V狠狠的干| 五月综合视频在线| 色九月激情综合网| 青青草原精品久久| 亚洲久久激情| 久久久99久久| 啪啪啪综合网| 婷婷99视频全集高清| 色天堂操| 久久性爱视频| 亚洲舔观看| 丁香五月天的网址。| 丁香婷婷基地| 99久在线视频| 国产精产国品一二三在观看| 九九精品9| 久久大香蕉视频| 丁香色六月| 五月婷婷丁香五月婷婷| 夜夜爱网站| 超碰精品在线| 搡BBBB搡BBB搡18| 婷婷五月a| 九九热在线观看6| 丁香五月影院| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 婷婷丁香五月视频| 婷婷开心综合人妻小说网址| 丁香六月婷婷综合缴| 超碰在线人妻| 色情终和网| 97极品在线| 婷婷AV丁香| 亚洲久久激情| 五月天婷婷成人网| 五月色情婷婷| 丁香五月激情宗合网| 色哟哟精品| 久操人妻| 俺去啦综合网| 亚洲激情网| 亚洲精99| 婷婷九月丁香| 午夜少妇在线观看视频| 99视频91| 色婷婷六月综合| 91seav| 爱穴久久| 五月丁香六月综合情在线观看| 综合激情深爱| 婷婷狠狠操| 99热99| 夜夜天天久久婷婷| 婷婷五月AV| 久久综合最新网址| 色婷婷视频| 丁香五月婷婷AV在线| 国产婷婷色综合AV蜜臀AV| 色五月婷婷综合在线| 日韩乱玛久久| 99久在线精品99re8| 久久99看免费| 婷婷成人丁香色情基地30 | 97啪啪| 99ri精品在线| 婷婷综合爱| 日本熟妇乱妇熟色A片蜜桃| 97人人操| 综合色色色色色色| 欧美成人AAA片一区国产精品| 4399亚洲视频| 日本五月婷婷| 丁香五月婷婷欧美性爱| 26UUU| 亚洲精品国产setv| www色综合亚洲92| xfplayav在线| 丁香六月激情综合| 亚洲另类电影| 欧美性爱中文字幕| 伊人影院久久网| 伊人五月网| 欧美搡BBBBB摔BBBBB| 色色综合网站| 亚洲网站999| 婷婷久久婷婷色五月| 99视频这里只有久久精品| 婷色五月| 成人做爰A片免费看网站找不到了| 婷婷五月在线视频| 久久aaaaa| 五月激情天天干| 操精品9| 亚洲另类婷婷五月综合| 99精品热| 深爱五月综合网| 人人干av| 婷婷丁香社区网| 99ri视频| 婷婷五月天综合网| 五月婷精品| 91九色大屁股| www.五月天婷婷| 色99色| 国产精品视频| 五月丁香成人| 97性视频| 99re在线精品视频| 九九久久99精品免费观看www| 久9久成人精品视频| 97色啪| 成人一级片| 91超碰人人操| 女性自慰系列第五页| 99色色| 欧美色六月婷婷|