日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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ù)開(kāi)發(fā)或畢業(yè)設(shè)計(jì)復(fù)用的學(xué)習(xí)者。包內(nèi)按業(yè)務(wù)模塊劃分覆蓋員工管理、考勤打卡、請(qǐng)假/會(huì)議申請(qǐng)、固定資產(chǎn)與任務(wù)調(diào)度等常見(jiàn)功能壓縮包共 2000 個(gè)文件約 55MB以 1336 個(gè) Markdown 文檔、500 個(gè) JavaScript 文件、67 個(gè) Java 文件及 JSON/XML 配置為主文檔與配置占比高便于對(duì)照閱讀、按需檢索和二次開(kāi)發(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 開(kāi)發(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)目練手的人拆開(kāi)源碼看一遍比看十篇教程都管用。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ù)里的版本沖突較勁。常見(jiàn)做法是登錄校驗(yàn)寫在 Filter 里業(yè)務(wù)邏輯寫在 Servlet 的 doGet/doPost 里數(shù)據(jù)庫(kù)訪問(wèn)單獨(dú)抽出 DBUtil 工具類。后面章節(jié)的代碼走讀會(huì)按這個(gè)結(jié)構(gòu)展開(kāi)。2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)三張核心表的字段與關(guān)聯(lián)考勤系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)一般圍繞三張表展開(kāi)員工表、部門表、考勤記錄表。員工表掛在部門表下面考勤記錄表引用員工表的主鍵。這個(gè)資源里常見(jiàn)的建表 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ù)也是常見(jiàn)的一個(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)上常見(jià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)我見(jiàn)過(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é)見(jiàn) 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 解壓之后常見(jiàn)做法是把整個(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è)常見(jiàn)的坑項(xiàng)目如果是 Eclipse 的 Dynamic Web Project 結(jié)構(gòu)直接 File - Open 打開(kāi)目錄即可如果拿到手是一個(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 里。打開(kāi)之后你會(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)單隨便打開(kāi)一個(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è)試打開(kāi)瀏覽器訪問(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 打開(kāi)把每個(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è)值得逐行看的模塊。常見(jiàn)寫法是 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)目里最常見(jiàn)的登錄失敗原因不是密碼錯(cuò)而是參數(shù)名拼寫不一致。4.2 上下班打卡時(shí)間判定與去重打卡模塊是考勤系統(tǒng)的靈魂。常見(jiàn)做法是同一個(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í)解決辦法見(jiàn) 5.3。另外 empId 這個(gè)變量來(lái)自登錄 Session 里的用戶信息不要從前端傳過(guò)來(lái)否則任何用戶都能偽造別人的打卡記錄。4.3 月度統(tǒng)計(jì)一條 SQL 出報(bào)表考勤統(tǒng)計(jì)頁(yè)面是管理員最常用的模塊。常見(jiàn)做法是選一個(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è)面上的展示常見(jiàn)做法是循環(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)最常見(jiàn)的五個(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 打開(kāi)是亂碼現(xiàn)象管理員導(dǎo)出月度考勤報(bào)表用 Excel 打開(kāi)之后姓名列全是亂碼或者干脆打不開(kāi)提示格式錯(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 端口。常見(jiàn)的是前一次異常退出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. 二次開(kāi)發(fā)方向把考勤系統(tǒng)改造成 Spring Boot 的遷移路線6.1 從 Servlet 到 Controller先跑通再改造如果你不想停留在能跑的階段最值得做的二次開(kāi)發(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
返回資訊列表
日本东京热大香蕉a片| 日韩欧美一级特黄大片| 91人妻超碰| 欧美日韩国产成人高清| 欧美偷| A级片日韩欧美国产欧美视频精选观看 | 久噜噜| 欧美午夜视频精品久久| 日韩字幕一区| 91精品丝袜久久久久久| 久久精品中文| www.操| 日韩去日本高清在| 亚洲啪啪视频免费| 超碰免费人妻在线| 亚欧美综合| 中文字幕在线观看网页| 久久久久久国产精品| 桃花色综合影院| 亚州五月| 人妻黑丝袜电影| 亚洲色图久久成人| 嗯嗯啊在线视频| 国产精品久久久久亚洲av| 人妻娇喘 激情视频| 性爱AV天堂| 欧美午夜精品久久久久久超碰| 手机在线视频国内精品| 无码久久亚洲高清,| 国产乱码精品久久久久久| www久久99| 国产一级作爱毛片| 強姦亂倫a| 天天日天天干天天操| 男人天堂无码| 亚洲性感丝袜诱惑在线观看| 香蕉免费一区二区三区不读 | 91精品国产91久久青草| 久草午夜| 97干97色| 亚洲国产综合图区中文字幕| 国产精品精品系列在线观看| 国产1024在线播放| 一起草高清无码| 99re黄| 日韩中文9| 日日日骚女人精品| 亚洲有码第一页| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 男人a天堂手机在线版| 亚洲?V高清一区二区三区尤物| 青青操视频在线| 久久久久ab| 精品国产乱码久久久兰草影视| 亚州国产成人精品女人久久| 91色插| 欧美78P| 色婷婷一区二区三区久久午夜 | 色蜜AV| 91操人| 久久超碰、| 操逼A∨| 九九九九九九九九九国产精品 | 精品人妻久久久久一区二区三区| 欧美色图综合| 五月激情综合网| 久久一二三四不卡| 激情四射婷婷六月天| 无卡一区=区| 嗯嗯不要 视频| 国产女生在线| 夜草欧美| 乱伦av麻豆| 国产AV无码AV| 中文啪啪视频| 国产日韩欧美| 亚洲人天堂| 69av一区二区三区| 亚洲AV无码黄色强奸| 99热这里是精品| 一区久久久二区| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 玖玖爱伊人玖玖爱| 国产精品噜噜噜日日日| 亚洲国产一区二区日韩专区| 欧美婷婷| 高清不卡 中文 人妻| 亚洲 在线| 黑人精品XXX一区一二区| 午夜120视频在线观看| 日韩无码成人电影| 一区二区亚州激情久婷婷欧美| 中文字幕在线第二页| 六月激情婷婷| 五月婷婷无码| 中文字幕精品亚洲熟女| 九九九精品成人免费视频小说| 少妇xx精品| 精品.99999| 深喉吞精| 欧美日韩香蕉| 超碰中文字幕人妻草一区| 欧美啪啪色吧在线| 依人大香蕉| 久久久久久裸体| 26UUU欧美日本| 人人乐大香蕉| 9丨久久九九九| 综合久久婷婷| 清纯唯美综合亚洲| 欧美日韩操操操| 婷婷五月天久久精品视频一区二区三区 | 天天操天天7| 日韩黄色片子| 中文字幕视频一区视频二区| 91人精品妻入口| 久久发布国产伦子伦精品| 精品女同一区二区三区| 国产一区二区av综合| 天天α片| 日日噜噜夜夜狠狠视频无| 欧美色图偷拍另类| 福利操逼| 日本超碰色精品| 26uuu国产亚洲综合| 久视频在线观看| 97爱综合| 色哟哟国产精品免费网址| 超碰色大香蕉| 亚洲欧美精品一区天堂久久 | 国产AV天美传媒一区二区三区| 欧美性生活免费网| 大干人妻| 97精品综合久久| 另类图片五月天| 日韩免费性爱视频在线观看| 一区二区三区国产在线播放 | 国产精品农村妇女精品| 亚洲色啪| 天天做天天爱| 国产性刺激| 91丨九色丨国产丨人妻在线 | 久热影视| 俺也射| 麻豆国产免费影片| 99精品国产户外露出| 96AV久久久| 精品人妻一区二区视频| 蜜桃臀一区二区三区久久| AV电影在线播放| 人人操人人肉久久精品| 91日产欧美| 毛片电影一区二区三区| 久操视频在线观看| 久久婷婷一区| 九九久久国产精品| 五月天丁香网| 一起草欧美| 欧美天天影院| 夜夜操一区二区| 欧美网站免费| 成年人性爱日韩| 日韩无码嘿咻黑热久| 国产成人拍国产亚洲精品| 综合视频91| 91精品黄在线观看| 国产精品无码久久久久2028| 精品亚洲天堂| 91久久久久| 91狠婷| 无码最新| 精品国产人成在线| 国产h小视频在线观看免费| 福利一级版子| 丰满少妇一区二区三区四区观看| 欧美性生活综合| 成人av影院在线观看| 老熟妇一区二区三区| 亚洲午夜免费狠狠干| 亚洲最新av无码成人精品区| 日韩精品人妻一| 久久超碰com| 成人老鸭窝人人在线视频| www.91色| 天天日少妇逼AV| 亚洲无码超碰免费| 尤物视频新赏网鲜网色诱网| 性videos欧美熟妇hdx| 国产91丝袜在线播放蜜月| 久久久久久久久久久人妻| 丝袜剧情| 天堂69亚洲精品中文字| 欧美色涩| 日韩精品视频在线观看一卡二卡| 色吧5亚洲| 一区二区不卡| 裸模AV女优| www.婷婷| 99热这里是精品| 日婷婷| 超碰78| 久久精品综合| 黄色一区三区| 97欧美色综合| 日影院久久婷婷夜夜网| 亚洲天堂另类小说男人| 水野优香在线观看| 色色色网站| 日韩性爱免费视频在线网站| 岛国激情视频软件| 日韩欧美午夜视频在线| www.99中文字幕| 性爱网站一区二区| 亚洲婷婷综合网| 国产一区在线看| 亚洲乱熟女一区二区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久香蕉国产线看观看亚洲女人 | 久久久性| 偷拍 欧美 日韩| 丰满人妻区一区二区三| 97超碰色情| 久久免费少妇| 午夜福利一区二区影院| 亚洲自拍天堂| 久久国产性爱| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 亚洲国产欧美中日韩成人综合视频| 欧美一区二区日韩三区| 国产一区二区精品久久99| 精品久久久久久AV无码| 日韩性爱再线视频| 麻豆啪啪啪视频| 中国zzijzzijzzwww精品| 欧美一区二区福利在线| 国产精品网址| 5月婷婷6月六月丁香| 黄片在线免费在线观看| 99啪啪| 99啪啪| 久久精品欧美一区蜜桃| 久久精品天美| 九九九九九九精品| 日本潮催一卡操| 亚洲激情在线观看一区| 操逼片中文| 日本九九九九| 久久精品国产亚洲妲己影视| 久久午夜色播影院免费高清| 久久精品28| 极品销魂美女一区二区 | 国产日韩色综合| 亚洲最新av无码成人精品区| 超碰人人妻| 97WW精品| 亚洲九九视频| 欧美 日韩 亚洲 春色| 日韩丝袜高跟制服在线观看| 日逼97| 亚洲日韩精品久久久久一区壹牛| 影音先锋视频在线| 夂久色| 欧美与日韩97| 2017大香蕉| 久久一区二区三区入口| 日日干男人的天堂| 中国一级αV| 精品九九国产无码| 国产欧美精品日韩区二区麻豆天美| 91天堂视频| 97国产精品一区| 国内毛片国产欧美拍| 国产一级片| 91人人看| 天天肏视频| 日本丝袜人妻内射| 中文字幕亚洲热播人妻| 精品国产乱码久久久久久网站入口| 日韩性爱1级片视频| 久九干| 精品人妻一区二区三区鲁大师| 97AV在线免费观看| 嗯嗯啊啊好爽| 伊人99热| 久久婷婷一区| www.99中文字幕| 久久一二三四五六七八九区区区| 丰满熟妇大乳做爰| 久久毛卡| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 色久桃花影院在线观看| 是还免费视频1727我| 日韩三级av片| 欧亚免费视频| 啊啊啊啊,啊啊好多水| 欧美特大AA级黄片| 超碰在线974| 男生通女生屁股| 日本丝袜人妻内射| 国产后入清纯| 强奸国产在线| 91男人天堂网| 啪一啪免费视频| 九九九久久久久| 国产强奸乱伦xd| 亚州成人A√| http://qxhbdz.com| 日韩中文字幕av在线播放| 亚洲国产成人精品久久久国产成人一区二区 | 可以在线观看的黄色网址| 超碰 av 女人天堂| 日本三级一区二区 在线| 蜜桃传媒一区二区亚洲| 国产成人 综合亚洲 天堂| 婷婷三区| 尹人免费观看视频在线| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 五月天玖玖资源站| 九七人妻在线| 久久97| 天天综合91入口| 人妻久久久久久| 色偷偷2020免费视频播放| 人人插人人搞人人操| 乱操9999| 天天日天天色| 国产精品com| 天天舔天天| 自拍偷拍第26| 97久久国产亚洲精品超碰热| 亚洲第一页色| 91国产操逼视频| 国产美女激情| 熟女六十路| 亚洲色宗合| 99在线啪| 在线可观看的黄色网址| 国产乱人伦AVA麻豆软件.| 激情视频图片| 精品国产乱码久久久久久影片| 国产精品视屏| 青操影院| 中文字幕在在线观看网站| 欧美午夜视频免费观看| 精品无av| 亚洲另类电影| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 人人做,人人操,人人摸| 欧美精品欧美精品系列 | 97在线视频网站| 江都AV在线| 黄页视频网站野外| 亚洲黄色视频在线观看视频| 黑人粗大V S日韩女优视频| 亚洲综合在线视频| 亚洲?V无码专区在线电影| 欧美精品一区二区少妇免费A片| 九九探花视频在线观看| 少妇综合| 青娱乐啪啪视频| 91网站18| 大香蕉国产中文自拍| a片亚洲一本通视频| 日本 欧美 亚中文字幕| 欧美国产欧美在线观看| 上特色A在线| 亚洲在钱| 日韩一级二级三级免费看完整版国语版| 欧美成人性爱视频大全| xxxx网站亚洲精品| 三级精品三级在线观看| 欧美AB在线| 亚洲欧美碰碰| 超碰97综合网| 亚洲国产精品久久久久婷婷老年| 夜夜狠狠躁日日躁色视频| 亚洲情色91| 日韩 女同 综合| 粉嫩国产精品久久久| 天天操天天舔| 女人喷水视频在线观看| 天天操夜夜嗨| 欧美强奸乱能| 91色爽欧美| 九九英色视频| 精品国产污一区二区三区| 2020国产精品| 亚洲综合在线91| 殴美,日韩国产伦精品| 美女十八禁| 亚州日韩97| 欧美97日韩| 少妇无码太爽| 九九内射在线| 天天澡天天爽日日AV| 一本色道熟妇| 日韩三级av片| 99热在线观看| 女人与公拘交酡2020视频| 成人一二| 岛国A V在线免费看| 欧美日韩午夜精品一区二区三区| 国内毛片欧美香蕉精品| 偷拍 欧美 日韩| 超碰免费人妻人人| 日本激情免费大片| 色成人Www精品永久观看| 高清无码 国产精品| 一区二区三区视频| 9久久久久| 欧美色图自拍| 天天干夜夜鈤| 极品少妇久久久| 男人的天堂com| 久久久久久人体| 中文字幕黄色一起草| 干b在线性社区| 久久超碰av在线| 欧美91色| 久久超碰网| 人人么人人操| yellow网站免费观看日韩高清无码| 啪啪免费| 色五月综合| 精品久久久久,69国产成人精| 91老司机在线视频免费观看| 天天香香欲综合| 欧美狠狠弄| 9久精品视频在线观看| 超碰 av 女人天堂| 神马麻豆福利院| 襙一襙| 在线a v| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 天天综合网合集91| 日本三级精品| 亚洲三区视频| 婷婷香蕉| x97av| 天天澡天天爽日日AV| 在线观看无码三级少妇| 激情小说五月天| 欧美天天谢综合网| 亚欧美综合网| 国产精品成久久久久午夜午夜| 日韩色欲久久一二三四区| 婷婷五月成人| 欧美亚洲宗合色性图| 欧美九九九| 精品国产国产AV| 97超级色碰碰| 免费人成毛片乱码| 国产一级片| 一级黄碟在线看| 久草午夜| 亚洲欧美中文日韩视频中国语| 蜜臀亚洲中文| 九九九九精品| 五月天激情国产综合婷婷婷| 美女黑人91神马| 欧美精品久久96人妻无码| 成人片在线播放| 亚洲成人色情五月天丁香花| 20cm女自慰在线日韩欧美| 五月婷婷久久综合| 国产乱不卡| 久久久久亚洲?V片无码V| 日韩在线视频1234| 大香蕉综合网| 久操大香蕉手机视频在线看| 后入综合久久| 久久亚洲精品成人av| 中文字幕人妻色偷偷久久皮| 国产亚洲深夜激情| 国产亚洲欧洲在线观看| 岛国黄片网站| 天天天乱色综合全| 岛国免费视频在线| 九九热最新| 日韩综合97p| 亚洲日本韩国在线| 国产福利第一视频| 亚洲日韩资源| 黄色AAAAA欧美| 亚洲黄a三级三级三级看三级| 亚洲伊人久久综合97| 天天干天天日天天射黄色| 亚州性色| 97中文天堂| 亚洲欧美电影| 91九九九馒头| 100啪啪视频大全| 粘花网06av视频| 在线观看无码三级少妇| 99re6国产精品99re| 免费看A片毛毛片在线播| 少妇内射视频| 国产一级黄色片在线观看| 少妇高潮一区二区三区在线| 久久久人妻| 亚洲国产综合图区中文字幕 | 蜜桃久久久久久久| 日本人妻中文字幕精品| 欧亚日韩三区| 色婷婷久久| 亚州男人天堂| 三级网站超变态精品| 成人av影院在线观看| 中文字幕诱惑制服人妻丝袜美丝袜美 | 黄色区免费观看中文字幕| 操逼操网| 亚洲色图欧美色18直播在线| 国产自产91区13区| 日本激情免费大片| 精品人妻av区天天看片| 嗯嗯啊啊视频一区二区三区| 国产成人无码久久精品| 一区二区三区国产在线播放| 97超碰天天爱天天爱| 一区二区三区精品久久| …亚洲黄色厕厕女女在线播…| 嫩草 人人网精品| 久久人人爽人人爽人人片Ⅴ| 欧美在线播放| 天综合网欧美| 超碰调教97| 一区二区影院| V A在线| 乱色老一区二区三区的观看方式| 成人在线视频二区| 亚洲成人久久一区二区| 91人人操| 亚洲熟妇综合久久久久久| 91亚·色| 无遮挡h肉动漫在线观看| 日韩激情电影中文字幕| 深夜激情| 成人片视频| 久操大香蕉手机视频在线看| 日韩精品免费高清视频在线| 亚洲天堂久久久久久粉红视频| 99国产精品久久久在线播放| 欧美 中文字幕 一区| 91激情国产| 亚洲av热热色| 亚洲 欧美 91| 不卡免费av在线播放| 久久久久久电影| 九九碰九九爱97超| 9美女超碰在线免费观看| 亚州再线| 成人无码专区精品视频| 国产原创自拍| 天天做天天爽| 色999五月色| 强奸乱伦Av网| 男人高清无码一区二区| 欧美黄色片在线播放| 久久精品| 97超碰站| 无码一区免费在线不卡| 超碰九7| 一区二区三区一亚洲中文字幕、综合区灬 | 欧美日韩人妻精品一区二区三区| 98超碰日本| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚州中文字幕超碰97| 厕所偷拍在线| 中日无幕一二三四区| 亚洲另类综合欧美| 日韩欧美加勒比| 夜夜夜夜久久久久| 夜夜高潮夜夜爽夜夜爱爱一区| 91欧美情色| 亚洲少妇视频| 一区二区三区高清 | 久久99黄色卞西瓜| 亚洲精品久久久久久久久豆丁网| 欧美黑人猛交春色影视大全| 欧美亚洲玖玖玖| 天天爽爽爽爽| 日韩成人色图| 天美精品一区二区三区四区在线观看| 国产九区| 中文一区二区| 国产精品一区在线播放| 嗯嗯啊啊操我| 桃花色综合影院| 国产Av超碰| 无码操逼网| 福利在线观看一区二区| 五月天激情国产综合婷婷婷| 欧美综合骚| 亚洲色图欧美色图制服丝袜| 欧美亚洲宗合色性图| 中文字幕精品亚洲熟女| 蜜臀99久| AⅤ片水多多| 国产宅男宅女在线观看| 国产精品久久久无码AV网站| 狠狠操狠狠插| 欧美熟妇精品黑人巨大一二三区| 97超碰伊人| 蜜臀亚洲中文| 亚洲九九视频在线观看| 欧美在线91| 无码丰满熟妇一区二区浪潮AV| 久久精品国产亚洲AV成人直播| 另类小说五月天| 日本一天色道久久久精品视频| 美女91av| 国产真实子伦对白| 国产h片在线观看视频| 精品国产一区二区三区av在线资源| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 超碰欧美97| 午夜精品久久久久久久久久久久久 | 国产精品不卡一区二区三区av| 91人妻最真实刺激绿帽| 97人人草| 中文子幕一二三| 97色综合中文网| 口爆吞精在线观看| 精品射1999| 欧美最婬乱婬爆婬牲视频| 亚洲 无码 偷拍| 97色婷| 97视频900| 欧美精品宗合| 97人人夜| 国产精品久久久久久久黄无码| 天美传媒国产原创中文字幕亚洲欧美另类| 九九拍拍精品视频在线播放| 青草精品视频-日本久久久久网站| 亚洲色 国产 欧美 日韩| 久久久99久9| 激情小说激情视频| 伊人久操| 男人的天堂在线2| 神马午夜久久| 大香蕉乱伦视频网| 啊嗯嗯啊好大好爽| 免费成人在线观看91| 粉嫩国产精品久久粉嫩| 亚洲玖玖爱| 国产AV激情无码久久无码| 天天添天天干电影| 日韩情色一区二区| 色婷婷久久| 懂色av中文字幕| 久操网线| 熟女久久久| 国产91精品福利在线| 区一二区日韩亚洲乱码av电影| 999精品久久久久久久| 五月丁香六月| 操久久久久| 91热爆在线| 亚洲欧美校园| 婷婷五月在线视频| www.男人的天堂| 丁香五月综合| 999久久久九九九九| 欧美嫩性色| 2017天天拍大香蕉| 亚洲精品97在线| 亚洲美女AV无码| 欧美 亚洲 大香| 综合伊人激情| 很很很很操| 国产91av在线播放| 萌白酱自拍视频| 蜜桃精品一区二区三区久在线| 中文日本免费高清| 蜜乳av一区二区三区四区不卡| 亚洲乱码国产乱码精网站| 国产AV人人夜夜澡人人爽麻豆| 18禁的网站在线| 色天使AV天堂| 天天影视网综合少妇| 91香蕉国产尤物视频| 亚洲成人一二三区| 在线A日本| 草久在线| 亚洲国产一区二区三区在线| 国产家庭乱伦表演| 午夜精品久久久久| 色69大色97香蕉| 超碰人人草| 中文字幕蜜乳av| 日韩在线视频1234| 国产无码高清操逼视频| 日本中文字幕熟妇| 2010男人的天堂| 亚洲精品尤物yw在线影院| 97av,com| 伊人97超碰| 大黄片做爱的大的| 亚洲黑人在线| 狠狠躁日日躁夜夜躁A| 丁香五月综合| 超碰在线人妻中文字幕| 操一区| 日韩熟女操逼| 偷拍欧美亚洲| 激情综合97| 成人亚欧免费视频| 欧美AB在线| 福利风月五月天影院| 精品性爱一二三区| 亚洲精品一区二区日本| 99re在线视频这里只有精品| 日日干日日操五月天伦理视频| 欧美日韩精品一区二区三区高清| 伊人91| 久操影视| www.99热在线只有精品| 色狠狠色| 国产极品美女高潮无套在线观看| 毛片一区二区| 久9爱精品| 午夜福利在线视频1000| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 欧美色九九九| 六月激情网| a片偷拍视频| 亚洲精品久久久久久久蜜桃臀| 亚洲精品黑丝| 天天α片| 97 国产一区| 日韩精品99999| 亚洲精品亚洲人成在线麻豆| 亚洲国产精品久久久男人的天堂| 日本特黄f c2| 欧美性生活综合| 久操网视频| 操逼操2| 久久东京热久久| 极品出轨视频网站| 自拍啪啪视频| 久久久精品视频欧州站| 日日干夜夜欢| 淫骚熟女一区二区三区| 久久超碰亚洲人| 九九九久千久久激情蜜桃在线看| 人妻AV 中文字幕的| 亚洲欧洲网站免费观看| 欧洲一级性爱视频在线观看| 亚洲欧美国产成人综合不卡| 欧美黄色大片在线观看 | 我要看免费韩日黄片| 欧美日韩国产色五月综合在线| 夜夜青青无码影院| 欧美亚洲激情一二三| 干B| 中文字幕精品乱码| 嫩草 我啊~嗯~在线| 伊人网在线视频| 日韩精品怡红院| 中文字幕AV片| 欧美高潮| 上床啊啊啊| 91色花堂| 黄片视频观看| 精品无码久久久久久国产浪潮| 强奸乱伦免费网站| 国产日韩区| 中文字幕熟女人妻丝袜丝| 日韩成人人妻网站| 一本久道久久综合狠狠爱一密臀精| 精品少妇99| 亚洲情欲| 日韩中文字幕人妻视频| 久久精品国产亚洲AV无码电影| 一级性爱aaaa| 99精品无码| 99青青草国产视频| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 伊人网在线视频| 天天内射| 天天天肏屄肏屄肏屄欧美欧美| 中文字幕制服诱惑| 九九九精品成人免费视频小说| 97精品熟女少妇一区| 久久久久久国产无码精品| 天天天天干| 国产男女边吃边摸视频网站| 欧美日韩激情无码专区| 九九热精品在线| 麻豆天美传媒在线视频天堂| 人妻激情在线视频| 欧美中文字幕精品人妻| 国产最新小视频在线播放下载| 亚洲古典另类欧美在线| 97精彩视频网站| 老女人老91妇女老热女| 天堂亚洲精品| 国产真实子伦对白| 亚洲成A∨人影院在线欢看| 日本高清电影欧美色图| 金典av| 狠狠爱综合网| 图片区小说区| 人妻密肉在线观看| 日本国产二线女色| 操www| 色色色五月婷婷| 精品九九九九九九九| 78操B| 中文精品一区二去| 爽爽淫人网| ai欧美亚洲小说| 婷婷色香伊人| 成人乱码一区二区三少妇| 久久超碰亚洲人| 91中文字幕在线观看| CCYY草草影院地址入口| 久热这里| 日韩精品三级| 91爱欧美| 91精品无码久久久久久久| 99在线免费视频| 视频二区熟女人妻| 日本人妻中文字幕| 人妻日日夜夜精品| 91N综合网| 日韩97视频| 久久久久久十| 久久99午夜精品一区人妻| 国产精品制服丝袜中文字幕日韩一区二区三区 | 国产小黄片在线免费观看| 色999偷自拍拍| 啊啊啊免费| www.色操逼| 欧亚揄拍偷拍精品视频| 日韩在线地址一| 国产av高清版| 91视频在线观看18| 丁香五月性| 国产精品一区二区麻豆| 黄片在线免费在线观看| 欧美人人天天网| 性久久久| 亚洲网污污污污| 日本高清视频xxxx| 国产精品久久久久久久久久梁医生| 午夜精品久久久久久久男人的天堂| 九九九九九九免费视频| 国产精品久久久无码AV网站| 亚拍在线| 亚洲一卡2卡3卡4卡乱码网站 | 日韩无限资源| 亚洲有码 欧美精品| 呦呦一区| 免费看污网站| 欧美v亚洲v综合v国产v妖精| 三级网站超变态精品| 欧美日韩*字幕一区| 亚洲人妖网| 狠狠中文字幕| 国产一| 婷婷激情五月综合| 亚洲熟女av中文字幕| 久/久精品99看9| 伊人欧美大香蕉视频| 六月婷婷色综合| 日本2020一区二区| 日本天天操| 久久大黄片| 五月天久久婷婷亚洲 | 天天干夜夜一操| 疯操AV| 久久精品店| 欧美色图自拍| 农村妇女一级二级三级视频| 另类图片综合| 精品一久久久| 久操网视频| 亚州,欧美在线| 91色综| 又大又长又粗又爽又黄| 无码九九| 中文字幕黑人大片| 国产女人与拘做受视频免费| 好一吊区二区| 欧美日韩国产传媒在线精品| 亚洲三区视频| 日韩精品人妻中文字幕不卡乱码| 日韩人妻精品久久久久| 成人性爱视频在线看| 18精品一二区| 中文高清一区二区的| 6080YYY午夜理论片在线观看| 熟女熟妇一区二区三区视频| 亚洲精品久| 上海一级黄片| 91亚洲人| 九久久精品| 91久热这里只有精品| 国产Aα| 色综合加勒比| 久久精品99| 熟妇女人妻呻吟久久AV| 操99| 嫩呦国产一区二区三区AV| 久久人妻一区二区三区高清| 欧美色图中文字幕| 日韩九区| 国产AV激情无码久久无码| 国产99热| 欧美亚洲综合999| 青青草视频在线观看一区二区| 日本福利二区视频| 7777奇米影视久久| av影片在线观看不卡| 熟女熟妇一区二区三区视频| 99re95| 国产极品999| 9l视频自拍9l九色成人| 國產尤物AV尤物在線觀看 | 亚洲丝袜色| 91精品久久综合熟女| www.久久制服糖| 男人的天堂视频精品乱在线| 国产后入清纯| 超碰人妻中文在线| 久久超碰、| 亚洲熟妇极品| 国产高潮AA片免费看| 郑州宾馆老熟女露脸啪啪| 国产精品久久久久久亚洲色欲| 3P丝袜熟女 色综合| 超碰社区97| 加勒比海成人视频网| 日本精品免费一区二区三区四区| 九九热免费国产视频婷婷伊人五月 | 毛片17S| 999狠狠综合| 永久免费发布性爱网| 久草视频观看视频在线| 无码动漫av中文字幕| 欧美精品久久96人妻无码| www.男人的天堂| 亚洲色婷婷综合久久一区二区三区| julia ann久久| 色香伊人| 97超碰总站| 狠狠爱夜夜干| 国产精品粉嫩福利在线| 色噜噜狠狠色综无码久久| av 模特一区了| 欧美一区二区三区成人性生活 | 无码直播久久久| 日本影视久久免费| 色婷婷国产精品一区在线观看| 极品国产内射| 午夜国产综合视频在线观看| 国产成人亚洲精品无码最新在线| 日本人妻最新在线中| av黄图片在线观看| 高潮的A片激情扒开一区| 九九干| 精品制服美女中文一区二区三区| 久久是精品| 1204人成网站色www| 中文字幕视频二区| 九九九九亚洲| 热99这里有精品综合久久| 综合另类| 久久国产乱子伦精品免费女人| 性影在线视频| 欧美劲爆视频一区二区| 国产精品国产拍高清AV| 人妻少妇久久久| 亚洲三级网址久久最新| 欧美天堂超碰97| 久久精品成人| 97超碰人妻| 亚洲AV秘无码一区..| 日韩一级成人毛片免费观看| 久久性视频| 日本一片一区| 精品人妻伦一区二区三区久久| 欧美综合色| 午夜国产成人精品视频| 性色生活片久久毛片婬片免费放女人一级毛片 | 天天躁日日躁狠狠躁| 天天操人人操狠狠插| 国产亚洲精品玖玖玖在线观看| 婷婷五月天成人网| 老熟女熟妇| 国产精品大屁股999| 秋霞Av理论一级在线| 日韩精品一区二区日韩| 色婷五月天| 青青草五月天| 九九九只有精品| 日本高清免费一本视频在线观看| 日韩人妻中文视频| 亚洲天堂女优在线| 久久原创中文| 97在线免费看视频| 日韩 欧美 视频 在线 一区| 九九热在线视频| 亚欧美综合网。| 欧美精品一二三| 日韩欧美综合激情| 亚洲精品久久久久久久久豆丁网| 中文字幕女同在线| 日本操逼无码| 国产又爽又黄| 91天天c| 国产传媒日韩| 天堂8在线新版官网| 夜夜福利| 17c嫩草51久久91嫩草| 国产亚洲国产超碰| 亚洲情色在线| 曰韩人妻中文字幕在线| 午夜男女爽爽爽在线视频| 116美女午夜| 躁躁躁日日躁2020| 久久久免费一级黄片| 日韩美女高潮喷水视频| 美女91网站| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 成人美女av| 六月丁操逼| 一级二级在线观看| 天天插天天插| 91精品国产长腿丝袜美女| 日韩人妻播放| 国产精品suv一区| 内射夫妻三片| 精品国产乱码久久久久久久久1 | 天天网综合| 丁香六月综合激情| 欧美自拍网| 在线观看综合精品亚洲| 青青草女人天天干| 激情干在线| 97国产精选| www网站黄| 干b网| 免费综合亚洲中文| 欧美,亚洲,日韩,v,天堂,手机在线观看| 国产精品ⅴ无码大片在线看.| 蜜臀久久99精品久久久久免费观| 91综合中文字幕| 熟女丰满人妻一区| 搡老女人老91妇女老熟女| 开心五月深爱五月| 久久精品店| 精品女人999| www.av家庭乱伦| 国产精品对白内射| 久久日韩精品一区二区| 欧美一区二区传媒| 麻豆国产97在线| 国产精品网站免费| 国产一区二区三区白丝| 在线亚洲丝袜视频网站| 乱伦Av网| 亚洲欧美综合图片| 99热综合| 精品人妻一二三| 麻豆天美制片厂网站视频| 亚洲色图图片| 麻豆AV一区二区| 性色av大全| 免费超碰97久久| 亚洲欧美精品福利在线| 久久99国产精品| 按摩中文字幕| 欧美性生活免费网| 久久久内射良家| 久久精品小视频| 国内亚洲高清无码| 日韩三级性| 五月天丁香网| 九九九免费视频| 色综合99999| 日韩操人| 欧美特大AA级黄片| 欧美日韩中国x| 又大又黄国产| 18禁免费视频| 成人国产二区三区在线,男女精品。| 麻豆天美国美国产| 天堂无码精品国产久| 老熟女天天操| 亚洲精品天天影视综合网 | 久久久久久国产成人| 色拍偷亚洲| 另类综合另类| 亚洲精品无码成人久久久99| 人妻少妇精品视频一区二区三区| av情色影音| 中文字幕永久在线| 黄人人操人人操| 欧洲视频在线| 狠综合网| 99热超碰| 国产第25页在线观看| 东北女人无套内谢视频| 性爱综合一区二区| 日本不卡高清免v欧美日韩在线观看| 欧美日韩亚洲一区二区在线观看| 999久久久久久久久| 日韩情色AV| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 国产美女激情| 丁香五月天激情综合| 伊人激情五月天一区二区| 熟女人妻精品一区二区视频 | 天堂v无码免费视频| 99热国产| 亚洲区限制级| 97天天搞在线| 婷婷五月色| 国产综合网站在线播放| 妇女性内射冈站HDWWWCOM| 亚洲综合色图欧美| 日韩八十路老熟女| 大鸡吧尹人在线| 在线不卡视频| 一线黄色免费性爱片| www.亚洲成人一区| 91一区二匹| 97欧美日韩综合| 91欧美巨乳| 色天堂在线观看| 2025亚洲男人天堂| 青青国产精品在线| 99日韩| 无码国产精品午夜不卡(| 伊人久久在线视频观看| 国产无码精品成人| 综合第一页| 黄页| 欧美激情 亚洲色图| 蜜桃网熟妇| 九九亚洲色在线观看| 啊啊啊好疼| 亚洲素人网| 五十路人妻在线| 亚洲性少妇| 91伊人久久在线| 91AV天堂| 91天射| 国产av热热色| 色综合20p| 国产一区二区三区,在线观看观看| 亚洲免费97免费| 欧美日不卡| 91扒丝袜综合在线| 亚洲18禁| 欧美综合骚| 激情文学 国产一二三aV|