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

ARTICLE DETAIL

資訊詳情

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

Java Web數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用開(kāi)發(fā)實(shí)例:JSP/Servlet+JDBC+MySQL源碼視頻解析

Java Web數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用開(kāi)發(fā)實(shí)例:JSP/Servlet+JDBC+MySQL源碼視頻解析 簡(jiǎn)介Java Web數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用開(kāi)發(fā)與實(shí)例是一份面向Web開(kāi)發(fā)者的源碼與視頻學(xué)習(xí)包內(nèi)容圍繞Java Web和數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)展開(kāi)覆蓋Servlet、JSP、JDBC、Spring MVC/Struts以及SQL、事務(wù)、存儲(chǔ)過(guò)程和Hibernate/MyBatis等ORM映射技術(shù)。整個(gè)包共884個(gè)文件約222.5MB核心包括163個(gè)Java源碼、140個(gè)JSP頁(yè)面、181個(gè)編譯后Class文件、17個(gè)SQL腳本和48個(gè)AVI操作演示視頻另有JAR包、XML配置、JS/CSS等輔助資源便于對(duì)照學(xué)習(xí)與二次調(diào)試。已有470人學(xué)習(xí)下載適合希望從基礎(chǔ)到進(jìn)階掌握J(rèn)ava Web與數(shù)據(jù)庫(kù)整合開(kāi)發(fā)的初學(xué)者也適合有一定經(jīng)驗(yàn)的開(kāi)發(fā)者查漏補(bǔ)缺。通過(guò)源碼閱讀和視頻演示可直觀(guān)理解系統(tǒng)演示、共通Servlet封裝、第一個(gè)JSP應(yīng)用、報(bào)表打印等關(guān)鍵場(chǎng)景快速搭建數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用并優(yōu)化連接、認(rèn)證與并發(fā)處理。1. Java Web數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用開(kāi)發(fā)與實(shí)例源碼、視頻和課設(shè)的完整閉環(huán)如果你正在準(zhǔn)備Java Web數(shù)據(jù)庫(kù)方向的課設(shè)最讓人心態(tài)失衡的事往往不是寫(xiě)代碼本身而是找不到一個(gè)“能跑起來(lái)”的參考項(xiàng)目。網(wǎng)上的Demo不少可要么頁(yè)面是靜態(tài)的要么SQL腳本導(dǎo)入就報(bào)錯(cuò)。這套《Java Web數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用開(kāi)發(fā)與實(shí)例》的源碼與視頻資源解決的就是這個(gè)痛點(diǎn)它以一個(gè)賬戶(hù)信息管理Demo為載體把數(shù)據(jù)庫(kù)建表、JDBC連接、用戶(hù)登錄、增刪改查完整走了一遍。配套視頻按模塊拆開(kāi)講每一步都有對(duì)應(yīng)的代碼位置。適合兩類(lèi)人一是新手想照著視頻從零搭環(huán)境二是已經(jīng)寫(xiě)過(guò)一些Java Web代碼的開(kāi)發(fā)者想直接扒一套規(guī)范的分層代碼來(lái)改。2. 技術(shù)選型與工程結(jié)構(gòu)JSP/Servlet、JDBC、MySQL 怎么湊成一套不翻車(chē)的課設(shè)2.1 為什么還在用 JSP/Servlet課設(shè)場(chǎng)景下的務(wù)實(shí)選擇這套資源沒(méi)有追新技術(shù)棧相當(dāng)克制前端用JSP后端用Servlet數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)用JDBC數(shù)據(jù)庫(kù)用MySQL容器用Tomcat。第一反應(yīng)當(dāng)然是現(xiàn)在不都用Spring Boot嗎但如果你打開(kāi)課程大綱會(huì)發(fā)現(xiàn)很多數(shù)據(jù)庫(kù)系統(tǒng)課程的核心要求仍然是“掌握Servlet生命周期”“使用JDBC完成數(shù)據(jù)庫(kù)增刪改查”。用Spring Boot超綱不說(shuō)演示時(shí)被問(wèn)到“Servlet里為什么不是service()方法”反而容易翻車(chē)。從這個(gè)角度看JSP/Servlet恰恰是最穩(wěn)妥的課設(shè)選擇。另一個(gè)維度是學(xué)習(xí)路徑足夠短。JSP負(fù)責(zé)頁(yè)面展示Servlet負(fù)責(zé)接收請(qǐng)求JDBC負(fù)責(zé)和MySQL交互整條鏈路可以在配套視頻里一步步看到。項(xiàng)目?jī)?nèi)部并不是把所有邏輯堆在JSP里而是拆成了bean、dao、service、servlet、util幾個(gè)包。視頻的順序也按這個(gè)依賴(lài)關(guān)系排先裝環(huán)境再寫(xiě)SQL腳本接著封裝DBUtil最后做Servlet和JSP。跟著視頻走實(shí)際就是按技術(shù)棧的依賴(lài)順序重新搭一遍。如果你之前只寫(xiě)過(guò)單文件Servlet這套結(jié)構(gòu)正好幫你理解“類(lèi)多了以后怎么分工”。2.2 WebRoot、src、sql 目錄先分清三塊再動(dòng)手項(xiàng)目的目錄結(jié)構(gòu)如下ProjectName/ ├─ src/ │ ├─ com/xxx/ │ │ ├─ bean/User.java │ │ ├─ dao/UserDao.java │ │ ├─ service/UserService.java │ │ ├─ servlet/LoginServlet.java │ │ └─ util/DBUtil.java ├─ WebRoot/ │ ├─ css/ │ ├─ WEB-INF/ │ │ └─ web.xml │ ├─ login.jsp │ ├─ list.jsp │ └─ index.jsp ├─ sql/ │ └─ init.sql └─ README.txtsrc下主要看五個(gè)包bean里的User對(duì)應(yīng)數(shù)據(jù)庫(kù)表字段名盡量和表列名保持一致否則ResultSet取值時(shí)容易踩坑dao就是數(shù)據(jù)訪(fǎng)問(wèn)層只負(fù)責(zé)拼SQL、執(zhí)行SQL、把結(jié)果封裝成對(duì)象service是業(yè)務(wù)層比如登錄時(shí)候的密碼校驗(yàn)、刪除前的關(guān)聯(lián)檢查都放這里servlet負(fù)責(zé)接收瀏覽器參數(shù)調(diào)用service最后跳轉(zhuǎn)或轉(zhuǎn)發(fā)util里放DBUtil這類(lèi)公共工具。WebRoot是Web應(yīng)用的根目錄部署到Tomcat后訪(fǎng)問(wèn)路徑就是WebRoot下的文件路徑web.xml用來(lái)配置Servlet映射和歡迎頁(yè)。sql/init.sql是全項(xiàng)目最關(guān)鍵的文件。很多課設(shè)翻車(chē)的第一個(gè)原因不是代碼寫(xiě)錯(cuò)而是沒(méi)先執(zhí)行init.sql。你直接啟動(dòng)項(xiàng)目DBUtil能連上MySQL但登錄查詢(xún)會(huì)報(bào)“Table doesnt exist”。所以拿到資源包以后先看sql目錄把腳本導(dǎo)入數(shù)據(jù)庫(kù)再用工具確認(rèn)表和代碼里的字段對(duì)得上。README.txt一般會(huì)寫(xiě)清楚MySQL用戶(hù)名密碼和初始化步驟我第一次跑的時(shí)候沒(méi)看它直接改代碼里的密碼折騰了半小時(shí)才發(fā)現(xiàn)只是數(shù)據(jù)庫(kù)密碼寫(xiě)錯(cuò)了。這套結(jié)構(gòu)是典型的“傳統(tǒng)Web項(xiàng)目”不是Maven項(xiàng)目。構(gòu)建時(shí)要把src編譯輸出到WEB-INF/classes把mysql-connector-java的jar包放到WEB-INF/lib。如果你看到的是Maven結(jié)構(gòu)那就在pom.xml里寫(xiě)依賴(lài)。判斷方式很簡(jiǎn)單看工程目錄下有沒(méi)有pom.xml有就是Maven沒(méi)有就是傳統(tǒng)Web項(xiàng)目。2.3 JDBC 工具類(lèi)把 DriverManager 封裝成單例省掉一半重復(fù)代碼每個(gè)DAO都要拿連接、關(guān)連接如果不封裝寫(xiě)出來(lái)的代碼會(huì)有大量重復(fù)。所以項(xiàng)目里通常會(huì)有這么個(gè)DBUtil核心代碼大致如下package com.xxx.util; import 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 URL jdbc:mysql://localhost:3306/account_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai; private static final String USER root; private static final String PASSWORD root; static { try { Class.forName(com.mysql.cj.jdbc.Driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, 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) {} } } }URL里的參數(shù)值得逐個(gè)記一下。useUnicodetrue和characterEncodingutf8是為了讓中文能以UTF-8寫(xiě)入useSSLfalse是因?yàn)楸镜亻_(kāi)發(fā)不加密不加的話(huà)MySQL 8.0會(huì)一直報(bào)警告serverTimezoneAsia/Shanghai是MySQL 8.0之后才需要的時(shí)區(qū)參數(shù)少了它會(huì)在獲取連接時(shí)報(bào)時(shí)間差錯(cuò)誤。驅(qū)動(dòng)類(lèi)名也有版本講究mysql-connector 8.x對(duì)應(yīng)com.mysql.cj.jdbc.Driver8.0之前是com.mysql.jdbc.Driver。視頻里如果第一次用5.x后來(lái)?yè)Q8.0不少人就是在這里栽跟頭。close方法先關(guān)ResultSet再關(guān)Statement最后關(guān)Connection。這個(gè)順序不能亂因?yàn)镽esultSet依賴(lài)StatementStatement又依賴(lài)Connection。我見(jiàn)過(guò)有人先關(guān)Connection再讀ResultSet的時(shí)候直接空指針還以為是自己SQL寫(xiě)錯(cuò)了。這套DBUtil是教學(xué)項(xiàng)目里最常見(jiàn)的寫(xiě)法。如果以后要上生產(chǎn)建議把URL、用戶(hù)名、密碼抽到db.properties里再用ResourceBundle讀取改配置不用改代碼。課設(shè)沒(méi)這個(gè)要求但作為二次開(kāi)發(fā)習(xí)慣提前做沒(méi)壞處。3. 核心模塊拆解一個(gè)登錄請(qǐng)求從表單到 Session 再到數(shù)據(jù)庫(kù)的完整鏈路3.1 登錄模塊表單提交后 Servlet 里發(fā)生了什么登錄邏輯看起來(lái)簡(jiǎn)單卻是很多問(wèn)題的集中地。先看LoginServlet的doPostWebServlet(/login) public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(UTF-8); String username request.getParameter(username); String password request.getParameter(password); UserService userService new UserService(); User user userService.login(username, password); if (user ! null) { HttpSession session request.getSession(); session.setAttribute(loginUser, user); response.sendRedirect(request.getContextPath() /list); } else { request.setAttribute(errorMsg, 用戶(hù)名或密碼錯(cuò)誤); request.getRequestDispatcher(/login.jsp).forward(request, response); } } }request.setCharacterEncoding(UTF-8)這一行必須在getParameter之前執(zhí)行。如果放在之后POST請(qǐng)求里的中文參數(shù)會(huì)按容器默認(rèn)編碼解析常見(jiàn)表現(xiàn)是用戶(hù)名里的中文變成亂碼。登錄成功以后把User對(duì)象放進(jìn)Session后續(xù)JSP頁(yè)面才能通過(guò)session里的loginUser判斷“是否已登錄”。這里用的是sendRedirect而不是forward好處是瀏覽器地址欄變成/list用戶(hù)按F5刷新時(shí)不會(huì)重復(fù)提交登錄表單。登錄失敗則用forward把錯(cuò)誤提示帶回login.jsprequest里的errorMsg能在頁(yè)面上顯示。很多人會(huì)問(wèn)為什么Servlet里不直接寫(xiě)SQL因?yàn)榇a一旦寫(xiě)成Servlet里new一個(gè)UserDao再查庫(kù)后續(xù)要加“連續(xù)輸錯(cuò)三次鎖定賬號(hào)”這類(lèi)規(guī)則時(shí)就得改Servlet。項(xiàng)目里用UserService包了一層登錄這種業(yè)務(wù)邏輯放在service里。UserService內(nèi)部再調(diào)用UserDao這樣Servlet只負(fù)責(zé)參數(shù)解析和頁(yè)面跳轉(zhuǎn)職責(zé)很干凈。密碼字段在視頻里是明文存儲(chǔ)這是教學(xué)項(xiàng)目為了方便演示。如果你要做成作品展示至少要改成MD5加鹽或者直接用BCrypt。我一般會(huì)在service里加一層“從庫(kù)里查出用戶(hù)對(duì)比密碼”的邏輯而不是讓SQL直接寫(xiě)where username? and password?因?yàn)楹笳邲](méi)法在代碼里做加密和登錄次數(shù)限制。3.2 用戶(hù)列表與分頁(yè)LIMIT 的參數(shù)不能靠字符串拼接列表頁(yè)是CRUD里最常改的部分。分頁(yè)查詢(xún)的UserDao實(shí)現(xiàn)大致是這個(gè)樣子public ListUser findPage(int pageNum, int pageSize) { ListUser list new ArrayList(); String sql SELECT id, username, nickname, email FROM user ORDER BY id LIMIT ?, ?; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, (pageNum - 1) * pageSize); ps.setInt(2, pageSize); try (ResultSet rs ps.executeQuery()) { while (rs.next()) { User user new User(); user.setId(rs.getInt(id)); user.setUsername(rs.getString(username)); list.add(user); } } } catch (SQLException e) { e.printStackTrace(); } return list; }LIMIT ? ?是MySQL分頁(yè)的標(biāo)準(zhǔn)寫(xiě)法第一個(gè)參數(shù)是偏移量第二個(gè)參數(shù)是每頁(yè)條數(shù)。pageNum從1開(kāi)始所以偏移量等于(pageNum - 1) * pageSize。比如第3頁(yè)每頁(yè)10條就是從第21條開(kāi)始取10條。用PreparedStatement的setInt傳參而不是拼SQL是因?yàn)檫@些參數(shù)來(lái)自頁(yè)面請(qǐng)求一旦拼SQL就存在注入風(fēng)險(xiǎn)。你在瀏覽器把pageSize改成“10 or 11”如果代碼是字符串拼接后面的查詢(xún)條件就會(huì)被改掉。這段代碼沒(méi)有寫(xiě)COUNT查詢(xún)但列表頁(yè)一般要顯示“共幾頁(yè)”所以還需要一個(gè)配套方法public int count() { String sql SELECT COUNT(*) FROM user; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql); ResultSet rs ps.executeQuery()) { if (rs.next()) { return rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } return 0; }總頁(yè)數(shù)的計(jì)算方式是(total pageSize - 1) / pageSize。比如總數(shù)是21每頁(yè)10這樣算出的是3頁(yè)而不是2頁(yè)。視頻里通常會(huì)單獨(dú)講這個(gè)細(xì)節(jié)因?yàn)樗钊菀自诹斜眄?yè)翻頁(yè)時(shí)出現(xiàn)最后一頁(yè)少一條的“玄學(xué)”問(wèn)題。3.3 刪除用戶(hù)事務(wù)邊界和子表刪除順序刪除功能的典型場(chǎng)景是用戶(hù)主表一條記錄用戶(hù)角色關(guān)聯(lián)表里還有多條記錄。如果只刪主表外鍵約束會(huì)報(bào)錯(cuò)如果只刪關(guān)聯(lián)表主表留下孤兒數(shù)據(jù)。項(xiàng)目里的刪除邏輯通常會(huì)這樣寫(xiě)public boolean deleteUser(int userId) { Connection conn null; PreparedStatement ps null; try { conn DBUtil.getConnection(); conn.setAutoCommit(false); String deleteRole DELETE FROM user_role WHERE user_id ?; ps conn.prepareStatement(deleteRole); ps.setInt(1, userId); ps.executeUpdate(); String deleteUser DELETE FROM user WHERE id ?; ps conn.prepareStatement(deleteUser); ps.setInt(1, userId); ps.executeUpdate(); conn.commit(); return true; } catch (SQLException e) { if (conn ! null) { try { conn.rollback(); } catch (SQLException ex) { e.printStackTrace(); } } e.printStackTrace(); return false; } finally { if (conn ! null) { try { conn.setAutoCommit(true); } catch (SQLException ignored) {} } DBUtil.close(conn, ps, null); } }核心點(diǎn)是setAutoCommit(false)。一旦關(guān)閉自動(dòng)提交后面兩條DELETE要么一起成功要么一起回滾。如果第一條成功第二條失敗commit不會(huì)執(zhí)行rollback會(huì)把第一次刪除也撤銷(xiāo)避免出現(xiàn)“關(guān)聯(lián)表刪了主表還在”的臟數(shù)據(jù)。事務(wù)只包寫(xiě)操作查詢(xún)不需要包因?yàn)椴樵?xún)不存在一致性問(wèn)題。另一個(gè)細(xì)節(jié)是刪除順序。如果user_role表有外鍵指向user表必須先刪user_role再刪user否則MySQL會(huì)報(bào)外鍵約束失敗。有些項(xiàng)目為了省事把外鍵去掉這樣先刪誰(shuí)都能跑但數(shù)據(jù)完整性就丟了。我建議保留外鍵讓數(shù)據(jù)庫(kù)幫你兜底演示時(shí)還可以順勢(shì)講一句“外鍵約束保證了引用的有效性”這對(duì)課設(shè)評(píng)分是加分項(xiàng)。更新操作和刪除類(lèi)似但要注意executeUpdate的返回值。返回0表示影響行數(shù)為0常見(jiàn)原因是數(shù)據(jù)已經(jīng)被別人刪了或者你提交的id根本不存在。前端提示“更新失敗”總比悄無(wú)聲息成功要好。4. 從導(dǎo)入到跑通Tomcat和MySQL下的部署步驟與配置檢查4.1 環(huán)境準(zhǔn)備JDK、Tomcat、MySQL 版本怎么選視頻里從頭講環(huán)境搭建但你不需要完全復(fù)刻版本。JDK 1.8、Tomcat 8/9、MySQL 5.7或8.0這是教學(xué)項(xiàng)目最保險(xiǎn)的組合。如果你的機(jī)器已經(jīng)裝了JDK 11甚至17傳統(tǒng)JSP項(xiàng)目在Tomcat 9上也能跑但要注意Tomcat 10及以上把包名換成了jakarta.*老項(xiàng)目的javax.*代碼直接編譯不過(guò)。為了少折騰我建議直接用JDK 8和Tomcat 8.5。版本對(duì)照可以看這張表組件推薦版本注意點(diǎn)JDK1.8Servlet編譯兼容性最好Tomcat8.5 / 9.0WebServlet注解可用MySQL5.7 / 8.08.0需要serverTimezone參數(shù)mysql-connector-java5.1.x / 8.0.x驅(qū)動(dòng)類(lèi)名不一樣MySQL 5.7的好處是省心驅(qū)動(dòng)類(lèi)名用com.mysql.jdbc.Driver不需要時(shí)區(qū)參數(shù)。MySQL 8.0性能更好但sql_mode和排序規(guī)則更容易出幺蛾子。視頻里演示用的具體版本我不重復(fù)原則是跟著視頻版本走別自己混搭最新版。尤其是mysql-connector 8.0.x對(duì)MySQL 5.7也能連反過(guò)來(lái)5.1.x連8.0會(huì)報(bào)SSL握手失敗這里面坑很多。4.2 把工程導(dǎo)入 IDE傳統(tǒng)Web項(xiàng)目與 WEB-INF 檢查拿到源碼后先看是不是Maven工程。傳統(tǒng)Web項(xiàng)目用Eclipse導(dǎo)入File Import Existing Projects into WorkspaceIDEA則直接Open目錄然后在Project Structure里設(shè)置SDK和Web Facet。導(dǎo)入后最重要的一步是檢查WEB-INF/lib下有沒(méi)有mysql-connector的jar包。沒(méi)有的話(huà)啟動(dòng)后跑一次登錄就會(huì)報(bào)ClassNotFoundException。IDEA里傳統(tǒng)Web項(xiàng)目啟動(dòng)前還要設(shè)置Artifacts。常見(jiàn)翻車(chē)現(xiàn)場(chǎng)是Tomcat啟動(dòng)成功瀏覽器訪(fǎng)問(wèn)login.jsp能打開(kāi)但一點(diǎn)登錄就404控制臺(tái)提示Servlet沒(méi)找到。原因通常是.class文件沒(méi)有編譯輸出到WEB-INF/classes或者WebServlet注解沒(méi)有被掃描。解決方法是重新Build Artifacts并在Run Configuration的Deployment里確認(rèn)war exploded已經(jīng)加進(jìn)去了。如果是Maven工程導(dǎo)入后會(huì)自動(dòng)下載依賴(lài)。等待進(jìn)度條走完再啟動(dòng)否則JSP頁(yè)面里用了JSTL標(biāo)簽時(shí)會(huì)報(bào)“Cannot find the tag library descriptor for core”。JSTL需要jstl和standard兩個(gè)jar缺一不可。部署前建議按這個(gè)順序過(guò)一遍項(xiàng)目編譯無(wú)紅叉、WEB-INF/lib能看到驅(qū)動(dòng)、Tomcat啟動(dòng)無(wú)異常、訪(fǎng)問(wèn)http://localhost:8080/項(xiàng)目名/login.jsp能正常顯示。4.3 執(zhí)行 init.sql初始化數(shù)據(jù)庫(kù)的三步檢查初始化數(shù)據(jù)庫(kù)不是“雙擊執(zhí)行”就完事。第一步確認(rèn)腳本里是否已經(jīng)包含CREATE DATABASE。如果包含你直接執(zhí)行就行如果不包含需要手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)再u(mài)se進(jìn)入。第二步檢查腳本里的表名和UserDao里的表名是否一致。我見(jiàn)過(guò)一個(gè)項(xiàng)目代碼里寫(xiě)的表名是user腳本里建的表名是users啟動(dòng)不報(bào)錯(cuò)但查詢(xún)永遠(yuǎn)返回空。第三步在DBUtil或db.properties里核對(duì)用戶(hù)名、密碼特別是密碼里有特殊字符時(shí)URL里偶爾還需要做URL編碼。還有一條實(shí)戰(zhàn)經(jīng)驗(yàn)數(shù)據(jù)庫(kù)連不上時(shí)先別懷疑代碼。在終端用mysql -uroot -p試一下能不能登錄能登錄說(shuō)明MySQL服務(wù)正常。如果終端能連而項(xiàng)目連不上就檢查URL里的端口是否被改過(guò)。MySQL默認(rèn)3306有些機(jī)器裝了多版本MySQL端口改成了3307URL沒(méi)同步就會(huì)一直報(bào)Connection refused。這些都不算代碼邏輯問(wèn)題但占了我?guī)腿伺挪閱?wèn)題的七成時(shí)間。初始化完成后用一條最簡(jiǎn)單查詢(xún)驗(yàn)證SELECT * FROM user; 如果能查出數(shù)據(jù)再啟動(dòng)項(xiàng)目。直接跑項(xiàng)目容易把“SQL腳本沒(méi)執(zhí)行”和“代碼有bug”混在一起到最后你根本不知道是哪里出了問(wèn)題。5. 常見(jiàn)問(wèn)題與避坑404、500、中文亂碼的排查筆記這套源碼視頻在本地跑起來(lái)的過(guò)程里下面幾個(gè)問(wèn)題是出現(xiàn)頻率最高的。我按“現(xiàn)象、原因、解決”三條寫(xiě)方便你直接對(duì)號(hào)入座。5.1 訪(fǎng)問(wèn) JSP 一直 404頁(yè)面像沒(méi)部署現(xiàn)象Tomcat能啟動(dòng)瀏覽器打開(kāi)login.jsp卻顯示404或者訪(fǎng)問(wèn)一個(gè)Servlet地址下載了JSP源碼。原因項(xiàng)目沒(méi)有真正部署到Tomcat或者部署路徑和訪(fǎng)問(wèn)路徑不一致。解決先確認(rèn)IDE里Run Configuration的Deployment中已經(jīng)添加了項(xiàng)目的war或war exploded。Application context建議設(shè)為/項(xiàng)目名訪(fǎng)問(wèn)時(shí)用帶上下文路徑的地址。Eclipse用戶(hù)右鍵項(xiàng)目Run As Run on Server不要直接雙擊jsp文件。Tomcat的webapps目錄下也應(yīng)該看到對(duì)應(yīng)的項(xiàng)目文件夾如果沒(méi)有說(shuō)明部署沒(méi)生效。這類(lèi)問(wèn)題我遇到最多的是IDEA多模塊工程module沒(méi)被加到Artifacts里導(dǎo)致頁(yè)面前端資源能找到但Servlet的class文件不在WEB-INF/classes下。檢查方法是看Tomcat日志里有沒(méi)有打印“Deploying web application directory”有的話(huà)再確認(rèn)WEB-INF/classes里有沒(méi)有LoginServlet.class。5.2 ClassNotFoundException驅(qū)動(dòng)類(lèi)名按版本選現(xiàn)象訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)相關(guān)頁(yè)面控制臺(tái)報(bào)ClassNotFoundException后面跟著com.mysql.jdbc.Driver或com.mysql.cj.jdbc.Driver。原因一是驅(qū)動(dòng)jar沒(méi)有放到WEB-INF/lib二是驅(qū)動(dòng)類(lèi)名和驅(qū)動(dòng)版本不匹配。解決先確認(rèn)mysql-connector-java的版本。8.0.x必須用com.mysql.cj.jdbc.Driver5.1.x用com.mysql.jdbc.Driver。然后把jar放到WEB-INF/lib下重新部署不要放在IDE的external libraries里因?yàn)門(mén)omcat運(yùn)行時(shí)不會(huì)去讀IDE的類(lèi)路徑。Maven項(xiàng)目則要檢查pom.xml里的驅(qū)動(dòng)依賴(lài)scope如果寫(xiě)成了provided或者testTomcat運(yùn)行時(shí)會(huì)找不到類(lèi)。順便說(shuō)一句驅(qū)動(dòng)jar包版本不要亂用最新的8.4、8.5項(xiàng)目里視頻用的是8.0.x系列就保持一致。打包部署的環(huán)境最怕“我更新了一下依賴(lài)然后突然壞了”。5.3 中文亂碼從頁(yè)面到數(shù)據(jù)庫(kù)要統(tǒng)一三處編碼現(xiàn)象表單輸入中文插入MySQL后變成問(wèn)號(hào)或者頁(yè)面顯示“用戶(hù)名”變成“?”開(kāi)頭的一串亂碼。原因JSP頁(yè)面編碼、Servlet請(qǐng)求編碼、JDBC連接編碼三處不一致。解決JSP第一行寫(xiě)pageEncodingUTF-8Servlet在doPost開(kāi)頭第一行寫(xiě)request.setCharacterEncoding(UTF-8)JDBC URL加characterEncodingutf8MySQL建表時(shí)指定DEFAULT CHARACTER SET utf8mb4。三個(gè)地方缺一個(gè)都會(huì)出問(wèn)題但最常見(jiàn)的是漏了Servlet里的setCharacterEncoding因?yàn)轫?yè)面和數(shù)據(jù)庫(kù)都改好了反而這個(gè)不起眼的一行被忽略。Tomcat 8.5之后對(duì)GET請(qǐng)求的參數(shù)默認(rèn)按UTF-8解碼所以很多人在GET請(qǐng)求里不寫(xiě)setCharacterEncoding也沒(méi)事。但POST請(qǐng)求還是建議顯式設(shè)置因?yàn)閾Q成其他容器或Tomcat版本后行為可能不同。課設(shè)演示時(shí)最好三種請(qǐng)求都試一遍避免現(xiàn)場(chǎng)翻車(chē)。5.4 數(shù)據(jù)庫(kù)連接耗盡操作幾次后卡死現(xiàn)象項(xiàng)目剛啟動(dòng)能正常增刪改查翻幾頁(yè)之后越來(lái)越卡最后請(qǐng)求一直轉(zhuǎn)圈控制臺(tái)報(bào)Too many connections或者Connection refused。原因代碼里getConnection后沒(méi)有close連接泄漏MySQL連接數(shù)被占滿(mǎn)。解決在DAO每個(gè)方法里用try-with-resources或者finally里調(diào)用DBUtil.close。關(guān)閉順序按ResultSet、Statement、Connection來(lái)。如果用了連接池還要檢查池的最大連接數(shù)和空閑超時(shí)。排查時(shí)在MySQL執(zhí)行SHOW PROCESSLIST能看到大量Sleep的連接基本就能實(shí)錘。這里有個(gè)容易誤傷的點(diǎn)JDBC的Connection.close不是直接把進(jìn)程殺死而是把連接放回連接池或標(biāo)記為關(guān)閉。如果你在finally里關(guān)閉后后續(xù)又去操作ResultSet會(huì)報(bào)ResultSet closed。所以取值范圍只在try塊內(nèi)取完再關(guān)不要把rs拿到方法外面去用。5.5 視頻里能跑我這兒就是不行版本和緩存現(xiàn)象每一步都跟著視頻做軟件版本也一樣但啟動(dòng)后報(bào)錯(cuò)信息五花八門(mén)。原因多半是驅(qū)動(dòng)jar版本不一致、數(shù)據(jù)庫(kù)端口不對(duì)或者瀏覽器緩存了舊的JSP。解決先暫停視頻逐行對(duì)照自己的配置文件和代碼不要憑記憶寫(xiě)URL。再確認(rèn)MySQL服務(wù)真的啟動(dòng)了Windows下服務(wù)列表可能顯示“已停止”。瀏覽器按CtrlF5強(qiáng)制刷新排除舊頁(yè)面緩存。最后還不行就刪除項(xiàng)目重新導(dǎo)入一次IDEA緩存導(dǎo)致的資源沒(méi)刷新問(wèn)題重導(dǎo)往往能解決。這一條看著像玄學(xué)其實(shí)背后是“環(huán)境狀態(tài)不確定”。我處理這類(lèi)問(wèn)題時(shí)會(huì)寫(xiě)一個(gè)環(huán)境檢查清單JDK版本、Tomcat版本、MySQL版本、驅(qū)動(dòng)版本、端口、字符集。逐個(gè)打勾不猜。很多時(shí)候你盯著代碼看半天最后發(fā)現(xiàn)Tomcat的CATALINA_BASE指到了另一個(gè)安裝目錄項(xiàng)目根本沒(méi)部署到你正在修改的那個(gè)Tomcat上。6. 二次開(kāi)發(fā)指南把單用戶(hù)登錄改造成多角色權(quán)限控制6.1 改造思路登錄后把角色信息放進(jìn) Session這套Demo的Session里只存了User對(duì)象所有登錄用戶(hù)看到的功能都一樣。要做多角色權(quán)限第一步是擴(kuò)展表結(jié)構(gòu)user表加一個(gè)role_id字段再建role表保存角色名比如admin和user。登錄時(shí)除了查User還要通過(guò)role_id查出角色名稱(chēng)。// 登錄成功后額外查詢(xún)角色并放入 Session Role role roleService.findByUserId(user.getId()); session.setAttribute(currentRole, role.getName());第二步在JSP頁(yè)面判斷角色決定是否顯示某個(gè)入口比如管理員才能看到“用戶(hù)管理”鏈接。但頁(yè)面判斷只能算展示層控制真正的控制要在Servlet入口做。6.2 驗(yàn)證方法用普通賬號(hào)試一次管理員頁(yè)面最簡(jiǎn)單可演示的權(quán)限控制是在管理員相關(guān)Servlet的doGet或doPost開(kāi)頭加幾行HttpSession session request.getSession(); if (!admin.equals(session.getAttribute(currentRole))) { response.sendRedirect(request.getContextPath() /login.jsp); return; }這樣輸入普通賬號(hào)登錄后直接訪(fǎng)問(wèn)管理員的Servlet地址會(huì)被彈回登錄頁(yè)瀏覽器地址欄也能看到變化。演示時(shí)先截一張普通賬號(hào)被攔截的圖再換成管理員賬號(hào)訪(fǎng)問(wèn)成功就是這個(gè)功能最好的說(shuō)明。如果需要更完整的攔截再考慮寫(xiě)一個(gè)Filter統(tǒng)一檢查除login之外的路徑。我在第一次給類(lèi)似項(xiàng)目加權(quán)限時(shí)把角色判斷直接塞進(jìn)了JSP頁(yè)面里結(jié)果別人改個(gè)頁(yè)面就能繞過(guò)。后來(lái)我強(qiáng)制要求所有權(quán)限校驗(yàn)都放在Servlet入口完成JSP只負(fù)責(zé)展示。從那以后我每次做Java Web數(shù)據(jù)庫(kù)項(xiàng)目的二次開(kāi)發(fā)都會(huì)先畫(huà)一遍“請(qǐng)求從哪里進(jìn)、角色在哪里校驗(yàn)、失敗回哪里”的路徑圖再動(dòng)手。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
777超碰| 九九九精品美女| 亚洲欧美第一页| 中文字幕一区日韩精| 欧美人妻一区| 97 视频在线| av三级电影在线播放| 操婷婷逼| 9999久久久久| 日韩美女操b| 亚洲高清视频在线观看| 91综合色噜噜| 五月天色图| 欧美在线永久天堂| 成人久久无码www| 91亚洲在线| 一起草av| 亚洲欧美清纯| 一区二区 韩日AV| 国产精品天堂| 超碰欧美在线欧美| 福利在线黄片| 天天欧美97| 日韩AV一起草| 欧美天天射| 欧美制服另类丝袜| 亚洲伊人久久综合97| 天天综合网久久ww| 国产无码一二三区| 久久国产乱子伦精品免费女,网站| 激情五月婷婷| 在线日韩日本亚洲国产| 久草免费在线一区二区| 精品成人久久久人人亚洲| 国模精品娜娜一二三区 | 欧美综合天堂| 97中文超碰| 少妇一区二区三区| 九九英色视频| 亚洲成A∨人影院在线欢看| 黑人在线91| 久久久久久久极品香蕉视频| 黄色成人网久久久久久| 亚洲少妇在线影音| 色爱综合网| 日本伦乱九九九综合| 97视频在线观看高清资源| 欧美黑人精品在线播放| 亚洲,欧美,综合网| 超碰天天操| 国产精品熟女丝袜一区二区| 免费a v| 国产九区| 九九99久久| 天堂v无码免费视频| 大香蕉在线视频重口味毛片在线| 亚洲成熟国产精品美女| 美国日韩黄片| 九九九九一区| 亚洲揄拍网| 熟妇综合一区二区三区| 午夜福利在线合集| 久久精品72| 欧洲熟妇xxXx欧美老妇裸体| 久久久性| 91黑丝在线| 国产五码丝袜屁眼| 五月天激情小说| 一个色导综合| 久久岛国| 少妇丝袜在线观看AV| 九九热超碰| 青娱乐欧美激情一区二区| 亚洲日精品| 大香蕉欧美伊| 久久色一区| 最近2019中文字幕国语免费版| 青青五月天| 青青操在线亚洲视频观看欧美在线 | 综合九九| 色 亚洲 91| 丁香五月激情婷婷| 国产欧美岛国精品一区| 久草尤物| 91熟女丨91老女人| 欧美成人国产精品| 综合 青草 伊久久 影院 综合| 日本三级R| 色视频蜜乳| 精品久久在线区一区| 国产熟女完整版中字| 婷婷综合伊人一区| 国产精品操| 俺去啦自拍| 国产婷婷一区| 花野真衣| 婷色五月| 色播丁香| 欧美精品自慰系列寂寞少妇| 欧美日本中字另类在线| 黄色操人| 国产无码久久高清| 91精品人妻偷情| 欧美综合天堂| 青青久久久| 热热热热日日漂亮永久永久国产日| 东京热亚洲一区二区| 高跟丝袜AV专区国产| 日本αv| 无码78| 97色欧洲| 性欧美第一页| 欧美另类丝袜熟女| 免费男人的天堂| 天天影视之亚洲综合网| 狠狠做深爱婷婷久久二区| 久久綜合很很很| 国产成自自拍在线观看| 美女裸体麻豆天美蜜桃91| 蜜桃色色网站视频三区| 青娱乐导航AV| 日韩欧美亚洲国产日韩| 久久秀这里有精品| 亚洲综合97中文网| 午夜久久一区二区无码中出 | 麻豆蜜桃视频在线观看| 日本少妇va7777| 精品99999久久久久久| 超91综合网| 欧美男人一区| 99国产精品在线观看| 久久午夜伦| 丁香五月成人| 成人女人国产| 欧美成人色| 96国产污污污丝袜| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 天干天干天干天天做| 天美传媒AV在线播放| 国产午夜激片Av毛片不卡| 九九热视频这里只有精品| 久久精品 六十路 熟女 欧美| 天天操女人| 亚洲天堂五月天国产| 一直超碰| 黄污污污污| 在线视频亚洲无码| 日韩精彩视频| 神马久久久久眼| 最新三级网址| 成人怡红院| 人妻 制服 日韩 中文 在线| 天天欧美色| 蜜臀99久久精品久久久懂爱| 天美av在线观看| 一区二区三区探花在线观看| 花花AV导航| 丝袜性亚洲| 高清在线偷拍自拍视频| 国产美女销魂在线观看不卡| 亚洲丝袜在线观看| 久久动漫精品视频这里只有精品| 超碰国产在线| 日本色色的视频| 国产真实子伦对白| 凹凸 69堂 在线播放| 五月天久久婷婷亚洲 | 日本亚洲熟女视频| 亚洲夜夜欢无码一区二区 | 无码精品蜜桃一区二区三区ww| A一级色女| 一本一道波多野毛片中文在线| 98久久超碰| 久久人妇| 欧美熟女妇同| 97se综合网| 久久性爱视频| 天天综合网一91网| 亚洲天堂区| 第一高清av中文字幕| 手机在线中文字幕国产| 国产亚洲精品A在线观看下载| 精品人妻一区二区三区不卡断| 亚洲日韩久久精品一区| 久久久久78| 久久超碰97中文字幕| 黄色二级片网站| 日韩欧美女优电影| 日韩人妻操B| 神马福利久草| 观看视频图片一区二区三区| 国产美女91视频| 亚洲 se图 欧美电影| 91在线视频免费中出| 欧美 亚洲 制服 精品| 韩日精品四区| 91麻豆天美国产| 成人综合网 欧美| 亚洲激情天堂网| 久久宗合亚洲| 东北女人高潮视频| 97色97干| 成人无码电影在线观看网| 久久亚洲欧美中文字幕国语| 91 手机在线播放 绯色| 久久宗合亚洲| 亚洲综合色婷婷| 久久丁香| 热热热热日日漂亮永久永久国产日| 四虎视频在线观看| 国产激情在线| 一二三四视频中文字幕在线看| 九月丁香综合网| 欧美老妇曰批的视频| 色婷婷小说| 色女综合| 欧美日韩传媒| 欧美黄片欧美黄片xxx| 青青网三级视频| 热久日综合| 午夜在线播放| 久久久久久久国产a∨| www.狠狠操| 99精品人人爽| 欧洲黄色网| 2020国产精品| 九九九九九九九九九九精品视频| 欧美色图91| 亚洲av淫乱| 夜夜高潮夜夜爽高清视频一| 久久久啊啊啊| 综合自拍| 亚州五月| 伊人黄色视频免费观看| 91/欧美| 搡老女人老91二区| 99热最新网址| avav青青草久久夜| 日韩中文字幕视频在线观看| 日本大香蕉| 91东京热男人的天堂| 国产一区二区三区中文字幕| 97网色| 欧美超碰人妻97| 蜜臀av在线播放一区二区三区| 91丝袜美女| 男人的天堂网页| 99精品视频在线观看| 欧美日韩中国x| 99在线无码精品秘 入口黑人| 大稥蕉免费视频这里只有精品| 激情文学亚洲| 强奸乱伦AV网址| 亚洲熟妇熟在线电影视频| 超碰色综合| 日少妇亚洲版| 福利操逼| 97精品一区二区视频在线观看| 高清无码 国产精品| 久久人妻少妇| 丁香五月婷婷啪啪| 波多野结衣之双飞调教在线播放 | 欧美亚洲91| 美女诱惑1区2区| 中文字幕蜜乳av| 色鬼在线综合| 人人摸人人摸人人干| 久久久成人精品| 欧亚免费视频| 久久大黄片| 精品九九九九九九九九九| 国产精品无码av| 欧美综合色,www| 无码欧美有限公司| 成人日本视频人妻在线| 好色综合| 亚欧美色图| 亚洲 欧美都市激情| 影音先锋少妇| 好涩综合| 91精品久久久久久久久久| 精品少妇人妻| 哈哈操电影| 久久亚洲中文字幕视频| 韩国国产欧美情侣视频在线| 九九热在线精品视频| 91一区二区三区蜜桃| 国产精品久久久久久久久久久久久久久| 婷婷丁香五月天综合东京热| 日韩有码专区| 九热超碰| 大香蕉欧美国产日韩高潮| 婷婷五月天网| 国产一区二区av综合| 国产一级舔足在线观看| 208天天久久九九九| 日本青青草在线| 女人爽到高潮潮喷18禁网站| 97人妻免费中文字幕| 97干97色| 人妻娇喘 激情视频| av东京热男人的天堂| 久久久久久久久久久久久久久性生活视频 | 亚洲五码一区二区三区| 黄片qw| a片久久久久久久久久久久 | www.人人摸在线视频| 久久精9| 久久综合久久综合人久久夜精品| 欧美在线视频99| 99热国产| 激情自拍 校园春色| 激情久久久| 婷婷亚洲五月***久久| 性久久| 国产区91柔拿会所技师| 国产精品久久久 | 亚洲国产天堂| 女生久久网| 99啪| 人人人人人人少妇| 久久亚洲AV无码专区国产精品| 国产91亚洲精品一区二区三区| 加勒比中文av| 激情小说图片亚洲首页| 亚洲国产精品V?在线播放| yw尤物av无码点击进入麻豆| 国产精品日本无码A片| 日本αv| 亚洲色图欧美色图日韩色图| 92人人操人人| 99re视频在线观看这里只有精品| 人夜夜精品网站香蕉嫩草| 97干在线看| 91 综合 色| 撸无码不卡免费视频| 亚洲精品久久久久久久蜜桃臀| 精品一区二区三区丰满熟女-亚洲欧美一区| 偷拍盗拍亚洲色图图片 | 欧美色图成人网一区二区| 欧美亚洲高清不卡| 大香蕉日韩| 边做饭边操逼逼| 婷婷视频在线免费观看| 国产一区二区三区中文字幕| 在线黄色污污网站| 一本久道久久综合狠狠爱一密臀精| 日本不卡二区| 欧美一级做a爰片免费视频| 青青11操操操操操操操操| 色www精品视频在线观看| 欧美色图20P| 人妻欧美| 欧美日韩性爱操大逼| 麻豆天美国美国产| 91大香蕉伊人| 久久‘黄片视频| 日本三级人妻a人妻一在线| 丰满熟女人妻一区二区三五十一路| 成人怡红院| 一区二区三区无卡视频在线观看| 久久久久国产| 屌妞视频久久久久久久久久久久| 91日产桃蜜| 黄色片,com| 国产婷婷一区| 婷婷五月天激情四射| 激情专区综合| 91女优在线观看 | 热99这里有精品综合久久 | 亚洲欧美激情小说| 国产激情视频在线观看| 97视频在线免费播放| 黄色免费一级在线毛片| 96久久科窝| 激情色图| 成人影 天天操 亚洲| 9Ⅰ超碰| 亚洲高清无码免费观看视频| 欧美一区二区三熟女剧情| 高清无码在线播放网站| 熟妇人妻一区二区三在线 | 91老熟女老女人国产老太| 不卡中文字幕aⅴ在线| 日韩欧亚太美不卡| 亚洲天堂一区二区久久| 园内精品自拍视频在线播放| 操人妻逼91| 日韩免费高清大片在线| 色偷综合| www九九热| 加勒比伊人| 亚洲中文字幕乱码无码一区二区| 中文AV制服乱伦| 欧美性区| 欧美性爱精品一区二区| 人人妻人人澡人人爽久久av| 69精品少妇一区二区三区蜜桃| 欧美AB在线| 国产suv精品一区二六| 91爱啪| 久久久久久99999国产精品| 国产不卡免费在线视频| 人人九九精| 色97| 久久久免费一级黄片| 9 1果冻精品视频| 欧美综合第一| www.久久99| 性爱乱伦视频免费| 超碰97COm中文| AV99热18这里只有精品| 色婷婷婷五月天激情四射| 爱媛媛久久国产福利| 日韩大香蕉AV影片| 黄日韩| 五月天综合| 国产美女口爆吞精视频| 欧美色综合网| 激情小说亚洲图片| 中文一区二区婷婷视频| 激情文学小说一区二区| 久操B网| 人妻激情偷乱视三区频一区二区| 久久天堂| 人妻精品一区一区三区蜜桃91| 久久免费中文字幕在线观看| 操逼操逼逼操操逼91 | 97超碰精品| 日产成人久久| av72网| 成人熟女视频一区二区三区| 一区在线国产播放| 精品中文字幕一区二区| 强奸乱伦免费网站| www.91视频网| 人妻喷水| 久久久久久裸体| 麻豆AV96熟妇人妻| 性色高清在线| 国产自产91区13区| 2011国产精品| 亚洲丝袜色| 久久精品国产亚洲AV先锋| 婷婷综合激情| 人人干人人操人人爱| 2020中文字幕在线| 亚洲欧洲另类| 国模精品一区二区三区苹果色戒| 约操熟妇| 免费看国产曰批40分钟怎么下载| 在线亚洲 欧美 日本专区| 综合另类| 久久久久96| 日本大香蕉综合网红本杳社区| 精品乱码在线观看| 欧美精品,四区。五区| AV天黑人| 97色操| 密臀在线一区尤物| 26uuu最新| 国产亚洲精品久久久久小| 日本爽爽爽爽爽爽免费视频| 91伊人| 日韩性爱免费观看视频| 18禁的网站在线| 殴美大黄片| 中文字幕在线观看丝袜| 台欧久久精品视频| A男人的天堂| 久久久久久久久久久久97| 精产品久久| 日韩强奸av| 人摸人人操人| 情色AV电影| 十八禁黄色成人网站观看| 99精品无码| 日本精品999| AA特级绝黄| 国产欧美一区激情交| 麻豆AV一区二区| 2019午夜福利视频| 中文字幕成人乱码熟女精品国50 | 久操视频免费在线观看| 色 亚洲 91| 神马久久久久久| 嫩草一区二区在线观看| 丰满人妻-区二区三区免费| 一二三四免费视频| 91网站18+| 精品毛片av一区二区| 亚洲男人天堂2019| 五月婷婷激情综合| 少妇99成人麻豆| 日韩 欧美 国产 麻豆| 亚洲一区日韩精品中文字幕| 天天草天天干天天日| 高树玛利亚无码流出| 香蕉国产97| 久久久久国产精品片区无码直播| 欧美久久九九| 嗯嗯啊啊啊好爽| 国产精品久久伊人| 超碰97导航| 精品无码不卡视频| 性爱动态120秒| 91欧美情色| 色色五月婷| 欧美人妻另类在线| 欧美日韩 强奸乱伦| 久草精品国产蜜臀 | xxxx网站亚洲精品| 欧美久久久15P| 欧美性爱精品七区| 美女上床网站| 成人一二| 欧美熟妇精品黑人巨大一二三区| 九七色图| 日韩精品高清资源在线| 久久久一区二区三区三州| 草b在线| 欧美亚洲自拍另类人妻| 加勒比AV网| 少妇人妻好深太紧了vr91| 爱啪精品一区| 亚洲AV无码成人精品久久| 欧美手机在线综合| 五月天婷婷基地| 日本操逼无码| 久久久久ab| 强奸乱伦大香蕉网| 超碰九区| 91精品成人| 一牛影视成人片免费| 欧美激情 一区| 高凊专区人人操| 欧美日韩*字幕一区| 啊啊啊啊啊好舒服视频| 曰韩无码777| 97爱亚洲| 中文字幕精品探花视频| 内射夫妻三片| 天天综合网91入口| 韩国免费播放一级毛片| 五月婷亚洲精品天堂| 亚州五月| 日本在线15p| 超碰碰小说97| 色婷婷淫色网| 青娱乐手机日韩在线视频| 日韩精品人妻系列无码天堂| 最新欧美色网| 欧美.亚洲.另类.丝袜.制服.诱惑| 丁香五月婷婷基地| 国产精品久久成人免费| 91精品伊人久久久大香线蕉91| 91伊人久| 岛国黄| 日韩中文字幕精品一区在线| 国产偷拍网站| 岛国A V在线免费看| 女人天堂av在线播放| 国产精品96久久久久久| 性色亚洲| 果冻传媒A片麻豆熟妇人妻| 午夜福利 成人 91| 熟妇一区二区| 久艹日日日| 久久久97| 亚欧性爱无码| 少妇人妻好深太紧了vr91| 免费精品人妻一区二区三| 美国aaaaa一级黄片| 欧美成人AⅤ大片在线观看| 国产精品自在自拍视频| 搡老熟女老女人老熟妇免费视频| 欧美精品1区2区3区| 91丨九色丨熟女高潮| 五月丁香六月激情综合| 床上啊啊啊一区二区三区| 欧美日韩性感| 中文久久一区| 久久 久久国内精品亚洲| 素人伊尹大香蕉免费下载视频| 中文精品少妇天堂| 欧美东京热青青草| 91网九色蝌蚪操熟女| 日韩综合成人免费视频| 久久肏大逼| 精品国产乱码久久久久A| 亚洲精品97在线| 成人熟女区| 久久精品国产97欧美精品亚洲 | 性站 | 色五91| 玖玖爱综合| 97超碰精品成| 一区二区影视| 91在线秘 男同| 秋霞一级视频在线观看免费| 欧美黑人猛交春色影视大全| 亚洲色吧网| 嗯嗯啊好大| 97操b| 97超碰人人模人人拍人人| 秋霞无码av鲁丝片一区| 人妻少妇精品一区二区三区| 亚洲精品欧美专业| 国产9熟妇视频网站| 国产精品点击进入在线影院高清| 少妇无码av专区线| 9 9精品一区二区三区| 欧美精品久久96人妻无码| 蜜桃臀久久| 亚洲欧美高清无码| 国产日韩欧美操逼视频| 五月婷婷综合网| 啊啊啊好大好湿| 亚洲欧美在线丝袜| 国产久久av| 久久发布国产伦子伦精品| 精吧天堂| 亚洲人体视频在线观看| 色色色欧美| 狠狠图片青青草| 色妇综合网| 国产一区二区三区导航| 欧亚洲精品有视频| 亚洲第一视频 欧美风情 日韩| 久久精品国内Av熟女高清| 国产成人精品亚洲日本| 大香蕉在线免| 亚洲色综合| 无码乱人伦中文视频| 欧亚不卡| 97在线免费观看视频| 国产精品自在自拍视频| 一直超碰| 精品久久无码午夜福利| 婷婷四五区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 人妻无码久久一区二区三区免费| 久久久性爱| 黄片直播三级黄片两女一男| 国精综合一二三区影视| 日韩精品人妻| 九月丁香婷婷| 怡春苑东京热| 国产男女边吃边摸视频网站| 东北黄色电影| 亚洲欧美91| 午夜福利视频在线一区| 亚熟hd视频在线| 日韩熟女三十乱伦| 97超碰国产精品| 蜜臀AV一区二区三区| 乱伦av国产| 超碰综合色| 人妻干天天| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 久久这里只精品免费福利| 天天综合色电影| 国产日本顶级一区二区三区| 成人性爱高清视频免费看| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 色与欲影视天天看综合网| 福利伊人玖玖国产| 狠狠爱AV| 亚洲成人av电影在线| 欧美日本天堂| 日本免费专区| 亚洲青色欧美| 成人5码视频| 久操av在线| 天天操天天舔| 国产精品毛片| 国产亚洲国产超碰| 91 偷| 五月婷婷AV| 东京太热男人的天堂久久久| 色婷五月天| 1024精品在线| 欧美|91色综合| 一区二区三区国产在线播放| 99久久无色码| 蜜乳视频网站| 亚洲性少妇| 久久av成人无码免费| 国产麻豆一区二三区| 欧美成人性爱视频大全| 亚洲激情在线| 亚洲精品97在线| 国产在线视频二区| 超碰在线97国产| 国产精品成人蜜臀AV在线| 欧美视频一区二区三区| 丁香五月性| 超碰欧美| 东京热熟女亚洲视频网站| 久久人人爽爽人人爽人人片αV| 91N综合网在线| 久久久婷| 91精品国产91久久青草| 欧美日韩一干二干| 亚洲操逼视频网站| 欧美丝袜中文字幕07在线| 麻豆黄色五月天| 91丨豆花丨熟女| 91美乳| 亚洲AV噜噜狠狠网址蜜桃动漫| 91日日夜夜| 色爽爽文学| 秋霞免费无码视频日韩A片| 蜜臀无码一区二区| 亚洲 综合 欧美| 两女互慰AV高潮喷水在线观看| 久久久久921| 中文字幕在线播放2中文字幕在线观看2| 综合网亚洲| 欧美国产操逼| 久操视频免费在线观看| 日韩无码三级影院| 色色九区| 二三四区精品| 人妻激情另类| 国产AV精久久| 精品亚洲| 久久激情视频| 欧美熟妇乱码在线一区| 日韩激情中文字幕有码| 2017av无码免费无线播| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲999综合| 色综合99| www.av在线视频| 少妇色| 中文字幕-区二区三区四区视频中国| 久久露脸国产老熟女| 国产强奸91| 久草免费在线视频| 99精品久久久久久| 99啪啪视频| 婷婷五月天成人网| 99老司机精品视频在线观看| 1区2区3区视频| 精品9999| 粘花网06av视频| 99热婷婷| 亚洲精品一区二区三区在线播放| 色哟哟 日韩精品| av橘色网站| 四虎在线播放| 亚洲欧美日韩有码| 五月婷丁香| 殴美大黄片| 操逼国产免费| 中文字幕一区二区无码成人| 黑人粗大V S日韩女优视频| 91网18| 婷婷成人久久久精品| 国产精品成人无码av| 久久毛卡| 99国产精品视频尤物| 亚洲九九九| 熟妇女伦乱视频| 天天操福利视频综合网站| 丝袜视频一区二区在线播放国产中文| 欧美制服另类丝袜| 天堂精品在线| 日本天天操| 五月天婷精品激情| 色综合av男人天堂| 日本日逼高清| 日本αv| 韩国免费播放一级毛片| 精品少妇999| 欧美后入式| 久久中文字幕女同性恋一区| 国产乱码久久久久久| 人妻无码久久一区二区三区免费| 江都AV在线| 色综合中文字幕不卡| 亚州宗合另类| 91色综| 日韩美一区| www四虎| 五月丁香狠狠爱| 婷婷五月色| 激情婷婷丁香| 亚州精人品大香蕉| 五月丁香成人网| 久久人妻视频| 亚洲日本加勒比在线| 欧美毛片在线网| 尹人大香蕉视频在线| 一色网男人的天堂| 久久天天摸| 美女露胸露尿口| 亚洲综合有玛| 精品九九九九九九九九九| 九一综合网| 亚洲青色欧美| 夜夜操夜夜高潮夜夜爽国产精品区| 亚洲美女黄色| 97操碰| 肥佬影院91| 成人国产二区三区在线,男女精品。| 2020中文字幕在线观看| 丰满人妻一区二区三区免费 | 欧美性爱一区二区三区四区| 久久精品老司| 日本最新1区2区3区| 好色美女九七第一页| 99精品丰满人妻无码| 久久久久久久久9| 国产熟女精品一区二区| 亚洲啪啪综合?v一区综合精品区| 精品国模无码| 日韩欧美一级特黄大片| 丁香五月婷婷啪啪| www.久久| 免费9 1久久| 97超色| 日韩啪啪视频| 欧美精品久久96人妻无码| 在线国产福利网址导航| 综合久久婷婷| 91在线限制级| 亚洲视频二区 | 97在线免费看视频| 久久黄片国产一区二区| 久久亚洲精品成人av| 日操粉逼逼| 亚洲少妇色| 欧美国产成人在线| 亚洲欧美洲综合| 97碰| av天堂5| 天天淫人人妻日日色| 大香蕉欧美国产日韩高潮| 超碰在线综合97| 亚洲中文字幕熟女| 亚洲av影院在线观看| 99热精品在线| 青青伊人加勒比海| 97天堂| a级成人毛片免费视频高清| 人人摸人人干| 亚洲综合69| 黑人猛交| 精品国产精品一区二区| 日本三级人妻a人妻一在线| 污电影在线观看| 天天上日日上日韩精品| 国产吞精a级片激情电影| 亚洲欧美九九| 亚洲精品蜜桃久久久| 内射夫妻三片| 91超级碰碰| 在线亚洲丝袜视频网站| 3PAV乱伦视频| 91操碰| 国产美女口爆吞精| 测评在线观看AV| 国产亚洲综合欧美一区| 亚洲欧美setu| 欧美日韩亚洲天堂| 黄色片大香蕉| 性性久久| 麻豆国产精品午夜视频| 午夜福利成人免费视频| 欧美天堂超碰97| 毛片久久| 欧美视频一区二区在线| 4141514逼喷水三级片| 欧美性爱一区二区三区| 色情乱伦AV| 人人污日韩一区二区| 97久久国产| 日韩在线观看中文字幕视频| 亚洲综合夜色| 老熟女乱伦片| 亚洲欧美一区二区三区在钱蜜桃 | 亚洲色婷婷综合久久久久中文| 国产亚洲性生活视频播放| 97精品一二区| 我要色综合网| 91美女丝袜诱惑视频| 4虎在线视频| 日本三级一区二区 在线| 第二页中文字幕| 91狠狠综| 开心激情婷婷| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 欧美黑人精品一区二区| 狠狠2050在线观看| 亚洲成aⅴ人片不卡无码| 久久综合久久综合人久久夜精品| 一区二区三| 91久久久久免| 午夜噜噜噜| 狠狠色丁香| 欧美色干| 免费观看欧美日韩操逼视频| 白嫩91在线亚洲| 色丁香久久| 国产又粗又长又大的视频| 日本福利二区视频| 色综合超碰超| 青草青草久热| 9久9久| 亚洲高清在线| www.人人摸在线视频| 精品婷婷| 91成人无码| 青娱乐 成人娱乐在线| www亚洲欧美| 91超碰人人| www.99色| 久草在| 久操凹凸视频| 男女性扦B| 999岛国大片| 一二三区精品视频| 久热超碰| 日本阿v天堂在线观看| 曰本精品久久久| 国产日韩精品无码去免费专区国产| 91丝袜美女国产| 九九热AV| 动漫片子网站3黄| 国产精品麻豆免费视频| 久久免费看高潮毛片韩国| 久久无码一区二区二三区性色| 欧美综合在线91| 激情接吻视频久久久久久| 蜜臀久久99精品久久久久久成人小说 | 亚洲色图加勒比| 无码国产Av| 国产一区二区精品在线视频| 婷婷丁香五月激情啪啪| 老熟女网站| 日本 免费 一区二区三区 久久香蕉 | 18禁精品网站在线看| 2019亚洲男人天堂| 99re视频在线观看这里只有精品| 亚洲欧美第一页| 伊人久久久日韩一区| 国产精品婬乱一级毛片彝族| 精品国产乱码久久久久久免费| 国产精品麻豆成人AV艾秋| 一区AV| 青青三级视频| 思思热在线视频精品| 国产婷婷综合在线观看| 最新9久久久9免费视频| 久久这里只精品99re66图| 亚洲综合97| 亚洲男人的天堂网| 五月天婷婷影院| 国产成年女黄特黄| 亚洲色图第一页| 九九热免费国产视频婷婷伊人| 最新三级网址| 亚洲丰满很很操| 婷色五月天| 最新亚洲人成网站在线影院| 夜夜黄| 91网站18在线| 欧美午夜一区二区三区| 五月丁香激情四射| 男人天堂免费| 99999久久久久9国产精品| 日日噜噜夜夜狠狠视频无| 天天欧美| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 打av高清| www成人啪啪18秘 免费| 亚州熟女乱伦| 99少妇| 999 久久久| 啊a一区在线| 逼逼逼逼操操操操操操操操操午夜剧场| 四方色播| 九九人妻| 人妻人人澡人人爽人人| 久久老子无码午夜伦不卡| 久久精品国产亚洲粉嫩| 屌妞视频久久久久久久| 99热久| 99精品久久久久久久婷婷| 成人小说另类在线| 亚洲欧美碰碰| 97一区二区三区视频| 久99久视频精选| 熟女视频久久| 国产理论视频在线播放| 国产免费一区2区3区| 美国三级日本三级久久99| 激情图片亚洲色图| 天天舔天天 | 69久久久久久久久久久久久| 国产乱人伦AVA麻豆软件.| A级片一区| 亚洲同性aV综合| 99九九久久| 久久精品一区二区三区不卡| 欧美亚洲中文字幕| 久久一区二区高清免费| 中国操逼无码| 成人性交免费视屏| 9 1超碰九色| 美女91色黄18| 精品美女少妇一区二区三区| 亚洲国产综合久久久性感熟妇| 欧美视频中文字幕区| 东京热男人的天堂精品| 99e久久国产精品| 日本一级特级毛片视频| 超碰99re| 黄页网站成人免费| 九九人妻| 超碰精品人妻狠狠干| 十八禁一区二区无码观看| 久久夜色一区二区| 特级大荫道BBwBBwBBW| 日本美女性生活久久久久久久| 免费夜夜爱黄色视频毛片| a在线观看| 国产又大又硬又长又粗| 91三级理论片播放器| a v网站在线播放| 日韩久久艹| 国产精品久久久啊| 天天综合~91| 亚洲图片欧美91N| 成人八戒网站| 美中韩AV综合网| 爱丝福利| 亚洲一区二区三区四区视频| 天天干一区二区| 黄骗免费网站| 性欧美另类高清| 凌辱美少妇久久aV| 无码又爽又硬又激情免费视频| 青青草黑寡妇男人天堂| av中亚| 亚洲一区二区麻豆影院| 欧美色性情| 黄色二级片网站| 亚洲最大的综合性av| 欧美色图私拍91| 日韩欧洲操屄视频| 99久久com免费视频′| 五月婷婷六月丁香网址| 成年人黄色视频免费| 欧美性爱第一页久久| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 日本一道在线播放高清| 日本欧美中文字幕| 性猛交| 欧美性爱综合,免费| 黄色人人| 亚洲精品中文字幕一区在线视频| 亚洲一本色道中文无码aV天美| 國產尤物AV尤物在線觀看| 中文字幕在线高清男人的天堂| 性爱综合网| 任我爽视频在线观看| 男人久久精品| 久久 久久国内精品亚洲| 久艹免费| 91视频精品| 日日操丁香五月天| 亚洲成av人片色午夜乱码| 国产精品色色| 亚洲综合影片| 热热色国产一二区AV| 男人的天堂一区| 欧美日韩午夜精品一区二区三区 | 色色色日本| 天天射天天| 春色校园综合网| 国产熟妇一区二区| 青青操视频在线| 九九九成人| 超碰欧美| 中文字幕五月婷婷免费| 欧美黑人精品一区二区| 日本狠狠干| 艳尻美人妻| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | www久| 97精品一二区| 日韩中文9| 麻豆久久一区二区三区| 五月丁香拍拍激情综合三级| 天天操夜夜操| 男人网站婷婷| 婷婷丁香人妻 | 蜜臀久久99精品久久久久久成人小说| 久草新在线| 亚洲AV成人无码一二三久久| 无码国产精品久久久久| 婷婷91| 中文字幕片| 亚洲人精品久久久| 大肥女高潮bbwbbwhd视频| 日本免费人成视频播放120秒| 欧美国产日韩高清在线| 宗合情欲网| 青青草综合在线| 亚川综合视频| 亚洲老熟妇xxx| 超碰这里只有精品| 超碰九7免费| 亚洲成?V人片在线观看福利| 久久久久久久久久久久久久9999| 久久久久久久九九九九九九| 欧美中文字幕一区 | 伊人嫩草| 国产欧美在线观看免费观看| 欧美精品1区2区3区| 日韩在线97| 久久久亚洲| 十八禁视频网站| 韩国一级做A片免费的| 国产精品久久久久久久无码AV| aaaa黄片| 日日狠狠久久偷偷色综合免费| 小骚逼被操的爽不爽| 强奸a片网| 91天堂视频| 超碰2017| 日本韩欧美在线播放a| 91麻豆天美国产| 夜色91| 亚洲日韩精品在线播放| 亚洲凸凹超碰成人| 牛牛操视频逼| 亚洲一区日韩| 亚洲性感丝袜诱惑在线观看| 日韩三级在线观看网站| 久久精品一区二区三区不卡| 久伊人网78| 天天躁日日躁AAA片李宗瑞| 精品人妻二区三区| 欧美色图亚洲激情| 人妻中文在线| 福利天天都操| 欧美日韩天堂| 性色中出| av中亚| 1024香蕉视频| 欧美偷拍| 熟女突然公开看18禁影片 | 五月天激情小说| 久久精品高清无码一区| 国产日产精品久久快鸭的功能介绍| 国产老熟女|