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

ARTICLE DETAIL

資訊詳情

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

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

JavaWeb寵物商城課設(shè)源碼全解析:數(shù)據(jù)庫、核心代碼與部署排錯 簡介基于Javaweb的網(wǎng)上寵物銷售商城系統(tǒng)是一份面向JavaWeb學習者的完整項目資料特別適合課程設(shè)計、畢業(yè)設(shè)計或商城類項目實戰(zhàn)參考。資源覆蓋前臺展示、購物車、訂單管理、后臺管理等核心場景可幫助讀者理順電商系統(tǒng)的典型業(yè)務(wù)流程與編碼結(jié)構(gòu)。壓縮包整體約27.24MB主要文件包括Java源代碼、SQL數(shù)據(jù)庫腳本和論文文檔源代碼可直接導入開發(fā)工具運行數(shù)據(jù)庫腳本包含建表及初始數(shù)據(jù)論文可供撰寫設(shè)計說明書時參考。目前已有37人學習瀏覽。由于資料同時具備源碼、數(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的建庫腳本、一篇可以直接當說明書用的論文。很多人以為難點在“看懂代碼”實際上十次有八次翻車在“跑不起來”數(shù)據(jù)庫連不上、Tomcat端口沖突、編碼亂碼、表名和代碼對不上。這篇文章就按你拿到壓縮包后的操作順序從技術(shù)棧識別、數(shù)據(jù)庫初始化、核心鏈路代碼一直講到部署排錯最后給出四個能加分的增強點。適合在做JavaWeb課程設(shè)計或畢業(yè)設(shè)計的人也適合剛學完Servlet和MySQL想練一個完整項目的初學者。2. 先拆三件套源代碼、數(shù)據(jù)庫腳本和論文在項目里的真實分工收到rar后的第一件事不是解壓雙擊也不是急著往IDEA里拖而是先搞清楚氣里面三樣東西各自負責什么。源代碼是主體數(shù)據(jù)庫腳本是地基論文是說明書三者的關(guān)系一句話就能說清論文描述系統(tǒng)應(yīng)該有什么數(shù)據(jù)庫決定系統(tǒng)拿什么存代碼決定系統(tǒng)怎么跑。很多課設(shè)包打開后發(fā)現(xiàn)代碼能編譯但頁面全報錯問題幾乎都出在第二樣東西沒裝好。2.1 技術(shù)棧識別先判斷是ServletJSP還是SSM再動手解壓之后別急著點開某個.java文件先在根目錄掃一眼有哪些標志性文件。JavaWeb課設(shè)包通常走兩條路線傳統(tǒng)的是Servlet JSP JDBC MySQL特征是有web.xml代碼里能搜到大量extends HttpServlet稍微新一點的是SSMSpring SpringMVC MyBatis特征是有applicationContext.xml、spring-mvc.xml這一組配置文件。兩條路線的導入方式、運行方式、排錯方式完全不一樣看錯一步后面全亂。區(qū)分它們最快的辦法是看項目里有沒有pom.xml。有pom.xml就是Maven工程IDEA導入后會自動下載依賴沒有pom.xml只有一堆jar塞在lib目錄或WebContent/WEB-INF/lib下就是傳統(tǒng)Web項目導入時需要手動Add as Library。我一般會用下面這條命令把關(guān)鍵文件一次性找出來# 解壓后先看根目錄 ls -la # 定位關(guān)鍵標記文件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方式導入依賴由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ù)棧之后就按固定順序掃一遍目錄我習慣看五處根目錄的README或說明文檔、數(shù)據(jù)庫腳本位置、JDBC配置文件、web.xml或Maven坐標、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負責增刪改查service寫業(yè)務(wù)流程web下的Servlet只做參數(shù)接收和頁面跳轉(zhuǎn)。課設(shè)包采用這種分層一方面是課程里就是這么教的答辯護時能講清楚層次關(guān)系另一方面是代碼量不大四個包各自管一攤出了問題容易定位??吹綄嶓w類可以順手打開看一眼字段名后面導入數(shù)據(jù)庫時能對照上。2.3 論文與代碼的一致性校驗別讓文檔和代碼打架三件套里最容易出問題的其實是論文。下載包里那篇論文通常是從某個學長學姐手里流轉(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腳本為準把代碼里的字段名全局替換掉編譯跑一遍后基本能消除大部分SQLException。3. 數(shù)據(jù)庫設(shè)計與初始化把SQL腳本跑成能用的寵物商城表結(jié)構(gòu)寵物商城這類課設(shè)數(shù)據(jù)庫跑不跑得起來決定了整個項目能不能啟動。前面識別技術(shù)棧時找到的.sql腳本接下來就要派上用場。在導入之前最好先把腳本里的建表語句完整讀一遍不要無腦執(zhí)行——很多腳本文件里缺CREATE DATABASE這行執(zhí)行完一臉懵因為壓根沒建庫。3.1 五張核心表的設(shè)計要點用戶、分類、寵物、購物車、訂單網(wǎng)上寵物商城雖然叫“商城”但課設(shè)級別的表結(jié)構(gòu)不會太復雜核心就五張表用戶表、寵物分類表、寵物商品表、購物車表、訂單表。下面這份DDL是常見的課設(shè)版設(shè)計我按自己習慣加了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兩張表是標準的主從表設(shè)計一個訂單里可能同時有貓糧和貓砂兩件商品訂單主表記總價和狀態(tài)訂單明細表記每件商品的單價和數(shù)量統(tǒng)計“這個月賣了什么”時直接查明細表就行。購物車表用了一個唯一索引uk_user_pet保證同一用戶加同一商品時數(shù)據(jù)庫層面不會出現(xiàn)兩條重復記錄代碼里做累加時會簡單很多。外鍵在課設(shè)表里可以保留但要注意FOREIGN KEY會讓刪除分類時受到限制如果測試時想刪掉某個分類卻被外鍵攔住可以先把對應(yīng)寵物分類下的pet記錄清掉再刪分類。有些課設(shè)包的腳本里故意不加外鍵理由是“代碼里控制了邏輯外鍵影響插入性能”這是沒必要的設(shè)計潔癖課設(shè)階段有外鍵更容易講清楚表關(guān)系。3.2 導入SQL腳本的兩種方式命令行與圖形工具拿到.sql文件后導入方式跟著你的習慣走。命令行方式適合快速執(zhí)行圖形工具方式適合一邊導一邊看表結(jié)構(gòu)。無論哪種方式第一件事都是確認MySQL服務(wù)已經(jīng)啟動然后確認腳本第一行有沒有CREATE DATABASE沒有的話先手動建庫再導入。# 方式一先登錄MySQL再執(zhí)行腳本 mysql -u root -p # 進入MySQL命令行后執(zhí)行 SOURCE /path/to/pet_shop.sql; # 方式二不進入交互模式直接導入 mysql -u root -p pet_shop pet_shop.sql方式二有個大坑命令行里的pet_shop這個數(shù)據(jù)庫得先存在否則導入會直接報錯“Unknown database”。所以我個人更習慣方式一先登錄進去用SHOW DATABASES;確認庫存在再用SOURCE執(zhí)行腳本。如果SQL腳本本身帶了CREATE DATABASE IF NOT EXISTS那方式一執(zhí)行會非常干凈執(zhí)行結(jié)束后用USE pet_shop; SHOW TABLES;驗證。圖形工具Navicat/DBeaver導入時有一個操作順序問題左側(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)閉寫成一個標準方法是個好習慣。很多課設(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)是最標準的JavaWeb請求響應(yīng)鏈路一條線走下來JSP表單提交用戶名密碼 → LoginServlet接收參數(shù) → UserDao查詢數(shù)據(jù)庫 → 比對密碼 → Session保存登錄態(tài) → 重定向到首頁??创a時先看LoginServlet這一段后面的業(yè)務(wù)基本都是它的復制粘貼變體。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當作根路徑訪問。我第一次寫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拿到當前庫存再在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取當前頁數(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)核心是拼接當前路徑帶上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ù)庫導完最后一步是把項目跑起來。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?,F(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這種被復制粘貼時丟了冒號或冒號變成全角字符的情況。全角冒號的報錯特別隱蔽肉眼幾乎看不出來。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解碼不寫過濾器必亂碼。現(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ù)庫一打開就能看到所有賬號的密碼答辯時被問“密碼安全怎么保證”容易接不上話。可以先把t_user表里password字段的長度改成64然后在注冊和登錄時用MessageDigest做SHA-256哈?;蛘咭隿ommons-codec做MD5加鹽。改造量不大但能直接展示你對安全的基本認知。第二個是連接池。DBUtil里每次getConnection都是DriverManager現(xiàn)連現(xiàn)斷換成Druid連接池只需要改DBUtil的靜態(tài)初始化塊配置一個DruidDataSource取連接換成dataSource.getConnection()連接池的復用機制就生效了。第三個是日志。現(xiàn)在代碼里全是System.out.println上線后根本沒法排查問題加一個Log4j2依賴把關(guān)鍵操作——登錄成功、下單成功、庫存不足——用logger.info記錄異常用logger.error記錄這是從“能跑”到“能用”最關(guān)鍵的一步。第四個是業(yè)務(wù)校驗。比如注冊時的用戶名重復判斷、下單前的庫存預檢、購物車數(shù)量不能為負數(shù)這些邊界校驗不一定在課設(shè)包里。改完這四點后建議按一套冒煙測試清單過一遍注冊新用戶 → 登錄 → 修改個人信息 → 瀏覽商品列表并翻頁 → 把一件商品加進購物車 → 修改購物車數(shù)量 → 提交訂單 → 在訂單列表看到剛下的單 → 管理員登錄后臺看到訂單和庫存變化。每一步通過的標準不是頁面沒報錯而是數(shù)據(jù)庫里對應(yīng)的表產(chǎn)生了正確的數(shù)據(jù)變更。這套流程走完這個JavaWeb課設(shè)才算真正歸你所有。我早期跑一個ServletJSP課設(shè)的時候在Tomcat配置上耗了兩個晚上最后發(fā)現(xiàn)只是Deployment里沒添加Artifact。后來養(yǎng)成了一個習慣拿到任何源碼包先看README、再導SQL、最后拖進IDEA跑順序不亂問題就少一大半。希望這個順序?qū)δ阋灿杏谩1疚倪€有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97操操| 超碰2017| 东北女人av| 亚洲精品三区在线观看| 亚洲综合电影| 天天性射网| 久九九九九九九热| 97蜜桃综合| 欧美人人AAA| 麻豆综合一区av| 亚洲男人天堂视频| 目产99999久久999| 蜜臀久久99精品久久综合| 亚洲精品人妻在线| 天美欧美国产| 久久9 9 9精品| www超碰| 亚洲制服aⅴ中文字幕| 黄色香蕉视频网站一区| 中文字幕国产在线天堂| 久久久青青草| com 首页 18岁 禁区 女优 免费 精选 同城| 97资源制服丝袜| 国产无马视频| av网页一区二区三区| 91被操| 91丝袜视频在线观看| 90后后入| 色九色久| 人妻精品一区二区三区| 色五月AV| 国产免费一区2区3区| 凹凸 69堂 在线播放| 人妻熟妇久草在线| 欧美瑟综合| 亚洲se电影| 97chaopenrihan| 欧美伦乱爱| 久久成年精品| 欧美情色亚洲| 国产一区二区成人av在线播放| 中文字幕乱亚洲美女精品一区| 中文字幕一区二区三区人妻不卡 | 天天影视之亚洲综合网| 亚欧洲一区二区视频| 曰韩少妇无码| 91成人久久| 激情干在线| 亚洲日本韩国在线| 99久在线精品99re8热| 欧美做爰无码A片视频| 综合免费无码中文| 毛片电影一区二区三区| 国产毛片精品一区二区色欲黄A片| 色婷婷99| 日本天堂网| 大香蕉中文aV在线| 大香蕉中文| 人人做,人人操,人人摸| 人摸人人操人| 在线观看一卡二卡| 极品色电影院| 九九九网站| 91精品无码久久久久久久| 国产美女口爆吞精视频| 国产精品亚洲免费| 国产农村妇女精品一二区| 乱理日韩中文| 男女啊啊啊啊啊| 91精品国产91综合久久蜜臀| 成人 日本A片无码8888| 欧美日韩性感| 亚洲区限制级 99| dy888午夜老子影视达达兔| 亚川综合视频| 亚洲第一二区另类图| 天天影视之亚洲综合网| 伦在线97| 探花精品 一区二区| 手机在线视频国内精品| 久久综合乱子伦国产免费| 四虎视频在线观看| 亚洲熟女人妻中文字幕一区二区 | 天天日日日射| 97久久网| 99热这里只有精| 91久久精品美女高潮喷水| 日日操夜夜操天天操免费观看麻豆| 精品欧美А∨无码黑人大荫蒂| 国产一区二区欧美日本| 激情四射五月天| 欧美AB在线| 欧美成人一级免费电影| 亚洲自拍一区夜夜操| 色香天天| 国产18精品亚洲精品| 中文字幕天天天天天| 国产一线二线三线av| 欧美日产国产在线成人第一区| 亚洲激情综合| 国内精品久9| 亚瑟国产精品久久无码| 国产25页| 一级做a爰片性色毛片久久| 婷婷久久大香蕉| 男人的亚洲天堂| 亚洲网站一区二区在线| 狠狠久久亚洲欧美专区| 99re视频在线播放青草| 国内自拍 日韩激情 99| 99久在线精品99re8a| 超碰午夜| www亚洲免费| 强上我不卡卡| 国产综合在线视频网站| 欧美色图中文字幕| 呦呦影院| 色九九九九| 一区二区三区免费视频入口| 成人色女网| 91人妻在线视频| 五月激情综合网| 人妻少妇精品久久久久久| 日本国产欧美高清在线| 偷拍新久久| 尤物黄色在线观看网站| yazhououmeizongya| 精品人妻av在线播放| 天天夜夜久久| 欧亚乱色熟女一区二区| 综合色图亚洲欧美| 怡春院久久| 亚洲高潮影院| caorenqi shipin| 一本色道久久综合精品婷婷| 婷婷五月天激情网| 超碰97人妻在线| 奸色色 男人天堂 天天射| 免费视频一二三区| 91丝袜美女| 黄色视频60分钟| 日欧操屄| 国产精品一区二区麻豆| 青青青国产| 国产JDAV无码视频在线观看| 人人操超碰在线| 久久五月丁香| 呦呦影院| 久久久性爱| 日韩人妻大香蕉| 999综合网| 久草色悠悠在线视频| 约操熟妇| 91人妻熟女| 青青草视频久久久久| 一本一道波多野毛片中文在线| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久久久久九九九| 91中出视频| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 国产丰满少妇久久久精品影院| 欧美老妇曰批的视频| 日夜尻逼网| www.欧精品| 午夜电影在线观看无码专区| 久久神马| 色久桃花影院在线观看| 97超碰色色| 色九九九九| 人人透人人操| 免费作爱一级视频| 天堂а√在线最新版在线| 中文字幕乱妇免费视频| 2019亚洲男人天堂| 欧美色图中文字幕| 成人网欧美风情| 日韩国产中文字幕| 黄色片,com| AV女优男人的天堂| 国产嫩草精品A88AV| 丝袜喷水在线| 99热这里是精品| 为用户提供免费看黄网址在线观看| 欧美淫乱视频| 亚洲男人的天堂网| 在线 亚洲 网爆 自拍| 亚洲欧洲网站免费观看| 欧美劲爆视频一区二区| 99久久久久久久久| 亚洲AV成人无码一二三久久 | 91操操| 日本免费一级AAA大片器| 在线a亚洲视频播放在线| 欧美日韩亚洲天堂| 屌逼麻豆| 狠狠干综合| 亚洲熟女中文字幕在线| 伊欧美综合视频| 日韩中文字幕国产| 久久透逼视频| 性爱乱伦视频免费| 欧美 日韩 亚洲 春色| 97天堂| 日韩射精| 少妇久久久久久| 婷婷丁香人妻 | 青青草好吊色| 羞涩视频| 色综合V| 亚洲欧美一区二区网址| se吧提供91精品国产91久久久久久 | 成人情色综合网| 学生妹天天看| 人人妻天天做天天爽| 久久AV色| 国产中文字幕在线观看| 人妻熟女一区二区在线视频| 94色色电影网| 张柏芝国产一区在线观看| 97视频网站| 午夜性生活av免费在线看| 国内精品不卡无毒99999| 欧美色图天堂在线| 少妇无码太爽| 亚州色图欧美| 国产高清在线自在拍69| 天天性射网| 国产97色在线| 成人乱码一区二区三少妇| 熟妇操花| 91xingse| 亚洲AV无码久久精品蜜桃小说| 色拍偷亚洲| 玖玖大干人妻| 国产老太乱伦一区| 男女性感激情网站| 亚码激情| 中文一区二区| 九九九九精品精| 啪啪视频亚洲第一| 婷婷在线精品| 青青国产在线拍揄自揄拍| 国产精彩女在线观看视频| 色777999综合| 亚洲男人综合| 国产精品午夜高潮呻吟久久av| 一本道综合色图| 久久久久久久久久久久久久9999| 素颜老阿姨乱情色| 精品国产三级av韩国在线| 亚洲制服aⅴ中文字幕| 超碰在线91| 亚洲欧洲日产国产综合网| 久久精品国产97欧美精品亚洲 | 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 免费视频无码| 91丨精品丨国产丨丝袜| 干超碰碰熟女| 久久婷婷五月综合| 中文字幕诱惑制服人妻丝袜美丝袜美 | 天躁夜夜躁2021| 搡老熟女免费视频| 丁香九月激情啪| 日韩传媒在线| 少妇久久久久久| 日本韩欧美在线播放a| 中文字暮97| 淫纸中9区| 国产精品美女在线一区| 67914在线精品观看| 久久精品无码熟妇一区二区三区视频导航 | av凤凰久久久| 欧美日韩天堂| 操B视频日韩无码| 99亚洲天堂| 91精产一区二区三区| 亚洲男人天堂av| 色综合久久久久| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 日韩人妻大香蕉| 91精品91久久久久77777| 极品综合| 蜜桃中文字日产乱幕4区| 欧美,日韩,中文,另类| 久久受www免费人成| 日本天天人人狠狠在线日美女| 青青青草原| 郑州宾馆老熟女露脸啪啪| 麻豆精品A片免费观看| 精品视频在线观看| 久久天天摸| 日韩本不卡视频在线观看 | 九九热只有精品| 人人操人人插人www| 97视频在线观看播放与子乱对白在线……| 九月伊人中文字幕| 亚洲综合网电影91| 久久大黄片| 999狠狠综合| 欧美 亚洲 第一页| 欧美综合站| 人爽不卡视频| 97色97好| 日韩欧美经典在线观看| 欧美人妻一区二区| 婷婷精品| 尤物视频视频官网| 久久久久久久久久久999| 蜜乳AV一区| 欧美中字不卡| 精品国产乱码久久久久久免费| 日本性爱少妇| 97AV在线观看| 自拍二页| 国产成人精品日本视频| 97超碰9| 夜夜嗨一区二区| 97综合久久| 九九玖玖精品| 欧美黄色片AAAAA| 亚洲综合九九| 欧美色图 人妻| 成人网站 免费观看| 岛国天天午夜影院传媒网| 国产激情久久久| 国产高清自拍| 超碰欧美97资源| 欧美|91色综合| 性无码专区2020| 青青草中日韩在线| 91亚·色| a级成人毛片免费视频高清| 熟人人妻少妇精品久久| 91偷拍欧美亚洲| 国产AV久久野战精品| 久操免费电影| 大香蕉在线视频重口味毛片在线| 色色色色网站| 欧 美 自 拍 偷 拍| 91少妇香蕉久久精品| 99综合视频一体| 欧美性爱综合,免费| 激情四射熟女丝袜| 日本一二三高清| 久久艹逼视频| 国产对白刺激视频| 78久久| 精品乱码在线观看| 欧美日本久久精品一区| 九九色精品| 亚洲欧洲日韩天堂av| 欧美情色亚洲| 黄色视频特级毛片| 亚洲h片在线免费观看| 综合久久2017| 我爱操| 蜜臀亚洲综合一二三四区| 亚洲人成色9999精品久久| 天堂中文日本在线观看| 欧美18 在线观看| 欧美日韩欧美| 97中文热色| 欧美日韩中国x| 欧美乱妇狂野欧美在线视频| 亚洲欧美性生活| 91 刺激在线| 亚欧高清在线| 家庭乱伦网站国产| 91精品久久久| 中文字幕一区二区免费在线| 国产在线综合福利网站| 超碰在线一区二区| 激情小说亚洲色图| 夜夜爽夜夜爽| 懂色Av| suv精产一二三区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 99色天堂| 久久久久久九九九| 亚洲色交| 久草新在线| 久久久91| 少妇久久久久久| 色汉综合| 亚洲无线观看久久| 中文字幕乱码人妻二区三区| 不卡av在线中文字幕| 久久久久久久久久久免费精品| 天天射天天操天天干天天吃2018| 久久黄片国产一区二区| 国产a片操逼| 18禁无码永久免费无限制| 另类亚洲一区二区三区| 操操吧亚洲乱伦视频| 中日亚韩免费视频| 人妻精品一区二区在线| 99操视频| 狠狠中文字幕| 国产AV人人 夜夜人人澡| 国产青视频| 老熟妇一区二区三区啪啪| 狠狠干妹子| 亚洲AV永久无码精品成人调教| 伊人宅男大香蕉| 天堂综合网| 日本中文熟女视频| 成人午夜小视频手机在线看| 99热这里是精品| 久久久精品日本一道| 日本九九久久99播| 色眯眯av| 日韩猛交| 无码最新| 很很干很很操| 精品中文日韩字幕视频| 玖玖爱视频网站| 激情色图| 国产aⅴ无码片毛片一级网站| 人妻少妇精品无码专区二区密桃| 亚洲加勒比久久日本道| 草草网站影院白丝内射| 久久亚洲影院一区二区| 60秒免费视频| 欧美性第一页| 国产一区二区三区导航| 九九热精品免费视频| 少妇内射www在线观看视频| 欧美三级偷拍| 日本丝袜人妻内射| 日韩AV中文字幕电影| 欧美偷偷网| 亚洲āv网址在线观看| 东亚亚洲无码高清| 热久久99999| 青青操在线视频| 色天使亚洲综合在线观看| 99热思思| 色路综合| 欧美视频一区二区在线| 禁十八久久| 久久激情婷婷| 亚洲日韩精品在线播放| 超碰在线97国产| 91综合色噜噜| 亚洲精品男人的天堂| 热的中文 热的有码 热的国产| 亚洲天堂男人的天堂| 69精品久久久久中文字幕| 亚洲欧美九九九| 九九热精品视频六| 青青草天天亲夜夜操网| 中文字幕AV片| 成年人黄色小视频网站| 日韩av色图综合| 国产精品96| 伊人色综合网| 超碰在线91| www久久99| 91国产伊人大香蕉| 性爱1区| 日韩少妇在线视频| 亚洲蜜乳av| 人人操人人搞人人草| 东京成人一区| 在线αⅴ| 日韩精品9999| 免费簧片在线观看| 精品国产乱码久久久久久日本公司| 第四色奇米影视777| 亚洲综合888| 囯产精品久久久久久久久久梁医生 | 亚州国产精品乱| 超碰吊日色| 免费在线观看AV无码网站| 人妻素股| 国产乱伦一二三区| 色欲av国内精品久久久久久| 五月天激情国产综合婷婷婷| 天天久久| 夜夜高潮夜夜爽高清视频一 | 少妇人妻好深太紧了vr91| 热久久99999| 在线免费观看日韩一区| 天欧美在线| 一区二区三区精品视频| 91天堂| 一区二区久久天天干狠狠| 亚洲成a人v欧美综合天堂下载 | 国产精品分类在线观看| 天天天天天天天天综合| 日欧亚洲二三区大片不卡| 激情情色五月天| 999岛国大片| 亚洲人妻爽爽爽| 裸体美女国产免费久久久网站| 偷窥自拍亚洲色图| 在线看的av| 国产深喉| 97爱欧美| 国产亚洲精品第一最新| 日日操夜夜操天天操免费观看麻豆| 少妇二级| 福利社区午夜一区二区| 亚洲综合在线91| 欧洲天天在线| 久久精视频美日韩在线视频| 欧美超碰97| 91国内外在线| 亚洲精品一区二区三区新线路| 伦激情人妻另类人妻| 亚洲诱惑天堂| 日韩人妻操B| 亚洲一欧洲中文字幕在线| 欧美东京热青青草| 91色堂| 99精品久久久久久| 色人久久| 日韩免费三级黄片电影| 青青三级视频| 啪啪视频mP4| 亚洲人妻在线一区| 久久久精品网| 青青草色插素人| 久久精品欧美一区蜜桃| 波多野结衣先锋影音| 久久 精品| 97视频在线视频| 国产夜夜操| 婷婷色导航| 啊啊啊操一区| 狼天天狼天天大香蕉| 校园春色亚洲| 亚洲人成网www| 婷婷综合在线| 午夜男女爽爽大片免费观看| 97久久超碰日韩精品| 欧美亚洲厕所精品偷拍91 | 97超碰碰| 爱逼综合| 97精品网| 国产精品人妻免费精品| 亚洲风情在线观看| 日韩啪啪视频| 日韩欧美加勒比| 久久久不卡| 操逼免费视频无码国产| 亚洲图片婷婷五月天| 牛牛AV人人夜夜澡人人爽| 婷婷激情四射| 亚洲网站一区二区在线| 国产福利一区二| 国产乱伦亚洲色图高清无码| 欧美Aⅴ| 日韩乱伦AⅤ| jk白丝没脱就开始啪啪| 日本在线视频导航| 精品国产片亚洲一区| 另类视频在线| 国产性感骚丝袜在线| 91在线视频免费中出| 天美传媒在线一区| 亚洲另类色综合网站| 精品人妻丰满熟妇一区二区三| 欧美 亚洲| 精品国产91内射久久| 九九精品99| 久久一区二区三区入口| 美腿色图| 91 偷| 99老司机精品视频在线观看| 亚洲中文字幕精品久久久久久直播| 欧美色五月| 99国产精品免费| 欧美性色欧美| 把腿张开老子CAO烂你| 99热这里| 88在线一区二区三区| 日本一区二区中文字幕久久| 国产 v乱码一区二| 熟女欧美日韩综合婷婷| 91综合网站| 一区二区娱乐网站| 九九九九一级| 国产精品不卡一区二区三区av| 91|九色|国产熟女| 99爱爱| 国产无码久久高清| 男人亚洲91首页在线| 亚洲欧洲日韩中文字幕一区| 97人人操人人摸人人爱| 中文字幕日韩人妻视频一区二区三区交换夫妻| 激情综合 婷婷五月 红杏| 日本三级网页| 中文?日韩?免费?精品| 日韩欧美综合激情| 草草草草视频| 亚洲成人性爱网站在线播放| 欧美日日夜夜| 热无码中文亚洲H一道本一区二区| 加勒比无码一区二区三区| 99av| 日韩伦理视频| 无码操逼视频一下| 亚洲区限制级| 美女写真| 亚洲亚洲亚洲天堂天堂| 亚洲精品久久久久久久蜜桃臀| 国产一区二区三区久久精品太古里| 国产欧美日韩一区二区三区| 久久久久921| 在线观看黄色电话| 可免费观看的av毛片中日美韩| 久久侵犯人妻爽爽爽| 97超碰磁| 青青草大香蕉视频| 天美精品av| 国产精品美女久久久久AⅤ国产馆| 日本男人插女人的逼黄色| 立川理惠加勒比无码| 中文字幕乱码在线| av久日| 美女啊啊啊啊啊啊啊| 国产免费内射视频| 国产日韩欧美三级片| 亚洲欧美综合| 久热这里| 老熟妇一区二区三区啪啪| 少妇超碰在线| 午夜精品久久久久久久99蜜桃一| 97日韩| 四虎免费视频| 99精品网站| 亚洲精品久久久久久久久豆丁网| 国产一级操B视频| 日本孕妇一区二区视频操逼免费看 | 青娱乐91| 大香蕉手机在线| 日本精品九九九| 日韩中文字幕av在线播放| 亚洲激情在线| 综合网色| 视频分类 国内精品| 九月激情婷婷| 久久精品国产亚洲妲己影视| 一级毛片电影免费看| 日韩97P| 女生91网站| 97干在线| 亚洲av性爱电影| 一起草三级AV电影在线观看 | 97ai亚洲| 天天综合中文字幕 91| 天堂成人网| 91黑丝在线| 黑人精品一区二区在线播放| 囯产精品久久久久久久久久梁医生 | 亚洲va有码在线天堂| 国产精品久久久久9999小说| 久污| 青娱乐妇女性生活| 综合夜夜| 欧美色视频在线| 亚洲制服欧美另类内射| 色婷婷亚洲婷婷| 97免费在线视频在线观看| www.欧精品| 超碰日韩美妻| 亚洲熟女av中文字幕| 欧美亚洲国产91在线| 欧美精品xxxwww| 99超级碰免费视频| 1二区9| 97免费视频在线| 天天懆天天日| 大香蕉色十月| 欧洲自拍第一页| 国产高清视频无码在线| 久久鲁干| 偷拍综合亚洲| 日本阿v天堂在线观看| 婷婷去俺也去六月色| 91色艳| 亚洲丝袜在线观看| 激情综合二| 啊啊啊不要啊啊受不了了视频在线| 久久精品成人一区二区三区蜜臀| 国产午夜精品理论片a大结局| 户外裸露刺激视频第一区| 国产精品天美传媒| juliaann丝袜| 99这里都是精品| 欧美色吧综合| 91精品国产高清久久久久久,亚洲成人 | 91色综合激情| 狠狠婷婷亚洲中文综合久久| 长长久久88视频| 天天日天天操VV| 亚洲麻豆18发?| 久久毛卡| 风月影院男女十八禁| 在线a v| 免费亚洲国产精品久久一区| 一级毛片久久久久久久女人18| 久久精品老司| 国产AV激情无码久久无码 | 午夜偷拍久久熟女| 亚州国产成人精品女人久久| 在线精品福利免费播放| 狠狠干妹子| 人、人、摸,人、人、草| 天欧美在线| 啊啊啊好爽快点啊啊啊嗯嗯| 国产精品片| 99热aaa| 日韩另类| 人妻无一区二区三区| 欧美久久久15P| 欧美一级黄片免费播放| 国产精品国产精品国产| 神马久久久久久久久久久久| 亚洲中文国际强奸字幕| 欧美性第1页| 男人天堂站| 久久露脸国产老熟女| 另类图片欧美激情综合| 亚洲日韩黑丝| 欧美 传媒 麻豆 日韩 偷拍| 日产狠狠干| 一区二区三区看视频| 97超碰人人操人人操| 97se综合| 青青色综合| 五月天激情综合网| 一级啊性爱在线视频| 精品无码一区二区三区| 狠插 制服 自拍| 五月天激情小说网| 国产九九九九九九九九| 美国黄片aaa| 亚洲在线欧美| 欧美在线电影| 亚洲天在线| 欧美大色交| 色妇91| 亚洲综合九| 精品96久久| 抽插爽| se,,,亚洲欧美| 天天夜夜久久| 男人把坤坤插入女人的下体| 91欧美美女日韩国产婷婷| 久久精品视频久久久| 丁香五月成人| 最新加勒比丝袜在线| 91大胆欧美| 日本一二区免费 | 国产综合久久久鬼色| 欧美美女在线高潮999| 秋霞男人网| 久久久久久中文版| 亚洲超碰综合网| 日韩日韩日韩-国产乱码精品一区二区| 91美女视频电影| 精品九区| 奇米四色网| 福利在线黄片| 国产乱婷婷精品二区三区| 亚洲成人一二三区| 自拍第一页| 手机看片91人妻| 亚洲成?V人片在线观看福利| 99操| 是还免费视频1727我| 9九九国产| 中文乱码字字幕在线第5页| 93人人操人人| 欧美日日夜夜| 国产精选视频| 欧美亚洲激情| 亚洲福利中文字幕在线| 91久青| av2014 日韩在线中文字幕| 男插女青青影院| 超碰国产在线| 欧美在线综合| 曰韩操B| 久久伊人网视频一区二区三区| 亚州,欧美在线| 99精品欧美一区二区三区桃色| 色婷婷在线视频| 亚洲色图欧美色图在线播放| 少妇人妻好深太紧了vr91| 亚洲AV小说| 麻豆91熟妇人妻中文字幕茄子| 老司机老司机午夜影院| 男人网站婷婷| 国产一在线观看| 国产乱弄免费在线视频。| 亚洲 暴爽 AV人人爽日日碰| 久久久婷| 搡老女人老91妇女老熟女| 色五月激情综合网| 1024精品在线| 我爱大香蕉| 91欧美经典| 99热97| 亚洲欧洲无码bt精品合集| 亚洲伊人久久精品狠狠在线| 黄色区免费观看中文字幕| 综合第一页| 亚洲综合欧美| 一区黄二区黄| 秋霞一集毛片观看| 日日噜噜夜夜久久亚洲一区二区| 国产黄色影片在线观看| 超碰伊人在线| 色婷婷av在线观看| 翔田千里A片一区二区| 国产肏屁眼视频| 久久久久国产无av| 1769成人国产精品视频| 中文字幕人乱码中文字的预防方法 | 国产精品午夜福利亚洲综合网| 日韩激情视频| 91色情黑丝搞鸡在线观看一区二区三区三州| 大茄子熟女AV导航| 久久久久9999妇女| 久久性爱城| 高清无码在线播放网站| 色欧美在线| 亚洲欧洲色情高清| 亚洲天堂东京热| 国产亚洲禁久一区二区| 韩国一级做a久久久久| 欧亚韩国999| 操美女人妻| 久热伊人| 亚洲天堂 视频你懂的| 91搞逼视频| 综合网91| 欧美色院| 天天伊人| 亚洲欧美清纯| 青草一区二区| 一区二区三区男人的天堂| 91伊人久久在线| 嗯嗯啊好大| 自拍欧美| 国语对白露脸XXXXXX| 97超碰中文| 9长久久精品| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 秋霞鲁丝午夜无码一区二区三| 97超碰国产亚洲精品资源| 久久激情综合| 99啪啪视频| 欧美网站免费| 大香蕉乱伦视频网| 国产成人网| 一区二区三区精品黑丝白丝酒店对鸡| 亚洲精品日韩国产欧美| 久操不卡视频| 韩国久久97| 在线视频一区二区传媒| 精品无吗久久| 久久大线蕉一区| 亚洲精品97p| 97免费在线| 日本性爱欧美性爱| 性色av婷婷久久一区二区点复制| 国产日韩欧美三级片| 青青青操| 91国产丝袜美女| 欧美在线天堂| 91精品电影18| 啊啊啊啊啊在线视频| 天天爱综合网| 日本淫乱女一区二区三区视频| 日韩成人无码| 欧美极度丰满熟妇hd| 野狼激情网| 天天情欲宗合网| 精品国产Av无码久久久伦古装| 黄色片一区二区三区四区五区 | 欧美性爱18观看| 国产精品老师| 欧美亚州综合图片| 91精品人| 激情五月天校园春色网| 国产精品制服丝袜清纯唯美| 婷婷操视频| 亚洲黄色影视| 久热69九色熟妇97| 天天情欲宗合网| 欧美18老人禁| 首页中文字幕中文字幕免费| 嗯嗯啊啊用力视频免费| 欧中美三级一区二区三区| 操逼网站网站| 丁香五月激情网| 欧美精品亚洲精品日韩传电影| 狠狠爱大香蕉| 啊啊啊啊一区| 精品人妻一区二区三区蜜桃视频| 国产美女口爆吞精视频| 亚洲有码 欧美精品| 99夜夜操| 水野优香在线观看| 亚洲欧美另类图片| 99精品视频在线观看| 91亚洲综合在线| 97福利视频| 日韩15p| 久久99久久99精品免视看婷婷| 妇女乱色二区| 丁香婷婷久久 | AV中亚| 久久熟妇五十路一区| 在线毛片片免费观看| 国产白嫩精品久久| 激情抓乳插进去啪啪啪日韩 | 亚洲无码一区二区三区三州| 亚州色图欧美| 超碰成人公开| 91青青在线视频| 久久思思热| 人人操,人人插| 在线情色电影 91大| 青青草天天亲夜夜操网| 91w欧美| 91老熟女老女人国产老太| 亚洲无码久久久久久久| 欧美日韩资源| 欧美日韩青操| 五月激情影院| 91色碰| 日韩性爱1级片视频| 亚洲综合另类色图| 狠狠图片青青草| 久久婷婷伊人| 国产毛片久久久久久久| rion磁力链接| 日韩欧美中文字| 精品人妻二区三区| 国产粉嫩出水在线播放| 国产91av在线播放| 天堂av最新电影网| 亚洲欧洲色情高清| 日韩亚洲美女一区久久| 国产色精品午夜大片| 香伊人在线| 欧美成人免费在线观看| 大香蕉综合网| 久久高潮妇女视频| 人伦四五区| 中文字幕人乱码中文字的预防方法| 亚洲婷婷五月天| av在线资源| 亚洲福利中文字幕在线| 欧美性爱在线无码| 人人摸人人添人人操| 欧美激情另类一区二区| 97人人夜夜精品视频| 粉嫩av平台| 岛国1区2区3区在线观看| 97精品视频| 中文字幕一区二区视频在线观看| 一区二区影视| 精品九九九九九九| 污色区网站| 亚洲欧洲中文日韩女优乱码| 亚洲人成网站7777| 大香蕉视频一二三区| 亚乱色| 二色av| 亚洲欧美九九九| 欧美白嫩女HD| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 粉嫩粉嫩一区性色AV片| 亚欧国产无码精品在线| 95人妻爽爽人人做人人澡| 有码免费观看| 国产97在线播放| 成人精品无码| 免费中文在线| 亚洲有码 视频一区| 日本最新免费韩国1区2区视频播放| 免费啊啊啊| 天天干18禁| 久久国内| 性生活久久久久久久久久| 91老熟女91老女人| 无码外流操逼视频| 欧美日韩国产中文超碰| 国产精品午夜精品| 最新岛国大片| 日韩情色视频| 久久超碰天天| 日本一区二区成人在线| 亚洲 欧美 小说| 夫妻天天操岛国视频| 夜嗨影院| 日本999精品| 不卡中文字幕aⅴ在线| 加勒比在线视频| 精品九区| 97舔舔| 亚洲人成在线放东京热| 五月婷婷五月天| 91宗合网| 国产丝袜美女诱惑| 精品人妻一区二区三区日产乱码| a网站免费观看| 91麻豆天美传媒在线| 99热亚洲| 国产精品操| 91人人爽人人爽| 操逼无码操逼| 九九九九日本 | 99re热有精品视频国产| 青青草在线视频人人想人人上| 久久一区二区蜜桃| 午夜精品一区二区三区三上悠亚| 狠狠爱大香蕉| 丝袜无码a片| 91操人| 1024精品在线| 亚洲AO在线| 免费精品人妻一区二区三| 偷拍亚洲情色| 国产黄a三级三级三级av在线看| 亚洲欧洲成人在线电影| 91欧美性| 成人五月香网在线| 国产家庭乱伦性爱视频| 人人澡人人澡人人| 韩国久久97| 午夜激情成人在线观看| 久久精品操| 久草在| 97网址www| 最新中文字幕在线亚洲| 日韩综合无码一区久久92| 久久视频,这里只有精品 | 2019久久久久久久久福利| 78超碰| 久久天堂网| 亚洲天堂日本| 国产人伦精品一区二区三区| 亚洲操人| 亚洲成熟国产精品美女| a一区二区三区乱码在线| 亚洲福利影院一区久久| 国产精品乱码久久| 亚洲另类色综合网站| 中国熟女91| 亚洲精品黑丝| 97精品97久久| 四虎国产成人精品免费一女五男| 夜色五月天| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 国产超碰| 99热色精品| 麻豆2区1区天美| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日日干夜夜操视频h| 性欧美天天| 久插综合| 青青欧洲黑| 夜夜嗨一区二区三区三州加勒比 | 国产99热| 激情AV| 日本 欧美 亚中文字幕| 男人的天堂2010| 一本正道久久熟女| 久久久不卡区一区二区三区久久久| 美性中文综合网| 久久久国产护士丝袜美腿一| 国产精品久久久午夜夜伦鲁鲁| 久久精品国产亚洲粉嫩| 人妻丝袜美腿中文字幕| 狠狠操官网| 五月丁香在线| 大香蕉之青青草原| 超碰美国| 成人网站 免费观看| 欧美色图天堂在线| 艳尻美人妻| 天天干18禁| 一区二区三区精品视频| 麻豆av一区二区三区| 性高潮久久久| www.99中文字幕| 99欧美| 少妇人妻在线| 日韩无码三级影院| 久久久9视频| 精品国产乱码久久久A| 国产激情av女片自拍| 亚洲欧洲日产国产综合网| 天久久久噜噜噜久久国产精品爽爽| 精品一区二区综合熟妇| 亚洲。日韩。欧美| 麻豆成人AV| 99激情| 九九超碰综合网| 欧美黄片免费在线观看视频| 香一区二区三区| 黄页av| 美女黄色一级A视频| 欧美亚州综合网图片| 操逼日韩无码| 久久一二三四五六七八九区| 日韩精品永久在线观看| 制服丝袜第二页| 欧美激情中文字幕另类小说| 是还免费视频1727我| 一,爱啪啪,在线免费视频| 色www精品视频在线观看| 中文字幕一二区二三区人妻专区| 麻豆精品天美| 中国探花熟女| 热99这里有精品综合久久| 亚洲成人一二三区| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 狠狠91| 欧美色日本| 国产免费一区二区在线A片视频| 欧美丝袜亚洲| 无码99| 亚洲av综合色区无码一| 国产尤物在线三区| 厕所偷拍在线| 亚洲第一无码播放立川理惠| 久久啊啊| 自拍第一页| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 日韩精品99久久久久久中文字幕| 九月丁香综合网| 精…码一二三区| 精品妇操一区二区三区| 91天天日| av天堂5| 亚洲成人免费中文字幕| 亚洲综合20p| 九九久久国产精品怡红院| 操逼内射干逼白丝91| 丁香久久| 91Chinese在线| 欧美东京热精品A∨| 久久9精品网站| 精品制服美女中文一区二区三区| 九色97| 国产精品自在自拍视频| 亚洲天堂五月天国产| 国产精品乱码久久| 青青草原av| 青青草色AV| KK色在线影院| 亚洲色欧|