欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

會(huì)議室預(yù)約系統(tǒng)狀態(tài)機(jī)與并發(fā)控制實(shí)戰(zhàn)設(shè)計(jì)

會(huì)議室預(yù)約系統(tǒng)狀態(tài)機(jī)與并發(fā)控制實(shí)戰(zhàn)設(shè)計(jì) 簡(jiǎn)介這是一套面向Java Web初學(xué)者與企業(yè)信息化開發(fā)者的會(huì)議室資源管理實(shí)戰(zhàn)項(xiàng)目聚焦會(huì)議場(chǎng)景下的多角色協(xié)同預(yù)約需求解決傳統(tǒng)人工排會(huì)易沖突、效率低、信息不同步等痛點(diǎn)。資源包共744個(gè)文件5.01MB涵蓋20個(gè)JSP核心頁面實(shí)現(xiàn)用戶交互與業(yè)務(wù)跳轉(zhuǎn)、212個(gè)JS腳本含表單驗(yàn)證與動(dòng)態(tài)日歷控件、74個(gè)HTML靜態(tài)頁公告展示與說明、26個(gè)CSS樣式文件響應(yīng)式界面布局及31個(gè)PNG/GIF圖標(biāo)資源輔以JavaBean類、Servlet配置、SQL建表語句與Tomcat部署說明構(gòu)成完整MVC分層結(jié)構(gòu)。已有1659人學(xué)習(xí)下載讀者可直接部署運(yùn)行掌握基于JSPServletMySQL的Web應(yīng)用開發(fā)全流程包括部門/員工/會(huì)議室三級(jí)數(shù)據(jù)建模、Session權(quán)限控制、預(yù)約沖突檢測(cè)邏輯、前后端交互規(guī)范及常見安全加固實(shí)踐。1. 為什么一個(gè)“會(huì)議室預(yù)約”系統(tǒng)反而最容易暴露畢設(shè)/課設(shè)的硬傷你手上的這個(gè)「JAVA JSP會(huì)議室預(yù)約系統(tǒng)」表面看是教務(wù)管理里的小模塊但實(shí)際是檢驗(yàn)工程能力的試金石——它不考炫技算法卻卡在真實(shí)業(yè)務(wù)閉環(huán)的每個(gè)毛細(xì)血管里誰在什么時(shí)間、用什么身份、預(yù)約哪間帶投影儀的3號(hào)會(huì)議室預(yù)約后能不能被行政老師一鍵駁回駁回理由要不要留痕已確認(rèn)的預(yù)約臨時(shí)加人怎么同步通知這些不是“功能點(diǎn)”而是權(quán)限流、狀態(tài)機(jī)、并發(fā)控制、日志追溯四重關(guān)卡。我?guī)н^三屆學(xué)生做這類系統(tǒng)80%的翻車現(xiàn)場(chǎng)都出在“以為JSPServlet能跑通登錄就等于系統(tǒng)做完”——結(jié)果答辯時(shí)導(dǎo)師一問“兩個(gè)老師同時(shí)點(diǎn)下‘確認(rèn)使用’按鈕系統(tǒng)怎么保證只生成一條占用記錄”當(dāng)場(chǎng)啞火。這套方案專為踩過坑的人設(shè)計(jì)從真實(shí)會(huì)議場(chǎng)景倒推架構(gòu)用可驗(yàn)證的狀態(tài)遷移圖定義流程給出帶事務(wù)注解的DAO層關(guān)鍵代碼附帶5條高發(fā)并發(fā)/權(quán)限/數(shù)據(jù)一致性黑盒問題排查清單。適合正在趕畢設(shè)/課設(shè)、需要一份能跑、能講、能答的完整交付物的同學(xué)也適合作為小型OA中會(huì)議模塊的技術(shù)參考原型。2. 需求建模與核心狀態(tài)機(jī)設(shè)計(jì)把“開會(huì)”這件事拆解成可編碼的規(guī)則會(huì)議室預(yù)約不是簡(jiǎn)單的CRUD而是一套受角色、時(shí)間、設(shè)備、審批鏈多重約束的狀態(tài)流轉(zhuǎn)過程。我們先放棄“用戶填表→存數(shù)據(jù)庫”的直覺用狀態(tài)機(jī)思維錨定業(yè)務(wù)主干。2.1 從真實(shí)會(huì)議場(chǎng)景提煉6類核心角色與權(quán)限邊界系統(tǒng)中不存在“萬能管理員”。必須明確劃分以下角色及其操作邊界直接決定后續(xù)Spring Security配置粒度普通員工僅可創(chuàng)建/取消自己發(fā)起的待審核預(yù)約查看本人所有預(yù)約含歷史不可修改他人預(yù)約部門秘書可代本部門員工提交預(yù)約可查看本部門全部預(yù)約含未審核可撤回本部門待審預(yù)約會(huì)議室管理員可審核/駁回所有預(yù)約可強(qiáng)制釋放超時(shí)未使用的預(yù)約可維護(hù)會(huì)議室基礎(chǔ)信息名稱、容量、設(shè)備列表超級(jí)管理員僅用于初始化系統(tǒng)如創(chuàng)建初始管理員賬號(hào)日常不啟用該權(quán)限訪客賬號(hào)預(yù)留擴(kuò)展僅可查看公開會(huì)議室空閑時(shí)段不可預(yù)約為后續(xù)對(duì)接門禁系統(tǒng)留接口系統(tǒng)服務(wù)賬號(hào)用于定時(shí)任務(wù)如每日凌晨清理7天前的歷史記錄無Web登錄入口提示角色權(quán)限表role_permission必須采用“角色-資源-操作”三元組設(shè)計(jì)而非簡(jiǎn)單字段標(biāo)記。例如“會(huì)議室管理員”對(duì)/meeting/approve資源擁有POST操作權(quán)限而非在用戶表加is_admin布爾字段——后者會(huì)導(dǎo)致權(quán)限變更需改代碼且無法支持未來“某管理員僅管3樓會(huì)議室”的精細(xì)化需求。2.2 會(huì)議預(yù)約全生命周期狀態(tài)機(jī)4個(gè)主狀態(tài)7種合法遷移預(yù)約單meeting_booking的核心字段status不能用字符串隨意賦值必須嚴(yán)格遵循下圖狀態(tài)遷移規(guī)則實(shí)際開發(fā)中用枚舉類BookingStatus封裝當(dāng)前狀態(tài)可遷移到狀態(tài)觸發(fā)動(dòng)作約束條件DRAFT草稿PENDING_APPROVAL提交預(yù)約必須選擇會(huì)議室、起止時(shí)間、參會(huì)人數(shù)時(shí)間不能與該會(huì)議室已確認(rèn)預(yù)約沖突PENDING_APPROVAL待審核APPROVED/REJECTED/CANCELLED_BY_USER審核通過/駁回/用戶主動(dòng)取消駁回時(shí)reject_reason字段必填用戶取消僅限審核前APPROVED已批準(zhǔn)OCCUPIED/CANCELLED_BY_ADMIN/EXPIRED開始使用/管理員強(qiáng)制取消/超時(shí)未使用OCCUPIED需校驗(yàn)當(dāng)前時(shí)間≥預(yù)約開始時(shí)間EXPIRED由定時(shí)任務(wù)觸發(fā)超時(shí)30分鐘未點(diǎn)擊“開始使用”O(jiān)CCUPIED使用中COMPLETED/CANCELLED_BY_ADMIN結(jié)束會(huì)議/管理員強(qiáng)制終止COMPLETED需記錄實(shí)際結(jié)束時(shí)間用于統(tǒng)計(jì)會(huì)議室利用率// BookingStatus.java 枚舉定義關(guān)鍵部分 public enum BookingStatus { DRAFT(草稿), PENDING_APPROVAL(待審核), APPROVED(已批準(zhǔn)), OCCUPIED(使用中), COMPLETED(已完成), REJECTED(已駁回), CANCELLED_BY_USER(用戶取消), CANCELLED_BY_ADMIN(管理員取消), EXPIRED(已過期); private final String desc; // 構(gòu)造、getter省略... // 核心方法校驗(yàn)狀態(tài)遷移是否合法 public boolean canTransitionTo(BookingStatus target) { switch (this) { case DRAFT: return target PENDING_APPROVAL; case PENDING_APPROVAL: return target APPROVED || target REJECTED || target CANCELLED_BY_USER; case APPROVED: return target OCCUPIED || target CANCELLED_BY_ADMIN || target EXPIRED; case OCCUPIED: return target COMPLETED || target CANCELLED_BY_ADMIN; default: return false; // 其他狀態(tài)禁止遷移 } } }這段代碼的價(jià)值在于所有狀態(tài)變更必須調(diào)用canTransitionTo()校驗(yàn)否則拋出IllegalStateException。它把業(yè)務(wù)規(guī)則固化在代碼層避免前端JS或Controller里寫一堆if-else判斷極大降低邏輯錯(cuò)亂風(fēng)險(xiǎn)。我見過太多項(xiàng)目在“已批準(zhǔn)”狀態(tài)下還允許用戶點(diǎn)擊“取消”結(jié)果數(shù)據(jù)庫狀態(tài)變成非法值后續(xù)統(tǒng)計(jì)報(bào)表全崩。2.3 關(guān)鍵約束的落地實(shí)現(xiàn)時(shí)間沖突檢測(cè)與設(shè)備匹配算法會(huì)議室預(yù)約最常被忽略的硬性約束是時(shí)間重疊和設(shè)備缺失。不能只查“該會(huì)議室在[14:00,15:00]是否有預(yù)約”而要精確到分鐘級(jí)的區(qū)間覆蓋檢測(cè)。-- MySQL查詢檢查會(huì)議室room_id5在start_time2024-06-15 14:00:00到end_time2024-06-15 15:00:00之間是否存在沖突預(yù)約 SELECT COUNT(*) FROM meeting_booking WHERE room_id 5 AND status IN (PENDING_APPROVAL, APPROVED, OCCUPIED) AND NOT ( end_time 2024-06-15 14:00:00 OR -- 新預(yù)約在舊預(yù)約結(jié)束后開始 start_time 2024-06-15 15:00:00 -- 新預(yù)約在舊預(yù)約開始前結(jié)束 );設(shè)備匹配邏輯放在Service層更合理先查出所有滿足時(shí)間要求的會(huì)議室再過濾出包含所需設(shè)備如投影儀、視頻會(huì)議系統(tǒng)的列表。SQL中用FIND_IN_SET(投影儀, equipment_list)雖快但違反第一范式長(zhǎng)期維護(hù)成本高。推薦在room表增加equipment_ids字段JSON數(shù)組存儲(chǔ)設(shè)備ID關(guān)聯(lián)equipment字典表通過JOIN實(shí)現(xiàn)精準(zhǔn)匹配。3. 總體架構(gòu)設(shè)計(jì)三層結(jié)構(gòu)與四個(gè)模塊的職責(zé)劃分本系統(tǒng)采用經(jīng)典Java Web分層架構(gòu)但針對(duì)預(yù)約場(chǎng)景做了關(guān)鍵強(qiáng)化將狀態(tài)機(jī)引擎獨(dú)立為Service模塊DAO層強(qiáng)制事務(wù)控制JSP頁面僅負(fù)責(zé)渲染不摻雜業(yè)務(wù)邏輯。避免初學(xué)者常見的“JSP里寫Java代碼判斷狀態(tài)”反模式。3.1 分層結(jié)構(gòu)圖與各層核心職責(zé)┌─────────────────┐ HTTP/HTTPS ┌──────────────────┐ │ Browser │?─────────────────?│ Tomcat 9 │ └────────┬────────┘ └────────┬─────────┘ │ │ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ │ JSP Pages │ │ Servlets │ │ (View Layer) │ │ (Controller) │ │ - booking_form.jsp │?───────┐ │ - BookingServlet │ │ - my_bookings.jsp │ │ │ - AdminServlet │ │ - room_calendar.jsp │ └────────?│ - ReportServlet │ └────────┬────────┘ └────────┬─────────┘ │ │ ▼ ▼ ┌───────────────────────────────────────────────────────────────┐ │ Service Layer (Core Logic) │ │ - BookingService: 狀態(tài)遷移、沖突檢測(cè)、通知觸發(fā) │ │ - RoomService: 設(shè)備匹配、容量校驗(yàn)、空閑時(shí)段計(jì)算 │ │ - UserService: 角色權(quán)限校驗(yàn)、部門樹查詢 │ │ - NotificationService: 郵件/站內(nèi)信模板渲染與發(fā)送 │ └───────────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────────┐ │ DAO Layer (Data Access) │ │ - BookingDAO: 所有booking操作Transactional標(biāo)注 │ │ - RoomDAO: 會(huì)議室增刪改查含設(shè)備關(guān)聯(lián)查詢 │ │ - UserDAO: 用戶信息及角色關(guān)系查詢 │ │ - LogDAO: 操作日志記錄關(guān)鍵用于審計(jì) │ └───────────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────────┐ │ Database (MySQL 5.7) │ │ - meeting_booking: id, room_id, user_id, start_time, end_time, │ │ status, created_at, updated_at, reject_reason, actual_end...│ │ - meeting_room: id, name, capacity, equipment_list(JSON), ... │ │ - sys_user: id, username, password, dept_id, role_code, ... │ │ - sys_log: id, operator_id, operation_type, target_id, ... │ └───────────────────────────────────────────────────────────────┘3.2 四大核心模塊詳細(xì)設(shè)計(jì)與接口契約模塊一預(yù)約管理模塊Booking Module核心接口BookingService.createBooking(BookingRequest request)關(guān)鍵設(shè)計(jì)點(diǎn)BookingRequest對(duì)象必須包含roomId,startTime,endTime,userId,requiredEquipmentIds(List )禁止傳入原始字符串參數(shù)創(chuàng)建前調(diào)用RoomService.checkAvailabilityAndEquipment(roomId, startTime, endTime, requiredEquipmentIds)該方法內(nèi)部執(zhí)行SQL時(shí)間沖突檢測(cè)設(shè)備匹配狀態(tài)初始化為DRAFT僅當(dāng)用戶點(diǎn)擊“提交審核”才調(diào)用BookingService.submitForApproval(bookingId)此時(shí)狀態(tài)變更為PENDING_APPROVAL所有狀態(tài)變更操作approve/reject/cancel均在BookingService中完成Controller絕不直接更新status字段模塊二會(huì)議室資源模塊Room Module核心接口RoomService.getAvailableRooms(LocalDateTime start, LocalDateTime end, ListLong equipmentIds)關(guān)鍵設(shè)計(jì)點(diǎn)返回ListRoomWithAvailability其中RoomWithAvailability包含會(huì)議室基本信息該時(shí)段是否可用true/false沖突預(yù)約數(shù)用于前端提示“該時(shí)段已被預(yù)約X次”空閑時(shí)段計(jì)算不依賴復(fù)雜SQL而是用Java Stream處理查出該會(huì)議室所有APPROVED/OCCUPIED狀態(tài)的預(yù)約生成LocalDateTime[]數(shù)組表示占用區(qū)間再與請(qǐng)求時(shí)段做差集運(yùn)算設(shè)備匹配采用IN子查詢SELECT r.* FROM meeting_room r JOIN room_equipment re ON r.idre.room_id WHERE re.equipment_id IN (1,3,5) GROUP BY r.id HAVING COUNT(DISTINCT re.equipment_id)3模塊三權(quán)限與角色模塊Auth Module技術(shù)選型Spring Security 5.7 自定義UserDetailsService關(guān)鍵設(shè)計(jì)點(diǎn)權(quán)限表達(dá)式使用PreAuthorize(hasRole(ROOM_ADMIN) or #booking.userId principal.id)控制方法級(jí)訪問角色數(shù)據(jù)從數(shù)據(jù)庫加載不硬編碼。SysUser實(shí)體中roleCode字段對(duì)應(yīng)sys_role表的code如ROOM_ADMIN登錄成功后SecurityContext中存入CustomUserDetails對(duì)象包含username,deptName,roleCode,permissions(List )JSP頁面用sec:authorize accesshasRole(ROOM_ADMIN)控制按鈕顯示禁止用EL表達(dá)式${user.role admin}模塊四通知與日志模塊Notification Audit Module核心設(shè)計(jì)解耦通知渠道日志強(qiáng)制記錄關(guān)鍵設(shè)計(jì)點(diǎn)NotificationService.send(NotifyRequest request)接收統(tǒng)一請(qǐng)求對(duì)象內(nèi)部根據(jù)request.channelEMAIL/SYSTEM調(diào)用不同實(shí)現(xiàn)站內(nèi)信模板存于notify_template表template_codeBOOKING_APPROVED對(duì)應(yīng)審批通過模板支持{userName},{roomName}等占位符所有狀態(tài)變更、關(guān)鍵操作如管理員強(qiáng)制取消必須調(diào)用LogDAO.insertLog(...)記錄字段包括operatorId,operationType(BOOKING_APPROVE),targetId(預(yù)約ID),details(JSON格式含原狀態(tài)/新狀態(tài)/操作人IP)4. 關(guān)鍵模塊實(shí)現(xiàn)與避坑指南5條血淚經(jīng)驗(yàn)總結(jié)這部分是真正讓你避開答辯雷區(qū)的干貨。下面列出我在多個(gè)項(xiàng)目中反復(fù)驗(yàn)證過的高頻翻車點(diǎn)每條都按“現(xiàn)象→原因→解決”結(jié)構(gòu)給出可立即執(zhí)行的方案。4.1 并發(fā)預(yù)約沖突兩個(gè)用戶同時(shí)預(yù)約同一時(shí)段數(shù)據(jù)庫存了兩條記錄現(xiàn)象測(cè)試時(shí)兩人幾乎同時(shí)點(diǎn)擊“提交審核”后臺(tái)日志顯示兩條INSERT INTO meeting_booking成功但會(huì)議室實(shí)際只能容納一場(chǎng)會(huì)議。原因時(shí)間沖突檢測(cè)checkAvailabilityAndEquipment和插入預(yù)約insertBooking是兩個(gè)獨(dú)立數(shù)據(jù)庫操作中間存在時(shí)間窗口。即使加了TransactionalMySQL默認(rèn)隔離級(jí)別REPEATABLE READ也無法阻止幻讀。解決在BookingDAO.insertBooking()方法上添加數(shù)據(jù)庫唯一索引強(qiáng)制約束-- 在meeting_booking表上創(chuàng)建復(fù)合唯一索引防止同一會(huì)議室在同一時(shí)段出現(xiàn)多條非取消狀態(tài)記錄 CREATE UNIQUE INDEX uk_room_time_status ON meeting_booking (room_id, DATE(start_time), HOUR(start_time), status) WHERE status IN (PENDING_APPROVAL, APPROVED, OCCUPIED);注意MySQL 8.0才支持函數(shù)索引和WHERE條件索引。若用低版本改用start_dateDATE類型和time_slotTINYINT如14表示14:00-15:00兩個(gè)字段組合唯一索引。4.2 狀態(tài)機(jī)失控用戶在“已批準(zhǔn)”狀態(tài)仍能點(diǎn)擊“取消預(yù)約”按鈕現(xiàn)象JSP頁面未根據(jù)booking.status動(dòng)態(tài)控制按鈕可見性導(dǎo)致用戶看到“取消”按鈕并點(diǎn)擊后端未校驗(yàn)狀態(tài)直接執(zhí)行取消邏輯造成狀態(tài)非法如APPROVED→CANCELLED_BY_USER。原因前端控制JSP EL表達(dá)式和后端校驗(yàn)Service方法脫節(jié)。常見錯(cuò)誤是Controller里只校驗(yàn)userId不校驗(yàn)status。解決雙重校驗(yàn)。JSP中c:if test${booking.status DRAFT || booking.status PENDING_APPROVAL} a hrefbooking?opcancelid${booking.id}取消預(yù)約/a /c:ifService中cancelBooking(Long bookingId, Long userId)方法開頭必須加Booking booking bookingDAO.findById(bookingId); if (!booking.getStatus().canTransitionTo(BookingStatus.CANCELLED_BY_USER)) { throw new BusinessException(當(dāng)前狀態(tài)不允許取消 booking.getStatus().getDesc()); }4.3 時(shí)間顯示時(shí)區(qū)混亂用戶在北京提交14:00預(yù)約數(shù)據(jù)庫存成06:00現(xiàn)象前端JSP用fmt:formatDate value${booking.startTime} patternyyyy-MM-dd HH:mm/顯示正常但數(shù)據(jù)庫里start_time字段值比預(yù)期早8小時(shí)。原因MySQL服務(wù)器時(shí)區(qū)為UTC而Java應(yīng)用未指定時(shí)區(qū)SimpleDateFormat或JDBC驅(qū)動(dòng)默認(rèn)用系統(tǒng)時(shí)區(qū)可能為CST導(dǎo)致時(shí)間解析錯(cuò)亂。解決三處統(tǒng)一設(shè)置為Asia/ShanghaiMySQL啟動(dòng)參數(shù)default-time-zone08:00JDBC連接URLjdbc:mysql://localhost:3306/meeting?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingUTF-8Java代碼中所有日期操作用LocalDateTime無時(shí)區(qū)ZoneId.of(Asia/Shanghai)轉(zhuǎn)換禁用Date和Calendar4.4 權(quán)限繞過未登錄用戶直接訪問/admin/approve.jsp頁面現(xiàn)象在瀏覽器地址欄輸入http://localhost:8080/admin/approve.jsp頁面直接打開無任何攔截。原因Spring Security配置中只保護(hù)了/admin/**路徑下的Servlet如/admin/approve但未保護(hù).jsp后綴的靜態(tài)資源。解決在WebSecurityConfigurerAdapter中顯式配置Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers(/admin/**).hasRole(ROOM_ADMIN) .antMatchers(/**/*.jsp).denyAll() // 拒絕所有JSP直接訪問 .antMatchers(/css/**, /js/**, /images/**).permitAll() .anyRequest().authenticated(); // ...其他配置 }同時(shí)確保web.xml中servlet-mapping不將.jsp映射給Spring DispatcherServlet保持JSP由容器原生處理。4.5 日志缺失管理員駁回預(yù)約后找不到誰在何時(shí)駁回及理由現(xiàn)象用戶投訴“我的預(yù)約被駁回了但沒收到通知”管理員堅(jiān)稱“我沒操作”無證據(jù)追溯。原因駁回操作只更新了meeting_booking.status和reject_reason未記錄操作人、時(shí)間、IP等審計(jì)信息。解決在BookingService.rejectBooking(Long bookingId, Long adminId, String reason)方法中必須調(diào)用日志服務(wù)// 記錄駁回操作日志 Log log new Log(); log.setOperatorId(adminId); log.setOperationType(BOOKING_REJECT); log.setTargetId(bookingId); log.setDetails(JsonUtil.toJsonMap(Map.of( oldStatus, booking.getStatus().name(), newStatus, BookingStatus.REJECTED.name(), reason, reason, clientIp, getClientIp(request) // 從HttpServletRequest獲取 ))); logDAO.insertLog(log); // 再執(zhí)行駁回業(yè)務(wù)邏輯 booking.setStatus(BookingStatus.REJECTED); booking.setRejectReason(reason); bookingDAO.update(booking);5. 前端交互與用戶體驗(yàn)優(yōu)化讓系統(tǒng)不只是能用還要好答很多同學(xué)花90%精力在后端卻在答辯時(shí)被導(dǎo)師一句“這個(gè)界面怎么沒有預(yù)約成功提示”問懵。前端不是點(diǎn)綴而是業(yè)務(wù)閉環(huán)的關(guān)鍵一環(huán)。這里聚焦三個(gè)最影響答辯觀感的點(diǎn)實(shí)時(shí)狀態(tài)反饋、空閑時(shí)段可視化、移動(dòng)端適配。5.1 預(yù)約流程的漸進(jìn)式狀態(tài)反饋告別“白屏等待”JSP頁面不能只靠response.sendRedirect()跳轉(zhuǎn)必須給用戶明確的進(jìn)度感知。以提交預(yù)約為例!-- booking_form.jsp 中的提交按鈕 -- button typebutton onclicksubmitBooking() idsubmitBtn span idbtnText提交審核/span span idloadingIcon classd-none?/span /button script function submitBooking() { const btn document.getElementById(submitBtn); const text document.getElementById(btnText); const icon document.getElementById(loadingIcon); // 1. 按鈕置灰顯示加載中 btn.disabled true; text.classList.add(d-none); icon.classList.remove(d-none); // 2. 發(fā)送AJAX請(qǐng)求 fetch(booking?opsubmit, { method: POST, headers: {Content-Type: application/x-www-form-urlencoded}, body: new URLSearchParams({ roomId: document.getElementById(roomId).value, startTime: document.getElementById(startTime).value, endTime: document.getElementById(endTime).value }) }) .then(response response.json()) .then(data { if (data.success) { // 3. 成功顯示Toast并跳轉(zhuǎn) showToast(預(yù)約已提交等待審核, success); setTimeout(() window.location.href my_bookings.jsp, 1500); } else { // 4. 失敗恢復(fù)按鈕顯示錯(cuò)誤 btn.disabled false; text.classList.remove(d-none); icon.classList.add(d-none); showToast(提交失敗 data.message, error); } }) .catch(err { btn.disabled false; text.classList.remove(d-none); icon.classList.add(d-none); showToast(網(wǎng)絡(luò)錯(cuò)誤請(qǐng)重試, error); }); } /script這段代碼的價(jià)值在于用戶永遠(yuǎn)知道系統(tǒng)在做什么。答辯時(shí)導(dǎo)師點(diǎn)擊按鈕看到按鈕變灰、出現(xiàn)?圖標(biāo)、1.5秒后跳轉(zhuǎn)會(huì)直觀感受到“流程嚴(yán)謹(jǐn)”。而如果只是form actionbooking?opsubmit提交后白屏2秒體驗(yàn)感直接扣分。5.2 會(huì)議室空閑時(shí)段日歷視圖用純CSS實(shí)現(xiàn)響應(yīng)式網(wǎng)格避免引入jQuery UI或FullCalendar等重型庫。用Bootstrap Grid 簡(jiǎn)單CSS即可實(shí)現(xiàn)清晰的日程表!-- room_calendar.jsp 核心HTML -- div classrow div classcol-2 font-weight-bold時(shí)間/div c:forEach items${rooms} varroom div classcol-2 font-weight-bold${room.name}/div /c:forEach /div c:forEach begin8 end18 step1 varhour div classrow border-top div classcol-2 py-1${hour}:00/div c:forEach items${rooms} varroom div classcol-2 py-1 c:choose c:when test${room.availability[hour] AVAILABLE} button classbtn btn-sm btn-success w-100 onclickbookRoom(${room.id}, ${hour}:00, ${hour1}:00) ? 空閑 /button /c:when c:otherwise span classtext-muted small? 占用/span /c:otherwise /c:choose /div /c:forEach /div /c:forEach/* room_calendar.css */ .btn-success { background-color: #28a745 !important; border-color: #218838 !important; } .btn-success:hover { background-color: #218838 !important; }這個(gè)設(shè)計(jì)的優(yōu)勢(shì)是零JS依賴純服務(wù)端渲染。room.availability是MapInteger, Stringkey為小時(shí)8-18value為AVAILABLE/OCCUPIED。數(shù)據(jù)在Controller中已計(jì)算好JSP只做展示。答辯演示時(shí)導(dǎo)師拖動(dòng)瀏覽器寬度網(wǎng)格自動(dòng)從4列變?yōu)?列會(huì)立刻感受到“移動(dòng)端友好”。5.3 移動(dòng)端適配關(guān)鍵點(diǎn)表單與列表的觸控優(yōu)化JSP頁面默認(rèn)在手機(jī)上體驗(yàn)極差。只需三處修改就能讓導(dǎo)師在手機(jī)上流暢操作強(qiáng)制視口縮放在head中加入meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1, user-scalableno表單控件增大點(diǎn)擊區(qū)域所有input、select、button添加CSSinput, select, button { min-height: 44px; /* iOS最小觸控區(qū)域 */ padding: 10px; font-size: 16px; }列表項(xiàng)增加分割線與間距my_bookings.jsp中c:forEach items${bookings} varb div classcard mb-3 shadow-sm div classcard-body h6 classcard-title${b.roomName} · ${b.startTimeStr} - ${b.endTimeStr}/h6 p classcard-text span classbadge badge-${b.statusBadge}${b.statusDesc}/span br參會(huì)人${b.participantCount}人 /p /div /div /c:forEachbadge-${b.statusBadge}對(duì)應(yīng)CSS類.badge-success已批準(zhǔn)、.badge-warning待審核等顏色區(qū)分一目了然。答辯時(shí)導(dǎo)師用手機(jī)點(diǎn)開你的系統(tǒng)看到卡片式布局、醒目的狀態(tài)標(biāo)簽、足夠大的按鈕會(huì)認(rèn)為“這學(xué)生考慮到了真實(shí)使用場(chǎng)景”。6. 答辯驗(yàn)收與交付檢查用這7個(gè)問題自測(cè)系統(tǒng)完整性答辯不是背誦代碼而是證明你構(gòu)建了一個(gè)可運(yùn)行、可驗(yàn)證、可維護(hù)的系統(tǒng)。我每次指導(dǎo)學(xué)生前都會(huì)讓他們對(duì)著這份清單逐項(xiàng)打鉤。只要7項(xiàng)全過答辯通過率接近100%。這不是玄學(xué)是把抽象的“系統(tǒng)完成度”轉(zhuǎn)化成可執(zhí)行的檢查項(xiàng)。6.1 功能性驗(yàn)收7個(gè)必答問題清單序號(hào)問題檢查方式通過標(biāo)準(zhǔn)我的血淚經(jīng)驗(yàn)1能否用普通員工賬號(hào)預(yù)約一間會(huì)議室并在1分鐘內(nèi)被會(huì)議室管理員審核通過實(shí)際操作A賬號(hào)預(yù)約→B賬號(hào)登錄審核→刷新A賬號(hào)頁面A賬號(hào)“我的預(yù)約”中狀態(tài)變?yōu)椤耙雅鷾?zhǔn)”且B賬號(hào)操作日志有記錄曾有學(xué)生忘記在BookingService.approve()中調(diào)用NotificationService.send()導(dǎo)致用戶收不到通知答辯時(shí)導(dǎo)師故意等2分鐘說“怎么沒提示”當(dāng)場(chǎng)扣分2兩個(gè)用戶同時(shí)預(yù)約同一會(huì)議室同一時(shí)段是否只有一人成功另一人是否收到明確提示并發(fā)測(cè)試用Chrome和Firefox同時(shí)提交相同預(yù)約數(shù)據(jù)庫meeting_booking表只新增1條記錄失敗方頁面顯示“該時(shí)段已被預(yù)約請(qǐng)選擇其他時(shí)間”不做并發(fā)測(cè)試是最大盲區(qū)。用Postman發(fā)兩個(gè)POST請(qǐng)求比手動(dòng)點(diǎn)更快10秒搞定3管理員駁回預(yù)約時(shí)是否強(qiáng)制填寫駁回理由理由是否存入數(shù)據(jù)庫并顯示在用戶端操作管理員駁回時(shí)不填理由→點(diǎn)擊確定頁面彈出JS警告“駁回理由不能為空”填入理由后用戶端“我的預(yù)約”詳情頁顯示該理由很多同學(xué)只在數(shù)據(jù)庫加了reject_reason字段但沒在JSP表單加required屬性也沒在Service層校驗(yàn)非空屬于典型“半成品”4修改密碼后原Session是否立即失效能否用舊密碼登錄操作A賬號(hào)登錄→修改密碼→用舊密碼嘗試登錄舊密碼登錄失敗提示“用戶名或密碼錯(cuò)誤”新密碼可登錄Session管理常被忽視。必須在UserService.changePassword()中調(diào)用SecurityContextHolder.getContext().setAuthentication(null)并清空HttpSession5查看“會(huì)議室使用率報(bào)表”時(shí)是否顯示近7天每間會(huì)議室的使用小時(shí)數(shù)數(shù)據(jù)是否準(zhǔn)確操作進(jìn)入報(bào)表頁核對(duì)數(shù)據(jù)庫meeting_booking中statusCOMPLETED的記錄報(bào)表數(shù)字 SUM(actual_end_time-start_time)單位為小時(shí)四舍五入到小數(shù)點(diǎn)后1位報(bào)表SQL別寫COUNT(*)那是預(yù)約次數(shù)不是使用時(shí)長(zhǎng)。必須用TIMESTAMPDIFF(HOUR, start_time, actual_end_time)6在手機(jī)瀏覽器訪問預(yù)約表單能否正常填寫按鈕是否足夠大頁面是否橫向滾動(dòng)真機(jī)測(cè)試用iPhone Safari打開系統(tǒng)表單控件可點(diǎn)擊無橫向滾動(dòng)條文字清晰可讀切忌用Chrome模擬器真機(jī)測(cè)試10分鐘能發(fā)現(xiàn)90%的移動(dòng)端問題7刪除一條已“使用中”的預(yù)約系統(tǒng)是否拒絕并提示“會(huì)議正在進(jìn)行中不可刪除”操作將預(yù)約狀態(tài)設(shè)為OCCUPIED→嘗試刪除頁面提示明確錯(cuò)誤數(shù)據(jù)庫記錄未刪除操作日志記錄“DELETE_FAILED”狀態(tài)機(jī)校驗(yàn)必須覆蓋所有非法遷移。BookingService.deleteBooking()開頭第一行就應(yīng)是if (booking.getStatus() OCCUPIED) throw ...6.2 文檔與代碼規(guī)范答辯官最易抓的細(xì)節(jié)除了功能文檔質(zhì)量直接暴露你的工程素養(yǎng)。我要求學(xué)生必須提供以下三份文檔缺一不可《數(shù)據(jù)庫設(shè)計(jì)說明書》PDF包含ER圖用draw.io畫、每張表的字段說明含NOT NULL、INDEX、FOREIGN KEY標(biāo)注、關(guān)鍵索引解釋如uk_room_time_status為何要加WHERE條件。不要截圖Navicat要手繪ER圖——這證明你理解了關(guān)系。《部署手冊(cè)》TXT精確到每一步命令例如# 1. 導(dǎo)入數(shù)據(jù)庫 mysql -u root -p meeting meeting_schema.sql # 2. 修改Tomcat配置 編輯 conf/server.xml將Connector port8080 改為 port8081 # 3. 啟動(dòng)應(yīng)用 ./bin/startup.sh不寫“配置好數(shù)據(jù)庫連接”這種廢話要寫出具體改哪行、填什么值?!对创a注釋覆蓋率報(bào)告》HTML用JaCoCo生成要求BookingService.java等核心類注釋覆蓋率≥80%。注釋不是寫// 設(shè)置用戶ID而是// 校驗(yàn)狀態(tài)機(jī)僅DRAFT/PENDING_APPROVAL狀態(tài)允許取消防止非法狀態(tài)遷移。從那以后我每次帶學(xué)生做畢設(shè)都強(qiáng)制他們?cè)趯懙谝恍写a前先用Word畫出狀態(tài)機(jī)圖、用draw.io畫出ER圖、用記事本寫下部署步驟。不是為了交差而是讓大腦先建立完整的系統(tǒng)骨架再往里填肉。骨架歪了代碼寫得再漂亮也是危房。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷香五月天| 色情久久久| 丁香五月综合| 操笔无码| 亚洲色图五月丁香| 色婷婷呢狠禁久禁| 一本色道久久88加勒比—| 色色婷| 999热成人在线综合网| 久久性视频| 久久九九激情五月天| 深爱五月激情网| 99热精品中文字幕| 色欲五月丁香| 亚洲综合激| 色综合久| 激情综合色| 久久免片| 99丁香五月婷婷在线| 五月婷婷偷| 五月丁香狠狠爱| 婷婷天堂站| 五月天激情婷婷久久| 去色色五月天| 亚洲第一成人无码A片| 五月婷婷综合网| 六月婷婷色综合| 五月丁香六月婷婷亚洲激情综合| 中文字幕97超级碰| 超碰色女| 91丨九色|PRNY熟妇| 中文字幕日产A片在线看| 婷婷五月色激情欧美激情| 天天干天天干天天干| 激情深爱婷婷网| 夫妇交换刺激做爰| 五月婷婷色| 爽极品色| 538在线精品| 色五月在线观看| 五月视频日本免费观看| 欧美婷婷精品激情| 丁香蜜臀黄色婷婷五月天| 色色无码| 色播五月婷婷五月| 五月激情综合美女久久| 精品一二三区久久AAA片| 天天澡天天狠天天天做| 91精品久久久久、久五月天| 五月婷婷九九热| 久久久人妻系列| 婷婷综合干| 天天操人人干| 九九色天堂| 婷婷五月,偷窥偷拍网| 亚洲色网络| 激情五月激情综合网一级丸片| 成人性生活免费观看。| 日韩AV免费| 亚洲熟妇AV乱码在线观看| 香蕉久久国产AV一区二区| 久久99美女精彩视频| 超碰在线91| 天堂久久久久天堂网| 中文字幕黄色电影网址| 丁香五月首页| 精品成人久久久久久久_一二三四视| 国产操碰| 搡BBBB搡BBB搡18| 5月婷婷6月六月丁香| 久久九色| 成人短视频在线观看| www.天天干| 丁香五月六月综合激情| 色丁香五月婷婷| 日夜夜天天| 九九九成人在线视频| 丁香五月婷婷激情尤物| 综合色影院| 色婷婷五月综合色婷婷| 久久久久九九九九视屏小说88| 五月丁香婷婷伊人| 97伦色婷婷| 男女啪啪做爰高潮无遮挡 | 最近中文字幕大全免费版在线 | 亚洲不卡| 99久久极情精品一区| 色色欧美色色色| 九九免费精品| 成人国产网| 99ri国产在线| 五月丁香啪啪网| www.婷婷五月天.com| 色综合五月在线| 综合色五月| 色婷婷影视| 人人看人人草人人摸| 五月天六月天| 任你日视频| 天天综合精品| 色婷婷丁香综合中文字幕| 亚洲1区| 色色热99| 久久九精品| 中文字幕av久久爽一区| 99热免费18| 99久久精彩视频。| 99热这里只有精品9| 日本天天色| 综合五月丁香六月婷婷| 综合五月天完整| 丁香婷婷六月| 在线观看亚洲AV| 日韩一66精品| 99色色| 97人人看一| 婷婷欠久少妇| 日本色婷婷久久99精品91| 四虎成人精品永久免费AV九九| 爱iii做iiii日| 色婷婷狠狠久久YY| 182TV大香蕉| 午夜精品久久久久久久爽| 婷婷激情人妻| 色色色在线观看| 亚洲狠狠色丁香婷婷综合久久| 99久久婷婷国产综合精品电影| 九九爱这里只有精品| 噜噜网免费视频| 亚洲成人在线播放| 99re66热这里只有精品| 久久婷婷亚洲| 无码一区二区三区四区五区| 久久五月天婷婷| 97色碰| 色婷婷五月色| 九九碰九九爱97| 91激情五月开心| 久久这里在精品视频| 五月天成人免费视频| 青996青| 99亚洲日韩| 五月婷婷 激情按摩| 日本综合色色| 香蕉婷婷| 久久99网| 高清无码 一区 二区 三区| 色五月情| 天天日天天干天天天| se婷97| eeuss人妻| 三人荫蒂添的好舒服A片| 夜夜撸日日操| 日韩九区| 超碰操日| 天天插天天插| 七七九九色色| 欧美黄色韩日网| 婷婷丁香先锋资源网站| 五月婷婷偷拍| 六月色婷婷欧美| 婷婷六月久久| 大香蕉久久视频久久视频 | 中文字幕免费高清电视剧| 这里只有精品免费观看网占| 永久思思热在线| 五月丁香久久| 噜一噜在线| 婷婷在线观看五月天在线视频| 欧美在线视频99| 蜜臀99精品| 免费国产VA国产免费| 久久五月天丁香| 婷婷深爱五月天| 五月激情婷婷国产精品久久久久久| 激情婷婷五月天。| 在线视频你懂得| 色综合99无码 | 五月丁香久久| 成人精品人妻| 五月天婷婷影院| 人妻系列久久久久久久久久久| 丁香六月丁香婷婷激情| 久久精品这里只有精品免费首页| 狠狠干无码| 婷婷狠狠操| 婷婷五月激情小说| 99精品视频免费观看| 婷婷五月天激情开心网| 五月天婷爱综合| www91久久| 国产在线网址1| 狠狠操狠狠| 天天天天天天天操| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 天天做天天爱天天日| 亚洲激情综合网| 婷婷五月天久久| 无码免费人妻A片AAA毛片西瓜| 丁香五月亚洲综合| 色五月婷婷中文字幕在线观看| 激情综合青草| 色色色99| 久久婷婷五月激情网站| 丁香五月婷婷在线| 亚洲免费成人电影AV| 在线综合亚洲欧美65| 99人妻碰碰碰久久久久禁片| 丁香五月另类小说| 综合大香蕉| 丁香五月婷婷激情网| 久久人妻视步| 99热66| 丁香婷婷91在线观看视频| 激情六月日韩| 天天射天天射一道本日本社区 | AV亚洲在线| 天天综合亚洲综合网天天αⅴ| 婷婷五月天激情五月天深爱五月天| 婷婷伊人綜合中文字幕| 色5月婷婷色| 亚洲va欧洲va国产va不卡| 国产午夜成人免费看片无遮挡| 丁香五月综合| 久久婷婷综合五月天| 操97免费超级视频| 国产精品色婷婷99久久精品| 99热在线观看| 久久九九精彩| 美女va| 天天夜天天色天天| 99只有这里是精品| 色欲一区二区三区精品A片| 超级碰91| www亚洲无码| 色婷婷大香蕉| 五月天色婷婷基地| 五月激情六月丁香| 色五月成人| 久久久er热| 婷婷激情小说| 国产婷婷色综合AV蜜臀AV | 91精品国产综合久久密臀| 五月婷婷影院| 久久新地此| 激情五月综合ì香亚洲| 激情五月激情综合网| 色婷婷AV久久| 五月色无码| 爱射综合| 91porn一起草| 婷婷激情五月| 三级黄网站| 婷婷五月丁香四射| 亚洲日本三级片| 丁香五月日韩| 五月婷网站| 久操福利| 9有码中文| 婷婷五月天亚洲综合网| 国产乱妇乱子在线播视频播放网站 | 五月天天爽| 四川BBB搡BBB爽爽视频| 午夜无码精品色综合久久| 99热丁香| 日本女天天爽| 91人人人人人| 婷婷五月六| 99日在线观看视频| 色婷婷操逼| 97在线刺激| 99色在线观看视频| 五月丁香综合啪啪| 99re热| 国产精品美女久久久久AV超清| 丁香综合网| 1999天天操夜夜操| 丰满少妇乱A片无码| 人人草开心五月天| 天天做天天爱高潮片| 国产古装妇女野外A片| 丁香六月无码播放| 激情婷婷综合| 99操中文视频| 五月天怕怕| 丁香五月激情综合| 久久99精品视频| 九九99一区| 99热精品网| 激情色播| site:pzdcoin.com| 久久久这里都是精品| 99热很操老逼| 五月丁香激情六月| 国产精品A片| 五月天激情无码高清 | 超碰97久久| 120分钟婬片免费看| 色情五月天婷婷| 噜噜操操| 99色| 色色色色色日韩午夜激情 | 激情综合网丁香| 久久精彩免费视频精彩免费视频| 天天拍夜夜撸| 狠狠擼综合| 久色中文| 激情丁香五月天图片| 五月天婷婷久草丁香| 五月婷婷基地| 99热在线中文字幕| 热久久66| 国产婷婷色综合AV蜜臀AV| 九九久热| 婷婷色五月综合| 天天操天天操天天操| 五月丁香A片| 91丨九色丨东北熟女| 亚洲av成人在线| 91chinese 在线| 99九九热视频| 99久超碰| 538久久| 天天干夜夜b| 欧美久久五月婷婷| 婷婷婷婷婷开心无码播放| 俺也去在线视频| 日本va欧美va国产激情| 色香蕉影院| AA片在线观看视频在线播放| 婷婷五月丁香四射| 色综合婷婷| 超碰国产在线播放| www久久久| 婷婷五月天人妻| 99热这里只有精品中文字幕| 色情婷婷五月天| 欧美日本韩国亚洲| 色婷婷成人网| 丁香五月激情婷婷| 九月丁香婷婷| …亚洲黄色在线播放日韩、av中文a…| 9九热视频| 五月天婷婷色综合| 琪琪色网在线| 天堂婷婷丁香六月网| 蜜臀99精品| 亚洲成人日韩无码精品| 亚洲精品小视频| 色婷婷小说网| 九九人妻福利| 色噜噜狠狠一区二区三区| 日本久久9| 五月花综合| 激情网婷婷五月天| 色五月婷婷伊人| 播五月婷婷开心| 草操AV在线| 99ri精品视频在线观看| 久久综合图片| 五月丁香婷婷国产精品综合| 这里只有精品视频99| 久久艹 五月天| 做爱夜夜干天天操| 熟妇人妻中文字幕无码老熟妇| 久久Xx| 婷婷丁香五月亚洲综合网在线视频观看| 色婷婷亚洲精品天天综| 欧美日韩国产日本精品四虎网网站物| 丁香五月激情无码视频| 啪啪啪大香蕉| 久久这里在精品视频| 婷婷天天色| 精品AV无码超碰| 丁香五月天色综合| 五月丁香成人网| 色综合com| 五月天激情四射网站| 婷婷视频在线碰| 五月婷婷黄色视频| 午夜伊人大香蕉| 激情五月婷在线精品| 婷婷丁香日韩五月| www、色色色| 久久久久97| 婷婷五月综合激情免费视频| 亚洲第二AV| 亚洲色热| 激情婷婷丁香五月天小说| 五月综合久久| 九九九九这里只有精品| 日本一级| 色吧网91| 久草大| 丁香香五月激情免费视频| 国产成人精品一区二三区熟女在线| 色播播之激情五月婷婷| 色婷婷五月天偷拍| 99精品偷自拍| 亚洲AV成人精品日韩在线播放| 精品一区二区三区四区五区六区介绍| 91九色成人原创视频| 99在线精品视频| 久久色9| 久久99热这里只有精品23| 伊人大香蕉毛片| 99在线观看精品视频| 色五月天本日| 亚洲色视频| 色欲久久久久久综合网综合网| 天天操,夜夜骑| 大香蕉综合网| 色婷婷88| 大香蕉综合在线| 超喷97免费在线视频| 久久婷婷内射| 天天cha成人综合网| 大香蕉网站,大香蕉综合| 99色爱| 五月丁香婷婷免费视频| 99re这里只有精品国产99| 色五月激情综合网站| 婷婷五月色激情欧美激情| 五月社区丁香| 亚洲天堂亚洲色色色| 五月丁香婷婷在线| 男人的天堂五月丁香| 综合色、色综合| 日本99久久| 五月丁香六月在线| 五月婷婷激情综合网| 天天艹夜夜爽| 日日噜狠狠色综合久久| 日韩成人五月天| 久月婷婷| 熟女乱论网| 五月丁香六月欧美综合| 五月丁香激情综合网官网| 777久久综合视频| 精品国产va久久久久| 高清不卡一区| 插插插丁香五月婷婷| 九九99精品| 91超级碰| 91精品久久久久久综合五月天| 婷婷在线激情| 免费黄色片子| 99热8| 亚洲人妻AV| 97碰在线视频| seav天堂| 日韩有码久久| 色综合色| 亚洲激情婷婷| 欧美激情综合色综合啪啪五月| 九九热九九| 色播激情| xx色综合| 日本久久网| 亚洲视频在线网站| 噜噜噜狠狠色综合| 五月婷婷六月丁香激情| 五月天国产| 丁香 亚洲 久久| 国产亚洲色婷婷久久99精品91| 久99久精品| 久热免费视频| 婷婷五月天精品| 久久激情网| 色婷婷888| 丁香六月亚洲综合| 99热在线只有精品| 色综合天堂| 偷拍五月丁香| 99五丁香月| 亚洲视频无| 中文字幕av在线播放| 婷婷月五天在线在线看| 99热这里只有的精品视| 五月婷婷影院| av免费在线观看0| 黑人熟妇一区二区三区| 亚洲综合丁香五月天| www.超碰在线| 这里只有精品日韩精品| 久久久久人妻| 日韩青青| 偷拍五月丁香| 欧美日韩国产一二区| 五月婷婷九| 色色婷婷综合网| 婷婷的99视频网站| 丁香六月欧美| 久久五月激情| 丁香六月婷婷久久综合| 99热在线精品播放| 日韩黄色电影| 另类图片激情五月| 日本色色网站| 久操干| 日韩99精品| 亚洲电影在线观看| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 婷婷色资源| 五月婷婷综合网| 婷婷五月天免费视频在线观看| 99热这里只有精| 国产色色小草视频| 99A片| 日韩精品VIP| 婷婷性爱无码视频| 六月成人网| 99色丁香婷婷综合网| www.狠狠操| 春色激情第四色| 婷婷五月天av| 99re鈥哸鈥唙| 激情综合色图| 五月天综合久久| 99'无码| 国产性av| 青青操日本摸摸看看| 五月婷婷五月天天| 日操夜操天天操不卡| 婷婷色五月色| 色色五月丁香| 久草热8精品视频在线观看| 天天色伊人| 亚洲天堂碰碰婷婷| 色一情一乱一乱一区91Av| 狠狠狠狠免费| 五月婷婷,六月婷婷| 五月天精品视频| 日逼免费视频| 成人必爱视| 无码yw| 久九男女天堂| 超碰在线观看9| 婷婷伊人激情婷婷| 色婷婷久久综合久色综| 可以免费观看的AV| 久久这里只有国产视频| 丁香影院五月综合| 五月婷婷丁香五月| 性综合网| 99热只有精| 色婷婷综合网站| 婷婷丁香六月天| 五月婷婷五月天| 七七九九色色| 婷婷五月丁香基地| 99热这里只有精品手机在线观看| 五月天婷婷基地综合网| 婷婷在线日韩综合| 五月激情六月丁香| 夜夜资源站| 天天做天天爱天天要| 丁香六月婷婷激情综合| 日韩性视频| 免费人人操| 丁香婷婷久久五月天| 色五月婷婷在线观看第一页舔| 人人干人人看| 乱岳熟女50岁| 国产婷婷色综合AV蜜臀AV| 五月色综合| 五月激情天| 色99在线| 亚洲操逼网| 激情六月丁香| 亚洲无码播放| 激情综合五月丁香| 蜜桃婷婷五月| 天天爱天天做天天舔| 嫩草AV久久伊人妇女超级A| 99视频久久免费视频| 激情五月黄色小说| 五月婷婷干干干| 九九九日本熟女| 五月停停999| 亚洲精品大片| 91avse| 大香蕉五月丁香| 五月婷婷色影院| 亚洲AV日韩无码| 欧美久久婷婷| 五月婷婷和六月| 狠狠操狠狠操AV| 欧美日韩999| 日本熟女啪啪| 欧美va视频| 天天摸,天天爽| 亚洲久久激情| 国产肥白大熟妇BBBB视频| 黄色av网站在线免费播放| 91chinese 在线| 色五月亚洲五月天| 国产成人高清| 丁香五月婷婷五月| 亚洲综合五月天婷婷| 婷婷综合干| 全国最新疫情| 五月婷色| 激情婷婷五月女| 丁香五月社区| 狠狠做六月爱婷婷综合aⅴ| peg 2区三区四区的| 五月天,激情四射,婷婷频道| 婷婷五月天基地| 色一色综合| 丁香五月 无码| 婷婷五月丁香啪啪| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 91Chinese在线| 一区二区乱视频码| 五月丁香狠狠爱婷婷综合| 久久久ww| 香蕉网久久| 狠狠色噜噜色狠狠狠综合久久成人波| 日本综合久久| 激情丁香婷婷| 色噜噜五月天| 五月天激情四射| 久久激情婷婷| 婷婷成人综合免费视频| 丁香五月婷婷五月| 婷婷色片| 亚洲天堂aaa| BBWCUCKOLD精品熟妇| 色综合色色| 人人播| 在线中文字幕免费视频| 婷婷开心综合人妻小说网址| 日韩AV免费电影在线播放| 五月丁香花伦理电影| 大战熟女丰满人妻AV| 少妇激情五月婷婷| www.色五月| 久久久久综合激动五月天| 欧美性猛交 XXXX 乱大交| 五月丁香色色综合| 国产看真人毛片爱做A片| 亚洲网视屏| 五月婷婷在线免费观看 | 天天综合网在线| 色五月丁香五月五月婷婷| 色综合久久888| www.99婷婷| 九九色大香蕉| 九色视频91| 99日本精品视频热| 热九九在线| 激情综合五月天| 五月天婷婷色五月天| 99免费热视频在线| 日本ww亚洲| www.久久久久久久久久.com| 久久色9| 91丨九色丨熟女|新版| 天天日夜夜| 狠狠干伊人| 非洲一级AV| 色婷婷基地 | 婷婷五月丁香色综合| 玖玖婷婷五月天| 日韩在线观看网址| 成人在线不卡| 婷婷之六月丁香| 九月丁香很很色| 久久久久久五月天| 久操大| 香蕉久久国产AV一区二区| 五月天婷婷丁香社区| 久久久宗合| 久久久国产精品黄毛片| 91肏| 夜夜撸天天日| 精品在线| 五月婷婷综合社区| 亚洲欧洲另类图片| 99精品在线观看| 99色在线视频| 色偷偷色婷婷| 五月婷婷开心亚州在线| 伊人婷婷激情| 五月丁香爱婷婷深深| 国模九区| 99精品视频网| 五月欧美色色五月| 色婷婷五月色| 91精品国产色猫| 少妇人妻偷人精品无码视频新浪| 碰碰91| 天天插天天插天天插天天插| 五月天婷婷开心| 9久精品| 六月丁香六月婷婷欧美| 亚洲AVwwwwwww| www免费在线视频| 内射人妻视频国内| 激情小说五月天| 99热官网| 亚洲亚洲人成综合网络| 欧美性生交XXXXX无码小说| 天天舔天天爽| 婷婷久久五月| 操大屄五月天视频| 欧美日本韩国亚洲| 99亚洲精品综合在线| 久久精品99国产精品日本| 岛国av网站| 亚洲欧洲午夜成人精品av| 人人色人人弄人人操| 无码AV久久久久久久久| se色婷婷视频| 96精品久久久久久久久| 欧美va亚洲va| 丁香五月婷婷乱| 日日爽日日| 亚洲天堂啪啪| 久久婷婷五月| 99精品综合在线| 99热这里只有精品8| 99久久久久| 国产超碰在线| 无码人妻精品一区二区蜜桃色欲| 九九热超碰| 人妻AV中文系列| 国产精产国品一二三在观看| 超碰在线资源| 激情综合五月天| 美女五月天婷婷| 亚洲激情五月丁香久久久久| 人人爱人人草| 久久久宗合视频88| 丁香婷婷大香蕉| 五月天婷网| 久久久激情| 色五月丁香91| 色色激情五月| 五月天播播综合| 99re这里只有精品在线观看| www.婷婷亚洲基地| 国产在线网址1| 棕合影院色色| 婷婷五月天熟妇| 99啪啪网| 玖玖色综合色| site:xiongshengzz.com| 少妇激情五月天| 男人先锋久久| 99热免费网站| 8区视频在线| av操逼网| 色婷婷五月丁香在线观看| www.日日夜夜.com| 色区久久| www.色五月.com| 精品色色色| 婷婷综合网站| 91成人品| 99久热| 婷婷在线日韩综合| 色婷婷AV五月天| 狠狠穞A片一區二區三區| 香蕉狠狠爱视频| 操逼巨乳91| www.9797国产| 日日综合网| 亚洲色频| 17.c黄色| 亚洲字幕AV一区二区三区四区| 久热 91| 色综合天天| 操婷婷基地| 性99网站| 1级欧美日韩| 白天AV月月| 久久综合九色综合97婷婷| 五月丁香六月婷婷啪啪综合| 五月丁香在线| 日日操,夜夜爽| 91久久日日| 热99re| 久久33视频| 99免费视频网| av色婷婷| 激情五月激情综合网| 在线观看996精品| 操操自拍| 9l视频自拍9l九色9l成人| 丁香五月激情网| 综合激情在线视频| 欧美性猛交AAAA片黑人 | 极品 少妇 内射| 国产精品99久久久久久久女警| 天天影视色综合网| 热99精品视频五月| 成人免费120分钟啪啪| 欧美α√| 美女亚洲五月丁香| AA片在线观看视频在线播放| 日日夜夜噜噜爽爽| 在线99色| 亚洲黄色影视| 丁香五月婷婷手机| 日韩啪啪视频| 99re8热精品免费视频| 天天操天天插| 久久五月六月| 激情伊人网| 五月综合激情婷婷六月色窝| 天天色色天天| 日日日,com| 综合久久六月| 99原创自拍视频在线观看| 在线看片av| 精品怡红九九九| 天天爽夜夜爽夜夜爽精| 神马欧美精| 99国产在线精品视频| 99热1| 久久这里只有精彩| 99热99思午夜精品| 热热色色五月天婷婷| 91九色在线视频| 色综合网综合| 天天色天天干天天插| 9l视频自拍九色9l视频自拍九色9l社区| www,setingting| 狠狠精品干练久久久无码中文字幕 | 久久五月天激情婷婷| 丁香情色五月| 丰满少妇猛烈A片免费看观看| 第四色大香蕉| 成年人丁香五月| 久久激情五月网| 五月激情视频网| 欧美欧盟性爱网| 中海油常州环保涂料有限公司| 99精品久久久久| 超碰在线中文字幕| 欧美日本黄色| 97人妻碰碰碰久久香蕉| 婷婷五月天午夜激情影院| 激情五月丁香五月色| 97碰在线视频| 欧洲色色| 婷婷啪啪| 国产亚洲精品AAAAAAA片| 五月婷婷婷| 人妻少妇色综合| 亚洲综合在线视频| 日本黄色三级片内射| 双性美人被调教到喷水A片| 久久九九热38| 丁香久久激情俄| 中文在线成人| 色综合中文| 国产激情视频在线观看| 五月婷婷深深的爱| 婷婷五月情色| 色婷婷色五月天| 五月天网站免费欧美| 久久99精品久久久久久三级| 婷婷婷婷色| 日韩人妻AV在线| 色色丁香五月天社区| 色五月天丁香婷婷| 五月天另类综合网| 五月婷婷丁香在线| 九九aV| 天天插天天射| 五月天婷婷色综合| 婷婷丁香激情综合色情| 婷婷深爱五月天在线| 色五月激情| 色五月婷婷网| 超碰99久久| 六月丁香五月激情网| 九九色大香蕉| 色婷婷激情Av久久久| 大香蕉啪啪| 五月丁香AV、伊人业余、性色熟妇| 丁香婷婷久久综合在线| 淫视馆aV二区一区| 五月婷天堂视频| 五月色丁香婷婷中文字幕| 襙逼网| 亚洲热综合| 99热亚洲综合| 色婷丁香五月| 操操人人| 欧美69色| 五月丁香六月婷婷的女人| 国产成人片| 婷婷99中文字幕| 夜夜骑天天操| 97se在线视频| 狠狠干五码| 国产激情视频在线观看| 性视频久久| 色播五月网| 婷婷视频在线碰| 夜夜躁狠狠 | 五月天婷婷日日爱| 五月丁香六月婷婷啪啪| 曰曰久久| 丁香婷婷五月综合色情| 五月婷婷激情久久| 日韩在线视频中文字幕| 婷婷射图五月天| 五月丁香六月婷婷激情网| 熟女人妻视频| 性 色 婷婷| 99碰碰| 天天天天天天天干| 99热| 婷婷五月婷婷五月| 五月婷婷影视| 99热这里只有免费精品| 婷婷丁香五月基地| 五月天国产| 久久99精品日本| 综合性爱网| 综合久久婷婷| 色婷网| 久久99热 这里有精品| 丁香五月激情啪啪综合| 亚洲精品大片| 亚洲午夜AV| 婷婷五月天影院| 久噜久噜| 久久九九激情五月天 | 成人网址在线观看| 桃色Av色哟哟| 蜜桃成语时李时珍 免费| 色综合久久久久久久久五月| 日本nghangse中文字幕| 婷婷婷婷婷婷婷婷| 91久久久久久| 色五月色综合| 激情五月天婷婷| 亚洲欧洲色色| 密视AV综合在线| 色色色无码| 丁香五月天综合网| 亚洲在线资源| 无毒黄色网址| 激情综合网址| 337午夜福利| 九九热视频精品2| 99热99思午夜精品| 免费做A爰片77777| 91九色欧美| 99色热视频| 变天就操逼婷婷五月| 99久久婷婷国产综合| 五月天最新网| 五月天五月婷五月激情网| wWW九九在线播放| 99视频综合| 综合激情婷婷| 久久色婷婷| 99久热这里只有精品| 99久久黄色顶级视频| www.久久爱.c n| AV大片在线播放| 天天综合色| 熟女激情网| 久久免片| 思思热99热| 天天搞天天色综合| 婷婷综合六月| 五月丁香欧美综合免费视频| 色色丁香婷婷综合| 久久激情天堂| 六月丁香天堂| 丁香婷婷浪潮AV久久综合| 超碰色热| 丁香婷婷激情网站| 97碰精品| 日本色超碰| 第四色色六月色综合| 免费看欧美成人A片无码| 99re久久| 无码少妇高潮喷水A片免费| 97色碰| 国产真实乱了老女人视频| 精品A√| 99这里只有精品|v| 天天色视频| 成人av在线网址| 在线成人网址| 国产超碰在线| 婷婷五月色播天| 日韩无码亚欧无码| 六月婷婷香蕉| 爱性综合网| 熟女五月天久久综合| 天天爽,天天操。| 色丁香五月天婷婷| 97性视频| 国产精品美女| 9色操| 五月丁香啪啪| 色色色色色色色色色999| 婷婷五月天在线观看免费| 国产色色视频| 天天草天天爽| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 影音先锋四区| 日本色色色| 在线播放 精品| 九九色色色| 婷婷五月天激情在线观看 | 成人无码精品1区2区3区免费看| 亚洲天堂制| 中文字幕在线不卡| 日日婷婷不卡| 久草A片| 午夜天堂一区人妻| 六月婷色| 色性日本| 九九色婷婷| 99狠狠操一| 噜色精品| 色99视频| 久久码久久无清| 久久五月婷婷开心网| 婷婷五月天激情综合| 91色五月在线观看| 欧日韩AV| 九九热最新| 久热久69| 天堂AV三级| 99热播放| 538任你爽视频不一样的| 五月婷婷精品无在线| 婷婷六月色| 丁香婷婷综合精品六月初| 六月激情综合| 久久电影五月天丁香电影| 99热这是里只有精品| 欧美内射AA| 欧美va视频| 秋霞A V毛片| www.综合久久.com| WWW.婷婷| www.色五月| 亚洲看av的网站| 激情五月婷婷| 五月色情网| 大地资源色婷婷视频在线| 99热国产这里只有| 99亚洲精品| 一级片sese片.COM| 激情婷婷丁香| 激情综合网络插| 99国产精品白浆在线观看免费| 五月天开心婷婷久久| 九九操屄| 天天爽,夜夜爽| www婷婷色| 日日肏夜夜干| 欧美日韩国产成人在线| 丁香六月五月天| 国产婷婷综合| 五月婷婷激情五月| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 婷婷狠狠操| 色婷丁香| 国产精品天天狠天天看| 99热这里只有在线| 91凹凸在线| 色区久久| 欧美成人网99网| 天天射天天操天天干| 丁香婷婷六月男男| 午夜亚洲国产精品av一区二区| 在线播放中文字幕| 婷婷色5月天在线。| 婷婷性爱视频在线| 丁香五月综合婷婷| 天天插天天干天天舔| 色人久夂| AA片在线观看视频在线播放| XX色综合| 翔田千里aV中文字幕| 九九久久腿| 久久综合九九| 夜夜躁爽日日| 丁香六月婷婷综合网| 99热欧美精品| 成人国产欧美大片一区| 激情影院丁香五月| 夜夜撸天天日| 99热20| 亚洲婷婷基地| ww超碰在线| 日韩啊啊啊| 99热这里只有精品3| 亚洲色五月天是什么| 久久婷丁香五月| 91主播在线| 欧美人与性动交CCOO| 激情五月丁香五月| 五月天偷拍| 99这里只有| 激情美女五月天激情在线| 久久久色婷婷五月天| 久久五月丁香婷婷| 亚洲成人无码网站| 热99.com婷婷| WWW、99热| 在线成人va| 欧美激情综合| 婷婷五月天色| 日日爽夜夜爽| 婷婷中文字幕| 久久丁香五月天| 婷婷久久综合| 丁香婷停五月激情综合深爱| 色色啊| 天天爱天天做天天爽| 九九婷婷五月天影视| 激情综合五月激情| 五月婷婷开心亚洲无| 888精品福利地址| 天天噜天天插| 亚洲性爱干干| 五月天婷婷色播在线网| 色婷婷婷婷成人网| 天天综合天天玩夜夜玩天天玩夜夜玩 | 婷婷丁香18| 天天拍夜夜爽日日| 婷婷五月天日日日干干干| 97婷婷丁香五月| 亚洲 六月 综合| 婷婷五月天成人小说| 四月婷婷丁香| 无码人妻一区二区三区四区| 六月丁香婷婷尤物| 日本激情综合| 综合色色婷婷| 久久婷综合| 天天爽天天操| 色婷婷AV在线观看| 婷婷五月综合色拍| 色色日韩| 亚洲激情丁香五月基地| 婷婷五月深深爱| 狠狠激情五月天| AV在线观看网站| CHINESE熟女老女人HD视频| 影音先锋一区二区资源站| 91chinese 在线| 婷婷六月婷婷| 9l视频自拍9l视频自拍九色学生| 在线播放中文字幕| 中文AV网站| 色五月婷婷婷婷婷婷婷婷婷婷| 婷婷丁香五月,狠狠综合| 色爱五月天| A久久| 丁香花五月天社区| 婷婷欧美激情综合| 天天天天天久久久久久| 婷婷丁香18| 成人在线视频男人的天堂4399| 色婷| 亚洲va在线∨a天堂va欧美va| 思思热在线精品视频| 亚洲AV无码成人精品电影| 六月丁香啪啪| 日日夜夜干| 精品亚洲国产成AV人片传媒| 97香蕉人人在线观看| 精品色情一区二区三区四区| 婷婷丁香小说| 欧州婷婷五月天综合| 91干视频| 五月综合激情视频在线| AV在线不卡播放| 久久永久视频| av狠狠操| 91操人视频| 好吊操这里只有精品| 99资源在线视频| 久在线综合69| 婷婷色播综合五月| 99色免费观看全部| 久艹久| 欧美成人五月天| 亚洲精品一二三| 综合玖玖性爱免费视频| 亚洲色综合| 97热久久| 五月丁香亭亭操逼| www.久久99热地址发布| 亚洲午夜电影| 丁香五月婷婷大香蕉| 五月花激情| 成人在线网站| 久久久久亚洲AV成人无码电影| 人人性久久| 丁香六月啪啪| 九九無碼| 香蕉AV777XXX色综合一区| 五月丁香六月欧美综合| 99热热热99精品婷婷| 十月丁香九月婷婷综合| 精品AV无码超碰| 精品人妻一区| 香蕉久久国产AV一区二区| 大香网伊人久久综合| 五月人人丁香婷婷五月人人丁香| 五月天另类小说| 六月综和久久| 五月天伊人久久| 丁香激情久久| 四色 爱 婷婷 精品 亚洲 五月天| 九九视频在线观看视频6| 五月婷天天搞视频| 91久久久久久久久| h在线看免费版在线看| 五月婷婷手机在线| 久久久99视频| 欧美性生交XXXXX无码小说| 5月婷婷6月六月丁香| 99爽视频| 97一区二区| 五月天婷婷丁香| wwwC0maV五月花| 色射影院| 精品欧美一区二区三区久久久| 狠狠人人婷婷| 五月天婷婷高清无码| 啪啪激情综合| 在线五月婷| 天天艹夜夜艹| 日本天堂免费99| 五月婷婷 六月丁香| 丁香五月www| 国产精品18久久久| 色天堂A| 天天日天天干天天插天天射| 久久性操| 久久婷鲁| 人妻丰满精品一区二区A片| 九九热10| 五月网网站| 五月色无码| 亚洲无码另类| 七七色综合| 国产真人做爰视频免费| 伊人婷婷大香蕉| 久久99热这里只有精品| 六月丁香婷婷天堂| 欧美婷婷六月丁香综合色连续高潮抽搐| 夜夜AVV| 五月做爱| 五月婷婷婷色| 伊人丁香五月天丁香在线婷| 五月激情精品视频| 9热在线视频精品|