99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

基于SpringBoot和Vue的競賽管理系統(tǒng):從JWT鑒權(quán)到部署實(shí)戰(zhàn)

基于SpringBoot和Vue的競賽管理系統(tǒng):從JWT鑒權(quán)到部署實(shí)戰(zhàn) 做競賽管理系統(tǒng)這個(gè)選題我一直覺得是前后端分離項(xiàng)目里性價(jià)比最高的一類。業(yè)務(wù)模型清晰、角色邊界明確、數(shù)據(jù)流轉(zhuǎn)完整從用戶到權(quán)限再到文件上傳、狀態(tài)流轉(zhuǎn)、統(tǒng)計(jì)報(bào)表全都能覆蓋到。尤其對于正在做畢業(yè)設(shè)計(jì)或者想系統(tǒng)練手全棧的同學(xué)來說一套基于SpringBoot Vue的大學(xué)生競賽管理系統(tǒng)幾乎把企業(yè)級開發(fā)里最常見的那些坑都踩了一遍JWT鑒權(quán)怎么做、文件上傳怎么接、跨域怎么配、前端打包怎么塞進(jìn)后端、路由守衛(wèi)怎么攔截。這篇文章就把我這套系統(tǒng)的完整思路、核心代碼、表設(shè)計(jì)和部署經(jīng)驗(yàn)一次性講清楚照著做你也能從零搭出一套能跑、能答辯、能演示的完整項(xiàng)目。1. 整體設(shè)計(jì)與技術(shù)選型先把業(yè)務(wù)想明白再動手1.1 角色劃分與核心業(yè)務(wù)流程競賽管理系統(tǒng)這個(gè)業(yè)務(wù)本質(zhì)上就是“賽事全流程管理”。從管理員發(fā)布競賽到學(xué)生報(bào)名、上傳作品再到評委打分、成績公示、證書下載一條線走完。傳統(tǒng)的紙筆流程最大的問題是信息不透明學(xué)生不知道報(bào)名是否成功、評委之間分?jǐn)?shù)互相看不到、管理員統(tǒng)計(jì)成績?nèi)縀xcel。系統(tǒng)把這些環(huán)節(jié)數(shù)字化之后每步操作都有狀態(tài)記錄和時(shí)間戳權(quán)責(zé)清晰審計(jì)也方便。我在設(shè)計(jì)角色時(shí)劃分了三種學(xué)生瀏覽競賽列表、查看詳情、報(bào)名參賽、上傳作品、查看自己的成績和證書。評委/教師對分配到名下的作品打分、填寫評語、查看已評和待評列表。管理員用戶管理、競賽信息發(fā)布與狀態(tài)控制、報(bào)名審核、評委分配、成績統(tǒng)計(jì)與導(dǎo)出。這三種角色的權(quán)限邊界要非常明確。學(xué)生不能看到評委打分頁評委不能修改競賽信息管理員不參與打分。權(quán)限控制如果做不好后續(xù)所有功能都會出現(xiàn)越權(quán)訪問的漏洞。1.2 技術(shù)棧選型的三個(gè)理由這套系統(tǒng)我選擇的是SpringBoot 2.7.x Vue 3 Element Plus MySQL 8 MyBatis Plus。選這套組合不是跟風(fēng)而是有幾個(gè)實(shí)際考量。第一個(gè)考量是SpringBoot版本。2.7.x是目前兼容性最穩(wěn)的版本JDK 8和JDK 11都能跑各種第三方starter基本都能找到對應(yīng)版本。SpringBoot 3.0之后強(qiáng)制要求JDK 17很多學(xué)生本機(jī)的JDK版本還是8一上來就報(bào)各種版本兼容錯(cuò)誤光環(huán)境問題就能卡一整天。當(dāng)然如果你本機(jī)已經(jīng)是JDK 17直接用3.x也沒問題只是要注意javax命名空間改成jakartaMyBatis Plus和相關(guān)依賴也要用適配版本。第二個(gè)考量是前端框架版本。Vue 3 Vite Element Plus是當(dāng)前的主流組合Vite的啟動速度比Webpack快一個(gè)量級開發(fā)體驗(yàn)好很多。組件庫用Element Plus界面風(fēng)格統(tǒng)一表格、表單、彈窗、上傳組件都是現(xiàn)成的不用從零寫UI。如果你更熟悉Vue 2 Element UI思路完全一樣只是API細(xì)節(jié)略有差異不影響整體架構(gòu)。第三個(gè)考量是持久層框架。MyBatis Plus在單表CRUD場景下幾乎不用寫SQL自帶分頁插件和條件構(gòu)造器開發(fā)效率非常高。競賽管理系統(tǒng)里大部分查詢都是單表?xiàng)l件查詢比如“查詢某個(gè)競賽下所有報(bào)名記錄”“查詢當(dāng)前用戶的所有作品”用LambdaQueryWrapper幾行代碼就搞定了沒必要手寫復(fù)雜的XML映射。1.3 數(shù)據(jù)庫表設(shè)計(jì)的六個(gè)核心表數(shù)據(jù)庫是整個(gè)系統(tǒng)的地基我踩過最深的坑就是表設(shè)計(jì)太隨意改表結(jié)構(gòu)比改代碼痛苦十倍。競賽系統(tǒng)核心表我設(shè)計(jì)如下前后端聯(lián)調(diào)階段的“接口字段和數(shù)據(jù)庫字段對不上”問題源頭就在這里。表名核心字段說明sys_userid, username, password, nickname, role, avatar, college, major, student_no, phone, email, status, create_time用戶表role區(qū)分admin/teacher/studentcontestid, title, description, category, cover, max_team_members, registration_start_time, registration_end_time, contest_start_time, contest_end_time, status, create_time競賽表status字段控制生命周期contest_registrationid, contest_id, user_id, team_name, team_members, contact_phone, status, create_time報(bào)名表status分為待審核/已通過/已拒絕work_submissionid, contest_id, user_id, registration_id, title, description, file_url, cover_url, submit_time, status作品表一個(gè)報(bào)名對應(yīng)一個(gè)作品contest_scoreid, work_id, reviewer_id, score, comment, create_time評分表同一作品多個(gè)評委打分后取平均noticeid, title, content, type, owner_id, publish_time新聞公告表前臺輪播和消息通知用重點(diǎn)說一下競賽的status字段。我用了數(shù)字字典0表示草稿、1表示報(bào)名中、2表示評審中、3表示已結(jié)束。前端根據(jù)這個(gè)值控制按鈕的可用狀態(tài)后端在報(bào)名接口也校驗(yàn)當(dāng)前時(shí)間是否在報(bào)名窗口內(nèi)雙重保險(xiǎn)避免有人繞過前端直接調(diào)接口。另外一個(gè)關(guān)鍵設(shè)計(jì)是work_submission里的registration_id它把報(bào)名表和作品表關(guān)聯(lián)起來。這樣查詢“某學(xué)生報(bào)名了哪些競賽”和“某競賽收了哪些作品”都非常方便。前期表設(shè)計(jì)時(shí)把外鍵關(guān)系理清后面寫查詢就是順?biāo)浦鄣氖隆?. 后端核心模塊從登錄鑒權(quán)到文件上傳的完整閉環(huán)2.1 統(tǒng)一響應(yīng)體與全局異常處理前后端分離項(xiàng)目接口返回格式必須統(tǒng)一。我封裝了一個(gè)Result類所有接口返回{code, message, data}的結(jié)構(gòu)。code為200表示成功401表示未登錄403表示無權(quán)限500表示業(yè)務(wù)異常。這個(gè)封裝看起來簡單但能讓前端攔截器的處理邏輯變得非常整潔。Data public class ResultT { private Integer code; private String message; private T data; public static T ResultT success(T data) { ResultT result new Result(); result.setCode(200); result.setMessage(操作成功); result.setData(data); return result; } public static T ResultT error(Integer code, String message) { ResultT result new Result(); result.setCode(code); result.setMessage(message); return result; } }有了統(tǒng)一響應(yīng)體還需要一個(gè)全局異常處理器把業(yè)務(wù)異常和系統(tǒng)異常分開處理。我是用RestControllerAdvice注解實(shí)現(xiàn)的捕獲自定義的BusinessException拋出的異常時(shí)返回對應(yīng)的錯(cuò)誤碼和提示語捕獲Exception時(shí)統(tǒng)一返回500和“系統(tǒng)異常請稍后重試”避免把堆棧信息直接暴露給前端。這里有個(gè)開發(fā)習(xí)慣值得養(yǎng)成不要把try-catch寫在每個(gè)Controller里而是讓業(yè)務(wù)層拋出異常由全局處理器統(tǒng)一處理。代碼會干凈很多也不容易漏掉異常分支。2.2 Spring Security JWT登錄鑒權(quán)實(shí)戰(zhàn)登錄鑒權(quán)是這類系統(tǒng)的重中之重。我用的是JWT無狀態(tài)方案用戶登錄成功后后端簽發(fā)一個(gè)包含用戶ID、用戶名、角色信息的Token前端請求時(shí)放在請求頭的Authorization字段里后端攔截器解析Token并校驗(yàn)身份。這樣做的好處是服務(wù)端不需要存儲Session水平擴(kuò)展時(shí)不需要做Session共享對部署和將來合入網(wǎng)關(guān)都很友好。JWT工具類核心代碼如下注意設(shè)置過期時(shí)間和密鑰Component public class JwtUtils { private static final String SECRET your-secret-key-your-secret-key; private static final long EXPIRATION 1000 * 60 * 60 * 24 * 7L; public String generateToken(Integer userId, String username, String role) { return Jwts.builder() .setSubject(username) .claim(userId, userId) .claim(role, role) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() EXPIRATION)) .signWith(SignatureAlgorithm.HS256, SECRET) .compact(); } public Claims parseToken(String token) { return Jwts.parser() .setSigningKey(SECRET) .parseClaimsJws(token) .getBody(); } }Security配置類是這個(gè)模塊中最容易出錯(cuò)的地方。需要放行登錄接口、驗(yàn)證碼接口和靜態(tài)資源路徑其余接口全部走JWT過濾器。放行哪些路徑看似簡單但如果你把接口路徑寫錯(cuò)或者放行多了后面調(diào)接口時(shí)就會出現(xiàn)“明明登錄成功了卻一直401”的詭異問題。Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeRequests() .antMatchers(/api/auth/login, /api/upload/**, /files/**).permitAll() .antMatchers(/api/admin/**).hasRole(admin) .antMatchers(/api/teacher/**).hasRole(teacher) .anyRequest().authenticated() .and() .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class); } }角色和路徑的匹配規(guī)則要提前規(guī)劃。我在實(shí)際開發(fā)中把接口路徑做了約定/api/student/**學(xué)生接口、/api/teacher/**評委接口、/api/admin/**管理接口、/api/common/**公共接口。前端的API請求也遵循這個(gè)約定后端的鑒權(quán)配置就非常清晰。2.3 競賽報(bào)名與作品提交狀態(tài)機(jī)與并發(fā)控制報(bào)名和作品提交是競賽系統(tǒng)的核心業(yè)務(wù)操作這兩個(gè)接口在并發(fā)場景下特別容易出現(xiàn)臟數(shù)據(jù)。比如同一個(gè)學(xué)生重復(fù)提交報(bào)名或者報(bào)名截止時(shí)間剛過但請求還在路上。我處理的思路是雙保險(xiǎn)數(shù)據(jù)庫層面加唯一索引代碼層面做業(yè)務(wù)校驗(yàn)。報(bào)名表上加UNIQUE KEY uk_contest_user (contest_id, user_id)這樣即使兩個(gè)并發(fā)請求同時(shí)通過代碼校驗(yàn)數(shù)據(jù)庫也會攔截重復(fù)插入返回DuplicateKeyException。代碼里再判斷當(dāng)前時(shí)間是否在報(bào)名窗口期、競賽狀態(tài)是否為“報(bào)名中”雙重保障確保數(shù)據(jù)正確。作品提交的邏輯稍微復(fù)雜一點(diǎn)。學(xué)生在報(bào)名審核通過后才能上傳作品上傳后可以修改截止時(shí)間后鎖定。我設(shè)計(jì)了works表的status字段0表示未提交、1表示已提交待評審、2表示已退回修改。評委退回作品后學(xué)生重新上傳狀態(tài)回到1進(jìn)入評審隊(duì)列。這個(gè)狀態(tài)機(jī)設(shè)計(jì)是整個(gè)系統(tǒng)業(yè)務(wù)邏輯里最容易寫亂的地方。我強(qiáng)烈建議先在紙上畫出狀態(tài)流轉(zhuǎn)圖待審核-已通過-已提交-已退回-已提交每個(gè)狀態(tài)觸發(fā)什么事件、誰觸發(fā)、產(chǎn)生什么結(jié)果搞清楚再寫代碼。不然代碼越寫越亂改一個(gè)狀態(tài)還要連帶著改三四處邏輯。2.4 文件上傳與靜態(tài)資源映射競賽作品通常是PDF、壓縮包或者圖片文件上傳功能必不可少。SpringBoot的文件上傳配置很簡潔spring: servlet: multipart: max-file-size: 100MB max-request-size: 200MB文件上傳的Controller稍微有點(diǎn)講究需要做文件類型白名單校驗(yàn)、文件名重命名防路徑穿越、按日期歸檔存儲。我的實(shí)現(xiàn)邏輯是接收MultipartFile校驗(yàn)后綴名是否在允許列表里用UUID重新生成文件名存儲到uploads/yyyy/MM/dd/目錄下返回?cái)?shù)據(jù)庫里的相對路徑。相對路徑加上域名前綴就是完整的訪問URL。前端上傳PDF后需要預(yù)覽這里有一個(gè)很實(shí)用的技巧如果瀏覽器可以直接打開PDF用iframe嵌; 但要注意Element Plus的upload組件默認(rèn)會走form-data提交后端返回的JSON需要放在response里而不是自定義header里否則回顯會有兼容問題。這個(gè)我后面在前端章節(jié)再展開講。3. 前端Vue實(shí)踐從腳手架到核心交互3.1 項(xiàng)目結(jié)構(gòu)與路由設(shè)計(jì)前端項(xiàng)目我用Vite腳手架創(chuàng)建推薦的目錄結(jié)構(gòu)如下src/ api/ # 接口請求封裝 auth.js contest.js work.js assets/ # 靜態(tài)資源 components/ # 公共組件 CommonTable.vue FileUpload.vue router/ # 路由配置 index.js store/ # Pinia狀態(tài)管理 user.js views/ admin/ # 管理端頁面 student/ # 學(xué)生端頁面 teacher/ # 評委端頁面 Login.vue Home.vue路由設(shè)計(jì)上我用了動態(tài)路由和路由守衛(wèi)結(jié)合的方式。靜態(tài)路由只有登錄頁和首頁其他頁面根據(jù)用戶角色動態(tài)生成。這樣做的好處是角色菜單天然分離學(xué)生登錄后看不到評委頁面同時(shí)也減少了首屏加載的路由數(shù)量。路由守衛(wèi)是必須寫的不然用戶手動改URL就能跳到?jīng)]權(quán)限的頁面router.beforeEach((to, from, next) { const token localStorage.getItem(token) if (to.path /login) { next() } else if (!token) { next(/login) } else { const userStore useUserStore() if (!userStore.userInfo) { userStore.fetchUserInfo().then(() { next() }).catch(() { next(/login) }) } else { next() } } })3.2 Axios請求封裝與Token刷新邏輯Axios封裝這項(xiàng)工作看似簡單但卻是前后端聯(lián)調(diào)時(shí)體驗(yàn)好不好的決定性因素。我的封裝思路是創(chuàng)建axios實(shí)例設(shè)置baseURL為/api請求攔截器里從localStorage取Token并放入Authorization頭響應(yīng)攔截器里統(tǒng)一處理HTTP狀態(tài)碼和業(yè)務(wù)狀態(tài)碼。const service axios.create({ baseURL: /api, timeout: 10000 }) service.interceptors.request.use(config { const token localStorage.getItem(token) if (token) { config.headers[Authorization] Bearer ${token} } return config }) service.interceptors.response.use( response { const res response.data if (res.code 200) { return res } if (res.code 401) { localStorage.removeItem(token) window.location.href /login } return Promise.reject(new Error(res.message)) }, error { return Promise.reject(error) } )特別是401的處理很多新手容易漏掉。Token過期后如果只是彈個(gè)“請重新登錄”的提示用戶就卡在頁面上不知道該怎么辦。跳轉(zhuǎn)到登錄頁并清空本地存儲是最直觀的處理方式。3.3 核心頁面交互競賽列表、詳情與倒計(jì)時(shí)競賽列表頁是學(xué)生接觸系統(tǒng)的第一屏交互友好度直接影響使用體驗(yàn)。我用卡片形式展示競賽信息每個(gè)卡片包含封面圖、標(biāo)題、競賽類別、報(bào)名截止時(shí)間、當(dāng)前狀態(tài)標(biāo)簽。點(diǎn)擊卡片跳轉(zhuǎn)到詳情頁路由傳遞競賽ID參數(shù)。這里最考驗(yàn)細(xì)節(jié)的是競賽狀態(tài)與按鈕的聯(lián)動。報(bào)名按鈕要依據(jù)后端返回的status字段和當(dāng)前時(shí)間動態(tài)計(jì)算status為1且當(dāng)前時(shí)間在報(bào)名窗口內(nèi)顯示“立即報(bào)名”不在窗口內(nèi)顯示“報(bào)名未開始”或“已截止”status為2顯示“評審中”status為3顯示“已結(jié)束”。這些狀態(tài)計(jì)算我放在前端寫了一個(gè)工具函數(shù)export function getContestStatus(contest) { const now Date.now() const start new Date(contest.registrationStartTime).getTime() const end new Date(contest.registrationEndTime).getTime() if (contest.status 0) return { text: 未發(fā)布, type: info } if (contest.status 1 now start) return { text: 報(bào)名未開始, type: warning } if (contest.status 1 now start now end) return { text: 報(bào)名中, type: success } if (contest.status 1 now end) return { text: 報(bào)名已截止, type: danger } if (contest.status 2) return { text: 評審中, type: warning } if (contest.status 3) return { text: 已結(jié)束, type: info } }詳情頁我同時(shí)展示了競賽介紹、時(shí)間線、賽事流程說明。倒計(jì)時(shí)組件用setInterval實(shí)現(xiàn)每秒鐘更新剩余時(shí)間頁面銷毀時(shí)記得清除定時(shí)器。這個(gè)組件雖小但踩過的坑是路由切換后定時(shí)器沒清掉導(dǎo)致組件銷毀后還在執(zhí)行setState控制臺報(bào)一堆警告。3.4 文件上傳組件與PDF預(yù)覽系統(tǒng)最核心的上傳場景是作品提交以PDF為主。Element Plus的el-upload組件提供了拖拽上傳和進(jìn)度顯示但默認(rèn)行為是選擇文件后立即上傳。我配置了:auto-uploadfalse用戶選擇文件后先展示在文件列表里點(diǎn)擊“確認(rèn)提交”才真正發(fā)起上傳避免誤選后無法撤銷。上傳成功后預(yù)覽PDF我用了兩種方案兼容不同場景。如果瀏覽器原生支持PDF預(yù)覽直接新窗口打開文件URL就行。為了更好的展示體驗(yàn)我在前端頁面內(nèi)嵌了iframe將PDF文件URL作為src實(shí)測Chrome和Edge都能正常顯示。如果需要更精細(xì)的控制比如指定頁碼、縮放可以使用pdf.js或者vue-pdf組件不過對于競賽管理系統(tǒng)的場景iframe方案已經(jīng)足夠還省了一個(gè)大依賴。用戶的頭像預(yù)覽也是一樣的邏輯文件上傳后返回相對路徑前端拼接成完整URL用于img標(biāo)簽的src。這里注意一個(gè)問題開發(fā)環(huán)境下后端接口在8080端口前端在5173端口圖片URL如果是相對路徑瀏覽器會去5173端口找就404了。解決辦法是用Vite的代理配置把/api和/files都代理到后端地址。4. 環(huán)境搭建、聯(lián)調(diào)與部署實(shí)戰(zhàn)4.1 本地環(huán)境準(zhǔn)備與依賴配置開始寫代碼之前先把環(huán)境搞定不然后面踩的坑都是環(huán)境的鍋。我建議本地環(huán)境如下JDK 8 或 11對應(yīng)SpringBoot 2.7.xMaven 3.6配置阿里云鏡像源否則依賴下載慢到懷疑人生Node 16Vite 4要求Node 14.18我推薦Node 16長期支持版MySQL 8.0字符集全部設(shè)置為utf8mb4否則中文亂碼Maven的pom.xml核心依賴清單如下注意MyBatis Plus和SpringBoot的版本兼容關(guān)系parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.18/version /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-security/artifactId /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.5.7/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt/artifactId version0.9.1/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency /dependencies4.2 前后端聯(lián)調(diào)跨域問題與接口規(guī)范前后端分離項(xiàng)目跨域問題幾乎必然遇到。開發(fā)環(huán)境最省事的方案是Vite代理在vite.config.js里配置export default defineConfig({ server: { port: 5173, proxy: { /api: { target: http://localhost:8080, changeOrigin: true }, /files: { target: http://localhost:8080, changeOrigin: true } } } })配置了代理之后前端代碼里所有請求都寫相對路徑/api/xxx由Vite轉(zhuǎn)發(fā)到8080端口。這種方式比后端配置CORS要優(yōu)雅得多因?yàn)樯a(chǎn)環(huán)境前端已經(jīng)打包進(jìn)后端工程本身就是同源的不存在跨域。如果后端非要用CORS我推薦寫一個(gè)WebMvcConfigurer配置類而不是加CrossOrigin注解。CORS配置類寫法如下注意要同時(shí)配置allowedOriginPatterns和allowedMethods否則預(yù)檢請求會失敗Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOriginPatterns(*) .allowedMethods(GET, POST, PUT, DELETE, OPTIONS) .allowedHeaders(*) .allowCredentials(true) .maxAge(3600); } }聯(lián)調(diào)階段另一個(gè)高頻問題是時(shí)間格式不一致。后端實(shí)體類LocalDateTime序列化后默認(rèn)是一長串?dāng)?shù)組前端無法直接渲染。需要在application.yml里配置Jackson的日期格式spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT84.3 Vue項(xiàng)目打包放進(jìn)SpringBoot開發(fā)完成后部署最直接的方式是把Vue打包生成的dist目錄塞進(jìn)SpringBoot的靜態(tài)資源目錄。這個(gè)過程看似簡單但有兩個(gè)坑特別常見。第一步是修改Vite的base配置默認(rèn)是/打包后資源路徑是絕對路徑部署到服務(wù)器子路徑時(shí)會找不到靜態(tài)資源。我建議改成相對路徑export default defineConfig({ base: ./, build: { outDir: dist, assetsDir: static } })第二步是路由模式。如果前端路由用了history模式刷新頁面時(shí)后端沒有對應(yīng)的路由處理器就會出現(xiàn)404。最簡單的方案是后端加一個(gè)轉(zhuǎn)發(fā)規(guī)則未匹配到的路徑全部轉(zhuǎn)發(fā)到index.html。如果不想動后端前端路由改用hash模式URL多一個(gè)#號但刷新永遠(yuǎn)正常。個(gè)人推薦hash模式省心。把dist下的文件復(fù)制到SpringBoot的src/main/resources/static目錄然后啟動后端訪問http://localhost:8080/就是完整系統(tǒng)。這樣整個(gè)應(yīng)用只有一個(gè)Jar包部署到服務(wù)器只需要Java環(huán)境不用單獨(dú)裝Nginx。4.4 常見報(bào)錯(cuò)排查速查表寫這套系統(tǒng)的過程中我把遇到過的高頻報(bào)錯(cuò)整理成了一個(gè)速查表對照排查能省大量時(shí)間。現(xiàn)象可能原因解決方案前端請求后端404代理沒配或路徑拼錯(cuò)檢查vite.config.js代理配置和API路徑前綴登錄后調(diào)用接口返回403Security配置放行路徑不完整檢查JWT過濾器注冊順序和路徑匹配規(guī)則文件上傳報(bào)錯(cuò)超過大小限制后端multipart配置未生效檢查yaml配置中max-file-size和max-request-size中文亂碼數(shù)據(jù)庫字符集不是utf8mb4建庫時(shí)指定utf8mb4連接串加characterEncodingutf8刷新頁面404前端history路由沒配轉(zhuǎn)發(fā)用hash模式或后端加轉(zhuǎn)發(fā)規(guī)則Token過期后接口一直報(bào)錯(cuò)前端沒做401統(tǒng)一處理在響應(yīng)攔截器里統(tǒng)一跳轉(zhuǎn)登錄頁Vue啟動報(bào)Node版本不兼容Node版本過低升級到Node 16或降低Vite版本還有幾個(gè)容易忽略的小問題。SpringBoot啟動時(shí)如果端口被占用控制臺會直接報(bào)端口綁定失敗搜索哪個(gè)進(jìn)程占了8080端口殺掉或者改端口。MyBatis Plus分頁插件需要單獨(dú)配置PaginationInterceptor不配置的話分頁不生效默認(rèn)只查一條。另外前端打包時(shí)如果報(bào)內(nèi)存溢出需要在package.json里配置build: vite build --max-old-space-size4096或者Node設(shè)置的NODE_OPTIONS變量。最后聊一點(diǎn)管理后臺的統(tǒng)計(jì)報(bào)表功能。競賽系統(tǒng)的管理者非常關(guān)注每個(gè)競賽的報(bào)名人數(shù)、作品提交率、各學(xué)院參與人數(shù)分布。這些統(tǒng)計(jì)我用ECharts做曲線圖和餅圖后端提供一個(gè)聚合查詢接口用MyBatis Plus的groupBy統(tǒng)計(jì)每個(gè)學(xué)院的人數(shù)。ECharts的引入方式很簡單npm安裝然后在需要用的組件里局部引入按需注冊圖表類型避免全量打包導(dǎo)致體積過大。還有評委打分環(huán)節(jié)的設(shè)計(jì)也要多說兩句。傳統(tǒng)做法是管理員給每個(gè)評委手動分配作品但作品數(shù)量一多就非常繁瑣。我的做法是先把作品按類別分組評委可以主動認(rèn)領(lǐng)作品也可以由管理員批量分配。打分維度我拆成了創(chuàng)新性、完整性、實(shí)用性三個(gè)子項(xiàng)每個(gè)子項(xiàng)記分總分自動匯總再取多個(gè)評委的平均分作為最終成績。設(shè)置一個(gè)“成績公示”開關(guān)控制學(xué)生是否能在前臺看到自己的分?jǐn)?shù)避免未出結(jié)果前分?jǐn)?shù)泄露。這個(gè)項(xiàng)目后續(xù)可以考慮擴(kuò)展的方向一個(gè)是接入消息通知模塊報(bào)名成功和成績公布時(shí)給用戶發(fā)送站內(nèi)信或者郵件另一個(gè)是增加數(shù)據(jù)可視化大屏頁面把全校的競賽參與情況用圖表形式展示出來這個(gè)對答辯演示的加分效果是很明顯的。再一個(gè)就是引入Redis緩存首頁的競賽列表和熱門賽事情報(bào)減少M(fèi)ySQL的查詢壓力。我個(gè)人在實(shí)際維護(hù)這套系統(tǒng)的感受是業(yè)務(wù)功能本身不難難點(diǎn)都在細(xì)節(jié)的邊界處理和數(shù)據(jù)狀態(tài)的流轉(zhuǎn)上。狀態(tài)機(jī)的設(shè)計(jì)、權(quán)限控制的粒度、文件上傳的健壯性、部署路徑的兼容性這四塊做好系統(tǒng)基本上就穩(wěn)了。你在照著實(shí)現(xiàn)的時(shí)候如果遇到某個(gè)接口調(diào)不通或者某個(gè)狀態(tài)不對先從數(shù)據(jù)表看一眼數(shù)據(jù)是不是臟了再往代碼里排查絕大多數(shù)問題都是數(shù)據(jù)狀態(tài)不符合預(yù)期導(dǎo)致的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99久久婷婷精品视频| 五月婷A V在线| 玖玖综合色| 99激情视频| 激情五月色综合| www.91操| 日本久久超碰| 色五月天 丁香| 狠狠色五月| 中文字幕+乱码+中文字幕在线观看| 影音先锋 萱萱| 丁香五月婷婷激情网| 五月天三级| 91久久综合亚洲噜噜成人在线| 激情综合五月婷婷| 色色丁香婷婷| 9999三级片| 色青青视频| 丁香色成人| 国内自拍97在线| 亚洲网视屏| 精品三区影院| 五月综合色播播丁香婷婷| 色亚洲无码| 久久人五月| 嫩BBB搡BBBB榛BBBB| 欧美五月婷婷| 欧美色九| 成人视频一区| AV九九| 99r这里| www久久99com| 久久激情综合| 人人爽人人爽人人爽人人爽| 性爱电影科技贸易有限公司| 丁香五月婷婷亚洲综合精品在线| 色插综合网| 色婷婷基地| 成人网在线视频| 性爱激情久久| 色色色色色五月| www日本熟妇99在线视频| 欧美日韩一区二区三区四区| 色婷婷五月天在线观看| 欧美大肥婆大肥BBBBB| 国产 亚洲 在线| 激情综合五月| 夜夜骑夜夜撸| 欧美大片| 亚洲9久久精品| 伊综合蕉| 国产日韩av片| 《诡秘之主》在线观看| 亚洲综合五月天综合| 精品一二三区视频立| 激情五月天色| 色婷婷狠狠色| 色丁香五月| 久久精品视频在这里有| 任你爽免费视频| 成人AV在线网站| 日本美女上人| 无码激情AAAAA片-区区| 欧洲区自拍| 激情婷婷99| 超级碰91| 五月天婷婷色在线视频免费观看 | 9色免费网| 99操不停| 9久久婷婷国产综合精品性色| 亚洲免费观看高清完整版AV线| 欧美日韩国产一区| 激情综合网,婷婷| 婷婷丁香五月激情图片| 无码色色色| 婷婷五月激情图片| 婷婷视频在线| 日本啪啪网| 久久综合激情| 久久A区B区| 99热综合网| 99热99在线| 99成人| 久草热8精品视频在线观看 | 婷婷五月天 丁香五月天 裸体| 国产美女无遮挡裸体毛片A片| 精品一二三区久久AAA片 | 开心久久爱五月天| 天天爱天天做天天操| 思思99热| 婷婷中文字幕欧美| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 五月婷婷基地| 九月婷婷| 婷婷色九月| 色色网站免费在线视频| 久久a热| 久操人妻| 99re青青草| 大香蕉久久| 五月社区婷婷激情| 五月综合激情| 啪啪婷婷五月天激情| 激情5月舔| 精品A√| 99九九精品视频| 亚洲妇女熟BBW| 五月婷婷色白丝| 六月婷婷激情| 激情丁香九九五月综合网| 五月丁香啪啪网| 亚洲视频在线网| 超碰人人射| 巴基斯坦粉嫩无码视频| 中文字幕 中文字幕明步| 99色久| 情五月亚洲婷婷| 开心婷婷五月| 欧在线一区| 五月婷婷与六月丁香图片激情| 99av视频| www.丁香六月婷婷久久天堂影院.con| 99色在线观看免费| 99精品在这里| 欧洲亚洲免费视频9| 五月天婷婷色小说| 久久激情中文| 日韩一区二区三区无码| 久久久中文| 婷婷综合在线播放| 黄色一级影片| 五月天丁香成人社| 亚洲旡码| 中文字幕AV在线| 激情综合网五月婷婷| 精品一二三区久久AAA片| 婷婷操超碰| 色色COm| 国产99久久久国产精品免费看| 色综合久久88色综合天天99| 在线99热| 国产欧美婷婷| 国产毛片精品一区二区色欲黄A片| 狠狠干婷婷| 高清无码网址| 色色操| 影音先锋91| 日本人妻久久| 日本啪啪网| 噜噜狠狠色综合久| 色婷视频| 国产裸舞福利资源在线视频| AA片在线观看视频在线播放 | 亚洲激情网站无码| www久久久久久久久久久| 五月天丁香综合久久国产| 在线免费视频caop| a久久| 人妻中文字幕精品| www色五月| 蜜臀av粉嫩av懂色av| 久久久久人妻精品| 97av在线视频| 逼特逼在线免费播放| 91人妻视频| 日日影院 | www。五月天。com| 免费在线a| 五月深爱激情网| 亚洲天堂有码| 婷婷五月天AV| 永久AⅤ1| 97久久久久| www.激情五月| 婷婷色五月综合| 97人妻人人| 第四色大香蕉| 亚洲丁香五月深爱五月| 极品另类| 国产69久久久欧美黑人A片| 亚洲色色在线| 五月天丁香啪啪啪啪| 99视频精品在线| 色婷婷免费观看| 97香蕉碰碰人妻国产欧美| 人人色性网| 亚洲六月综合激情久久下卡| 丁香五月激情网| 色婷婷成人| 中文字幕无码人妻少妇免费视频| 亚洲va欧洲va国产va不卡| 久久99看免费| 日本精品人妻无码77777| 色婷婷亚洲综合网站| 第九色区av天堂| 大香蕉福利导航| 五月丁香另类图片| 婷婷色五月噜噜| 婷婷五月丁香青青草在线| 五月开心色| 婷婷情色五月天| 熟妇人妻中文字幕无码老熟妇| 五月丁香久久激情网| www五月天com| 天天射天天操天天干| 色狠狠综合网| 中文在线视频久1| 丁香九月激情| 免费播放片大片| 丁香婷婷综合激情五月色| 五月六月婷婷| 6080av| 98色花堂98t.R| 欧美性生交xXxX久久久| 操一操干一干| 96精品久久久久久久久| 99爱视频在线播放| 五月婷婷深爱六月| 亚洲色情免费网| 青草青草久9视频在线视频| 夜夜干天天操| 超碰免费99| 激情网婷婷婷| www国产亚洲色婷婷com| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 久久色天堂| 99se丁香| 日逼影音先锋男人AV资源站| 97碰在线视频| 久热九九| 91超碰人人操| 9色视频在线| 五月激情婷婷六月| 狠狠撸激情综合丁香五月天俺来啦| 在线播放中文字幕| 九九碰九九爱97| 丁香花操逼| 被强行糟蹋的女人A片| 超碰日日操| 丁香五月欧美激情| 婷婷5月九九| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 国际国外精品欧洲南美洲专区无码不卡| 久久婷婷国产| 一级性感黄色内射视频| 97色色婷婷五月天| 任你日视频| 久久影视婷婷五月| 五月丁香六月激情综合| 成人丁香色| 4399在线观看免费毛片| 久久WW| 97人人干。| 婷婷丁香五月天综合激情| 九九色综合九九色| www.99色| 四季8848精品成人免费网站| 偷拍丁香九月激情| 超碰在线观看caop| 九洲一级A片| 9 99免费视频| 欧美熟女99| 超碰无码318604| 久久九九婷婷| 欧美在线干| 开心五月婷婷激情| 午夜丁香六月婷| 五月激情偷拍婷婷| 五月草视频| 天天爽夜夜爽夜夜爽精品视频 | 91|疯狂丨高潮丨对白| 中字幕视频在线永久在线观看免费 | 先锋男人99资源| 美女激情婷婷| 天天操婷婷| 久久婷婷五月天大香蕉| 国产女生爱爱AA| 激情丁香久久| 人人爱干人人爱草| 久久性爱视频这里只有精品| 久久与婷婷| 120分钟婬片免费看| 精品久久人妻| 伊人大香蕉爱聚| 亚洲在线播放| 美女天天艹人人爽| 欧美婷婷色五月| 香蕉人在线香蕉人在线 | 五月 成人 婷婷| 久久久久久久久久8888| 99热在线观看| 国产亚洲网站在线| www婷婷亚洲| 可以直接看的AV网站| 五月丁香六月婷婷激情视频在线观看免费 | 熟女网站久久| 中文字幕无码AV| 九九九九九九九九九九九九九国产精品| 青青日韩| 丁香五月婷婷乱| 青草五月天| 99日本在线| 国产日韩欧美| 五月久久婷婷丁香| 色婷婷五月天天天干天天操天天爽| 婷婷五月天色播| 免费黄色片子| 亚洲黄网在线| 在线观看免费人成视频无码| 欧美操综合| 综合97五月| 人人看人人摸人人| 日本欧美成人片AAAA| 久热A片| 色五月激情| 婷婷五月婷婷五月| 亚洲黄色影视| 91久久综合亚洲噜噜成人在线 | 天天射天天射一道本日本社区| 天天干,天天日| 色婷婷视频| 天天操精品| 激情五月天综合网站网站网站| 婷婷丁香五月亚洲| 五月丁久久| 久久九九爽| 婷婷五月丁香综合人妻| A片试看50分钟做受视频| 成人网在线视频| 99热精品9| 这里只有精彩视频| 婷综合| 亚洲精品国产精品乱码视99| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 久久久久婷婷| 伊人久久大香线蕉av最新| 亚洲精品无AMM毛片| 国内一级精品| 五月丁香影院| 亚洲av成人电影在线观看| 夜夜夜夜操| 激情六月综合| 桃色五月婷婷| 天天综合精品| 激情小说五月天| 婷婷成人视频| 97AV人人插人人操| www.婷婷五月天.com| 亚洲欧美日韩VIP| 婷婷五月天成人在线视频| 无码人妻一区| 男人的天堂97| 九九在线精品| 婷婷情色五月天| 五月婷在线观看| 丁香六月成人| 丁香五月婷婷六月| 激情亭亭五月| 99ri在线| 99热香港| 欧美 色婷婷| 五月丁香色五月| 大香蕉伊人久久| 久草五月| 中文字幕 码精品视频网站| 9久视频| 碰碰91| 99热这里只有精品1025| 五月婷激情| 久久九九综合| 黑人巨粗进入警花疼哭A片| 婷婷五月欧美综合| 色99久草在线| 五月丁香久| 五月天婷婷伊人| 国产午夜精品一区二区| 亚洲综合字幕色色| 乱乱av| 丁香六月无码| 色爽九九| 天天天天操| 另类小说婷婷色| 欧美日韩婷婷五月天| 亚洲欧美另类在线23p| 超碰丁香五月| 午夜天堂啪啪| 青青草蜜臀| 亚洲精品一二三| 婷婷淫淫狠狠六月| 丁香婷最新动态| 亚洲国产精品SUV| 日日操日日爽| 激情六月婷婷| 激情五月天天| 亚洲精品视频在线播放| 天天狠狠色噜噜| 一起草日本| 丁香花五月天激情| 久久久99精品| www色婷婷| 国产AV一区二区三区日韩| 日日夜夜小色哥| 97热精品| 热日韩欧美| 4399人妻无码久久久| 综合激情五月四射婷婷| 99资源人人| 高清无码视频网址| 六月丁香婷婷六月激情综合| 亚洲色综合| 亚洲春色奇米影视| 九热视频| 天天插天天爽| 五月天中文网| 婷婷欧美偷拍综合| 99草视频在线观看| 91se视频| 婷婷大香蕉| 色婷婷五月天激情在线观看| 五月丁香在线国产| 激情婷婷色色| 超碰色人妾| 狠狠操狠狠爱| 大香蕉九九| 婷婷五月综合激情免费视频| 久久亚洲色导航| 国产综合婷婷| 97婷婷久久丁香| 激情五月综合亚洲另类| 婷婷五月精品中文字幕| 激情五月色在线播放| 色色色777| 丁香五月激情综合婷综| 天天干在线播放| 夜夜撸日日操| AV在线资源| 天天插天天插天天插天天插| 可以直接看的AV网站| eeuss人妻| 欧美日韩成人在线网| 国内一级片| 丁香六月激情| 亚洲最大视频| 五月花激情| 狠狠干狠狠干| www.色婷婷.com| 国产精品热搜丁香五月婷婷| 欧美综合五月丁香五月天| 五月丁香六月色婷婷综合五月天| 色五月婷婷在线| 涩婷婷视频快播人妻| 国产精品日本一区二区在线播放| 婷婷五月丁香五月| jiZZdr| 欧美va视频| 99在线热| 婷婷五月天丁香激情| 第九色区av天堂| 天天狠狠夜夜狠狠2023| 人人爱操| 五月天激情丁香| 亚洲综合激情五月久久| 婷婷五月天亚洲| 色婷婷久久综合| 五月婷婷丁香大陆免费| 97人人操人人干| 五月丁香啪啪啪啪| 色九区| 91大神操美女| 丁香六月啪啪| 六月丁香啪啪啪| 色婷网| 五月丁香色综合| 国产欧洲欧洲精品久久| 91精品久久久久久综合五月天| 久久婷婷六月综合| 亚洲激情综合| 狠狠婷婷色| 色图亚洲91| 婷婷免费视频| 黄色五月婷婷| 再次出发二| 日日色五月天| 婷婷五月天成人小说| 丁香五月成人社区| 熟女激情网| www,天天干| 丁香五月性| 九九九九精品精| 色五月色开心开心五月| 99色日本| 98毛片| 天天爽综合| 婷婷性爱五月天| 久久婷婷五月综合激情国产 | 丁香五月欧美色综合| 久9热在线视频| 亚洲男女激情| 91操女| 色婷婷777狠狠| 97色色-99久久| 爱草视频在线观看| 69久久99精品久久久久婷婷| 婷婷久久综合久| 日韩av免费版| 久久99综合| 狠狠操狠狠狠| 日本三级大片| 五月激情综合婷婷| 国产99热在线看| 六月丁香激情综合| 五月天大香蕉| 亚洲激情六月丁香| 久久99热这里| 五月丁香六月激情综合| 久cao香蕉影院| 9久国产| 欧洲激情五月天| 女人天堂AV| 婷婷爱五月| 九九九九九九毛片| 丁香五月狠狠综合欧美| 色色免费网站| 99在线综合视频| 婷婷和五月天| 国产精品色婷婷99久久精品| 婷婷久久色五月婷婷久久久| 激情小说五月天社区丁香 | 伊人久久大香线蕉av一区| 免费看欧美成人A片无码| sewuyuetingtingiii| 日 日干 日日做| 国产白丝在线一区| 超爽内射| 人妻操操色| 九九碰九九爱97| 9色天堂| va中文资源在线观看| 亚洲人妻Av| 99福利视频导航| 丁香婷婷丁香五月欧美人| 五月丁香综合中文| 欧美久人人| 激情久久天天| 中国女人做爰A片| 天天搡日日搡aaaaⅩ| 五月天天爱| 99久久国产宗和精品1上映| www.91操| 色婷婷在线播放| 久久五月天网| 午夜五月天| 91色综合网站在线| 色五月天在线| 九月激情婷婷丁香| xfplayav在线| 亚洲成人无码专区| 色高清无码视频| 欧美成人精品A片免费一区99| 日韩久久色| 五月欧美丁香在线观看| 美腿丝袜AV天堂网| 丁香六月婷婷五月婷婷| 午夜免费高清AV片| 亚洲免费观看高清完整版AV线| 狠狠 久久| 人人人舔人人人操人人人摸人人人97| 久久人人添人人爽添人人片αV| 五月婷婷色丁香| 五月婷婷六月丁香| 亚洲射激情| 五月丁香综合| 九九热99精品| 岛囯综合激情网| 丁香 婷婷 亚洲 熟女| 五月婷婷影视| 逼里香不卡| 色五月婷婷91在线| 日本九九视频| 五月婷婷免费在线| 国产99久久久国产精品免费看| 亚洲中文丁香| 九八Av| 婷婷丁香在线播放| 激情文学第四色婷婷丁香五月| 狼人婷婷综合| 五月色婷婷亚洲 | 亚洲欧洲中文日韩久久AV乱码| 色五月丁香一区在线| 国产黄色在线观看| 色色亚洲五月天| 色婷婷久久综| av中文在线| 99精品在线下载| 日本天堂网站99| 婷婷色五月开心五月| 超碰人人色| 久热这里| 久草五月| 99综合| 97精品人人A片免费看| 激情婷婷五月色| AV中文字幕夜夜操b天天摸bb | 超碰色女| 色色a| 欧美色小说婷婷| 9 1 A v久久久| 97人人超| 天天精品视频在线观看视频| 九色PORNY自拍成人精彩视频| 久久丁香五月天| 色五月成人网| 99啪啪视频| 狠狠婷婷色| 日韩在线视频网站| 丁香五月六月欧美| 另类视频综合| 99精品久| 欧美激情综合色综合啪啪五月| 欧美色爱五月天| 久久久思思热| www一起操在线观看| 丁香六月激情综合| 五月丁香六月婷婷色日| 加勒比色色| 婷婷九月狠狠色| 精品国产乱码久久久久久免费| 丁香五月成人网| 九九视频这里只有精品在线播放 | 婷婷97碰碰| 国产SUV精品一区二区883| 五月天色五月| 色婷婷九月| 久久免费精品小视频| 久久久宗合视频88| 天天干天天操天天爽| 无码色色| 亚洲综合色丁香五月天| 五月丁香久久精品在线观看| 99碰视频| 丁香五月玖玖| 欧美电影在线观看| 精品乱码久久久久| 亚洲操精品| 五月天综合婷婷| 深爱婷婷色| 国产激情久久久| www.综合久久| 五月天堂六月丁香亚州中文字幕久久| 五月婷婷六月丁香| 丁香色五月 97干| 狼友视频在线观看18| 天天色综合图片| 五月天色婷婷小说| 亚洲精品乱码久久久久久综合| 六月婷久久| 五月天停婷基地| 五月丁香亚州综合网| 色五月情| 中文字幕 中文字幕明步| 婷婷色综合| 婷婷色五月天在线| 99精品在这里| 婷香五月激情视频| 开心激情五月天网| 色爱五月天| 超碰免费人人| 九九色热| 婷婷五月成人| 精品国产AV色一区二区深夜久久| 激情婷婷丁香| 北京熟妇搡BBBB搡BBBB| 国外亚洲成AV人片在线观看| 亚洲精品字幕| 九九综合九| 六月丁花香啪啪激情欧美| 免费无码毛片一区二区A片| 婷婷五月天激情网| 天堂伊人干| 久久九久久| 婷婷五月天天激情| 久热丁香| 99精品久久久| 丁香午月AV中文字幕| 久久婷婷五月综合97色一本| 丁香五月AV综合| 99热思思在线观看| 激情狠狠丁香月| 人人爽亚洲| 五月丁香六月激情在线| 五月婷婷啪啪网| 五月激情婷婷在线| 亚洲最大成人综合网720P| 婷婷综合性爱网| 壅壅儕家a| www.婷婷.com| 亚洲小视频免费观看| 日本va欧美va精品发布视频 | 天堂久久性| 99自拍视频在线观看| 久久五月视频| 欧美在线ee日韩| 99啪在线| 欧美天天爽| 丁香色情五月综合网站| 日韩淑女人妻luan伦激情精品一区二| 综合婷婷| 淫五月停停| aaaa.黄| 久久丁香五月天| 综合热无码| 六月丁香激情| 久久婷色| 亚洲在线播放| 天天干夜夜操A片| 开心五月深爱五月丁香五月激情五月| 丁香六月啪啪啪| 亚洲欧美在线观看| 五月婷久久久| 狠狠人人| 丁香五月综合激情性爱 | 色色色999| 狠狠干五码| 婷婷丁香五另类网站| 99视频| 色情五月婷| 五月婷婷免费在线观看| 影音先锋一区| 日操夜操天天操不卡| 日韩久久视频| 色色色色色色色色色色色色色色,网站| 熟女网站久久| 任我干视频在线观看| 97碰碰视频在线观看| 婷婷五月天论坛| 伊人久久婷婷| 婷婷综合九月| 五月天婷婷永久免费视频| 天天摸天天肏| 在线91日韩| 情欲综合网| 超碰九九热| 996黄色片| 婷婷五月天,影院| 色婷婷免费观看| 五月天丁香啪啪啪啪| 99热 在线观看| 五月丁香花视频| 2050人人操免费工开爱| 五月丁香美女| 日韩综合久久| 毛v一区二区视频| 五月色婷婷激情| 色99视频| 亚洲成人在线播放| 丁香色成人| 婷婷狠狠狠爱| 丁香五月中文字幕久色| 久久丁香| 综合五月草| 大香蕉手机视频| 色婷婷中文在线| 日韩aaa| 亚洲成人av在线观看| www激情网| 秋霞免费视频| 99热精品少| 丁香五月性爱| 日本女天天爽| 五月丁香啪啪啪| 五月婷婷在线短视频| 大香蕉精品视频| 国产9色在线/日韩| 色玖玖综合网| 99视频九九热| 丁香五月六月综合激情| 91丨九色|PRNY熟妇| 激情五月五月婷婷| 99热狠狠操| 五月丁香婷草| 五月婷婷啪啪啪| 色色色婷婷五月| 久久久久亚洲AV成人无码电影| 亚洲成人网站在线播放| 国产.亚洲.欧洲视频在线| 婷婷五月色情| 9l视频自拍九色9l视频自拍九色9l社区| 97碰碰视频| 五月婷婷与六月丁香图片激情| 五月停停色色丁香| 99久久久久| 九九热九九| 婷婷六月天精品| 91re色综合视频| 五月天婷婷激情综合| 丁香五月123| 婷婷久热| 五月婷婷视频啪啪美女| 婷婷丁香18| 五月丁香婷婷AV| 久热黄色| 婷婷色婷婷| 艾小青av| 五月丁香婷婷啪啪网| AV操逼网| 色五月涩涩婷婷蜜桃| 成人αV视频免费观看| 色五月首页| 超碰在线观看9| 99热思思| 婷婷丁香五月高清| 丁香花五月天激情| 国产高潮A片羞羞视频涩涩| 五月婷婷伊人在线| 美欧日韩国产成人在战| 婷婷五月激情综合| 色女伊人| 97视频久久| 中字幕视频在线永久在线观看免费| 五月丁香激情六月| 五月丁香激| 亚洲视频在线观看| 丁香五月天中文字幕| 妇激情基地| 五月天社区婷婷| 9久久久久| 26uuu激情五月天| 射久久丁香五月| 亚洲无码99| 久久婷婷亚洲| 五月色情网| 色婷婷色九月| 久久久国产精品黄毛片| 九九大香视频| 这里只有免费的精品| 97在线/亚洲| 黄色片久久| 日韩性视频| 婷婷丁香五月亚洲综合网在线视频观看| XX久久| 久久se 综合网| 91色婷婷综合久久中文字幕二区| 思思热久久久久思思热| 色婷婷成人| 中文字幕久久婷九女同| 丁香六月婷婷久久综合| 五月丁香综合中文| 婷婷五月天婷婷| 久久er免费视频| 久热丁香| www.婷婷五月.com| 激情婷婷五月天| 九九 激情 网| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 人人干人人干骚美女| 99热在线观看99| 国产亚洲精品久久久久久郑州| 国产美女视频久| 99热这里只有精品 搜| 婷婷五月av| 91操在线观看| 日韩人妻AV在线| 五月婷婷性爱| 99热9999| 婷婷综合在线| 这里只有免费精品| 丁香五月天天日| 99色色爰| 色婷婷8| 日日操夜夜撸| 久热超碰91| 亚洲中文乱字字幕在线永久| 综合激情五月丁香| 婷婷五月色播网| 99爽视频| 2022人人操人人看| 丁香五月激情啪啪啪| 亚洲精品久久久无码| 99精品无码| 婷婷五月亚洲一本在线丁香| 五月婷婷在线网站| 五月丁香WWW| 狠狠舔| 五月丁香六月色婷| 爽极品色| 玖玖综合网| 成人网站免费在线播放| 激情亭亭五月| 丁香五月停停基地| 欧亚中文A V| 国洲夜色亚热在线久久| 色色五月天激情| 99九九视频| 思思99热| 色色色99| 专区无日本视频高清8| 天天日天天爽夜夜爽| 午夜丁香| 综合网色| 日韩中文欧美| 成人无码精品1区2区3区免费看| 婷婷成人视频| 粉嫩AV久久一区二区三区| 国产超碰在线| 久久综合久色欧美综合狠狠| www,婷婷,com| 操97在线观看| 冬月かえでAV无码播放| 激情色情五月天| 综合色网站| 97操操| 激情网站五月| 婷婷色5月天在线。| 五月婷婷综合激情| 五月天玖玖狠狠色色| 亚洲国产va| 五月五婷婷| 看全色黄大色大片| 67194成I人在线观看线路1| 色婷婷五月天在线观看| 人人人操| 99热这里只有精品9| 怎么样可以看免费的一级av| 亚洲综合五月天婷婷| 99视频在线观看视频| 九月激情综合婷婷| 日韩色色色色色| 精品人妻久久久| 婷婷五月丁香六月天亚洲综合| 亚洲操B| 婷婷五月综合社区| 青青青在线视频国产| 久久99草五月婷婷| 婷婷丁香五月激情密臀av| 中文字幕成人| 桃色激情婷婷伊人网| 色婷婷精品| 婷婷五月综合激情| 99国产精品久久久久久久久久久| 亚洲综合碰| AV在线大香蕉| 亚洲激情色色| 色丁香五月天| 国产毛片精品一区二区色欲黄A片| 久久大国产香蕉| 91在线看免费 九九九九| 俺也去婷婷五月天第五色| 婷婷五月丁香成人| 99热亚洲| 国产伦亲子伦亲子视频观看| 六月婷婷最新网址| 天天爽夜夜爽夜夜爽精| 五月婷婷激情五月| 99视频在线精品| 日本 色综合| 婷婷娌伦网| 亚洲色情一区二区三区四区| 五月丁香六月婷婷久久肏| 五月婷婷久久综合| 99在线视频女女视频| 天天综合天天做天天综合| 99视频这里只有精品10| 丁香五月成人社区| 婷婷五月18永久免费网站| 狠狠色丁香五月婷巨| 色色色色色色色色网站| 日本猛少妇色XXXXX猛叫| 夫妻超碰在线| ...婷婷国产成人亚洲日韩| 欧美婷婷色五月| 99热.com| 九九狠狠干| 99久久精品网| 色吧综合网| 婷婷少妇激情| 久热这里只有精品在线| 五月激情天| 亚洲 成人 电影av在线观看| 综合狠狠五月婷婷| 91碰碰| 综合久久六月| 天天操夜夜爱| 少妇大叫太大太粗太爽了A片| 婷婷综合影院| 婷婷综合五月天亚洲综合| 久草婷婷| 啪啪色激情五月天| 99在线播放视频| 99婷婷色| 婷婷王月天影院| 综合福利网| 梁铮版蜘蛛女在线观看| 国产亚洲色婷婷久久99精品91| 97男人天堂| 丁香五月天啪啪激情综和网| 一本大道嫩草AV无码专区| 五月丁香婷婷久久| 欧美日韩成人免费在线| 成人在线网站| 欧美色爱五月天| 婷婷五月综合基地| 五月丁香激情六月| 色欲一区二区三区精品A片| 激情另类综合| 婷婷五月天激情网| 天天色天天射天天日| 色碰碰| 大香蕉久久婷婷精品综合| 天天摸天天做天天爱天天爽| 黄色AAAAAAA| 婷婷开心激情综合五月天| 国产黄大片在线观看画质优化| 五月丁香手机在线| 色五月激情五月开心五月| 久久婷婷五月综合97色一本| 操操人人| 色性综合| 五月丁香六月激情| 色色热99| 另类少妇人与禽zOZZ0性伦| 五月香蕉婷婷| 99精品视频在线观看| 视频这里只有精品16| 色色色综合网| 丁香五月婷婷婷婷欧美综合| 99热18| 亚洲俩性性爱图片久久第六页| 久久丁香五月婷婷| 五月色欧美| 五月婷婷久久大片| av色色国产| 激情综合色图| 久热91| 五月激情视频网| 影音先锋男人av资源站| 99热在线精品观看| 啪啪丁香五月| 色五月亚洲| 噜噜噜噜在线| 欧美色碰| 五月婷丁香| 六月丁香深深爱| 日韩啪啪自拍| 思思久久精品| 99热在线精品观看| 97人人干| 无码网| 欧美日韩色色| 性色婷婷| 五月开心婷婷网| 性生生活大片又黄又| 狠狠色综合网站久久久久| 99视频极品在线香蕉| 五月色色网| 亚洲婷婷丁香五月天激情小说 | 操操操91| 久久五月婷| 日本天天综合| 操日本色| 99ri视频| 五月天五月天成人网亭亭成人色网站| 五月丁香大相交| 日日影院 | 九九九九这里只有精品| 久久久久9999| 91在线97视频| 综合色五月| 色五月婷婷DVD| 97人人超| 五月婷婷影视| 99久re热视频精品98| 激情综合网 激情五月天| 熟美女麻豆| 少妇AB又爽又紧无码网站| 婷婷六月色开 | 色欲婷婷五月天| 777米奇影视第四色| 免费看欧美成人A片无码| www91精品| 性五月激情| 日本9区视频| 天天做夜夜爽| 精品乱码久久久久| 婷婷五月欧美综合| 五月五月婷婷| 激情98色婷婷五| 五月天婷婷在线播放| 99热99这里有免费的精品| 黄色成人网站在线播放| 五月天小说激情| 97天堂| 日婷婷久久开心| 婷婷伊人激情婷婷| 婷婷五月丁香花综合| 九九九九九九热| 能看的AV| 色五月播五月| 五月天停停成人网| 十月丁香婷婷| 色涩影院六月丁香| 日日躁夜夜躁狠狠久久AV| 激情婷婷色色| 狠狠操狠狠插| 天天干天天射综合网| 久草久青福利| 丁香五月天AV在线| 色一情一乱一乱一区9| 久草婷婷网 | 久久狠婷婷| 区欧美日韩成人| 五月天色小说| 啊v视频在线观看| 99久久婷婷国产综合精品草原| 九九热免费视频| 狠狠五月天婷婷激情网。| 日韩一66精品| 亚洲性爱99| 一区二区三区视频| 在线观看av网站| 91|九色|动漫| 十区AV| 人人操婷婷| 伊人久久婷婷五月综合97色| AA片在线观看视频在线播放| 五月婷婷丁香六月| 婷婷在线播放| 欧美色频| 天天色色天天| 色五月综合在线| 色色色色色色网| www色五月| 久草天堂| 国产午夜一区二区三区| 色99在线观看| 9999久久久久| 激情丁香五月| 777精品久无码人妻蜜桃| 激情丁香五月天| 九色PORNY9l原创自拍| 激情五月天综合网| 国产精产国品一二三在观看| 亚洲黄色影视| 爱久久小说下载网| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 亚洲亚洲人成综合网络| 99久久国产宗和精品1上映| 亚洲色图欧美色图日本视频| 农村熟妇高潮精品A片| 91妻人人爽人人看片| AV亚洲在线| 狠狠色大香蕉| 久久精品系列| 久热无码| 久久五月丁香六月婷| 爱草视频在线观看| 人人草人人爱手机视频看看| 五月天婷久精视频| 国产.亚洲.欧洲视频在线| 六月婷婷久久| 五月婷婷综合网| 丁香情色五月| 亚州在线中文字幕| 激情久久综合网| AV在线免费网站| 人人舔人人色人人高潮| 精品福利911| 熟女激情五月天 | 免费在线观看AV网站| 久久九九一區| 婷婷五月丁香色综合| 99热超碰| 五月丁香六月婷婷手机无线| 深爱激情网五月天| 久久久久9| 热思思九九| 六月丁香狠狠爱| 超碰激情网| 天天综合天天玩夜夜玩天天玩夜夜玩| 99re思思热久久| 9999久久久久| 香蕉AV777XXX色综合一区| 色欲色香综合网站| 丁香六月开心| 99热日本| 天天综合五月天| 蜜臀AV在线观看| 极品九九九九九九| 97色碰| www.99成人视频| 丁香五月天堂网| 丁香五月婷婷av影院| www.AV在线| 九九AV| 综合在线丁香五月| 五月天激情综合10p| www.五月丁香| 婷婷97| 婷婷五月天国产性感美女演员久久久久| 伊人久久丁香狠狠婷婷综合香蕉| 超碰97久久| 亚洲激情无码久久| 天天天久久人人人合| av在线免费网站 | 五月丁香婷婷欧美| 午夜微拍福利| 色色五月天婷婷丁香| 亚洲精品色色| 五月婷婷性| 九九热这里| 91疯狂操操操操| 天天爽综合| 狠狠干婷婷| 久久人操-久草婷婷-成人AV| 国产六月婷婷| 操碰97| 日本色色网站| 婷婷一本和五月丁香| 中文字幕成人| 亚州综合色| 五月天,激情四射,婷婷频道| 婷婷五月天小说网| 亚洲AV免费国产电影| 五月激情基地| 99亚洲精品| 久久九九玖玖| 丁香五月天成人网站| 五月天操逼激情| 色黑鬼导航| 色99日韩| 激情丁香五月AV| 丁香网五月天激情| A片女女女女女女BBBB| 4399在线日本A片| 26uuu成人网| 亚洲图色五月天| 婷婷五亚洲| 婷婷五月成人| 99re99热| 九九热AV| 九九九九综合| 五月天激情美女久久| 大地9中文在线观看免费高清| 成人做爰A片免费看网站找不到了| 99婷婷国产最新视频| 久久人妻少妇嫩草AV| 五月开心六月婷婷在线播放网站| 婷婷六月丁香五月| 在线99热| 九九热99热| ZpRSw| 有哪些A片网站| 在线免费观看激情视频| 思思热国产| 超碰97在线操| 开心五月综合激情综合五月| 怡红院AV亚洲一区二区三区H| 五月丁香六月婷婷中合网| 538在线精品| 婷婷五月天AV网| 九九热在线精品| 六月丁香视频网站| 九九在线精品| 色色99色色| 欧美成人AAA片一区国产精品| 97涩涩丁香五月天| 色情终和网|