国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

考勤管理系統(tǒng)源碼:JSP+Servlet+MySQL實(shí)戰(zhàn)解析

考勤管理系統(tǒng)源碼:JSP+Servlet+MySQL實(shí)戰(zhàn)解析 簡(jiǎn)介面向中小型團(tuán)隊(duì)與高校實(shí)訓(xùn)場(chǎng)景的 Java 考勤管理系統(tǒng)完整源碼包適合具備 Java Web 基礎(chǔ)、希望掌握 Spring 風(fēng)格業(yè)務(wù)開發(fā)或畢業(yè)設(shè)計(jì)復(fù)用的學(xué)習(xí)者。包內(nèi)按業(yè)務(wù)模塊劃分覆蓋員工管理、考勤打卡、請(qǐng)假/會(huì)議申請(qǐng)、固定資產(chǎn)與任務(wù)調(diào)度等常見功能壓縮包共 2000 個(gè)文件約 55MB以 1336 個(gè) Markdown 文檔、500 個(gè) JavaScript 文件、67 個(gè) Java 文件及 JSON/XML 配置為主文檔與配置占比高便于對(duì)照閱讀、按需檢索和二次開發(fā)。已有 170 人學(xué)習(xí)下載。其中包含控制器、服務(wù)、實(shí)體與工具類等完整分層主線功能覆蓋考勤申請(qǐng)、會(huì)議與員工管理。借助該源碼可快速理解考勤業(yè)務(wù)表設(shè)計(jì)、接口分層、審批流轉(zhuǎn)與前后端交互方式尤其適合課程設(shè)計(jì)、項(xiàng)目實(shí)訓(xùn)或企業(yè)內(nèi)部門禁考勤需求的原型搭建Java、XML、SQL 等關(guān)鍵文件可直接導(dǎo)入 IDE 運(yùn)行調(diào)試Markdown 文檔輔助梳理實(shí)現(xiàn)思路。1. 考勤管理系統(tǒng)源碼學(xué)生項(xiàng)目里最容易被低估的 Java 練手資源做 Java 課程設(shè)計(jì)或者畢業(yè)設(shè)計(jì)的人十有八九會(huì)撞上考勤系統(tǒng)這個(gè)題目。這份源碼就是一個(gè)典型的 Java Web 考勤管理系統(tǒng)基于 JSP Servlet MySQL 實(shí)現(xiàn)包含員工管理、部門管理、上下班打卡、考勤統(tǒng)計(jì)和月度報(bào)表導(dǎo)出幾個(gè)模塊。它不像商城項(xiàng)目那么繞但足夠把 Java Web 開發(fā)里最核心的東西串一遍數(shù)據(jù)庫(kù)設(shè)計(jì)、會(huì)話管理、請(qǐng)求轉(zhuǎn)發(fā)、SQL 聚合統(tǒng)計(jì)。適合兩類人一類是急著交課程設(shè)計(jì)的學(xué)生拿回去改改就能跑另一類是剛學(xué)完 Java 基礎(chǔ)、想找一個(gè)完整項(xiàng)目練手的人拆開源碼看一遍比看十篇教程都管用。2. 技術(shù)棧與模塊拆解JSP Servlet MySQL 這條老鏈路為什么還在用2.1 項(xiàng)目形態(tài)與選型理由先說(shuō)項(xiàng)目形態(tài)。這份源碼是典型的 Java Web 三層結(jié)構(gòu)JSP 負(fù)責(zé)頁(yè)面展示Servlet 處理請(qǐng)求轉(zhuǎn)發(fā)JDBC 訪問(wèn) MySQL 數(shù)據(jù)庫(kù)。沒(méi)有引入 Spring Boot也沒(méi)有用 MyBatis整條鏈路全是原生 API依賴只有 Tomcat 和 MySQL 驅(qū)動(dòng)兩個(gè) jar 包。很多讀者拿到手第一反應(yīng)是這太老了。我一般會(huì)勸一句老鏈路恰恰是學(xué)習(xí)成本最低的鏈路。Spring Boot 幫你自動(dòng)配置了太多東西出了問(wèn)題反而不容易定位而 JSP Servlet 的每一行代碼都是顯式的請(qǐng)求怎么進(jìn)來(lái)、怎么查庫(kù)、怎么把結(jié)果塞進(jìn) request 再轉(zhuǎn)發(fā)到頁(yè)面全程沒(méi)有黑匣子。選型理由就一條這份資源的定位是能跑、能改、能看懂不是生產(chǎn)級(jí)高并發(fā)。用原生 Servlet 的好處是依賴少只要 Tomcat 起來(lái)了就能跑不用跟 Maven 倉(cāng)庫(kù)里的版本沖突較勁。常見做法是登錄校驗(yàn)寫在 Filter 里業(yè)務(wù)邏輯寫在 Servlet 的 doGet/doPost 里數(shù)據(jù)庫(kù)訪問(wèn)單獨(dú)抽出 DBUtil 工具類。后面章節(jié)的代碼走讀會(huì)按這個(gè)結(jié)構(gòu)展開。2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)三張核心表的字段與關(guān)聯(lián)考勤系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)一般圍繞三張表展開員工表、部門表、考勤記錄表。員工表掛在部門表下面考勤記錄表引用員工表的主鍵。這個(gè)資源里常見的建表 SQL 大概是這樣的CREATE DATABASE attendance DEFAULT CHARACTER SET utf8mb4; USE attendance; CREATE TABLE dept ( id INT PRIMARY KEY AUTO_INCREMENT, dept_name VARCHAR(50) NOT NULL ); CREATE TABLE employee ( id INT PRIMARY KEY AUTO_INCREMENT, dept_id INT NOT NULL, emp_no VARCHAR(20) NOT NULL UNIQUE, emp_name VARCHAR(30) NOT NULL, password VARCHAR(32) NOT NULL, role TINYINT DEFAULT 1 COMMENT 1-普通員工 0-管理員, FOREIGN KEY (dept_id) REFERENCES dept(id) ); CREATE TABLE attendance_record ( id INT PRIMARY KEY AUTO_INCREMENT, emp_id INT NOT NULL, work_date DATE NOT NULL, check_in TIME, check_out TIME, status VARCHAR(10) DEFAULT 正常, UNIQUE KEY uk_emp_date (emp_id, work_date), FOREIGN KEY (emp_id) REFERENCES employee(id) );這三張表就是整個(gè)系統(tǒng)的地基。注意兩個(gè)設(shè)計(jì)細(xì)節(jié)一是 attendance_record 里加了唯一索引 (emp_id, work_date)目的是防止同一個(gè)人同一天插入兩條打卡記錄二是 status 字段做了冗余存儲(chǔ)后續(xù)統(tǒng)計(jì)直接按狀態(tài)分組不用每次用上班和下班時(shí)間現(xiàn)算。如果把這三張表畫成關(guān)系圖就是典型的部門 1 對(duì)多 員工、員工 1 對(duì)多 考勤記錄。部門表是獨(dú)立的員工表通過(guò) dept_id 關(guān)聯(lián)部門考勤記錄表通過(guò) emp_id 關(guān)聯(lián)員工。查詢員工考勤的時(shí)候只需要一次 JOIN 就能把員工姓名和部門名稱帶上這也是后面統(tǒng)計(jì) SQL 能寫短的前提。初始化數(shù)據(jù)也是常見的一個(gè)坑。很多版本自帶的初始化腳本只建表不插數(shù)據(jù)登錄頁(yè)沒(méi)有默認(rèn)賬號(hào)。建議手動(dòng)插入一條管理員數(shù)據(jù)工號(hào) admin、密碼 admin、role 設(shè)為 0否則第一次登錄會(huì)卡在賬號(hào)不存在。2.3 角色權(quán)限管理員與普通員工的兩套菜單邏輯權(quán)限這塊原項(xiàng)目沒(méi)有引入權(quán)限框架就是用最簡(jiǎn)單的方式employee 表里 role 字段區(qū)分管理員和普通員工登錄成功之后把角色值存進(jìn) Session。管理員能訪問(wèn)員工管理、部門管理、考勤統(tǒng)計(jì)這些路徑普通員工只能看到自己的打卡入口和個(gè)人考勤記錄。實(shí)現(xiàn)上常見做法是寫一個(gè)權(quán)限攔截的 Filter在請(qǐng)求到達(dá) Servlet 之前先檢查 Session 里的角色// AuthFilter.java 權(quán)限攔截核心邏輯 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpSession session request.getSession(false); // 未登錄一律踢回登錄頁(yè) if (session null || session.getAttribute(user) null) { resp.sendRedirect(request.getContextPath() /login.jsp); return; } // 已登錄但角色不匹配提示無(wú)權(quán)訪問(wèn) String role (String) session.getAttribute(role); String uri request.getRequestURI(); if (uri.contains(/admin/) !0.equals(role)) { request.setAttribute(msg, 沒(méi)有管理員權(quán)限); request.getRequestDispatcher(/error.jsp).forward(req, resp); return; } chain.doFilter(req, resp); }這段 Filter 的邏輯說(shuō)明第一層判斷只解決有沒(méi)有登錄第二層判斷解決登錄了但能不能進(jìn)管理頁(yè)面。如果把這兩層合并成一個(gè) if就會(huì)出現(xiàn)普通員工直接輸入管理頁(yè)面地址也能進(jìn)去的漏洞。參數(shù)說(shuō)明Session 里存的是 user 對(duì)象和 role 字符串role 用 String 而不是 int是為了和頁(yè)面 JSTL 標(biāo)簽里的比較寫法對(duì)齊。改成 int 也行但所有比較的地方都要同步改很容易漏。另一個(gè)容易踩的點(diǎn)是 request.getSession(false) 里面的 false它表示拿不到 Session 時(shí)返回 null 而不是新建一個(gè)配合后面的 null 判斷正好覆蓋未登錄場(chǎng)景如果誤寫成 getSession(true)匿名用戶也會(huì)被強(qiáng)制創(chuàng)建 Session攔截邏輯就廢了。3. 本地跑起來(lái)JDK、MySQL、Tomcat 三件套的配置順序3.1 環(huán)境版本怎么選先把環(huán)境定下來(lái)再談導(dǎo)入。這類老項(xiàng)目對(duì)版本敏感版本不匹配的翻車現(xiàn)場(chǎng)我見過(guò)太多給你一個(gè)不會(huì)踩雷的組合JDK 8不要拿 JDK 11 或更高跑老項(xiàng)目JSP 編譯和某些 JDBC 驅(qū)動(dòng)在 JDK 9 之后行為有變化MySQL 5.7 或 8.08.0 需要改驅(qū)動(dòng)類名和時(shí)區(qū)參數(shù)細(xì)節(jié)見 3.3Tomcat 8.5兼容性最好Tomcat 9 對(duì) JSP 的 EL 表達(dá)式支持有輕微差異IDE 用 Eclipse 或 IntelliJ IDEA 都行關(guān)鍵是確認(rèn)項(xiàng)目是什么工程結(jié)構(gòu)順序上先裝 JDK再裝 MySQL最后解壓 Tomcat。裝完 Tomcat 先別急著往里面塞項(xiàng)目先啟動(dòng)一次確認(rèn) 8080 端口能正常訪問(wèn)。這里有一個(gè)新手常犯的錯(cuò)誤以為 Tomcat 一定要單獨(dú)裝。其實(shí)用 IDE 內(nèi)置的 Tomcat 插件跑更方便控制臺(tái)日志和斷點(diǎn)調(diào)試都更順手。版本選型的原則就一句話和項(xiàng)目里 lib 目錄下 jar 包的編譯版本對(duì)齊。你可以在項(xiàng)目里找到 mysql-connector-java 的 jar看它支持的最低 JDK 版本再?zèng)Q定裝哪個(gè) JDK。JDK 和 Tomcat 都是用前先查版本很多詭異報(bào)錯(cuò)都是版本不匹配引發(fā)。3.2 導(dǎo)入工程與初始化數(shù)據(jù)庫(kù)拿到 zip 解壓之后常見做法是把整個(gè)文件夾拷到 Tomcat 的 webapps 目錄下直接運(yùn)行但我不推薦這么干。更好的方式是導(dǎo)入 IDE用 IDE 內(nèi)置的 Tomcat 插件跑能看到控制臺(tái)日志和斷點(diǎn)。初始化數(shù)據(jù)庫(kù)的步驟固定三步# 第一步登錄 MySQL mysql -uroot -p # 第二步執(zhí)行建庫(kù)建表腳本腳本文件一般在 db 或 sql 目錄下 source /your/path/attendance.sql; # 第三步驗(yàn)證表是否創(chuàng)建成功 USE attendance; SHOW TABLES;執(zhí)行完這三步數(shù)據(jù)庫(kù)側(cè)就緒。注意 source 命令后面要寫文件的絕對(duì)路徑別用相對(duì)路徑否則會(huì)報(bào) file not found。導(dǎo)入 IDE 的時(shí)候有一個(gè)常見的坑項(xiàng)目如果是 Eclipse 的 Dynamic Web Project 結(jié)構(gòu)直接 File - Open 打開目錄即可如果拿到手是一個(gè)普通文件夾沒(méi)有 .project 文件要先轉(zhuǎn)成 Maven 工程或者手動(dòng)勾選 Web Facet否則 IDE 不認(rèn)它是 Web 項(xiàng)目運(yùn)行按鈕是灰的。我一般會(huì)先看一眼工程根目錄下有沒(méi)有 pom.xml。有 pom.xml 就用 Maven 方式導(dǎo)入沒(méi)有就用純 Web 工程方式導(dǎo)入。兩種方式對(duì)應(yīng)的啟動(dòng)按鈕不一樣混淆了會(huì)在后面部署階段報(bào)各種奇怪錯(cuò)誤。3.3 數(shù)據(jù)源配置jdbc.properties 逐項(xiàng)說(shuō)明老項(xiàng)目的數(shù)據(jù)源配置通常寫在 src 目錄下的 jdbc.properties 或 db.properties 里。打開之后你會(huì)看到四五行配置每一行都別亂改jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/attendance?useUnicodetruecharacterEncodingutf8 jdbc.usernameroot jdbc.password123456逐項(xiàng)說(shuō)明jdbc.driverMySQL 5.7 用 com.mysql.jdbc.DriverMySQL 8.0 必須改成 com.mysql.cj.jdbc.Driverjdbc.urllocalhost 換成遠(yuǎn)程數(shù)據(jù)庫(kù) IP 就是連遠(yuǎn)程庫(kù)characterEncodingutf8 是保中文不亂碼的關(guān)鍵參數(shù)jdbc.username / jdbc.password按本地 MySQL 的實(shí)際賬號(hào)改8.0 如果因?yàn)槊艽a加密方式導(dǎo)致連接失敗要在 url 后面追加 serverTimezoneAsia/Shanghai改完配置之后重啟 Tomcat 讓配置重新加載。驗(yàn)證配置是否生效的方式很簡(jiǎn)單隨便打開一個(gè)需要查庫(kù)的頁(yè)面如果頁(yè)面能正常顯示數(shù)據(jù)列表說(shuō)明數(shù)據(jù)源通了如果報(bào) SQLException 或 Connection refused看 5.1 的排查思路。還有一個(gè)細(xì)節(jié)jdbc.password 明文寫在 properties 文件里是課程設(shè)計(jì)項(xiàng)目的常態(tài)別因?yàn)檫@個(gè)覺(jué)得項(xiàng)目有問(wèn)題。生產(chǎn)環(huán)境用加密或環(huán)境變量那是另一個(gè)話題。但要注意 properties 文件保存時(shí)編碼必須是 ASCII 或 UTF-8 without BOM否則中文注釋會(huì)變成亂碼甚至導(dǎo)致解析失敗。3.4 第一個(gè)冒煙測(cè)試從登錄頁(yè)到主界面數(shù)據(jù)庫(kù)初始化完、Tomcat 啟動(dòng)成功之后先做一個(gè)冒煙測(cè)試打開瀏覽器訪問(wèn) http://localhost:8080/項(xiàng)目名/login.jsp用默認(rèn)賬號(hào)登錄看能不能正常跳轉(zhuǎn)到主界面。如果項(xiàng)目名帶了中文或者空格URL 里的路徑會(huì)出問(wèn)題建議把 webapps 下的項(xiàng)目文件夾重命名成純英文比如 attendance。冒煙測(cè)試通過(guò)之后再逐個(gè)點(diǎn)一遍菜單員工管理、部門管理、打卡、統(tǒng)計(jì)。這一步主要是確認(rèn)每個(gè) Servlet 的路由映射有沒(méi)有配全。很多老項(xiàng)目的 web.xml 里配置了一堆 servlet-mapping少配一條就會(huì)在點(diǎn)某個(gè)菜單時(shí) 404。我用一個(gè)笨辦法快速確認(rèn)路由把 web.xml 打開把每個(gè) url-pattern 和對(duì)應(yīng) Servlet 類名抄在一張紙上然后逐個(gè)訪問(wèn)。抄一遍下來(lái)整個(gè)項(xiàng)目的請(qǐng)求流轉(zhuǎn)關(guān)系就清楚了比反復(fù)點(diǎn)頁(yè)面快得多。提示如果冒煙測(cè)試階段就報(bào) 404先別懷疑代碼優(yōu)先檢查訪問(wèn)路徑的大小寫。JSP 文件名和 Servlet 映射都是區(qū)分大小寫的login.jsp 寫成 Login.jsp 直接 404。4. 核心代碼走讀登錄、打卡與統(tǒng)計(jì) SQL 的三個(gè)落點(diǎn)4.1 登錄邏輯Session 與密碼校驗(yàn)登錄是第一個(gè)值得逐行看的模塊。常見寫法是 LoginServlet 接收頁(yè)面提交的 emp_no 和 password拿著這兩個(gè)參數(shù)去查 employee 表查到就把用戶對(duì)象放進(jìn) Session。// LoginServlet.java 核心校驗(yàn)邏輯 String empNo request.getParameter(empNo); String pwd request.getParameter(password); // 查詢用戶注意這里要用 PreparedStatement 而不是拼接 SQL String sql SELECT * FROM employee WHERE emp_no? AND password?; PreparedStatement ps conn.prepareStatement(sql); ps.setString(1, empNo); ps.setString(2, pwd); ResultSet rs ps.executeQuery(); if (rs.next()) { // 登錄成功user 對(duì)象和 role 同時(shí)入 Session request.getSession().setAttribute(user, empNo); request.getSession().setAttribute(role, rs.getString(role)); resp.sendRedirect(request.getContextPath() /index.jsp); } else { // 登錄失敗回到登錄頁(yè)并攜帶錯(cuò)誤提示 request.setAttribute(msg, 工號(hào)或密碼錯(cuò)誤); request.getRequestDispatcher(/login.jsp).forward(req, resp); }邏輯說(shuō)明整個(gè)登錄成敗就取決于 rs.next() 是否為 true。這里有兩個(gè)容易忽略的細(xì)節(jié)。第一個(gè)細(xì)節(jié)是請(qǐng)求轉(zhuǎn)發(fā)和重定向的區(qū)別。登錄失敗用 forward 回到 login.jsprequest 里的 msg 屬性還能帶上登錄頁(yè)可以顯示工號(hào)或密碼錯(cuò)誤登錄成功用 sendRedirect 跳到 index.jsp讓瀏覽器地址欄變成 index.jsp這樣刷新頁(yè)面不會(huì)重復(fù)提交表單。如果把兩者搞反會(huì)出現(xiàn)刷新一次就重復(fù)登錄一次的怪現(xiàn)象。第二個(gè)細(xì)節(jié)是密碼校驗(yàn)。PreparedStatement 的 ? 占位符天然防 SQL 注入老項(xiàng)目里如果看到字符串拼接的查詢語(yǔ)句建議順手改掉。employee 表里 password 字段存的是明文課程設(shè)計(jì)階段不用糾結(jié)生產(chǎn)環(huán)境必須做加鹽哈希處理。參數(shù)說(shuō)明empNo 和 password 的取值來(lái)自 request.getParameter這兩個(gè)參數(shù)名要和 login.jsp 表單里的 name 屬性完全一致差一個(gè)字母就取到 null。老項(xiàng)目里最常見的登錄失敗原因不是密碼錯(cuò)而是參數(shù)名拼寫不一致。4.2 上下班打卡時(shí)間判定與去重打卡模塊是考勤系統(tǒng)的靈魂。常見做法是同一個(gè) PunchServlet 處理上班和下班兩個(gè)動(dòng)作通過(guò)頁(yè)面按鈕區(qū)分。時(shí)間判定邏輯是這樣的// PunchServlet.java 打卡時(shí)間判定 Timestamp now new Timestamp(System.currentTimeMillis()); java.sql.Date today new java.sql.Date(now.getTime()); // 先查今天有沒(méi)有打卡記錄 String querySql SELECT check_in, check_out FROM attendance_record WHERE emp_id? AND work_date?; PreparedStatement ps conn.prepareStatement(querySql); ps.setInt(1, empId); ps.setDate(2, today); ResultSet rs ps.executeQuery(); if (!rs.next()) { // 今天第一次打卡記為上班時(shí)間 insertSql INSERT INTO attendance_record(emp_id, work_date, check_in) VALUES(?,?,?); } else if (rs.getTime(check_in) ! null rs.getTime(check_out) null) { // 已有上班時(shí)間但沒(méi)有下班時(shí)間補(bǔ)下班時(shí)間 updateSql UPDATE attendance_record SET check_out? WHERE emp_id? AND work_date?; } else { // 上下班都打過(guò)了提示重復(fù)打卡 }邏輯說(shuō)明這個(gè)分支結(jié)構(gòu)把一天內(nèi)的打卡行為拆成三種狀態(tài)——沒(méi)打過(guò)、打了上班沒(méi)打下班、都打過(guò)了。注意 check_out 為 NULL 的判斷用 rs.getTime(check_out) null而不是 rs.getString(...).equals()因?yàn)閿?shù)據(jù)庫(kù) TIME 字段為空時(shí)是 NULL 而不是空字符串。這是新人最容易寫錯(cuò)的地方寫錯(cuò)了會(huì)導(dǎo)致已打過(guò)的下班卡被重復(fù)覆蓋。打卡去重靠的是 2.2 里那張表的唯一索引 uk_emp_date。即使代碼邏輯漏了判斷數(shù)據(jù)庫(kù)層也會(huì)攔住重復(fù)插入并拋 DuplicateKeyException。這個(gè)設(shè)計(jì)就是典型的前后端雙保險(xiǎn)代碼判斷先攔一次數(shù)據(jù)庫(kù)唯一索引兜底。如果資源里的代碼沒(méi)有這個(gè)唯一索引建議自己加上。參數(shù)說(shuō)明System.currentTimeMillis() 取的是服務(wù)器時(shí)間。如果你的應(yīng)用部署在云服務(wù)器上而用戶在北京時(shí)區(qū)不一致會(huì)導(dǎo)致打卡時(shí)間差 8 小時(shí)解決辦法見 5.3。另外 empId 這個(gè)變量來(lái)自登錄 Session 里的用戶信息不要從前端傳過(guò)來(lái)否則任何用戶都能偽造別人的打卡記錄。4.3 月度統(tǒng)計(jì)一條 SQL 出報(bào)表考勤統(tǒng)計(jì)頁(yè)面是管理員最常用的模塊。常見做法是選一個(gè)月度然后按員工分組統(tǒng)計(jì)遲到、早退、正常天數(shù)SELECT e.emp_no AS 工號(hào), e.emp_name AS 姓名, COUNT(*) AS 出勤天數(shù), SUM(CASE WHEN r.check_in 09:00:00 THEN 1 ELSE 0 END) AS 遲到天數(shù), SUM(CASE WHEN r.check_out 18:00:00 THEN 1 ELSE 0 END) AS 早退天數(shù) FROM attendance_record r JOIN employee e ON r.emp_id e.id WHERE DATE_FORMAT(r.work_date, %Y-%m) ? GROUP BY e.id, e.emp_no, e.emp_name;這個(gè) SQL 的兩個(gè)要點(diǎn)一是 DATE_FORMAT 把日期字段格式化成 YYYY-MM 和傳入?yún)?shù)做匹配注意如果 work_date 列有索引DATE_FORMAT 會(huì)導(dǎo)致索引失效數(shù)據(jù)量大了之后建議改成范圍查詢 BETWEEN 2024-01-01 AND 2024-01-31二是 SUM(CASE WHEN ...) 這種寫法把遲到和早退天數(shù)一次算完避免多次掃表。參數(shù)說(shuō)明遲到閾值 09:00:00 和早退閾值 18:00:00 是寫死的不同公司上下班時(shí)間不同改這兩個(gè)字符串即可但格式必須是 HH:mm:ss少一位冒號(hào)都會(huì)導(dǎo)致比較失效。分組這里有個(gè)細(xì)節(jié)GROUP BY 后面寫的是 e.id, e.emp_no, e.emp_name 三個(gè)字段。理論上按 e.id 分組就夠了但因?yàn)?SELECT 里查了 emp_no 和 emp_nameMySQL 在 ONLY_FULL_GROUP_BY 模式下要求這些字段都出現(xiàn)在 GROUP BY 里否則直接報(bào)錯(cuò)。很多新手把 GROUP BY 縮寫成只按 e.id 分組然后在別人的機(jī)器上能跑、自己機(jī)器上報(bào)錯(cuò)就是 MySQL 的 sql_mode 配置不同導(dǎo)致的。統(tǒng)計(jì)結(jié)果在頁(yè)面上的展示常見做法是循環(huán) ResultSet 拼 HTML 表格或者用 JSTL 標(biāo)簽遍歷 List。如果資源里用的是后者你會(huì)發(fā)現(xiàn)代碼量明顯更少這也是 JSP 頁(yè)面里比 scriptlet 更推薦的寫法。5. 避坑排查數(shù)據(jù)庫(kù)連不上、亂碼、時(shí)間錯(cuò)位的五個(gè)現(xiàn)場(chǎng)老項(xiàng)目跑不起來(lái)九成問(wèn)題出在環(huán)境配置而不是代碼本身。我把這類考勤系統(tǒng)最常見的五個(gè)報(bào)錯(cuò)現(xiàn)場(chǎng)整理出來(lái)每個(gè)都按現(xiàn)象、原因、解決給出處理步驟照著排查比瞎試快得多。5.1 現(xiàn)象一啟動(dòng) Tomcat 報(bào) ClassNotFoundException現(xiàn)象第一次啟動(dòng) Tomcat 或訪問(wèn)任意頁(yè)面時(shí)控制臺(tái)報(bào) java.lang.ClassNotFoundException: com.mysql.jdbc.Driver緊接著是一大串 Caused by最后頁(yè)面顯示 500。報(bào)錯(cuò)位置通常定位在 DBUtil 工具類的靜態(tài)代碼塊里 Class.forName(driver) 那一行。原因MySQL 驅(qū)動(dòng) jar 沒(méi)有放進(jìn) WebContent/WEB-INF/lib 目錄。IDE 的 build path 里加了 jar編譯能通過(guò)但 Tomcat 運(yùn)行時(shí)加載的是 WEB-INF/lib 下的 jar兩邊不一致就會(huì)出現(xiàn)編譯過(guò)、運(yùn)行炸的迷惑現(xiàn)象。解決分三步走。第一步確認(rèn) lib 目錄下有沒(méi)有 mysql-connector-java 的 jar沒(méi)有就下載對(duì)應(yīng)版本放進(jìn)去第二步右鍵項(xiàng)目 Clean讓 IDE 重新打包部署第三步檢查 Project Structure 里的 Artifacts 配置確認(rèn) lib 目錄被標(biāo)記為 jar 目錄。多數(shù)情況做完第一步就好后兩步是防止 IDE 緩存搗亂。5.2 現(xiàn)象二頁(yè)面中文全部變成問(wèn)號(hào)現(xiàn)象登錄頁(yè)面正常但員工姓名、部門名稱等中文數(shù)據(jù)顯示成 ????或者向數(shù)據(jù)庫(kù)插入中文后查出來(lái)是亂碼。有些是頁(yè)面顯示亂碼但庫(kù)里正常有些是頁(yè)面正常但庫(kù)里是亂碼兩種情況原因不同。原因三個(gè)環(huán)節(jié)至少有一個(gè)字符集沒(méi)對(duì)齊——數(shù)據(jù)庫(kù)表字符集、JDBC 連接串、JSP 頁(yè)面編碼。頁(yè)面亂碼而庫(kù)正常問(wèn)題出在 JSP 編碼或 response 編碼庫(kù)亂碼則基本是 JDBC 連接串缺了 characterEncoding。解決按順序檢查先把 jdbc.url 加上 characterEncodingutf8再確認(rèn)建表時(shí)用了 utf8mb4最后在 JSP 頁(yè)面頂部寫 % page contentTypetext/html; charsetUTF-8 %。三個(gè)地方統(tǒng)一成 UTF-8 之后重啟亂碼問(wèn)題基本消失。還有一個(gè)冷門原因properties 文件保存時(shí)被 IDE 轉(zhuǎn)成了 GBK 編碼讀出來(lái)的連接串本身就帶亂碼這種情況把文件重新保存為 UTF-8 即可。5.3 現(xiàn)象三打卡時(shí)間比本地時(shí)間慢 8 小時(shí)現(xiàn)象用戶上午 9 點(diǎn)打卡數(shù)據(jù)庫(kù)里 check_in 顯示 01:00:00整個(gè)系統(tǒng)的打卡時(shí)間全部偏移 8 小時(shí)。原因服務(wù)器或 MySQL 的時(shí)區(qū)設(shè)置是 UTC而用戶在東八區(qū)。MySQL 8.0 的驅(qū)動(dòng)默認(rèn)讀取 serverTimezone 參數(shù)不指定就按 JVM 默認(rèn)時(shí)區(qū)算兩邊不一致就出現(xiàn) 8 小時(shí)偏移。解決在 jdbc.url 后面追加 serverTimezoneAsia/Shanghai同時(shí)檢查操作系統(tǒng)時(shí)區(qū)。如果項(xiàng)目里取時(shí)間用的是 new Date()取到的是 JVM 時(shí)區(qū)的時(shí)間還要看 Tomcat 啟動(dòng)的 JVM 參數(shù)有沒(méi)有 -Duser.timezoneAsia/Shanghai。改完配置必須重啟 Tomcat光改配置文件不重啟等于白改。5.4 現(xiàn)象四導(dǎo)出報(bào)表 Excel 打開是亂碼現(xiàn)象管理員導(dǎo)出月度考勤報(bào)表用 Excel 打開之后姓名列全是亂碼或者干脆打不開提示格式錯(cuò)誤。原因很多老項(xiàng)目導(dǎo)出 Excel 用的是往 response 里直接寫 HTML 表格的偽 Excel 方案文件后綴是 .xls 但內(nèi)容其實(shí)是 HTML。如果 response 沒(méi)設(shè)置正確編碼瀏覽器按默認(rèn)編碼解析中文就亂碼。解決在導(dǎo)出 Servlet 里顯式設(shè)置 response.setCharacterEncoding(UTF-8)并且給 Content-Type 加 charset。更穩(wěn)妥的方案是把偽 Excel 換成真正的 Excel 導(dǎo)出組件但課程設(shè)計(jì)階段先調(diào)編碼就夠了。注意導(dǎo)出的文件名如果是中文要對(duì)文件名做 URL 編碼處理否則瀏覽器端顯示文件名亂碼。5.5 現(xiàn)象五8080 端口被占用導(dǎo)致啟動(dòng)失敗現(xiàn)象啟動(dòng) Tomcat 時(shí)控制臺(tái)報(bào) Port 8080 required by Tomcat at localhost is already in useIDE 彈窗提示端口沖突項(xiàng)目根本起不來(lái)。原因要么之前啟動(dòng)的 Tomcat 實(shí)例沒(méi)關(guān)閉干凈要么其他程序占用了 8080 端口。常見的是前一次異常退出IDE 里的 Tomcat 進(jìn)程還掛在后臺(tái)。解決先關(guān)掉 IDE 里所有 Tomcat 實(shí)例再在命令行執(zhí)行 netstat -ano | findstr 8080 查占用進(jìn)程的 PID然后 taskkill /PID 對(duì)應(yīng)PID /F。如果端口是被別的服務(wù)固定占用也可以直接改 Tomcat 的 server.xml 里的 Connector port把 8080 改成 8081但要記得訪問(wèn) URL 里的端口號(hào)同步改掉。提示排查順序建議固定為端口、驅(qū)動(dòng)、字符集、時(shí)區(qū)。這個(gè)順序覆蓋了考勤系統(tǒng)九成以上的啟動(dòng)和運(yùn)行報(bào)錯(cuò)每次照著走一遍比東查一下西查一下省時(shí)間。6. 二次開發(fā)方向把考勤系統(tǒng)改造成 Spring Boot 的遷移路線6.1 從 Servlet 到 Controller先跑通再改造如果你不想停留在能跑的階段最值得做的二次開發(fā)是把它遷移到 Spring Boot。遷移的思路不是重寫而是逐層替換。先建一個(gè) Spring Boot 工程引入 web 和 mybatis 兩個(gè) starter然后把 LoginServlet 里的邏輯原樣搬進(jìn) ControllerPostMapping(/login) public String login(String empNo, String password, HttpSession session) { Employee emp employeeMapper.findByEmpNoAndPassword(empNo, password); if (emp ! null) { session.setAttribute(user, emp.getEmpNo()); session.setAttribute(role, emp.getRole()); return redirect:/index; } return redirect:/login?msgerror; }這里的 employeeMapper 是 MyBatis 的 Mapper 接口SQL 用注解直接寫在方法上。遷移時(shí)注意兩點(diǎn)一是 HttpSession 的用法不變Spring MVC 可以直接注入 HttpSession二是原來(lái) Filter 里的權(quán)限判斷改造成 Spring 的 HandlerInterceptor邏輯幾乎一模一樣。6.2 用接口清單驗(yàn)證遷移結(jié)果遷移完別急著收工。我的習(xí)慣是列一份接口清單登錄、打卡、統(tǒng)計(jì)、導(dǎo)出逐個(gè)對(duì)比遷移前后的輸出。從那次以后我每次拿到這類老項(xiàng)目都先花十分鐘把數(shù)據(jù)庫(kù)腳本和配置參數(shù)過(guò)一遍再啟動(dòng)項(xiàng)目。先跑通、再讀碼、后改造這個(gè)順序幫我省了大量查錯(cuò)時(shí)間。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91综合网| 麻豆激情综合| 欧美天天综合在线| 黄网色一区二区三区四区精品| 麻豆AV一区二区| 狠久久| av强奸乱轮| 宅男91视频在线播放| 日韩天天综合| 日日狠狠久久偷偷色综合免费| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 蜜臀一二三区| 人人贴人人摸| 好看的91视频| 女人与公拘交酡2020视频| 色嘟嘟人妻天堂网| 日韩猛交| 天天操夜夜操| 国产粉嫩蜜臀av一区二区三区| 99热这里都是精品| 91欧美色| 超碰调教97| 东京太热男人的天堂久久久| 综合久久婷婷| 欧美色91| 欧美精品91| 亚洲精品一二牛牛| 久久久久久久久久黄色网 | 日本操大逼| 2017大香蕉国产精品久久| 亚洲AV无码乱码| 国产精品一区二区在钱播放| 欧美成人一级麻豆| 一区黄二区黄| 亚洲综合欧美| 懂色AV一区二区三区| 酒色综合网| 五月天玖玖资源站| 天堂伊人久久| 五月大香蕉| 国产午夜精品一区二区三区牛牛| 亚洲综合色网| 中文久久| 色五月天AV| 一本久道在线综合视频| 精品无人区麻豆乱码1区2区图片 | 97视频620| 欧美亚洲国产91在线| 久久久久久中文字幕中文字幕最新| 日本免费二区三区| 射丝袜高跟鞋99| 老熟女乱伦一区| 江都AV在线| 人人操人人色人人摸| 大香蕉欧美日韩| 亚洲黄片免费在线播放| 九九九久久久久| 91成人久久| 97超碰影音| 一色网男人的天堂| 九九久久一区二区伦理| 有码专区最新中文字幕有码| 久久手机视直播| 97精品一区二区视频| 亚洲青色欧美| 中文字幕123| 97国产|免费| 97综合国产精品高潮久久| 日韩高清黄片| 91精品国产91熟女| 午夜福利在线合集| 五月天伊人| 蜜屁Av| 黑丝91视频| 青青草原成人| 97WW精品| 探花一区在线| 91天天| 日本欧美色| www久| 香蕉人欧美综合| 欧洲与亚洲欧美精品中文字幕| 国产又色又爽又舒服的三级视频| 三级日韩一区二区三区| 九九九久久久久| 国产三级中文有码在线视频| 加勒比综合| 天天看高清麻豆| 97人人草| 先锋色眉乱伦资源| 肏逼视频日本| 桃色人妻在线视频| 日韩/97| 极品白嫩美女白浆成人福利在线看| 精品高潮| 欧美天天综合网| 久草久日| 亚洲日本天堂| 久久久久久久久久久久黄色 | 97视频在线免费观看| 久草婷婷| 校园春色综合| 91精品伊人久久久大香线蕉91| 精品人妻中文字幕高清| 96一区二区三区| 狠狠搞 亚洲91| 国产亚洲综合欧美一区| 99操视频| 亚洲无码一二三区| 欧美一区二区日韩三区| se吧提供国产乱老熟视频胖女人| 97综合激情| www.97在线| 91超碰人人操| 在线观看综合精品亚洲| 亚洲成人日韩小说| 肏逼福利网站| 日韩有码 一区二区三区| 亚洲风情在线观看| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 爱爱60秒免费视频| 超碰国产在线| 天天插天天插| 九九色色| 婷婷综合在线| 五月天激情小说网| 久悠悠av| 久久欧美按摩999| 色色色色综合网| 91人精品妻入口| 日韩性爱小视频| 97综合| 成人怡红院| 亚洲欧美骚| chaopen97久久| 干妹子| 91亚洲欧美综合高清在线| 九九毛片这里只有精品| 97色伦欧美| 久久乐| 啪啪啪东京| 亚洲无码电影久久久| 日韩性爱长视频免费| 亚洲高清91| 97天天操| 国产熟女无套内射| 国产丝袜啪啪| 另类亚洲一区二区三区| 国产91av在线播放| 美中日韩无码| 九九无码视频| 色婷婷电影网| 国产精品白虎| 动漫区日韩区欧美区| 天天夜夜久久| 91在线丝袜视频| 四月丁香婷婷| 久久伦理视频久久大香蕉视频| 欧美性爱一区二区三区四区 | 草蕉影视亚洲无码| 久久男人网| 好湿好紧好爽 视频| 狼人综合婷婷激情四射| 搡老女人老妇女老妇老熟女怎么读| 看看小穴| 欧美成人综合| 国产视频第二页| 日本人妻最新在线中| 日韩免费簧片| AV在线性爱| 欧美日韩国产中文精品字幕自在自线| 国产精品交换一区二区| 操一区| 亚洲国产第一页综合视频| 97网址www| 91欧美另类| 日本道人妻久久久在线不卡色视频| 欧美在线综合| 屁股久久久久久久| 国产精品一二三在线看| 亚洲一区二区三区麻豆传媒| 欧美亚洲清纯| 中日韩一区二区三区欧美| 午夜超爽| 久久婷婷五月综合| 大香蕉欧美国产日韩高潮| 精彩久久中文| 精品亚洲天堂| 婷婷五月丁香五月| 黑人精品欧美一区二区蜜桃| 97这里只有精品| 天天干天天燥| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 中文字幕超碰CAO| 日产成人久久| 欧美片第一页| 国产精品成人在线| 少妇精品久久久八区九区| 啊啊嗯嗯好爽| 国产真实野战在线视频| 欧美一级欧美三级在线观看| 亚洲图片视频小说| 蜜臀99久| 伊人久久综合影院| 日本丝袜美腿人妻九九| 狠狠躁伊人中文字幕| 国产传媒午夜理伦精品| 欧美不卡在线美女| 日本二三四区| 日本 欧美 国产一区| 夜夜騷av、一區二區| 国内精品久9| 大肥女高潮bbwbbwhd视频| 26uuu国产免费观看| 精品国产99| 久久久久久久久久久久97| 天天干干天天干干| 色九月综合| 这里都是精品| 日本一级一级一级一级| 精品制服美女中文一区二区三区| 成人麻豆av电影网站| 男人的天堂2018东京热啪啪啪| 久久熟女嫩草成人片免费| 日韩性爱小视频| 看日韩操逼| 国产老熟女| 久久丝袜| 久热99| 麻豆天美AV传媒第一页| 夜夜天天噜狠狠爱2021| 亚州色图欧美| 色狠狠 - 百度| 久久综合中文国产| 老司机午夜精品视频| 久久婷婷视频| 男人的天堂com| 韩国一级AAA| 蜜臀99999| 蜜乳中文字幕a在线| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 色99在线| 亚洲 日本 不卡| 六十路日本| 亚洲。天堂。日本在线观看| aaaa少妇高潮大片| 啊啊啊啊在线播放| 郑州宾馆老熟女露脸啪啪| 今日头条成人一区二区三区四虎精品 | 亚洲日韩狠狠撸视频| 色成人Www精品永久观看| 伊人久久大香线综合无码| 玖草在线视频| 色五月婷婷麻豆在| 成人久久久| 久久免费老司机精品| 欧美性爱超碰97| 天天干天天做| 一级一性爱免费视频| 少妇毛片久久| 中文字幕奈奈美被公侵犯| 亚洲的天堂网| 无码国产精品久久久久| 欧美色91| 五月天婷婷基地| 色图综合网| 亚洲AV乱码专区国产噜噜亚洲| 成人国产视频在线观看| 久久一二三四五六七八九区区| 巨爆乳一区二区爆乳区| 狠狠躁天天躁日日躁97| 免费久久精品麻豆一区二区av| 東南亚性呦成人伦理资源在线视频| 亚洲色五月| 淫荡网址| 大肉棒导航| 被体育老师抱着c到高潮| 欧美综合色,www| 亭亭丁香激情| 亚洲AV无线| 中文字幕色AV| 久久久熟妇熟女国产| 免费亚洲黄色视频在线观看 | aV中文麻| 久久久99久9| 人人艹亚洲| 9久精品视频在线观看| 嫖老熟女A片一二三区| 婷婷探花久久精品一区| 麻豆久久视频在线地址| 精品亚洲一区在线观看| 好爽要喷了| 婷婷五月天激情小说| 亚洲成人激情小说视频| 久操视频在线| 天天天乱色综合全| 欧美日韩99| 午夜啪| 色婷婷一区二区三区久久午夜成人不| 亚洲熟妇乱女区二区三区| 欧美丰满少妇xx高潮| 激情内射| 九九十八精品| 欧美熟女操屄| 日韩啊V| 久久日本熟女精品一区| 欧美视频在线第3页| 无码一区二区精品视频久久久春药| 午夜操操操| 桃色六月天| 免费看一级a性色生活片久久无| 久久产精品一区二区三区电影| 91精品国产乱码| 艳美熟妇先锋一二三区| 琪琪精品免费一区二区三区| 94色色电影网| 日本熟妇人妻一区二区三区| 老女人老91妇女老热女| 91色情黑丝搞鸡在线观看一区二区三区三州 | 亚洲综合色图欧美| 欧美丝袜美女电影一二三四区| 在线啊啊啊啊| 五月丁香| 欧美特大黄一级片片免费| 色婷婷六月丁香七月婷婷| 久久久月天| 走光一区92下载| 97香蕉人人乳| 四月丁香婷婷| 亚 欧 美 综合| 日本污ww视频网站| 久久av成人无码免费| 欧美日韩在线视频网站| AV天堂因数| 色综合1991| 97资源免费视频| 欧美性区| 亚洲成人一二三区| 人妻在线臀日韩| 99亚亚热| 天无日色综合| 九九RE视频在线精品| 国产精品麻豆视频网站| 影音先锋少妇| 在线有码中文字幕| 在线综合 亚洲 欧美中文字幕| 国产午夜精品在线观看| 欧美视频一| 亚洲中文字幕在现观看| 视频不卡中文字幕| 人人妻人人玩人人澡人人爽| 欧美性性性| 欧美东京热青青草| 久久久日本电影| 加勒比综合a∨| 蘋果手機免費看成人Av| 欧美一品道| 天天综合,91入口| 大香蕉手机在线| 97亚洲精品超碰| 精品人妻av区天天看片| 色淫网站优优视频| 日韩免费在线观看不卡| 日本成人免费一区二区三区| 日韩三级在线观看网站| 91精品微拍福利| 一级黄色性爱A级片| 美中日韩无码| 色婷婷狠狠| 人妻久热在线| 亚洲鸥美色图| 97AV在线观看| 国产一进一出视频网站| 天天做天天爽| 2017大香蕉国产精品久久| 精彩久久中文| 秋霞 色色| 午夜男人av| 久青草影院| 色九九九| 亚洲91射| 操逼无码操逼| 天天色综合天天操| 91人妻视频在线| 亚洲综合九| 超碰吊日色| 白丝被操91| 国产精品视频精品一二| 嗯嗯啊啊操死我| 国产精品大屁股999| 老妇女91| 一级性爱aaaa| 操一区| 亚洲av资源| 一级性爱啪啪视频| 免费视频无码| 97av,com| 人人弄人人摸| 小少妇| 亚洲在高跟鞋自慰久久在色线| 亚洲少妇综合| 蜜乳AV.COM| 激情六月天| 97在线观视频免费观看| 1769成人国产精品视频| 麻豆国产免费影片| 天天内射| 中国熟女老妇仑乱一区二区三区| 亚洲欧洲偷拍一区| 大香蕉伊然在亚洲91| 国产在线观看一区二区三区| 99色热| 欧洲亚洲人人爽爽视频| 香港澳门日本三级网站| 人妻少妇精品一区二区三区| 狠狠干2020| 在线综合 亚洲 欧美中文字幕| 加勒比大香蕉视频在线| 在线电影亚洲色图| 在线无码网站| 中文字幕天天天天天| 怡红院成人视频| 久草网站免费在线观看| 超碰人妻久久人妻中文97| 天天干人人乐| 在线性黄高清免费视频| 国产第11页| 国产精品成人久久一区二区三区| 久草久热| 国产熟妇 码视频户外直播 | 睡产熟女乱伦| 91 国产丝袜在线播放-百度| 99精品视频在线观看免费| 操我啊啊啊啊啊| 九九九九九精品| 久久色情| 夜夜夜夜久久久久| 亚洲人妻av| 97超碰伊人| 亚洲蜜桃V妇女| 九九九九97| 99久久精品无码一区二区| 超碰天天操你比| 日韩激情毛片一级久久久| 九九九综合精品| 久久精品熟女亚洲AV麻豆软件| 99啪啪| 亚洲人妻爽爽爽| 丁香五月激情综合| 成人性交午夜免费片| 成人在线日韩| 97综合| 清清一区二区三区四区不卡视频| 神马久久久久久| 四虎 精品 WWW| 色吧5亚洲| 一区二区三区日韩欧美 | 大香蕉操久久| 亚洲欧美国产中文视频| 91久久18禁| 日韩中文字幕人妻视频| 亚洲男人天堂视频| 99热久| 日韩熟女精一区二区三区不卡| 无码免费一区二区三区啪啪| 中文字幕精品免费一区二区| 91爱看| 丝袜熟女一区二区三区| 夫妻日逼| 日少妇亚洲版| 国产一级作爱毛片| 麻豆一区二区三区在线看| www.狠狠操| 91无遮挡| 久久99999| 极品美女福利在线观看| 中出91视频| 欧美另类色图片| 亚洲av性爱电影| 男人久久精品| 性做久久久久久免费观看软件| 啊啊啊慢点| 97超碰美国| 欧美的性爱网站免费| 亚洲 欧美 综合 91| 婷婷五月天久久久| 欧洲在线性爱视频| 亚洲十八禁止| 蜜臀av一区二区三区免费观看| 亚洲国产成人精品久久久国产成人一区二区 | 国内操逼视频二区| 动漫爆乳3D奶水一区在线观看| 亚洲欧美日韩不卡人妻| 青青草精品| 日本在线激情一区二区三区| 亚洲欧美国产va在线播放频| 色臀aV| 69精品少妇一区二区三区蜜桃| 亚洲成人在线高清| 啊啊啊慢点| a男人的天堂| 强奸乱伦动态污图免费 | 婷婷丁香成人| www.久久制服糖| 日韩91网| 久久99999| www.夜夜操| 久久久精品91八戒| 嗯嗯啊啊啊好爽| 久久久久ab| www.婷婷六月天| 欧美黄色大片在线观看| 精品视频久久| 亚洲欧美日韩中文久久自慰| 精品网站9999| 99色在线| 国产亚洲精品第一最新| 欧美gv在线观看| 综合亚洲网| 国产妇女精品视频青青草| 女同在线视频一区| 乱伦熟女区| 91精品久久久久五月天精品| 欧美极品| 麻豆一区二区AV天美| 亚洲精品1区| 91精品成人www| 欧美精品999| 日韩精品人妻一| 麻豆国产97在线| 超碰色97| 九九九九亚洲| 精品少妇人妻一区二区三区| 亚洲视频一二区| 国产精品天美传媒| 人妻少妇视频在线播放| 色婷婷五月综合激情中文字幕| 大香蕉www.超碰| 亲子敌伦对白在线播放| 男人天堂新在线| 乱操9999| 女人18精品一区二区三区| 国产精品天干天干综合网麻豆| 日韩精彩免费| 91在线|亚| 99热官网| 五月丁香| 99re在线观看| 欧美日韩性爱精品| 日本福利二区视频| 九九综合久久| 国产激情在线观看| 亚洲蜜桃V妇女| 伊人激情五月天一区二区| 91av一区二区在线观看| 免费久久一级毛片大黄| 成人一道本免费视频| 亚洲无码电影久久久| 欧美激情久操网| 91黑人狂躁丰满熟妇| 国产精品操| 92一区二区| yiqicaoav| 久久精视频美日韩在线视频| 丁香五月久久| 亚洲黄色视频在线观看视频| 人妻另类 专区 欧美 制服| 97在线视频免费| 日韩小电影| 精品人妻一区二区免费蜜桃视频| 亚洲精品人体| 综合网亚洲| 色哟哟 日韩精品| 色视频蜜乳| 99re热有精品视频国产| 日本免费中文字幕在线| 国产乱码精品一区二区三区四川| 国产精品久久久久久片| 欧美性爱另类综合| 亚洲天堂,男人| www.四虎在线| 中文字幕人妻色偷偷久久皮| 日本新免费二区三区| 色悠久久久av| 肥臀熟女一区二区三区视频| 久久久久久久久久9| 丰满人妻-区二区三区| 日本精品五区| 一级@啪啪视频| 91成人久久| 中文字幕在线免费观看视频| 日韩精品.久久精品.AV女优.天美传媒| 好湿好紧好爽 视频| 熟妇艹鸡八| 亚洲天天精品| 无码二级三级| 日本东京热久久久电影| 亚洲1区2区三区高清中文字幕| 久久精品国产免费观看99| 日本3级一区二区免费| 97超碰jingpin| 久久爱超碰网| 精品人妻一区二区三区不卡断 | 一牛影视久久久一区二区三区| 久久、1234| 91狠狠狠| 超碰在线人妻中文字幕| 亚洲最大无码中文字幕网站| 美女露胸露屁股| 超碰97欧美日韩| 天天日夜干| 欧美老妇曰批的视频| 涩五月婷婷| 97自拍一区| 麻豆尤物视频网| 色屁屁影院www国产| 丁香五月天激情网站| 麻豆区99999| 欧美在线|亚洲| 无码精品久久久久久亚洲| 玖玖爱免费观看视频| 啊啊啊com| 九九热午夜欧亚国产视频| 试看60秒 爽| 在线观看精品国产免费| 一区麻豆 高清中文字幕| 欧美黑人168页欧美黑人167| 精品无码一区二区三区| www超碰| 色色色色色色色色综合| 亚洲欧美色图| 日本九九九九| 欧美国产操逼| 美女熟妇色| 久久99操天天日| 欧美日本不卡| 色黄污美女啪啪啪免费网站| 蜜臀久久99精品久久久久久久久| 超碰视97中文| 日韩中文字幕精品一区在线| 国产原创精品| 91熟女丨老女人| 天堂中文资源在线bt| 欧美精品第四五页中文字幕在线观看| 亚洲黄色| 99热这里只有精品地址| 亚洲黄a三级三级三级看三级| 蜜臀久久99精品久久久| 色婷婷久久| 一区二区播放| 无码黑人精品一区二区三区三| 久久久久久久 九九九九九九九| 老熟女综合网| 久精品无码av一区二免费国产在线观看| 欧美熟妇操操视频| 国产兽交视频在线播放| 熟妇高潮一区二区免费视频| 精精品人妻一区二区三区| 成人免费福利在线观看| 中文字幕一区二区三四五区日日骚| 三级日本一区二区三区| 97视频观看| 91亚州| 欧美在线官网| 久久精品一区二区| 超碰三级秋霞| 亚洲九九九| 日韩偷拍色图| 91狠狠| 精品人人| 亚洲第一页第二页激情| av大香蕉网站| 尹人免费观看视频在线| 五月婷婷hd| 91亚洲色人| 男生女生啊啊啊啊| 色网在线视频观看免费| 91成人久久| 操高情无码| 熟女熟妇伦久久影院毛片一区二区| 国产三区免费在线观看| 国产精品乱码久久久久久久| 亚洲无线码一区国产欧美国| 97在线视频观看免费| 99热最新| 黄页av| 69AV女优男人的天堂| 国产精品分类在线观看| 人妻少妇三级| 人妻日日干| 国产97在线播放| 色五月婷婷麻豆在| 91精品人| 欧美夜色| 岛国成人av在线播放网址| 久久久久成人网| 黑操B| 国产女s强制榨精视频| 大肉棒导航| 国产亚州精品美女久久久免费| 97人人夜| 99热亚洲天堂| 丰满岳乱妇一区二区三区| 任我爽在线视频免费观看 | 欧美中文字幕男人天堂久久精品| 操操操五月天婷婷丁香影院| 六月婷婷一区二区三区| 韩国一级婬片A片AAAAA| 亚洲精品久久久久久久蜜桃臀| 高树玛利亚无码流出| 中文字幕一区二区在线日韩精品| 天堂精品| 少妇二级| 成人亚欧免费视频| 99热一区二区三区四区| 日韩一区二区熟女| 乱伦日本色图AⅤ| 啊啊啊啊免费视频| 欧美性色综合网| 人人妻人人狠人人| 97在线免费| 香蕉av一区二区三区| 91中文在线| 激情婷婷综合久久| 2019亚洲男人天堂| 亚洲色鬼| 色哟哟511老熟女| 日本不卡五区| 久久夜色一区二区| 大香网站| 最新无码国产| 亚洲第一视频 欧美风情 日韩| 肉丝网站91| 操99| 欧美一级特黄淫片在线观看| 国产精品乱码久久| 日韩资源网| 四月丁香婷婷| 簧片免费看视频| 国产91会所女技师在线观看| 久伊人网78| 日本五十路在线| 超碰79人人乐| 黄色激情电影在线观看| 综合久久9| 久久华人网| 青青操在线亚洲视频观看欧美在线| 婷婷色播婷婷| 久久精品国产亚洲AV无码做| 3PAV乱伦视频| 人妻夜爽夜夜爽| 欧美少妇性乱| 亚洲 中文 女同| 99久久婷婷国产综合精品草原| 性影在线视频| 欧美性爱综合,免费| 啊啊啊啊免费视频| 国产日韩中文字幕欧美| 国产25页| 欧美18禁91| 亚洲影视综合网| 欧美啪啪女女| 日韩欧美俄罗斯A片| 91人精品妻入口| 天天干天天操天天操夜夜操天天操| 国产中文字幕在线| a片亚洲一本通视频| 日日干日日操五月天伦理视频| 色色色热| 99在线精品观看99| 国产女性无套 免费观看| 天天干干天天干干| 尹人免费观看视频在线| 国产白丝精品在线观看| 精品人妻av区天天看片| 欧美色97| 日日骚网站| 青青草五月份天| 欧美日韩97在线| 久久视频少妇美女| 91丝袜熟女| 搞中出视频在线观看| 熟女一区二区| 歐美一級亂黃99在綫精品| 97超碰色五月| 熟女丝袜视频| www老逼91| 欧美少妇大量自拍视频在线观看| 美女超碰978| 一区二区 韩日AV| 夜夜肏2021| 六月婷激情福利天堂69| 极品色社| 高清不卡视频| 成人无码专区精品视频| 亚洲国产一级中文综合久久天堂在线免费观看| 99re6久热只有精品6在线直播 | 久久粉色| 天天综合欧美| 久久久精品网站| 国产精品直播在线观看直播| 久久精品国产亚洲AV清纯| 13小男生GAY自慰脱裤子| 精品日韩人妻视频| 久久久久久电影| 日韩不卡在线一区二区| 成人性爱全视频观看| 日本精品一区二区中文字幕| 国产99 中文字幕日韩小视频| 色婷五月| 欧美精品另类人妖xxxx| 女一区二区| 日韩精品9999| 国产吹潮女在线观看| 一本色道久久综合亚洲二区三区| 夜夜夜夜久久久久| 人妻精品视频一区二区三区| 人妻无一区二区三区| 精品国产丝袜一区二区三区乱码| 中国一区二区亚洲人妻| 九九热AV| 超碰97资源大奶| 欧洲亚洲天堂精品| 97久久超碰国产精品| 欧美天天综合网| 1人人看人人摸人人操| 国产精品久久久久久 百度| 综合久| 天天亚洲综合| 熟妇激情| 久操97| 黄色片一区二区三区四区五区| 欧美性爱一级操| 日本精品一区三区| 激情欧美日韩女同久久| 中文字幕欧洲有码| 91天天| 亚洲少妇综合在线播放| 天天干少妇| 操操操操网黑人| 蜜区区视频79 | 亚洲色图日韩精品| 欧美一级三级| 国产妇女精品视频青青草| 啊啊啊啊嗯嗯在线久久久| 亚洲欧美国产中文视频| 日韩欧美亚洲一区二区三区影院| 吻戏激情性巴克| 狠色婷婷久久一区二区三区_| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲熟女乱色一区二区三区| 强奸a片网| 久久亚洲天天做| 91操熟女视频| 一级@啪啪视频| 日本免费中文一区二区三区四区| 欧美韩国你懂得在线| 亚洲人久久久久日| 美国人人操人人操| 97资源超碰| 四虎精品一区| 激情熟女12P| www.色五月| 免费亚洲国产精品久久一区| 亚洲欧美电影| 日本精品一区二区中文字幕| 亚洲色性情三级| 性一级黄色录像片网站导航| 国产 无码 一区二区| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 人妻嗯啊啊在线播放| 国产日韩欧美| 欧美成年人性爱视频免费观看| 婷婷五月天影院| 中文字幕日韩人妻视频一区二区三区交换夫妻 | AV女优男人的天堂| 全免费a敌肛交毛片免费| 综合久欧洲| 成人怡红院| 超碰人人干| 国产视频第2页| 日本潮催一卡操| 精品久久久久,69国产成人精| 精品国产乱码久久久久久免费| 国产性久久久| 二对二中文字幕。| 国产中出内射一区二区| 人妻少妇精品一区二区三区| 超碰97综合网| 51一区二区三区| 亚洲限制级| av网站免费线看| 亚洲精品97在线| 人人操人人肉久久精品| 五月丁香综合激情| 曰本道人妻久久久在线不卡色视频| 日韩性爱1级片视频| 天天综合网在线| 视频国产欧美在线播放| 情色日播放AV| 精品视频在线观看| 日韩素人无码一区二区三区三州| 欧美日韩中文字幕不卡| 国产自偷自拍一区| 国产少妇内射| 国产精品久久伊人| 91老熟女91老女人| 国产强奸超碰AV| 蜜臀在线看片| 91人妻尻屄视频| 国产AV天美传媒一区二区三区| 一区二区视频在线播放| 国产久久久久影院老熟女| 2020中文在线一区二区三区| 狠狠躁天天躁日日躁| 中文字幕国产| 久久久久9999精品九九九| 一区二区影院| 涩亚洲欧洲| 日本午夜久久电影| 国产sv美女内射| 九九热在线视频| 中文字幕一二三| 亚洲色图20p| 亚洲啪AⅤ永久无码| 欧美91精彩| 高跟丝袜AV专区国产| 热热色青青草| 亚洲激情久久| 极品国产内射| 超碰99热中文字幕| 操逼www.| 蜜桃香蕉久草精品在线| 色婷婷综合网| 蜜臀一区二区三区在线 | 91亚洲狠狠色| 97色碰| 清纯唯美亚洲| 台湾大香蕉99热| 看一级特黄a大一片| 熟女熟妇伦久久影院毛片一区二区| 高清无码国产亚洲| 夜夜躁狠狠躁日日躁av| 在线综合 亚洲 欧美中文字幕| 久久久久久亚洲Av无码| 97超色| 精品国产一区二区三区av在线资源| 久久国产成人精品国产成人亚洲| 欧美色图天堂网m| 八人操人人摸人人看| 黑人精品欧美一区二区蜜桃| 日韩精品.久久精品.AV女优.天美传媒| 黄色免费网| 国产九九九九九九| 96精品在线| 久久这里是精品| 91热| 中文字幕97色| 国产又爽又黄| 性爱网站一区二区| 视频黄站| 天堂av2019| 狠狠色狠狠色狠狠五月| 中文字幕第2页| 久久国产精品熟女人妻| 99综合视频| 操逼逼一区视频| 国产三级中文字幕粉嫩| 美女黄页| 性爱精品一区| 99久久久无码国产精品性啊聊| 精品视频久久区| 97人肏| 伊欧美综合视频| 2024黄色视频| 久久精品一区一起草| 国产夫妻一区二区| 亚洲天堂 视频你懂的| 襙一襙| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 吉田爱美AV在线| 国产精品久久久三级无码| 国产一区二区成人av在线播放| 99热大香蕉伊在线| 国产13区| 久色网| 亚洲最新中文字幕免费| 久久超碰97| 九九九只有精品| 国产美女91视频| 人人色97| 欧美顶级黄片AAAAA在线免费看| 久久透逼视频| se..亚洲欧美| 亚洲中字慕不卡| 九九九九九九九九九五码| 精品国产乱码久久久久久久久1| av网页一区二区三区| 日本一区二区亚洲综合| 凹凸 69堂 在线播放| 裸体美女久久久| 狼人综合婷婷激情四射| 久久婷婷伊人| 风流老熟女一区二区三区l| 日本性爱视频一级| 91制服丝袜中文字幕| 超碰97资源网亚洲| 1204av韩国| 国产视频一区二区三区久久亚洲天堂| 丁香五月性爱| wwwcaobibi| 熟女精品va中文字幕| 久久精品人人做人人看| 99re免费| 丰满人妻-区二区三区免费看| 久操av在线| 97伪v| 人人澡人人弄| 美女淫穴| 欧美人妻二区三区| 欧美性猛交美女自慰91| 91狠狠综合久久久久久| 国产一级αv免费看片| 男人高清无码一区二区| 天天懆天天日| 久久久久久亚洲Av无码| 国产无码三级视频在线观看| 男人的天堂2019| 78久久| 久久青青草在线视频| 超碰色图| 欧美 亚洲精品首页| 国产91美女视频| 久久久久久久久9| 少妇九九九九| 五月天AV资源| 九九九九一区| 少妇贴图| 国内毛片四区| 夜夜嗨一区二区三区直播内容| 一本大道青青| 日韩精品 欧美激情| 久久久久成人网| 99999亚洲| 九热中文字幕| 青娱乐休闲视频在线观看| 欧洲久久一二线| 久久狠狠色噜噜狠狠狠狠97| 亚洲婷婷丁香在线| 欧美巨大性舒爽顶到了| 亚洲人妻中文在线视频| 成人AV超碰免费在线| 国产女同视频在线播放| 国产精品视频麻豆入口| 色噜噜精品一区二区三| 91人妻尻屄视频| 91久久99久久91熟女精品| 91黑丝露脚| 丰满翘臀美女影院视频| 精品人妻一区二区免费蜜桃| AV丝袜少妇| 综合视频91| 无码精品啪啪啪一区二区三区三州| 五月天九九日国产精品一区二区三区| 亚洲九九视频| 大色综合| 眼镜人妻101.com| 狠狠色噜噜狠狠狠狠狠色综合久久| 欧美黄色片AAAAA| 成人资源中文字幕在线观看天天 | AV老汉| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 久久婷五月天| 国产青一二三| AV99热18这里只有精品| 亚洲日本大香蕉1| 天天综合中文字幕 91| A一区片| 日本在线不卡v二区| 欧美亚洲丝袜人妻制服99| 91丝袜美腿网站| 成人精品视频| 国语精品对白| 波多野结衣之双飞调教在线播放| 亚洲国产婷婷在线播放| 亚洲天堂热| 麻豆九九九| 91国产伊人大香蕉| 国产日本一区二区三区蜜臀在线观看| 7777奇米影视久久| 1769精品一区二区三区| 九九天堂| 激情五月天校园春色网| 酒色综合网| 这里只有精品视频在线观看麻豆| 人妻av在线| 超碰精品| 亚洲一区二区中文字幕| 日本熟女不卡视频| 日韩黄色成人性爱| 人人摸人人干| 日本一二三免费久久| 91色人妻| 婷婷五月天福利| 干B| 久久午夜色播影院免费高清| 中文字幕91页| 蜜桃视频精品一区二区| 91成人久久| 欧美组图日韩亚洲中文字幕| 1禁看欧美黄片免费看| 亚洲最大黄网| av日韩中文字幕| 操B视频日韩无码| 婷婷五月色| 天天日熟妇| 91搞逼视频| 国产九月婷婷| 97爱啪| 久久久精品中文字幕爱豆| 中文字幕在线日亚州9| 久久m| a级免费在线观看| 五月天社区| 天天激色| 伊人一级免费黄片| 先锋精品av色鲁| 熟妇高潮二区三区| 国产精品成人无码a v毛片| 麻豆久久视频在线地址| 好一吊区二区| 思思热免费在线视频| 人人澡人人爽人人精品| 视频二区美腿制服人妻欧美| 天天操人人操骚逼网站| 韩国嫰模上门援交视频| 国产无码久久高清| 亚洲人妻一区二区三区| 99热国产| 久久黄色性爱视频| 亚洲另类色图片| av天堂电影网| 久/久精品99看9| 91亚.色| 污污汅18禁网站在线永久免费观看 | 人人摸.人人色| 99r九九| 国产农村妇女精品| 五月天精品| 欧美在线亚洲| www.色操逼| 久久久96精品| 成年人性爱日韩| 99精品高潮| 可以在线观看的黄色网址| 久久水蜜臀亚洲AV无码精品| 精品国产一区探花在线观看| 91久久久久久久久久久| 欧美色图亚洲色| 日本三级中国三级99人妇网站|