免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
51成人| 91婷婷搞| 五月天亭亭俺也| 9久热| 变态 另类 在线| 一级黄色尤物综合视频手机在线观看| 亚洲精品乱码久久久久久综合| www九九免费视频| 五月丁香香蕉| 亚洲色无码| 国产视频福利| 欧美久久久久久久久中文字幕| 超碰国产在线观看| 热思思| 国产成人+综合亚洲+天堂| 无码视频国内精品久久久| 99re思思久久| 伊人天天色| 色婷婷888| 色婷婷性爱网| 人妻丰满精品一区二区A片| 婷婷激情社区| 99国产这里只有精品| 亚洲精品色色| 久操人妻| 色噜噜夜夜夜综合网| 中文字幕日本最新乱码视频| 99精品在线观看| 九九热在线视频| 新五月天婷婷激情电影| 天天日天天插天天操| 香蕉97碰碰碰超视精品| 91丨九色丨国产打屁股网站| 五月丁香色停停啪啪啪| 久久色六月| 天天激情站| 开心婷婷丁香五月| 色色99| 牛牛碰免费| 丁香六月天婷婷色| 婷婷四色成人综合色视| 狠狠干五月丁香综合网| 思思热在线视频观看精品| 色停停影院五月天| 国产精品丝| 丁香狠狠| 婷婷五月天视| 五月婷婷开心色伊人| 国产色网站| WWW、日本色丁香、co m| 亚洲爆乳无码精品AAA片蜜桃| 超碰97免费在线| 婷婷五月婷| 色五月色综合| 亚洲欧美999| www.伊人天堂偷偷婷婷| 操一操| 99re在线观看视频| 五月婷婷co.m| 六月丁香色婷婷| 久久66精品| 五月婷AV| 色99色| 久久伊人五月天| 婷婷五月天堂一本在线| 国产精品国产| 久久人妻视频| 国产精品成人网址| 91九色 婷婷| 亚洲一区二区无遮挡A片| AV中文字幕夜夜操b天天摸bb | 天天干天天干天天干天天干天天| 战争与艾拉电影免费观看| 思思色综合网站| 欧美99热| 我爱va亚洲va52| 秋霞网在线观看理论91| 激情五月,色播五月| 99精色| 欧美一级操逼视频| 日韩成人AV在线| 婷婷色五月丁香六月欧美啪| 精品久久久91久久影视网| 能看的av片| 国产色色网址网站| 五月婷亚洲精品| 综合网激情| 亚洲综合激情五月| 色五月色图| 天天草天天爽| 噼里啪啦完整版中文在线观看 | 琪琪色五月天| 色丁香久综合在线久综合在线观看| 婷婷五月视频| 婷婷婷婷婷婷婷五月丁香| 色丁香久久| 人妻丰满精品一区二区A片| 色99xx| 97色一二三| 精品婷婷丁香五| 无码色综合| 五月丁香啪啪啪| 日韩一级片| 久久91久久精品久久| 97在线/日本| 婷婷综合色| 综合狠狠干| 久久婷婷综合五月趴| 婷婷激情九月| 综合九色| 五月丁香色婷| 久久丁香五月婷婷| 99热在线观看精品| 99色免费观看全部| 性av| 久久这里只有精彩| 色五月激情综合| 天天日天天色| 亚洲日韩国产黑丝黑丝AVAV一区二区三区 | 五月丁香激情综合欧美| 超碰在线精品| 久久久精品99| 亭亭五月色男人| 亚洲成人网站在线观看| www.91九色| 午夜丁香六月婷| 婷婷综合视频| 九九九九成人| 五月丁香婷婷成人综合网| 夜夜干夜夜操| 亚洲人妻av| 久热这里只有精品视频免费观看| 丰满人妻妇伦又伦精品国产| 伊人青草成人| 在线另类| 丁香五月天激情网址| 五月久视频| 国产成人精品一区二三区熟女在线| 女人天堂AV| 97精品人人A片免费看| 色情五月综合婷婷| 婷婷色在线| 久久的爱大香蕉| 深爱激情五月天婷婷网| 俺来也狠狠| 成人五月天在线观看| 色综合久久五月天| av在线免费网站| 日本熟女内射| 91主播在线| 日日婷婷不卡| 日本久久九| 五月情丁香色| 九月丁香久久网| 99热无码精品| 色无婷婷| 亚洲热视频在线| 玖玖精品视频| 久操97| 夜夜撸天天操| 五月丁香网站| 丁香五月Av| 色五月婷婷在线| 97碰碰在线观看视频| 亚洲AV无码成人精品电影| 五月激情婷婷开心| 色www.con| 五月婷婷深深爱| g00d人体西西| 丁香五月婷婷色| 91丨九色丨高潮丰满日本| 色婷婷在线视频观看| 九九九热精品| 天堂资源欧日浪女在线播放| 亚洲色A| 影音 五月 婷婷 久久| WWW.桔色成人.COM| 天天爽天天透天天爱| 五月成人丁香av91| 99九九热视频| 性小说五月天| 亚洲第一av| 亚洲精品在线视频| 五月情综合| 丁香色婷婷色手机免费在线| 天天色天天| www.99婷婷| 色婷婷五月天| 五月天婷婷激情| 婷婷日韩| 日日夜夜干| 26uuu亚洲欧美| 欧美日韩国产一区| 99re6在线视频精品免费| 99色一| 婷婷色偷拍| 精品久热69| 99无码视频| 色青青五月| 成人在线免费网址| 香蕉久久国产AV一区二区| 婷婷丁香五月激情图片| 99热性色| 丁香88AV五月婷婷| 日韩九区| www.henhengan| 中文字幕在线不卡| 亚洲性爱AV| 色色色婷婷五月天| 久色欧美| 性爱电影科技贸易有限公司| 五月婷久久| 欧美成人AAA片一区国产精品| 色噜噜狠噜噜视频| 日本va视频| 狠狠第四色| 成熟妇人A片免费看网站| 色五月自偷自拍婷婷婷婷| 亚洲99综合| 日在线V视频在线播放| 日本少妇AA一级特黄大片| 激情婷婷| 99日本黄站| 天天日天天做天天操| 99九九在线观看免费| 成人 在线 日韩| 天天日天天日天天搞| 丁香久久综合| 色欲影香| 超碰av天堂| 婷婷在线中文字幕| 97人人干人人操| 日日天天干| 热热久久精品视频| 性爱AV天堂| 9在线9在线婷婷在线国产| 99精品热| 色播五月天激情| 日本色狠狠| 91视屏在线观看com.wwwvv| 色色射| 婷婷五月天激情文学| 亚洲婷婷丁香五月亚洲| 色色综合无码| 欧美婷婷五月激情| 色综合爽| 日韩av干| 呦呦视频无码播放| www久热com| 五月丁香婷婷激情久久| 99re这里只有精品国产99| 操一区| 色色色色区| 日本97人人| 婷婷综合中文字幕| 婷婷干| 色吧婷婷五月亚洲| 国产精品成人网址| www.九九婷婷| 日本精品九九九| 超碰99热在线观看| 97色图片中文字幕视频在线观看| 色噜久| 日韩有码一区| 精品亚洲日韩99欧美片| www一起操| 伊人三级激情| 99色综合网| 丁香五月六月综合激情| 丁香花色色网| 激情99| 激情综合网五月婷婷| 五月婷丁香| 激情五月影院| 95精品区一区二| 影音先锋秋秋五月婷婷| 五月情涩综合婷婷| 国产91视频| 婷婷亚洲综合| 五月丁香婷婷国产精品综合| 丁香五月婷婷激情中文| h亚洲| AV成人在线播放| 99热这里都是精品| 国产精品久久久久久久久久久久| 精品九九九久| 色99在线视频| 五月激情网五月综合网| 五月婷婷激情综合视频| 成人网站免费在线播放| 婷婷久久综合久| 疯狂做受XXXX高潮A片动画| 九九亚洲天堂| 色色色综合色| 日韩啪啪视品| 婷婷色九月| 婷婷五月俺要去| 丁香五月天天高清在线| 97在线刺激| 五月婷激情| 超碰97在线操| 色婷婷免费观看| 男人天堂伊人五月丁香| 五月深爱网| 久久色亭亭五月天| 中文字幕人成乱码在线观看| 丁香五月婷婷大香蕉| 婷婷五月丁香六月| 亚洲va欧美va国产综合久久久| 五月天精品视频| 99久久久免费| 日本色超碰| 综合久久97| 99色视频在线观看| 亚洲成人网在线观看| 中文字幕人成乱码在线观看| 操91| 综合 蜜月 婷婷| 婷婷精品| 国产精品色婷婷久久久精品| 丁香五月花| www.99热在线| 操一操| 91无码视频| 亚洲精品无AMM毛片| 狠狠色婷婷7777久综合| 婷婷五月综合在线视频| 香蕉久久国产AV一区二区| 无码动漫AV| 欧美五月丁香啪啪响视频| 五月丁香六月综合基地| 95精品区一区二| 五月丁香色色| 天天爽天天爽| 九九精品碰| 亚洲色色图片| 色综合色| 婷婷五月情| 五月狠狠| 九九亚洲视频| 久久婷婷青青| ss99热| 99热首页| 欧美激情综合| 热久久99热欧美国产亚洲| 五月婷婷之综合激情在线| 婷婷丁香六月影视| 亚洲综合五月天婷婷丁香| 五月丁香色婷婷色| 久久久精品AV| 五月综合丁香婷婷| www.黄色片-久久成人国产精品在线播放-999AV | 亚洲小视频免费看| 色婷婷av在线观看| 午夜丁香| www婷婷| 五月色婷婷影院| 激情色色色| 丁香五月玖玖| 婷婷五月天狠狠搞干| 99国产精品久久久久久久久久久| 影音先锋xfplay资源男人网| 中文字幕在线免费观看视频| 日本女天天爽| 99在线精品视频| 这里只有精品视频视频在线观看| 婷婷五月天影视| 99这里| 久热9| 精品成人久久久久久久_一二三四视| 青青草婷婷久久| 婷婷丁香五月综合激情视频| 亚洲综合成人网站| 69久久99精品久久久久婷婷| 丁香五月网址| www.五月天| 久去色色| Blackedraw视频一区二区| 深爱激情四射| 在线日本www| 另类综合婷婷五月天欧美视频| 日本eVa一区=区视频| 91精品国产综合久久密臀| 99精品视频在线观看| 婷婷六月开心网| 97色干在线观看| 久热这里只有精品66| www.97视频| 五月婷婷在线网站| 久久影视婷婷五月| 激情综合婷婷五月| 亚洲成人日韩无码精品| 超碰猛烈的性猛交| 婷婷色香六月综合激情| 超级碰碰碰久久网站| 97色色色| 这里只有精品热| 精品国产AV色一区二区深夜久久| 激情五月婷在线精品| 久久色午夜在线导航| 色噜噜狠狠色综无码久久合欧美| 九九99在线免费在线观看视频| 激情五月天视频| 色情五月天首页| 久久99激情五月天| 日日夜夜婷婷| 丁香五月综合网亚洲综合欧美狠狠| 综合九九久久| 丁香六月啪啪| 激情综合五月天| 天天情天天狠天天透| 久热一区| 五月婷婷啪| 能看的AV网站| 婷婷久久五月天| 美女100%露全身无挡网站| 西西4r午夜剧场| 人妻aV在线| 都市激情五月婷婷综合| 五月婷婷综合影院| 久99999热视频在线观看免费| 99热这里只有精品免费| 国产欧美婷婷五月| 久久久WWW| 99se丁香| 久久九九网| 日韩婷婷五月天| 99人人操人人爱久久久| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | www.色99| 另类亚洲电影| 国产成人精品一区二三区熟女在线| 丁香六月情| www一起操| 99这里的视频都是精品| 20253AV| 人妻综合网| 白天AV月月| 成人av在线网址| 密着浓厚中出乚交尾GvG935| 丁香六月婷婷| 99爱爱| 丁香五月激情婷婷婷婷在线观看| 五月丁香成人| 激情美女五月天| 免费97碰碰| 国产AV成人精品| 激情99| 99激情| 丁香五月六月激情久久| 亚洲第精品| 啪啪色激情五月天| 草综合网| 五月丁香网视频| 91久久九久久九久久九久久九久久| 丁香五月花| 俺去也婷婷| 五月天啪啪视频| 婷婷在线激情| 狠狠爱激情网| 婷婷五月激情欧美| 玖玖综合色| WWW,五月| 91丨九色丨白浆秘| 日韩一级A片黄色| 伊人大香蕉在线视频| 丁香婷婷五月综合欧美另类| 情色五月天 网站| 香蕉久操| Caoub青青超碰 | 色婷婷影| 九九自拍网| www91精品| 久久五月婷婷视频| 97五月天婷婷综合激情网| 激情婷| 色99xx| 一级黄色片看看| 久热A片| 20253AV| 日本丰满久久| 日韩色色一区| 色婷婷综合网| 97亚洲视频在线| 丰满少妇猛烈A片免费看观看| 艳妇野外情欲放荡HD| 国产SUV精品一区二区6| 亚洲综合色成丁香五月色| 97色 五月天丁香| 三日本无码| 色开心五月婷婷丁香HD| 七七九色| 婷婷五月 丁香六月| 激情五月天在线| 亚洲精| 玖玖精品视频| 91丨九色丨大屁股| av一级棒av| 婷婷酒色网| 欧美超级视频97| 91婷婷丁香| 人妻系列久久久久久久久久久| 激情五月婷婷在线区| 亚洲99在线视频| 天天操天天曰| 99热8| 不卡在线视频| 国产肏屄大片| 大香蕉久久综合网| 久婷久婷| 色综合五月在线| 久久精品只有这| 任我肏| 精品一二三区久久AAA片| 中文字幕不卡网站| 久热 91| 狠狠色无码| 噜一噜在线| 丁香六月激情综合| 婷婷综合偷拍| 丁香婷婷丁香五月欧美人| 天天爽天天草| 丁香成人五月天| 91九九九色在| 精a品a视a频| 香蕉AV777XXX色综合一区| 99热碰碰热| 亚洲精品一区无码A片| 国产第99页| 秋霞电影一级黄| AV操操操| 91人久| 婷婷无码视频| 成人丁香五月| 亚洲狠狠爱婷婷| 噼里啪啦在线观看免费完整版视频| 久久九九亚洲| 五月天婷婷影院影院| 99在线观看精品| 大香蕉AV电影在线| 五月天伊人av| 99人碰碰碰| 日韩99无码| 婷婷五月激情四月综合 | 亚洲婷婷丁香五月亚洲| 亚洲综合99| 变天就操逼婷婷五月| 新99思思视频| 五月天激情影院| 色色五月丁香婷婷综合| 性生活久久人妻| 狠狠CAO日日穞夜夜穞AV| 婷婷五月丁香六月| 久久色婷婷| 婷婷五月丁香超碰| 五月丁香影院| 五月丁香久久丝袜啪啪| 五月开心色| 成人小说色图婷婷五月| 我要看激情五月天| 丁香六月成人| 中文字幕av网站| 激情五月综亚网| 五月色亚洲| 91色涩| 第四色五月天| 婷婷自拍| 五月激情影视| 噜噜狠狠色综合久| 久久久久人妻精品| 色五月婷婷激情基地| 五月亭亭综合五码| 久久精彩综合视频| 久久性爱激情| 99久久极情精品一区| 婷婷久综合| 五月开心婷婷| 国产精女同一区二区三区久| 99思思热只有在这里看| 91免费试看| 婷婷五月天在线综合| 1024成人免费看| 人妻操在线看| 大香蕉婷婷婷| 精品人妻久久久久久| 99在线播放| 亚洲色视频| 日韩淑女人妻luan伦激情精品一区二| 六月丁香五月婷婷| 操操碰| 激情99。| 久热伊人91| 久久视频这里99| 色吊丝中文字幕| 激情五月天开心| 婷婷色啪| av九九| 国产热精品| 色色综合网。| 91综合在线| 国产色色网站网址| 六月婷婷日| 久久99精品久久久久久噜噜| 九九热色视频| 操B无码视频国语| 99色精品| 噜噜噜噜噜在线| 国产精品国产成人国产三级| 婷婷丁香色情| 日本超碰在线| 色网五月婷婷| 丰满人妻一区二区三区| 国产激情综合五月| 九 九九九AV| 超碰com| 人妻系列久久久久久久久久久| 色色五月婷婷网| 色婷婷狠狠18| 五月激情五月丁香| 无码区婷婷五月花开| 97碰免费视频在线| 99性爱| 九九免费精品在线视频| 欧在线一区| 人人爱操| 五月婷婷综合在线视频小说| 色五月婷婷 成人| 久久久久久久久久久jjjj| 亚洲AV日韩无码| 五月激情婷婷六月丁香| 六月婷婷久久| 99热午夜精品| 亚洲五月婷婷| 激情综合激情综合| 婷婷丁香五月激情图片| 婷婷丁香五月天影院 | 99自拍视频在线观看| 99综合99| www色色色com| 婷婷综合九月| 久久婷婷老| 五月天另类小说| 婷婷五月天啪啪| 日日噜人人人做人| 色欧美影院| 亚洲五月六月婷婷| 丁香五月激情综合| 人人妻人人澡| 99精品热| 婷婷五月图片小说网| 综合欧美五月婷婷| 久草视频一,二三四| avh片在线观看| 99精品在线| 99自拍网| 播五月开心婷婷欧美综合| 色大综合| 人妻操逼| 丁香六月婷婷综合激情欧美 | 97色色综合| 90色免费视频| 51精品国自产在线| 国产精自产拍久久久久久蜜| 天天插综合| 久久Xx| 五月激情六月综合| 久热这里只有精品在线| 亚洲热综合网在线观看| 婷婷国产日本欧美| 欧美成性色| 97九色| 五月丁香六月成人| 久久综合影院| 五月天婷婷社区久久综合| 91碰碰碰久久久久| 殴美97色| 99热官网精品在线| 青青草原爱爱网| 九九久久久综合| 免费色婷婷| 久久久高清| 日本三级99人妇网站| 天堂成人A片永久免费网站| 精品久热| 香蕉AV福利精品导航| 九九av| 五月丁香色婷婷| 一级黄色影片| 婷婷五月丁香五月基地| 久热A片| 久久电影五月天丁香电影| 激情综合视频| 激情五月天色色色| 91人人操| 狠狠舔| 99成人网站| 亚洲第精品| 人人做天天爱| 久久这里有精品| 成人电影在线免费试看| 欧美日韩成人在线| 色优久久| 精品九九九久| www.99精品视频| www.99热视频| 成人五月天在线视频在线观看| 夜夜www| 色人妻五月| 九九热这里| 婷婷色九月| 丁香五月天社区| 欧洲MV日韩MV国产| 免费成片在线观看| www色色com| 色青青五月| 亚美欧色影院| 欧美日综合| 色伦专区97中文字幕| 波多野结衣成人作品在线| 好色婷婷| 天天日夜夜高潮| 啪啪亚洲综合| 久操操| 五月天社区婷婷| 91久久综合亚洲噜噜成人在线| 99啪啪视频| www,五月天激情| 超级碰碰碰97免费| 99国产精品白浆在线观看免费 | 婷婷五月激情欧美大胆视频| 国产亚洲网站在线| 国产综合激情五月久久| 色爱99| 国色天香成人网| 亚洲一区二区无遮挡A片| 欧美激情五月天婷婷| 天天干天天射色综合| 午夜免费试看| 微拍92| 久久视频66| 亚洲激情五月| 人妻丰满精品一区二区A片| 第五婷婷伊人丁香| 伊人丁香婷婷东京| 日韩人妻无码专区| 99久久五月婷婷| 99re思思在线视频| www.久久爱.com| 大香蕉伊人丁香五月| 97在线精品| 久久五月天婷婷| 成人无码精品1区2区3区免费看 | 另类小说五月天综合| 99热碰碰热| 99精品手机在线视频| 26uuu色噜噜精品一区| 婷婷九月在线| 亚洲无码猫咪| 五月天婷婷乱| 婷婷五月成人| 久久HD| 欧美丁香五月夫妻天| 碰97 久| 在线国产精品色| 婷婷六月天天| 人人爽欧美婷婷久久久五月丁香| 色婷五月天网站| 激情綜合W W W,激情五月天| 丝袜激情网| 26uuu精品国产| YW无码| 综合五月天天天天天五月| 天天日日夜夜| 九九Av| 综合久久综合久久| 久久婷婷人人| 婷婷五月情| 婷婷丁香五月在线观看91| 丁香五月宝贝激情网| 97人人干人人操| 六月丁香深深爱综合网| 五月天婷婷久久| 九九热自拍| 超碰在线9| 99re热在线视频观看| 一起草性爱不卡视频| 婷婷伊人综合| 深夜A片| 色色97丁香婷婷五月天| 九九热精品6| 伊人大香蕉爱聚| 99成人免费视频| 国产精品成人网址| WWW五月| 午夜福利8055| 丁香五月天婷婷中文字幕| 麻豆精品| 9久热在线视频精品| 五月天婷婷免费| 99无码超碰| 丝袜大香蕉| 午夜色婷婷| 婷婷深爱五月天在线| ..真实国产乱子伦对白在线_欧| 色五月丁香激情视频| 日本黄色三级片内射| 成人精品99| 婷婷99丁香| 婷婷中文无码| WWW五月婷婷| 欧美大片| 久久久精品色| 台湾无码A片一区二区| 99热老司机| 天天做综合| 91男女视频在线观看| 大陆肏屄视频| 久99久视频免费观看| 91啪啪| 五月青青草综合| 色99欧洲色19| 啪啪激情综合| 丁香六月激情综合网| 91狼友视频网页更新| 婷婷五月六月丁香| 99热九九这里只有精品| 免费看成人AA片无码视频吃奶| 亚洲五月天婷婷在线| 激情图片久久| 国产精品99久久久久久久女警| 五月天婷婷五月| 激情综合网五月| 99ER热精品视频| www.婷婷.com| 狠狠色性| 久久大香免费| 777精品久无码人妻蜜桃| 五月天激情无码| 激情五月天啪啪视频| 亚洲成人综合网在线免费观看| 51XX午夜影福利| 色丁香久久久| 狠狠爱综合网| 色色九区| 成人国产欧美大片一区| 91狠狠综合网| ss视频xx91| 婷婷色五月天色| 国产人妻人伦精品一区二区| 武汉美女啪啪视频免费一级片| 五月丁香婷婷久久| 1级欧美日韩| 丁香五月久久| 这里有精品| 亚洲丁香五月美女| 91精品无码| 蜜臀av 粉嫩av 懂色av | 丁香五月花影院| 亚洲欧美成人在线| 亚洲第79页| 婷婷丁香高潮了| 日本啪啪网| AV网在线观看| 中文字幕按摩做爰| 五月天久久久| 色停停五月,在线观看| 国产26uuu视频| 人人爱操| 色婷婷久久综| 国产高清视频91九九九久久久| www.久久久久| 五月久久婷婷| 婷婷五月色天| 丁香五月精品| 99热99免费| 激情婷婷九月| 国产精产国品一二三在观看| 五月丁香综合激情| 国产一二三四五六七八视频| 99精品自拍视频| 99久久超级| 国产SUV精品一区二区883| www,com,五月色色| 日本色狠狠| 5月丁香婷婷| av操一操| 琪琪色综合网站| 91久久五月天| 9久热这里只有精品| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 色婷婷久久| 人人摸人人摸| 婷婷色婷婷| 99热这里只有精品1025| 五月婷婷五月天亚洲无码| 99热91| 久久大香免费| 六六久久黄色| 精品无码久久久久久久久| 亚洲超碰在线| 色婷婷日本| 五月天综合激情网| 欧洲亚洲激情五月天在线| 亚洲mm色| 婷婷丁香五月天狠狠| 激情丁香五月激情婷婷| 丁六月激情| 六月香五月婷| 美国天天日天天操| 色五月丁香五月婷婷五月成人网| 性生活视频98791| 婷婷色成人| 激情丁香五月天图片| 婷婷五月天激情诱惑| www.日日夜夜.com| 久久这里只有精品99| 欧美Va婷色| 91精品国产91久久久久青草| www.zbzhongsen.com| 尔尔AV一区| 国产AV一区二区三区最新精品 | www.激情com| 色丁香五月| 久久女婷| 午夜天堂一区人妻| 青草视频在线播放| 91九色白丝| 综合九九日本| 久久婷丁香五月| 婷婷啪啪| 六月丁香综合网| 成人色五婷婷| 综合色播| 国产乱妇乱子在线播视频播放网站| 激情五月丁香五月色| 婷婷五月天性爱视频| 国产精品成人AV在线| 丁香六月婷婷激情综合| 激情五月丁香色婷婷| 终合激情网| 五月丁香激情综合| 99re热视频这里只精品| 免费色婷婷| 国产操B视频| 好好日激情五月天| 成人免费va| www,com,五月色色| 超碰操网| www.夜夜操| 一本大道熟女人妻中文字幕在线| 色狠狠综合| 丁香五月色情av| 色综合av超碰| xx久久| 影视av久久久噜噜噜噜噜三级| 色激情综合| 99亚洲欧洲| 九九色热| 91久久婷婷人人澡草 | 国内外色色色色色成人视频| 国产欧美大香蕉一区| 九九久久五月天综合伊人| 538久久| 大地资源色婷婷视频在线| 亚洲国产va| 色五月成人| 97超碰婷婷五月天| 色琪琪一综合久久激情五月视频| 夜夜做天天爽| 婷婷伊人综合中文字幕| 七月婷婷色香综合网| 五月丁香激情婷婷| 色爱终和网| 久久五月天婷婷| 97sese婷婷| 五月亚洲激情| 婷婷五月AV| 九月婷婷人人操人人舔人人爱| 99自拍视频| 性爱视频99| 777米奇影视第四色| 成年人夜夜喷水| 久久久久久五月天| 另类天堂| 97AV在线视频| 夜夜躁爽日日| 日本91在线播放| 丁香五月婷婷性爱| 久久婷.com| 丁香六月综合激| 五月天婷婷导航| 欧美激情VA永久在线播放| 婷婷五月天网址| 婷婷五月18永久免费视频| 色婷婷在线视频| 婷婷性爱影院| 综合一区二区三区| 性爱五月婷| 亚洲一区二区无码蜜乳av| 九九热精品视频在线观看| 五月丁香久人妻中文| 2025色婷婷| 亚洲综合色激情色五月| 啄木鸟黑丝一区二区| 亚洲无码99| 超碰在线人妻| av色婷婷| 超碰在线观看9| 丁香六月爱综合| 六月 丁香 视频| 九月婷婷综合在线| 成人小说 五月天 婷婷| 色色丁香婷婷| 超碰免费电影| 六月婷伊人| 无码少妇高潮喷水A片免费| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 亚洲午夜电影| 国产九九一区二区三区| 人人叉久| 狠狠狠狠狠狠| 97久久五月丁香婷婷| 热久久国产视频| 五月天天丁香婷婷| 伊人大香五月天| 亚洲乱码在线观看| 69人人操人人爽| 丁香五月婷婷激情123| 五月丁香六月欧美综合网站| 操逼三区| 婷婷五月天天天| 玖玖91| 五月天色婷婷激情| 青青日韩| 亚洲综合无码| 丁香五月,开心五月,成人婷婷| 亭亭五月色男人| 五月天激情综合首页| 丁香六月天| 丁香五月婷婷成人网| Www.se.久久| 五月丁香激情综合久久| 香蕉狠狠爱视频| 五月激情站| 天天天天天操| 亚洲9久久精品| 色五月综合| www超碰| 欧美韩国日本| 久久综合天天综合| 91精品综合久久久五月天| 夜夜躁婷婷AV| 日韩免费乱轮网站| 七七婷婷综合| 五月丁花六月丁香综合| 96精品久久久久久久久| 激情五月天影院| 99热这里只有精品96| 亚洲AV日韩AV永久无码网站| 亚洲五月婷婷| 热九九精品| 欧美怡红院黄站| 久久久噜噜噜久久人妻| 久久九九爽| WWW.国产| 婷婷五月六月| 9热在线观看| 婷婷色片| 亚洲av免费在线| 五月婷婷片| 色插综合网| 天天肏在线| 久久视频这里有精品99| 久久婷网| 开心激情婷婷| 永久AⅤ1| 婷婷色在线观看| 99精品丁香五月| 久久久久久综合88| 国产精品色一哟哟| 五月婷婷色综图片| 三级片AAA久久久AAA久久久AAA| 五月婷婷亚洲色视频| 伊人五月天男人的天堂在线| 99操不停| 亚洲色久| 婷婷五月天亚洲五码| 婷婷五月丁香在线观看| 九伊人网| 四川女人毛多水多A片| 狠狠狠狠狠狠色| 色婷婷丁香特级性爱视频| www.五月婷婷久久.com| 亚洲AV无码电影| 97综合在线| 久久婷婷五月综合啪| 免费观看的AV| 天天久久66xxx| 中文字幕五月久久婷婷| 婷婷五月花| AV在线观看网站| 99热在线成人网站| 日韩抽插操逼| www.精品99| 狠狠色丁香久久综合婷婷亚洲成人福利| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 激情五月天色婷婷综合| 天天狠狠婷婷在线| 婷婷久久内射| 亚洲av电影网站| 思思久久99热只有频精品66| 99热日韩| 久久激情五月| 99日韩网站| 日本五月丁香| 淫荡家庭AV| 91碰在线| WWW·色色色·COM| 97成人在线视频| 日本不卡高字幕在线2019| 色五月激情五月天| 亚洲精品在线视频| 伊人六月丁香婷婷| 人妻久久做| 婷婷五月色情| www五月婷婷88导航| 91碰碰碰| 亚洲成人在线五月天| 99热精品在线观看| 久久婷婷综合色丁香| 六月丁香婷| 日韩黄色电影| 激情欧美丁香五月| 99re在线这里只有精品视频首页| 亚洲婷婷丁香五月亚洲| 五月婷婷五月丁香综合| 国在线激情网| 99精品久久| 色综合色| 亚洲婷婷在线播放十月| 99久久久久| 网色99| 亚洲欧美综合7777色婷婷| 色丁香五月天| 亚洲av网站| 日本色婷婷| 丁香五月激情啪啪| 久久久婷| 欧洲99视频在线| 精品国产va久久久久| 亚洲日本激情| 这里只有精品视频国产| 激情99。| 99热这里精| 五月天播播| 婷婷久久丁香五月| 丁香婷婷91在线观看视频| 亚洲成人中文字幕| 欧美性交一区二区三区| 色噜噜五月丁香婷婷| 丁香五月停停基地| 婷婷丁香五月基地| 色啦啦视频| 天天日天天久久青青| 少妇高潮呻吟A片免费看软件| 久久久国产精品黄毛片| 欧美情色一区| 丁香九月激情在线视频| 激情久久伊人| 爱99干99| 久久综合五月天激情小说网站 | 亚洲亚洲人成综合网络| 久久婷婷六月综合国际| 久9热插入| 日韩av网站在线观看| 操碰99| www,五月天com| 一逼色综合| site:xmssd.com| 99热欧| 天天干天天干天天干天天干天天干天天干天天 | 久久大国产香蕉| 久久五月天免费网站| 婷婷午夜激情| 蜜桃婷婷丁香五月天狠狠久久综合| 久久这里只有精品无码| 99re8在这里只有精品| 99ri国产在线| 亚洲亚洲人成综合网络| 曰本aaaaaa丈片| 亚州色婷婷| 激情婷婷狠狠干| 99激情| 男人操女人高潮91视频| 91ncm视频| 一区二区三区四区无码| 91精品婷婷国产综合久久| 无码一区精品一区视频| 色欲九区| 深爱激情69热| 国产成人+综合亚洲+天堂| 亚洲免费av观看| 丁香婷婷射| 日本欧美在线| 9热久久在线| 天天做天天爱天天爽在| 99玖玖在线视频| 色综合色香蕉网| 人人草公开操| 六月丁香五月婷婷| 伊人久久婷婷五月综合97色| 色五月综合网| 少妇综合网| 婷婷色五月91啪啪| 丁香六月色香蕉视频| 五月婷在线| 99热人人艹| 久久五月丁香婷婷| 26uuu精品一区二区| 色999亚洲人成色| 天堂五月婷婷| 97婷婷丁香五月| 久久亚洲婷婷| 成人VAV视频在线观看| 日本婷婷综合精品| 色5月婷婷色| 99热伊人综合| 久久人妻爱爱| 超碰com| 1024在线观看免费视频| 婷婷激情综合无月| 久久综合五月天| 91人人看| 26uuuavcom| 五月丁香成人网| 婷婷五月天Av| 91人人爽久久涩噜噜噜| 午夜69成人做爰视频| 成人视频一区| 久久婷婷综合国产| 久久精99| 热99只有精品| 成人在线不卡| 日本综合99| 成人噜噜网| 婷婷网五月天| 人妻体体内射精一区二区| 激情五月综合久久| 婷婷基地五月色| 综合激情五月天| 中文字幕人妻AV| xfplayav在线| 婷婷伊人| 色99超碰| 欧美综合丁香网| 五月婷综合| 国产老熟妇亲子乱对白| 婷婷成人综合免费视频| 操操自拍| 色五月天 丁香| 婷婷五月天最新综合你懂的| 色色射| 婷婷综合在线视频| 九九这里都是精品| 日本三级片片| 九九無妻|