亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

JavaWeb寵物商城課設(shè)源碼全解析:數(shù)據(jù)庫、核心代碼與部署排錯 簡介基于Javaweb的網(wǎng)上寵物銷售商城系統(tǒng)是一份面向JavaWeb學(xué)習(xí)者的完整項目資料特別適合課程設(shè)計、畢業(yè)設(shè)計或商城類項目實戰(zhàn)參考。資源覆蓋前臺展示、購物車、訂單管理、后臺管理等核心場景可幫助讀者理順電商系統(tǒng)的典型業(yè)務(wù)流程與編碼結(jié)構(gòu)。壓縮包整體約27.24MB主要文件包括Java源代碼、SQL數(shù)據(jù)庫腳本和論文文檔源代碼可直接導(dǎo)入開發(fā)工具運行數(shù)據(jù)庫腳本包含建表及初始數(shù)據(jù)論文可供撰寫設(shè)計說明書時參考。目前已有37人學(xué)習(xí)瀏覽。由于資料同時具備源碼、數(shù)據(jù)庫與論文三層配套拿到手既能通過實際代碼驗證功能也能按文檔理解設(shè)計思路省去自行搭建環(huán)境和梳理表結(jié)構(gòu)的時間適合希望從零完成一個可演示寵物商城的初中級開發(fā)者快速入手。1. 網(wǎng)上寵物銷售商城一份JavaWeb課設(shè)源碼包能讓你少走多少彎路期末趕課設(shè)的時候打開一個“基于Javaweb的網(wǎng)上寵物銷售商城系統(tǒng)源代碼數(shù)據(jù)庫論文.rar”里面裝的就是一套能跑的JavaWeb完整案例Servlet/JSP寫的前后端、MySQL的建庫腳本、一篇可以直接當(dāng)說明書用的論文。很多人以為難點在“看懂代碼”實際上十次有八次翻車在“跑不起來”數(shù)據(jù)庫連不上、Tomcat端口沖突、編碼亂碼、表名和代碼對不上。這篇文章就按你拿到壓縮包后的操作順序從技術(shù)棧識別、數(shù)據(jù)庫初始化、核心鏈路代碼一直講到部署排錯最后給出四個能加分的增強點。適合在做JavaWeb課程設(shè)計或畢業(yè)設(shè)計的人也適合剛學(xué)完Servlet和MySQL想練一個完整項目的初學(xué)者。2. 先拆三件套源代碼、數(shù)據(jù)庫腳本和論文在項目里的真實分工收到rar后的第一件事不是解壓雙擊也不是急著往IDEA里拖而是先搞清楚氣里面三樣?xùn)|西各自負責(zé)什么。源代碼是主體數(shù)據(jù)庫腳本是地基論文是說明書三者的關(guān)系一句話就能說清論文描述系統(tǒng)應(yīng)該有什么數(shù)據(jù)庫決定系統(tǒng)拿什么存代碼決定系統(tǒng)怎么跑。很多課設(shè)包打開后發(fā)現(xiàn)代碼能編譯但頁面全報錯問題幾乎都出在第二樣?xùn)|西沒裝好。2.1 技術(shù)棧識別先判斷是ServletJSP還是SSM再動手解壓之后別急著點開某個.java文件先在根目錄掃一眼有哪些標(biāo)志性文件。JavaWeb課設(shè)包通常走兩條路線傳統(tǒng)的是Servlet JSP JDBC MySQL特征是有web.xml代碼里能搜到大量extends HttpServlet稍微新一點的是SSMSpring SpringMVC MyBatis特征是有applicationContext.xml、spring-mvc.xml這一組配置文件。兩條路線的導(dǎo)入方式、運行方式、排錯方式完全不一樣看錯一步后面全亂。區(qū)分它們最快的辦法是看項目里有沒有pom.xml。有pom.xml就是Maven工程IDEA導(dǎo)入后會自動下載依賴沒有pom.xml只有一堆jar塞在lib目錄或WebContent/WEB-INF/lib下就是傳統(tǒng)Web項目導(dǎo)入時需要手動Add as Library。我一般會用下面這條命令把關(guān)鍵文件一次性找出來# 解壓后先看根目錄 ls -la # 定位關(guān)鍵標(biāo)記文件SQL腳本、Maven配置、web.xml find . -maxdepth 4 \( -name *.sql -o -name pom.xml -o -name web.xml \) | head -20這條命令解決的問題很實際有些課設(shè)包把SQL腳本藏在兩層目錄下面不搜一下根本找不到。find的管道參數(shù)head -20是為了防止目錄結(jié)構(gòu)太亂時輸出刷屏如果只找到pom.xml和web.xml沒有sql文件那SQL腳本大概率在README里寫了路徑或者根本沒打包進來得回去找下載頁面。Windows用戶沒有find命令直接在資源管理器里搜“*.sql”和“pom.xml”一樣能達到目的。識別出技術(shù)棧后順手記下三件事JDK版本、Tomcat版本、MySQL版本。這三個版本是后面所有報錯的根源版本記錯會讓后面的修改方向完全跑偏。判斷對象看到這個文件/特征得出結(jié)論Maven工程pom.xml用IDEA以Maven方式導(dǎo)入依賴由Maven管理傳統(tǒng)Web工程lib下很多jar無pom.xml手動添加依賴到項目結(jié)構(gòu)里SSM框架applicationContext.xml、spring-mvc.xml配置入口在Spring配置不走web.xml直連Servlet/JSPweb.xml 大量HttpServlet子類入口是web.xml配置的servlet-mapping2.2 目錄結(jié)構(gòu)與源碼分層拿到包后先看這五個位置確認技術(shù)棧之后就按固定順序掃一遍目錄我習(xí)慣看五處根目錄的README或說明文檔、數(shù)據(jù)庫腳本位置、JDBC配置文件、web.xml或Maven坐標(biāo)、JSP頁面數(shù)量。這套順序?qū)?yīng)的是“項目怎么啟動、數(shù)據(jù)怎么連、功能有多全”三個核心問題。課設(shè)項目的源碼分層一般長這樣pet_shop/ ├── src/com/pet/shop/ │ ├── entity/ # User.java Pet.java Order.java │ ├── dao/ # UserDao.java PetDao.java OrderDao.java │ ├── service/ # UserService.java OrderService.java │ └── web/ # LoginServlet.java RegisterServlet.java ├── WebContent/ │ ├── index.jsp │ ├── WEB-INF/ │ │ └── web.xml │ └── static/ # css / js / images ├── database/ │ └── pet_shop.sql ├── 論文.doc └── 說明文檔.txt這個分層順序不是隨便排的entity對應(yīng)數(shù)據(jù)庫表的對象映射dao負責(zé)增刪改查service寫業(yè)務(wù)流程web下的Servlet只做參數(shù)接收和頁面跳轉(zhuǎn)。課設(shè)包采用這種分層一方面是課程里就是這么教的答辯護時能講清楚層次關(guān)系另一方面是代碼量不大四個包各自管一攤出了問題容易定位??吹綄嶓w類可以順手打開看一眼字段名后面導(dǎo)入數(shù)據(jù)庫時能對照上。2.3 論文與代碼的一致性校驗別讓文檔和代碼打架三件套里最容易出問題的其實是論文。下載包里那篇論文通常是從某個學(xué)長學(xué)姐手里流轉(zhuǎn)下來的系統(tǒng)功能描述、界面截圖和實際代碼大概率對不上。答辯時老師翻論文問“你這個查詢功能在哪個頁面”你說沒有這就麻煩了。校驗方法很簡單把論文目錄里的功能大綱列出來和代碼里的Servlet類、JSP頁面挨個對一遍。IDEA里按兩次Shift鍵可以全局搜索輸入“WebServlet”能列出所有Servlet路徑數(shù)一下數(shù)量然后去對比論文里“系統(tǒng)功能結(jié)構(gòu)圖”畫了幾個模塊。我見過最離譜的是一篇論文寫了六個模塊代碼里只有登錄和商品列表兩個能跑。另外要重點檢查數(shù)據(jù)庫字段名的一致性問題。常見的坑是論文的ER圖里字段叫user_nameSQL腳本里叫username代碼里用的是name三個地方三個叫法。遇到這種情況以SQL腳本為準(zhǔn)把代碼里的字段名全局替換掉編譯跑一遍后基本能消除大部分SQLException。3. 數(shù)據(jù)庫設(shè)計與初始化把SQL腳本跑成能用的寵物商城表結(jié)構(gòu)寵物商城這類課設(shè)數(shù)據(jù)庫跑不跑得起來決定了整個項目能不能啟動。前面識別技術(shù)棧時找到的.sql腳本接下來就要派上用場。在導(dǎo)入之前最好先把腳本里的建表語句完整讀一遍不要無腦執(zhí)行——很多腳本文件里缺CREATE DATABASE這行執(zhí)行完一臉懵因為壓根沒建庫。3.1 五張核心表的設(shè)計要點用戶、分類、寵物、購物車、訂單網(wǎng)上寵物商城雖然叫“商城”但課設(shè)級別的表結(jié)構(gòu)不會太復(fù)雜核心就五張表用戶表、寵物分類表、寵物商品表、購物車表、訂單表。下面這份DDL是常見的課設(shè)版設(shè)計我按自己習(xí)慣加了t_前綴目的是避開order這類MySQL保留字。CREATE DATABASE IF NOT EXISTS pet_shop DEFAULT CHARACTER SET utf8mb4; USE pet_shop; CREATE TABLE t_user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(64) NOT NULL, phone VARCHAR(20), address VARCHAR(255), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_category ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_pet ( id INT AUTO_INCREMENT PRIMARY KEY, category_id INT, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INT DEFAULT 0, image VARCHAR(255), description TEXT, FOREIGN KEY (category_id) REFERENCES t_category(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_cart ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, pet_id INT, quantity INT DEFAULT 1, UNIQUE KEY uk_user_pet (user_id, pet_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_order ( id INT AUTO_INCREMENT PRIMARY KEY, order_no VARCHAR(32) NOT NULL UNIQUE, user_id INT NOT NULL, total_amount DECIMAL(10,2) NOT NULL, status TINYINT DEFAULT 0 COMMENT 0待支付 1已支付 2已發(fā)貨 3已完成, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_order_item ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT NOT NULL, pet_id INT NOT NULL, price DECIMAL(10,2) NOT NULL, quantity INT NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;為什么要按這個結(jié)構(gòu)建表每個決定后面都有成本。價格字段用DECIMAL(10,2)而不是FLOAT或DOUBLE是為了避免浮點數(shù)精度問題最經(jīng)典的翻車案例是0.1加0.2算出來是0.30000000000000004訂單金額對不上很尷尬。訂單拆成t_order和t_order_item兩張表是標(biāo)準(zhǔn)的主從表設(shè)計一個訂單里可能同時有貓糧和貓砂兩件商品訂單主表記總價和狀態(tài)訂單明細表記每件商品的單價和數(shù)量統(tǒng)計“這個月賣了什么”時直接查明細表就行。購物車表用了一個唯一索引uk_user_pet保證同一用戶加同一商品時數(shù)據(jù)庫層面不會出現(xiàn)兩條重復(fù)記錄代碼里做累加時會簡單很多。外鍵在課設(shè)表里可以保留但要注意FOREIGN KEY會讓刪除分類時受到限制如果測試時想刪掉某個分類卻被外鍵攔住可以先把對應(yīng)寵物分類下的pet記錄清掉再刪分類。有些課設(shè)包的腳本里故意不加外鍵理由是“代碼里控制了邏輯外鍵影響插入性能”這是沒必要的設(shè)計潔癖課設(shè)階段有外鍵更容易講清楚表關(guān)系。3.2 導(dǎo)入SQL腳本的兩種方式命令行與圖形工具拿到.sql文件后導(dǎo)入方式跟著你的習(xí)慣走。命令行方式適合快速執(zhí)行圖形工具方式適合一邊導(dǎo)一邊看表結(jié)構(gòu)。無論哪種方式第一件事都是確認MySQL服務(wù)已經(jīng)啟動然后確認腳本第一行有沒有CREATE DATABASE沒有的話先手動建庫再導(dǎo)入。# 方式一先登錄MySQL再執(zhí)行腳本 mysql -u root -p # 進入MySQL命令行后執(zhí)行 SOURCE /path/to/pet_shop.sql; # 方式二不進入交互模式直接導(dǎo)入 mysql -u root -p pet_shop pet_shop.sql方式二有個大坑命令行里的pet_shop這個數(shù)據(jù)庫得先存在否則導(dǎo)入會直接報錯“Unknown database”。所以我個人更習(xí)慣方式一先登錄進去用SHOW DATABASES;確認庫存在再用SOURCE執(zhí)行腳本。如果SQL腳本本身帶了CREATE DATABASE IF NOT EXISTS那方式一執(zhí)行會非常干凈執(zhí)行結(jié)束后用USE pet_shop; SHOW TABLES;驗證。圖形工具Navicat/DBeaver導(dǎo)入時有一個操作順序問題左側(cè)連接里先選中pet_shop這個數(shù)據(jù)庫再右鍵“運行SQL文件”而不是直接在連接的根節(jié)點上運行。在根節(jié)點運行腳本時如果腳本第一行是CREATE DATABASE還好說萬一腳本只有CREATE TABLE沒有USE語句就會報“No database selected”。3.3 JDBC連接參數(shù)與驅(qū)動加載數(shù)據(jù)庫連不上的大部分原因都在這里數(shù)據(jù)庫表建好了接下來是讓Java代碼連上來。課設(shè)項目一般用一個jdbc.properties或db.properties文件放連接參數(shù)再配合一個工具類讀取參數(shù)并返回Connection。MySQL 5和MySQL 8的驅(qū)動類名不一樣這個區(qū)別就是經(jīng)典的黑匣子報錯“ClassNotFoundException”的來源。jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/pet_shop?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8 jdbc.usernameroot jdbc.password123456import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { private static final String DRIVER com.mysql.cj.jdbc.Driver; private static final String URL jdbc:mysql://localhost:3306/pet_shop ?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8; private static final String USERNAME root; private static final String PASSWORD 123456; static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { throw new RuntimeException(MySQL驅(qū)動加載失敗請檢查jar包是否放入WEB-INF/lib, e); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWORD); } public static void close(Connection conn, Statement stmt, ResultSet rs) { if (rs ! null) { try { rs.close(); } catch (SQLException ignored) {} } if (stmt ! null) { try { stmt.close(); } catch (SQLException ignored) {} } if (conn ! null) { try { conn.close(); } catch (SQLException ignored) {} } } }這段代碼里必須盯住三個參數(shù)。serverTimezoneAsia/Shanghai是處理MySQL 8時差問題的不寫它會出現(xiàn)“The server time zone value”的異常堆棧characterEncodingutf8是中文能正常存取的前提頁面亂碼時先查這一項useSSLfalse是關(guān)閉SSL握手加上它能省掉一大串證書告警日志。驅(qū)動類名com.mysql.cj.jdbc.Driver是MySQL 8之后的寫法如果項目用的驅(qū)動jar是5.x版本類名要改回com.mysql.jdbc.Driver不改就會ClassNotFoundException。連接池這個概念課設(shè)階段可以先不引入但DBUtil里把資源關(guān)閉寫成一個標(biāo)準(zhǔn)方法是個好習(xí)慣。很多課設(shè)代碼只關(guān)了Connection不關(guān)Statement和ResultSet跑幾次后MySQL報“Too many connections”就是連接泄漏。另外注意這套工具類里沒有讀取properties文件而是寫死了常量這是為了讓新手一眼看清參數(shù)正式項目里建議用Properties類加載配置文件避免改密碼還要重新編譯。4. 核心代碼實現(xiàn)登錄、購物車、下單三條鏈路怎么串起來數(shù)據(jù)庫沒問題后代碼跑不起來的原因就只剩下框架配置和邏輯鏈路。寵物商城最核心的鏈路是三段用戶登錄、加入購物車、提交訂單。這三段能把Servlet、DAO、Service、JSP所有層次串起來代碼讀完基本就能舉一反三覆蓋其余頁面。4.1 用戶登錄與Session管理從表單到Filter攔截器登錄功能的代碼結(jié)構(gòu)是最標(biāo)準(zhǔn)的JavaWeb請求響應(yīng)鏈路一條線走下來JSP表單提交用戶名密碼 → LoginServlet接收參數(shù) → UserDao查詢數(shù)據(jù)庫 → 比對密碼 → Session保存登錄態(tài) → 重定向到首頁??创a時先看LoginServlet這一段后面的業(yè)務(wù)基本都是它的復(fù)制粘貼變體。WebServlet(/login) public class LoginServlet extends HttpServlet { private final UserService userService new UserService(); Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(UTF-8); String username request.getParameter(username); String password request.getParameter(password); User user userService.login(username, password); if (user null) { request.setAttribute(error, 用戶名或密碼錯誤); request.getRequestDispatcher(/login.jsp).forward(request, response); return; } HttpSession session request.getSession(); session.setAttribute(user, user); response.sendRedirect(request.getContextPath() /index.jsp); } }登錄失敗用forward轉(zhuǎn)發(fā)回login.jsp登錄成功用sendRedirect重定向到首頁這個差別是JavaWeb課設(shè)很喜歡問的考點。forward是服務(wù)器內(nèi)部跳轉(zhuǎn)地址欄不變可以把request里的error屬性帶到頁面sendRedirect是瀏覽器重新發(fā)起請求地址欄變成index.jspSession里的內(nèi)容依然有效。如果用sendRedirect去傳error信息就必須用URL參數(shù)拼接或者Session中轉(zhuǎn)因為新請求不會帶著舊request。登錄成功后Session里存了user對象那怎么保證沒登錄的人不能直接訪問訂單頁面靠Filter攔截器。這是課設(shè)代碼里經(jīng)常留白的地方很多完整的課設(shè)包會寫一個LoginFilter但有些基礎(chǔ)的包就沒寫需要自己補上WebFilter(/*) public class LoginFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req (HttpServletRequest) request; HttpServletResponse resp (HttpServletResponse) response; String uri req.getRequestURI(); if (uri.endsWith(/login.jsp) || uri.endsWith(/login) || uri.contains(/static/) || uri.equals(req.getContextPath() /)) { chain.doFilter(request, response); return; } HttpSession session req.getSession(false); if (session ! null session.getAttribute(user) ! null) { chain.doFilter(request, response); } else { resp.sendRedirect(req.getContextPath() /login.jsp); } } }這段Filter里放行的URL要特別留意登錄頁、登錄接口、靜態(tài)資源CSS/JS/圖片必須放行否則會出現(xiàn)登錄頁樣式全丟、還沒輸入賬號就被攔截回登錄頁的死循環(huán)。req.getContextPath() /放行的是首頁因為很多項目把index.jsp當(dāng)作根路徑訪問。我第一次寫Filter時忘了放行靜態(tài)資源結(jié)果登錄頁的樣式表全部404看起來就像頁面崩了實際上是被攔截了。注意Filter里用getSession(false)而不是getSession()加false時如果用戶沒登錄過就不會自動創(chuàng)建一個Session避免每個游客都被塞一個無效會話。4.2 購物車與訂單事務(wù)邊界數(shù)據(jù)庫層的原子操作購物車有兩種實現(xiàn)思路一種是把購物車數(shù)據(jù)存在Session的Map里用戶加購時修改Session下單時一次性寫入數(shù)據(jù)庫另一種是每次加購都寫數(shù)據(jù)庫的t_cart表。課設(shè)包常見的是前一種實現(xiàn)簡單且不碰數(shù)據(jù)庫刷新頁面數(shù)據(jù)不丟因為Session還在但換瀏覽器、清緩存后購物車就空了。后一種穩(wěn)定但代碼量翻倍。先看下單部分因為這里藏著整個項目最值錢的一段事務(wù)代碼。提交訂單的動作本質(zhì)是往t_order插一條總訂單往t_order_item插N條明細把t_pet里對應(yīng)寵物的庫存減掉。這三個操作必須是一個整體任何一個失敗都不能留下半截數(shù)據(jù)——比如插了訂單主表但明細沒插進去或者庫存減了但訂單沒生成。public boolean createOrder(int userId, MapInteger, Integer cartMap) { Connection conn null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); BigDecimal totalAmount BigDecimal.ZERO; for (Integer petId : cartMap.keySet()) { Pet pet petDao.findById(conn, petId); totalAmount totalAmount.add(pet.getPrice().multiply(BigDecimal.valueOf(cartMap.get(petId)))); } String orderNo PO System.currentTimeMillis(); int orderId orderDao.insertOrder(conn, userId, orderNo, totalAmount); for (Integer petId : cartMap.keySet()) { int quantity cartMap.get(petId); Pet pet petDao.findById(conn, petId); orderDao.insertOrderItem(conn, orderId, petId, pet.getPrice(), quantity); petDao.updateStock(conn, petId, pet.getStock() - quantity); } conn.commit(); return true; } catch (Exception e) { e.printStackTrace(); try { if (conn ! null) { conn.rollback(); } } catch (SQLException ex) { ex.printStackTrace(); } return false; } finally { try { if (conn ! null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }這段代碼的關(guān)鍵是conn.setAutoCommit(false)必須寫在第一條關(guān)掉自動提交后后面所有SQL都在同一個事務(wù)里執(zhí)行遇到異常執(zhí)行conn.rollback()回滾到事務(wù)開始前。注意所有的DAO方法都接收conn參數(shù)而不是自己單獨從DBUtil拿連接這樣才能保證大家用的是同一個Connection。很多課設(shè)包沒傳這個參數(shù)每個DAO自己調(diào)一次DBUtil.getConnection()結(jié)果就是事務(wù)完全失效主表插進去了明細出異常庫存少了一半還查不出原因。事務(wù)之外還有一個必須看的邏輯下單前查庫存。上面代碼里的findById拿到當(dāng)前庫存再在updateStock里減掉這個過程在并發(fā)場景下會出現(xiàn)超賣——兩個人同時買最后一件商品兩個線程都查到庫存為1各自減1后庫存變成-1。課設(shè)答辯時這個問題基本不會被追問但代碼review時能主動提一句“這里應(yīng)該用UPDATE t_pet SET stock stock - ? WHERE id ? AND stock ?”面試官會對你另眼相看。4.3 商品列表與分頁LIMIT參數(shù)與翻頁鏈接的實現(xiàn)首頁展示寵物列表是商城門面課設(shè)項目一般做成分頁列表每頁8條或12條。分頁的本質(zhì)是兩條SQL一條查總數(shù)一條按LIMIT取當(dāng)前頁數(shù)據(jù)。public class PetDao { public ListPet findByPage(int offset, int size) { String sql SELECT * FROM t_pet ORDER BY id DESC LIMIT ?, ?; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, offset); ps.setInt(2, size); try (ResultSet rs ps.executeQuery()) { ListPet list new ArrayList(); while (rs.next()) { Pet pet new Pet(); pet.setId(rs.getInt(id)); pet.setName(rs.getString(name)); pet.setPrice(rs.getBigDecimal(price)); pet.setStock(rs.getInt(stock)); pet.setImage(rs.getString(image)); list.add(pet); } return list; } } catch (SQLException e) { throw new RuntimeException(分頁查詢失敗, e); } } public int count() { String sql SELECT COUNT(*) FROM t_pet; try (Connection conn DBUtil.getConnection(); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(sql)) { rs.next(); return rs.getInt(1); } catch (SQLException e) { throw new RuntimeException(查詢總數(shù)失敗, e); } } }LIMIT后的第一個參數(shù)是偏移量含義是跳過多少條記錄。比如每頁8條第2頁的偏移量就是(2-1)88從第9條開始取。這個公式要在Servlet里算好再傳進DAO不要在SQL里用表達式PreparedStatement的參數(shù)綁定更安全。COUNT()那條SQL用的Statement而不是PreparedStatement因為沒有參數(shù)直接執(zhí)行即可但注意rs.next()后要取的是第1列索引從1開始。JSP端的翻頁鏈接也很容易一起實現(xiàn)核心是拼接當(dāng)前路徑帶上page參數(shù)。常見做法是在Servlet里用request.setAttribute(currentPage, page)和request.setAttribute(totalPage, totalPage)傳給JSPJSP里用${currentPage gt 1}判斷是否需要顯示“上一頁”按鈕用${currentPage lt totalPage}判斷“下一頁”。整個鏈路是點翻頁鏈接 → 瀏覽器跳轉(zhuǎn)到/PetListServlet?page2 → Servlet重新查數(shù)據(jù)庫 → 轉(zhuǎn)發(fā)到pet_list.jsp再渲染這是典型的MVC循環(huán)。5. 部署運行與常見問題排查5個讓課設(shè)翻車的真實現(xiàn)場代碼看完、數(shù)據(jù)庫導(dǎo)完最后一步是把項目跑起來。JavaWeb項目在IDEA里的運行配置是“IDEA運行JavaWeb項目配置”這個操作的核心場景創(chuàng)建一個Tomcat運行配置Deployment里添加war包或war exploded指定Application context然后Run。但這個環(huán)節(jié)有一批特別常見的報錯幾乎每一個跑過課設(shè)包的人都至少撞過其中兩三個。5.1 環(huán)境與數(shù)據(jù)庫連接的三類高頻報錯現(xiàn)象一Tomcat能啟動但訪問 http://localhost:8080 顯示404或者能訪問Tomcat默認首頁但訪問不到寵物商城頁面。原因IDEA里Deployment的Application context配置成了/項目部署名和訪問URL對不上或者根本沒添加war包到Tomcat。解決打開Run → Edit Configurations → Deployment選項卡確認有寵物商城項目的ArtifactApplication context填/pet_shop然后訪問 http://localhost:8080/pet_shop/ 看是否出首頁。改完后一定要重新構(gòu)建再啟動熱部署有時候不刷新Artifact。現(xiàn)象二控制臺報“Access denied for user rootlocalhost (using password: YES)”。原因jdbc.properties里的密碼和MySQL實際密碼不一致或者MySQL 8默認用了caching_sha2_password認證舊版JDBC驅(qū)動不認識這個認證插件。解決先確認密碼拼寫沒抄錯再去查MySQL版本如果是MySQL 8要么升級mysql-connector-java到8.x版本要么在MySQL里執(zhí)行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密碼;刷新權(quán)限后重啟Tomcat?,F(xiàn)象三報“Communications link failure”或“Connection refused”。原因MySQL服務(wù)根本沒啟動或者MySQL啟動后端口不是3306或者URL里把localhost寫成了別的地址。解決Windows下在服務(wù)管理器里確認MySQL80服務(wù)狀態(tài)是“正在運行”Linux下用systemctl status mysql確認然后在命令行執(zhí)行mysql -u root -p能進MySQL說明服務(wù)沒問題最后確認URL里不是寫成jdbc:mysql://localhost:3306這種被復(fù)制粘貼時丟了冒號或冒號變成全角字符的情況。全角冒號的報錯特別隱蔽肉眼幾乎看不出來。5.2 編碼、保留字與路徑問題隱藏的翻車現(xiàn)場現(xiàn)象四頁面顯示“????”或中文亂碼數(shù)據(jù)庫里中文正常但頁面上全是問號。原因JSP頁面沒指定UTF-8、Servlet接收參數(shù)時沒調(diào)setCharacterEncoding、MySQL連接URL缺少characterEncodingutf8三個環(huán)節(jié)只要有一個沒統(tǒng)一就會亂碼。解決JSP文件第一行保證pageEncodingUTF-8寫一個EncodingFilter在doFilter第一行執(zhí)行request.setCharacterEncoding(UTF-8)和response.setCharacterEncoding(UTF-8)MySQL建庫時用utf8mb4而不是latin1。三處都改完后重啟Tomcat再測。還有一個小坑如果用的是Tomcat 8.5以下版本POST參數(shù)默認按ISO-8859-1解碼不寫過濾器必亂碼?,F(xiàn)象五報“SQLSyntaxErrorException: Table pet_shop.order doesnt exist”或“You have an error in your SQL syntax”。原因數(shù)據(jù)庫腳本里把訂單表直接命名為order而ORDER是MySQL的保留字執(zhí)行SELECT、INSERT的SQL時必須用反引號轉(zhuǎn)義。解決最靠譜的是把表名改成t_order同時改代碼里所有SQL語句如果不想動腳本就要把SQL里所有涉及order表的地方寫成order注意是反引號不是單引號。同理字段名避免用name、status、desc這種常見保留字能省一堆無意中踩中的語法錯誤。另外還有一個不是報錯但很容易被忽略的路徑問題JSP里引用的CSS/JS路徑。如果你看到的頁面沒有樣式、圖片全部裂開先看瀏覽器F12網(wǎng)絡(luò)面板里靜態(tài)資源是否返回404再看頁面里的路徑是不是以/static/css/style.css開頭還是相對路徑style.css。Servlet轉(zhuǎn)發(fā)到WEB-INF下的JSP時相對路徑會相對于Servlet的映射路徑解析所以靜態(tài)資源路徑最好全部用${pageContext.request.contextPath}拼出絕對路徑這個改法一勞永逸。6. 從課設(shè)到作品上線前值得補的四個增強點跑通只是及格線想讓這個網(wǎng)上寵物銷售商城在答辯或簡歷上多幾分說服力值得在原有代碼上補四個增強點。第一個是密碼加密。課設(shè)包里基本全是明文存儲密碼數(shù)據(jù)庫一打開就能看到所有賬號的密碼答辯時被問“密碼安全怎么保證”容易接不上話??梢韵劝裻_user表里password字段的長度改成64然后在注冊和登錄時用MessageDigest做SHA-256哈?;蛘咭隿ommons-codec做MD5加鹽。改造量不大但能直接展示你對安全的基本認知。第二個是連接池。DBUtil里每次getConnection都是DriverManager現(xiàn)連現(xiàn)斷換成Druid連接池只需要改DBUtil的靜態(tài)初始化塊配置一個DruidDataSource取連接換成dataSource.getConnection()連接池的復(fù)用機制就生效了。第三個是日志?,F(xiàn)在代碼里全是System.out.println上線后根本沒法排查問題加一個Log4j2依賴把關(guān)鍵操作——登錄成功、下單成功、庫存不足——用logger.info記錄異常用logger.error記錄這是從“能跑”到“能用”最關(guān)鍵的一步。第四個是業(yè)務(wù)校驗。比如注冊時的用戶名重復(fù)判斷、下單前的庫存預(yù)檢、購物車數(shù)量不能為負數(shù)這些邊界校驗不一定在課設(shè)包里。改完這四點后建議按一套冒煙測試清單過一遍注冊新用戶 → 登錄 → 修改個人信息 → 瀏覽商品列表并翻頁 → 把一件商品加進購物車 → 修改購物車數(shù)量 → 提交訂單 → 在訂單列表看到剛下的單 → 管理員登錄后臺看到訂單和庫存變化。每一步通過的標(biāo)準(zhǔn)不是頁面沒報錯而是數(shù)據(jù)庫里對應(yīng)的表產(chǎn)生了正確的數(shù)據(jù)變更。這套流程走完這個JavaWeb課設(shè)才算真正歸你所有。我早期跑一個ServletJSP課設(shè)的時候在Tomcat配置上耗了兩個晚上最后發(fā)現(xiàn)只是Deployment里沒添加Artifact。后來養(yǎng)成了一個習(xí)慣拿到任何源碼包先看README、再導(dǎo)SQL、最后拖進IDEA跑順序不亂問題就少一大半。希望這個順序?qū)δ阋灿杏?。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲无吗在线视频| 国产欧洲精品亚洲午夜拍精品| 久久区| 久久精品三级影视| 国产成人无码a| 亚洲97超碰| 天操老女人| 伊人97超碰| 欧美人人AAA| 丰满人妻区一区二区三| 大色网久久| 97视频620| av九九| 多毛小伙内射老太婆 | 日韩免费a级毛片无码a∨| 嗯嗯啊啊用力视频免费| 好吊色在线观看| 亚洲精品官网在线观看| 成人乱码一区二区三少妇| 亚洲一区日韩精品中文字幕| 中文字幕丰满子伦无码专区在线视频最新| 91色射| 欧美 青青草| 一区久久久二区| 思思热在线视频精品| 精品毛片久久久精品毛片| 精品国产99999| 最新中文字幕在线亚洲| 久久亚洲日韩国产欧| 久久动漫精品视频这里只有精品| 歐美性天天| 国产精品嫩草影院午夜两性| 麻豆 亚洲 97| 国产久久久久久久久一区二区| 97国产精品久久久久 | 亚洲中文电影| 欧美性爱1080p| 99精品人人爽| www.人人cao| 成人夜夜| 亚欧美天堂在线| 蜜乳中文字幕a在线| 成人五月天色网| 可以免费观看的日韩av毛片| 久久精品黄色| 内射卯月麻衣| 久久久久久人妻| 韩国一区二区精品亚洲| 亚川综合视频| 精品国产乱码久久久久久蜜臀| 91新在线欧美| 97人人射| 国产亚洲精品美女久久久| 色拍偷亚洲| 综合色99| www色色com| 久久久久少妇| 丝袜色综合| 日韩一区二区精品视频| 日本精品高清一二区一本到| 亚洲 中文字幕 精品| 欧美人妻另类在线| 国产SV一线| 亚洲黄色网址视频| 26UUU欧美激情一区二区| 中文字幕欧洲有码| 蜜桃视频一区二区三区在线观看| 99热亚洲| 免费看A片毛毛片在线播| 成人线上超碰| 亚洲中文字幕av | 亚洲男人的天堂亚洲| 激情小说日韩无码| 日本大香蕉综合网| 日本精品一区二区三| 九九热精品| 欧美不卡二区| 男女猛烈无遮掩视频免费软件| 久久中文字幕人妻熟av女蜜柚| 国产精品青青草| 家庭乱伦网站国产| 久草国产在线视频| 激情小说日韩无码| 又大又黄国产| 最新欧洲欧美日本激情网站| 亚洲中文字幕精品久久久久久直播| 国产精品 视频| 操久久久久| 欧美亚洲综合999| 日本999精品视频| 亚洲天堂区| 久久精视频美日韩在线视频| 99国产在线 精品 视频| 国内精品久久人妻性色av| 九九九九九九视频免费| 天天射夜夜骑| 日产操逼| 蜜乳中文字幕a在线| 不卡日本一区二区| 狠狠爱大香蕉| 国产熟妇 码视频户外直播| 久久9精品| 蜜臀99久久国产| 骚妻少妇精品性色无码四色A V| 91色堂| 人人爽夜夜操| 中文字幕片| 少妇与黑人高潮在线| 啊嗯好大视频在线观看| 91麻豆一二三区| 大肉棒导航| 偷拍综合亚洲| 亚洲九九视频在线观看| 亚洲中文字母在线播放| 婷婷丁香成人| 99久热| 成年女人18级毛片毛片免费观看| 五月婷婷六月丁香| 啪啪视频mP4| 国产亚洲 中文欧美久久| 国产欧美精品日韩区二区麻豆天美| 亚洲综合激情五月久久| 国产精品小视频一区二区三区| 九色 人妻 大香蕉| 亚洲精品欧洲精品| 精品丰满熟妇人妻一区| 上床啊啊啊| 国产一区二区在线播放| 天天草天天日| 乱欲一区二区| 麻豆av一区二区三区| 福利风月五月天影院| 日韩天堂av电影在线观看| 亚洲AV资源| 91 丝袜在线观看| 欧美92| 国产免费黄色一级大片| 在线观看精品国产免费| 精品久久久九九九孕妇| 日日日大屁股骚女人精品| 久久久天美| 亚洲精品九九九| AA级电影三区| 91亚洲人电影| 粉嫩av在线一区二区| 国产精品无码论坛| 亚洲性综合9| 久久一本大香蕉| 丝袜 中出 制服 人妻 美腿 中文字幕| 少妇久久久久久久久| 成人性爱AV在线免费观看| 国产第25页在线观看| 97婷婷色| 亚洲精品一区二区免费在线观看| 超碰97 线线 在现| 黄片色区软件| 欧美日本久久精品一区| 精品国产乱码久久久久久免费| 东京热双插| 园内精品自拍视频在线播放| 麻豆60秒| 玖玖无码超碰| 亚洲最新av无码成人精品区| 97视频观看| 激情情色五月天| 亚洲码在线中文在线观看| a天堂视频| 婷婷三区| 99re这里只有精品9| 老熟女乱子伦中文字幕一区二区| 嗯啊啊啊轻点视频| 91n处女在线观看| 一个色导综合| 神马午夜久久久| 国产400孕妇孕交群| 国产精品久久伊人| 欧美日韩人妻婷婷一区| 97高清啪啪| 欧美色图99| 91深夜夜| 91殴美大片| 午夜精品久久久久久久久久久久久| 欧美日韩色综合网| 中出789在线视频| 少妇久久久久| 婷婷综合| 嗯嗯嗯啊啊在线观看| 国产亚洲女v在线观看| 久久黄黄| 亚洲在线a| 丰满人妻一区二区三区大胸懂色| 91国产在线精品| 白丝被操91| 懂色AV一区二区三区| 热G综合热G中文| 亚洲欧综合另类无码一区| 国产精品久久9| 免费a v| 伊人大香蕉在线| 欧美日韩亚洲天堂| 青青草视频爽一爽| 激情五月天中文字幕色| 九久9热| 超碰在线欧美性爱激情| 久久久111| 性暴力欧美猛交在线直播| 97人人爱人人做人人乐| 婷婷在线视频在线观看| 色97欧美| 欧美制服网站美腿丝袜| 国内毛片欧美香蕉精品| www.91人妻.com| 蜜桃精品一区二区三区ww| 精品视频在线观看| 果冻传媒一区二区三区| 一起草精品人妻| 少妇高潮一区二区三区在线| 99热在线观看| 国产综合永久精品日韩鬼片| 18禁久久| 国产精品久久发布| 岛国AB视频| 日本二区不卡| 嗯阿好爽好紧| 一区操逼日比视频| 大香蕉线| 久久综合中文国产| 91小视频| 张柏芝国产一区在线观看| 九九热免费在线国产视频伊人五月| 99re热有精品视频国产| 中文日韩欧美熟| 久久久18| 操人人| 97在线观看免费| 日韩另类色图| 95自拍视频在线观看| 中文在线视频| 嗯嗯啊在线视频| 99久久精品无码一区二区毛片免费 | 岛国色情视频在线观看| 精品传媒在线一区| 日韩无码久久熟女一级片| 性爱1区| 91国模| 亚洲成aⅴ人片不卡无码| 青青草久草AV| 亚洲欧美天堂在线| 无码色| 国产乱色国产精品免费视| 夫妻AV网站| 青青草日逼视频| 国产综合永久精品日韩鬼片| 婷婷久久五月综合激情| 97中文字幕一区| 91无摭挡| aaa亚无码专区| 国产成人免费观看在线视频| 青青网三级视频| 美女丝袜激情小说| 日本精品一级二级三级| 精品一区二区亚洲国产| 97色色,97综合| 天天天肏屄肏屄肏屄欧美欧美| 俺去啦俺来也久久综合| 狠狠色色| 久久久999| 国产美女mm131爽爽爽爽| 青青草亚洲一区| 有码专区最新中文字幕有码| 日韩激情啪啪啪| 99青草| 欧美日韩国产精品久久色婷婷| 色欲Av人妻精品一区二| 美女啊啊啊啊啊啊啊| 激情文学亚洲| 亚欧成人中文字幕一区| 极品久久久久久久久久久久久久| 国产强奸AV在线| 天天日少妇逼AV| 日韩中文字幕精品一二三事国产精品| 日本成人A片网站| 精品久久久av| 97超碰站| 99久久无色码| 一起草日韩| 91国产美女丝袜足交精品视频| 啊啊嗯嗯好爽| 欧美男女午夜啪啪| 日本一区二区中文字幕久久| 四虎永久在线精品免费网址| 中文字幕熟女人妻丝袜| 日欧美色| 100啪啪视频大全| 久久一二区四| 飘花国产午夜精品不卡| 日本久久999| 日韩 欧美 另类 人妻| 我中文字幕6区| 亚洲成人福利电影免费| 久久精品无码不卡| 国产蜜臀精品一区免费尤物| 欧美日韩大黄片| 内射黑人| 太久视频| 超碰99在线| 欧美淫穴| 日韩激情小说一区二区| 欧美图片校园春色| 韩国女主播青草在线| 狠狠色伊人亚洲综合网站色| 91天天c| 亚洲成a人片在线观看中文!!!| 97视频在线视频| 97人人射| 欧美精品三级黄片| 亚洲高清男人天堂| 五月激情小说| 欧美亚洲第一页| 日日骚av| 久操 高清| 草草网站影院白丝内射| 九九无码| 中文字幕精品三级久久久| 丁香五月大香蕉| 亚洲 欧美 日韩 国产一区二区| 加勒比综合九九99视频在线播放| 人成午夜免费大片| 国产精品美女久久久久久网站| 最新精品久久蜜桃 | 长久操视频| 99热思思| 综合伊人网12色| 成人毛片免费| 日本国产欧美高清在线| 小草精彩毛片| 天天久久久久久| 日本一区二区亚洲综合| 亚洲国产欧美中文永久| 91色综合激情| 亚洲欧美97| 韩三级a视频在线观看| 2020国产精品| 1二区9| 天天欲望网| 爽极品影院| 国产高清1234区| 亚洲情色综合网| 人人摸人人入| 婷婷五月天福利| 91超碰碰在线| 男女日B国产| av国产无码| 97色涩| 骚女天天综合网| 青青操轻轻| 欧美久久毛片基地| 综合欧美亚洲| 国产动漫操逼视频| 精品综合久久久久久97| 日本一区视频在线观看| 国产日本熟女顶级一区二区三区视频| 国产日韩中文字幕欧美| 在线欧美69V免费观看视频| 少妇二级| 偷拍 亚洲 欧美| 国产欧美亚洲精品a第2页| 天天舔九色婷婷| 国产捆绑一区| 国产在线不卡导航| 久久久久久久人妻| 97操综合| 毛片电影一区二区三区| 日本黄色天堂| 国产福利av精彩对白| 欧美在线啊啊啊 | 国产精品久久久久久久久久久久久久久久| 日本国产欧美一区三区二区| 国产精品老熟女一区二区| 老司机香蕉久久久久| 日本日皮视频逼| 啊啊啊要高潮了| 8x福利精品第一福利视频导航| 色精品极品| 色欲久久99国产精品久久久久久| 成片免费观看视频大全| 人人操人人摸超碰| 中文字幕91综合| 超碰97色| 国产精品久久久蜜臀| 午夜啪| WWW4虎| 久久一区二区三区四区五区| 大香蕉综合| 国产黄色剧情影片麻豆免费播放| 欧美性,色九九| A级国产欧美激情在线| 精爱久久| 黄片com.| 亚洲一区中文字幕| 校园春色之综合网| 欧美福利视频啊啊啊啊| 嗯嗯啊啊视频一区二区三区| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 日本操逼无码| www.男人天堂| 婷婷月色| 亚洲精品xxx| 亚洲成人av电影在线| 中文字幕视频免费| 色五月激情网| 国产精品不卡一区二区电影| 老司机久久| 欧美一级黄片免费播放| 欧美综合另类| 大香蕉啪啪啪啪在线| 国产高清MV操逼视频| 精品人妻高清麻豆av| 淮穴色AV| 亚洲成a人片在线观看中文!!!| 夜夜嗨视频| 国产黄片精品在线| 午夜精品久久久久久久男人的天堂 | 香蕉久久国产AV一区二区| 97免费在线视频在线观看| 乱欲性色| 人人操人人93| 日日夜夜狠狠| 美女91色黄18| 亚州熟女乱伦| 亚洲精品亚洲人成人网| 国产熟妇一区二区| 97超碰色色| 少妇干B| 亚洲欧美97√| 91殴美| 乱伦图一区| 欧美午夜精品久久久久久3D| 新视频sss国产| 亚洲天天综合| 超碰99在线观看| 成人一区二区三区四区| 91狠狠综合| 99操碰| 久久爱超碰网| 国内毛片无遮挡国产| 婷婷色综合| 97chaopenrihan| 18禁免费视频| 久久国99999| 久久精品国产亚洲5555| 日日夜夜狠狠| 天堂亚洲精品| 午夜免费福利视频一区| Aa东京男人的天堂| 日韩人妻制服丝袜av| 伊人大香蕉在线| 九九久久玖玖| 亚洲AV小说| 国产精品扒开腿做爽爽爽视频| 婬女免费一二三区A片| 天天日美女的B| 中文精品一区二去| 加勒比伊人综合| 日韩免费在线视频观看| 99在线观看无大码| 蜜乳Av成人片网站| 九九九九九九九九九五码| 黑人精品一区二区在线播放| 国产超碰在线一区| 日韩精品人妻一| 欧美999999| 中国zzijzzijzzwww精品| 夜夜福利| 天天干夜夜一操| 91日日夜夜| 久久色情| 秋霞 色色| 久久曰曰| 国产精品成人无码av无码免费| 亚洲drav色图| 国产亚洲在线观看| 韩国三级色呦呦| 91美女视屏| 在线无码视频| 久久久久久99999国产精品| 岛国成人av在线播放网址| 亚洲天天天| 亚洲欧美激情另类色图| 欧美性爱日韩高清| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 欧美综合97www| 欧美五十路熟| 国产伊人精品在线| 嗯阿好爽好紧| 97人人操人人摸人人爱| 日韩九九九| 久久欧洲| 日本 欧美 国产一区| 九七色图| 久久一本大香蕉| 99ri视频| 日韩三A大片在线观看| 久久久99999久网站| 亚洲操操| 亚州免费啪啪视频| 亚洲熟女综合一区二区| 96国产污污污丝袜| 大香蕉伊人色偷偷在线| 视频在线观看免费一区二区三区| 欧美春色| 99国内熟女露脸视频| 99re视频在线观看这里只有精品| 一个色导综合| 国产久久久久久| 涩涩久久精品| 国产蜜臀精品一区免费尤物| 在线观看日韩av不卡| 国产欧美在线观看免费观看| 久久超碰天天| 北京美女一区二区| 五月天春色激情网| 五月天婷婷小说| 2019久久久久久久久福利| 9久久久久| 中文在线视频| 一区二区国产视频在线观看| 久久久久久久 九九九九九九九| 欧美日韩一区二区三区四区蜜桃| 午夜成人爽爽爽爽A片李冰冰| 久久久9 9 9精品| 综合网久久| 亚欧精品久久久久久久久久久| 欧美久久人人网| 亚洲 欧美 日韩 国产一区二区 | 热99这里只有精品| 2019天天干天天操| 国产精品ⅴ无码大片在线看.| 一本色道综合久久欧美日韩精品| 天天综合网亚洲综合网| 东北女人操比视频| 91五月天| 在线亚洲丝袜视频网站| 亚洲淫乱骚妇AV| 91美腿丝袜在线观看| 伊人五月天| 日韩999| 精品国产精品一区二区| 日韩av一级黄片| 亚洲欧美中文一区二区三| 看免费的黄片| 一级岛国大片| 6080YYY午夜理论片在线观看| 久久性爱视频免费看| 视频不卡中文字幕| 91老熟女视频| 日韩欧美亚欧在线视频| 97久久超碰| 亚洲国产精品无码AV久久| 91五十路| 国产91亚洲精品一区二区三区| 91色综合| 亚洲精品乱码线路中文字幕| 日本精品网站在线中文| 国产三级多多影院2022国产AA一级毛片无码 | 色蜜AV| 青青草原人妻| 亚洲熟妇熟在线电影视频| 蜜臀AV成人精品蜜臀AV久久| 久操操| 动漫av中文| 亚洲诱惑天堂| 亚州男人天堂| 国产精品久久久久久久无码AV| 国产成久久综合片| 日韩亚洲中文有码视频| www色日本| 综合五月天| 夜夜爽妓女| 蜜桃色院一区久久 | 你懂的在线观看区国产| 国产精品极品美女视频| a在线视频免费观看| 五月天色综合| 爱欲AV| 少妇蹲下买菜露大唇0| 无马一区二区| 天天爽夜夜爽夜夜爽精| 久久香蕉综合一本到3atv| 超碰在线人妻| 啊啊啊啊在线观看网址| 亚州五月| 欧美自拍偷拍综合图片| 国产一级αv免费看片| 亚洲不卡AV在线| 欧美乱妇狂野欧美在线视频| 大香蕉草草| 在线有码中文字幕| 久99| 九九九精品一区二区无码| 亚洲深夜福利| 黄色一区二区秘书性感| 屌逼麻豆| 亚洲清纯唯美| 欧美一级黄色免费专区| 无码伊人久久大杳蕉中文无码| 日本天天人人狠狠在线日美女 | 久久久免费一级黄片| 91天天综合日韩欧美| 国产精品探花色| 色色色综合网| 玖玖超碰熟| 国产亚洲精品A在线观看下载| 久久久97| 国产诱惑| 日韩av不卡在线看| 99久久无色码| 久夜视频| 中文字幕jul-617人妻熟女| 亚洲第一页欧美| 欧美乱欲| 久久婷婷亚洲| 亚洲极品| 国产一区二区精品久久99| 天天综合网国产| 久久久久久久久久久久色网| 日韩不卡a级视频专区| 老师充足的奶水小说| 丰满人妻一区二区三区蜜桃视频| 黄色片大香蕉| 98超碰日本| 国产一级内射无挡观看| 中文字幕55555| 亚洲国产综合视频| 69人妻人人揉人人躁人人精品| 99热这里只有精品1| 日韩欧美成人性爱在线| 91九九九小逼| 亚洲性爱电影| 久9久9精品| 久久久一区二区三区三州| 欧美日日夜夜| 懂色中文一区二区三区| 久久久婷| 天天色,天天干,天天干| 性爱AV天堂| 欧美另类精品xxxx| 91 综合 色| av午夜影院在线播放| 97精品中文字幕| 无码国产精品久久久久| 精品人妻视频一区二区在线播放 | 美女被艹尤物视频| 激情文学亚洲| 婷婷激情啪啪| 91精片| 欧美黄色图片| 久久黄色视频一区二区三区| 久久超碰大香蕉| 激情无码日韩| 欧美天天影院| 久操综合在线| 青娱乐二区免费| 亚洲天堂人人妻| www.久久最新地址| 啊啊啊 在线| 日本一级一级一级一级| 97超碰久久| 一区二区三区国产在线播放| 综合久欧洲| 盗摄女人妻在线| 9久9久| 婷婷情色综合网| 最新国内自拍av免费| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 偷拍亚洲视频一区二区三区四区| 99热色精品| 成人免费视瓶| 亚洲素人综合| 久久久99久9| 日韩亚洲中文字幕在线| 91天堂| 91久久堂| 久热免费视频| 亚洲最大成人a毛毛片| 欧美综合色图片| 欧美少妇第一页| 国模少妇一区二区三区| 91天天看| 熟女一区二区三区四区| 亚洲精品久| 成人乱码一区二区三少妇| 成人怡红院| 亚洲精品黑丝| 国产性刺激| 久久婷婷色| 日韩黄片视频试看| 天天做天天爱| 国产精品夜夜夜| 91色图片| 综合熟女| 全球成人中文在线| www.亚洲成人一区| 欧美色乱| 97国产精品在线观看| 综合网久久| 精品超碰中文在线| 国内精品伊人久久久久影院会| www.色吧5.com| 黄色工厂这里只有精品| 天美传媒av在线| 成年男人的天堂| 天天色综合图片| 搡老熟女老女人老熟妇免费视频| 影音先锋日本乱伦| 亚 欧 美 综合| 粉嫩在线一区二区懂色| 日韩性爱免费观看视频| 亚洲色综合| 78操B| 久久r精品| 操曰本熟女| 久久久久久波多野吉衣高潮| 最新一二三区视频| 日韩另类色图| 午夜精品久久久久久久男人的天堂| 福利伊人玖玖国产| 国产性久久久| 91在线超高颜值国产| 草草电影院| 密乳视频在线| 国产成年女黄特黄| 亚洲激情视频| 久久人妻| 激情婷婷综合久久| 高清有码一区二区| 国产精品黑人一区二区三区| 在线亚洲欧美| 久久久性| 国产精品露脸在线观看| 国内毛片无遮挡国产| 性videos欧美熟妇hdx| 亚洲天堂在线怕怕视频| 欧美爱三级日韩久久| 欧美特大AA级黄片| 高潮的A片激情扒开一区| 中文字幕五月婷婷免费| 亚洲国产婷婷在线播放| 国产精品一级片在线看| 欧美日韩中文亚洲v在线综合| 国产精品自拍欧美在线| 久久精品性| 91狠狠综合久久久久久| 偷拍伦理视频| 5252色欧美在线| 亚洲男人天堂2016| 欧美一品道| 麻豆天美在线| 91综合在线| 五码视频在线观看| 美女一区二区国产精品| 欧美日韩99| 日韩99神马视频播放片在线播放| 日本不卡码黄色| 欧美综合网1| 男人天堂毛片| 日产欧美电影一区二区三区| 欧美性爱日韩性爱| 五月丁香综合啪啪| 亭亭丁香激情| 久久宗合亚洲| 熟女熟妇一区二区三四区| 亚洲色人| xxx0国产在线播放| 五月香婷婷| 亚洲欧美综合| 一起草日韩| 920日本午夜免费| 粉嫩少妇自慰在线| 97亚洲自在精品在线观看| 久久狠狠色噜噜狠狠狠狠97| 美女午夜福利免费视频| 中文字幕一区av| www.AV有限公司一区| 麻豆一区二区三区在线看| 天堂v无码免费视频| 日本性爱少妇| 中文字幕制服欧美久久一区| 人妻精品一区一区三区蜜桃91| 亚洲色图欧美激情| 熟女字幕| 少妇一区二区三区在线观看| 91黄射| 熟妇xxxxx性春色| 五月婷婷五月天| 欧美日韩另类字幕中文| 色吧 综合| 婷婷五月天av| 狠狠躁天天躁日日躁97| 国产福利一区二| 丁香九月激情| 日日干夜夜欢| 无码区蜜乳| 情色日播放AV| 亚洲天天自拍| 最新中文字幕在线亚洲| 中文字幕日韩精品一区二区三区| www.91视频网| 亚洲强奸乱伦影视网| 日韩99神马视频播放| 一区二区不卡视| 韩国一级做A片免费的| 久久一二三四不卡 | 欧美成人性活片| 色999五月色| 婷婷精品国产欧美精品亚洲人人爽| 欧美巨大性舒爽顶到了| 亚洲天堂综合AV| 97精品一区二区视频在线观看| 欧美综合娱乐久久| 美女91在线观看| 18禁止看精品中文字幕| 性感女人网页在线观看视频| 人妻第一页| 色丁香久久| 一本一道久久综合久久| 欧美日韩国产色图在线| 亚州九九九精品视频| 日韩亚洲中文字幕在线| 九九九九九九九九九九精品视频| a片久久久久久久久久久久| 久操高青| 人人操欧美风骚| 91在线视频免费中出| 国产精品视屏| 亚洲欧美九九| 另类亚洲一区二区三区| 久久超碰亚洲人| A级片日韩欧美国产欧美视频精选观看 | 久久久久久久久久精| 波多野结衣一级视频| baiduhicn.com。| 俄罗斯一区二区视频在线观看| 91久久18禁| 亚洲欧美自拍偷拍| julia ann久久| 中文字幕性感少妇av| 欧成人在线| 五月丁香六月激情| 翔田千里AV无码秘 三区| 国产视频一区二区在线| 人人看黄色视频| 好舒服视频| 欧美亚洲日本视频久久久| 日韩电影中文字幕| 久久超碰爱| 可以免费看黄片的视频| 熟妇国产免费一区| 91人妻Pr| 色欧美亚洲| 国产丰满少妇久久久精品影院| 亚洲91在线播放影院| 亚洲美腿丝袜香蕉影视欧美成人| 99视频精品| a片久久久久久久久久久久 | 大茄子熟女AV导航| 99久久无色码| 国产精品女久久久久av爽| 性感美女91影视| 少妇免费视频| 国产午夜无码片在线观看影视| 抽插亚洲无码| 亚洲男人的天堂AV| 综合久久中文字幕综合日韩精品| 大色综合| 黄色一区三区| 91青视频| 精品区国产区一区二区三区| 超碰91在线| 免费亚洲国产精品久久一区| 日日干夜夜干| 亚洲天堂中文字| 久久加勒比| 蜜臀无码一区二区| 清纯唯美激情四射| 十八禁视频网站| 日本色色视频网站| 先锋女优在线观看视频| 丝袜美女诱惑 91 视频| 欧美精品另类人妖xxxx| 五月天玖玖资源站| 98人妻精品一区二区色欲| 91在线国产后入风骚翘臀美女素人| 亚洲天堂色图| 亚洲天堂 视频你懂的| 国产又黄又爽又刺激久久久久久| 免费毛片在线播放| 午夜男女爽爽爽影院视频| 欧美色吧综合| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 日韩本不卡视频在线观看 | 国产免费一区| 爱干爱射网啊啊啊| 99久久婷婷国产综合| 日本黄色大片一级视频免费麻豆| 蜜臀久久99精品久久久久久-DVD| 久草草一二三四区久久| 日本天堂网| 中文字幕日韩综合| 亚洲欧美经典一区二区| 亚欧日韩成人| 久热在线精品免费观看| 放黄片放3级黄片没穿衣服| 国产尤物在线三区| 国偷自 一区| 人人爽人人精品乱人伦AV| 精品久久久久瑟瑟| 欧美图片偷拍| 日韩啪啪啪啪啪| 亚洲色五月| 亚洲成人免费在线| 一级免费啪啪片| 精品区国产区一区二区三区| www.91理论| 大香蕉久| 欧美日韩国产高清在线一二三区 | 99热这里是精品| 破苞ⅩXXX性无码动漫无码| 欧美日韩在线国产在线| 淫荡少妇免费| 无码黑人精品一区二区三区三| www.久久制服糖| 国产多人在线观看视频| 亚洲av无码国产精品字幕| 国产无码久久高清| 亚洲av无码国产精品字幕| 熟女乱3伦999| 91香蕉视频在线观看免费| 日韩免费高清大片在线| 亚洲av国产av综合av卡| 人妻一二三区| 无码精品一区二区三区潘金莲| 亚洲国产奇米影视久久| 艹精品| 亚洲砖码砖专无区2023| 在线观看国产黄色| 婷婷五月天色色| www.婷婷| 人人爱夜夜爱| 亚洲天堂情色| 91AV天美在线视频| 1204人成网站色www| 熟女少妇视频| 夜夜骑夜夜操| 久久精品欧美一区二区三区不卡| 无套内射人妻在线播放| 3p国产色噜噜一区| 密臀在线一区尤物| 在线视频97| 国产操逼视频在线观看| 风流老熟女一区二区三区l| 久久香蕉国产线看观看猫咪av| 久久久com| 国产精品乱人伊人网| 亚洲免费97免费| 欧美激情亚洲情色| 性91| 最新日日夜夜天天干干| 欧美人妻久久精品二区三区| 综合婷婷| 欧洲亚洲人妻无码中字久久三区四区| 牛牛久久国产精品视频一二三| 97射欧美| 麻豆国产97在线| 人人操,操人人| 色色色综合| 国产白丝在线| 国产99999| 成人麻豆av电影网站| 伊人五月天| 亚洲激情天堂网| 亚洲熟女人妻中文字幕一区二区 | 91成人社区| 91亚洲图片| 韩国一级婬片A片无码天美 | 极品国产内射| JIZZJIZZ国产精品喷水| 精品网站9999| 综合网亚洲在线| 国产精品盗摄 偷窥盗摄| 日本三级日本三级99| 日韩午夜国产| 久久久久久九| 女人双腿搬开让男人桶| 丝袜综合| 伦理第一页| 中文字幕狠狠玩| 躁躁日曰躁2020| 日日爱99| 麻豆这里只有精品| 亚州综合色图| 人人操人人色网| 成年女人18级毛片毛片免费观看| 91国产大片| 亚洲色天| 色婷婷影院| 亚洲少妇免费视频\| 老外又粗又长一晚做五次| 丝袜美腿诱惑亚洲欧美视频在线观看| 综合av影片| 69XX一中文字幕人妻91| 丁香五月婷婷基地| 久久久久久免费电影| 69少妇一区二区| 国产夜夜操| 精品九九| 亚州精人品大香蕉| 九九九不卡| 国产男女无套视频免费观看| 熟女AV一区| se吧提供91精品国产91久久久久久 | 亚洲系列第一页| 大香蕉99热| 成人小说另类在线| 欧美精品成人亚洲| 无码人妻一区二区三区四区老鸭窝| 果冻国产精品麻豆成人av| 亚码人妻| 一区二区三区成人高清视频| 欧美在线大香蕉| 日韩成人精品| 青草香蕉网| 最新av中文字幕高清| 青青色综合| 欧美激情视频在线一区| 嫩草 人人网精品| 国产偷拍网站| www.一本大99| 国产91av在线播放| 三级网站超变态精品| 日本欧美一区二区三区视频麻豆| 亚洲欧美爆| 91深夜夜| 无码九九| 337p大胆噜噜噜噜噜91Av| 国产丝袜啪啪| 激情小说亚洲| 丰满翘臀美女影院视频| 少妇色| 国产精品久久久久亚洲av| 嗯嗯啊啊视频一区二区三区| 91人妻最真实刺激绿帽| 久久久久久久久久久久黄色| 久久日韩精品一区二区| 欧洲精品在线播放| 夜夜天天噜狠狠爱2021| 激情啪啪视频| 婷婷五月天av| 久久一区二区三区四区五区| 久久9亚洲| 国产av强奸美女| 久久影视二区三区行押| 色5月婷婷| 黑人猛交| 91日产欧美| 天美麻花大全视频| 九九久久玖玖| 五十路熟女工口| 欧美综合区| 大JI巴好深好爽又大又粗视频| 久草婷婷| 日韩精品在线观看网站| …亚洲黄色厕厕女女在线播…| 久久亚州高清| 色牛牛AV| 欧美一区二区男人天堂| 亚洲综合九| 中文字幕在线观看丝袜| 男女猛烈无遮掩视频免费软件| 大香蕉92| 97在线免费看| 2019久久久久久久久福利| 中文三一区| 亚州久久9| 人妻av在线| 国产操逼视频在线观看| 欧美综合综合| 老熟妇综合| 亚洲天堂,男人| 国产精品麻豆视频网站| 天天日天天看| 男人的天堂日本东京热| 色婷五月天| 色嗨嗨在线| 人人摸人人入| 桑老女人九区| 大香蕉在线视频重口味毛片在线| 乱老女人一区二区视频| 无码人妻一区二区三区色欲aⅴ | 欧美日韩亚洲天堂| 天天超级碰碰碰| 久久啊哟| 综合久久婷婷| 精品人妻av在线播放| 国产老太乱伦一区| 丝袜视频网国产90| 伊人操操| 久久久999网站| 婷婷久久久| 中文字幕亚韩| 国产人妖的免费的视频| 在线综合网| 欧美亚洲特P| 欲色啪| 97在线观视频免费观看| 一区二区久久天天干狠狠| 综合久久中文字幕综合日韩精品| 九月激情婷婷| 亚洲97成人在线观看| 天天网综合| 91女日逼| 综合熟妇一区二区三区| 加勒比伊人综合| 91中文精品日韩欧美在线| 极品丝袜无码| 国产原创自拍| 色情婷婷| 国产99 中文字幕日韩小视频| 熟女精品va中文字幕| 偷拍亚洲熟女视频播放| 国产精品又黄又猛又粗| 92一区二区| 91爱啪| 俞拍久久国应视频| 精品久久97| 精品久9| 国产97色在线| 熟妇女伦乱视频| 96一区二区| 久久岛国| 中文字幕制服诱惑| 人人操人人肉久久精品| 久久久久99精品成人片蜜臀| 性欧美999| 天天综合青苹果| 日本男人天堂| 亚洲欧美色图片| 2024黄色视频| 免费精品国偷自产在线在线| 一二三区操逼国产91| 久久狠狠色噜噜狠狠狠狠97| 一级乱伦网站| 国产精品久久久久久高清无码免费看| 日韩福利电影网| 亚洲色鬼| 91丝袜美腿网站| 色女99一级片在线观看| 亚州乱码中文字幕综合久久久| 欧美曰韩国产精品| 国产免费久久精品99re韩国|