久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

基于SpringBoot+Vue的健身俱樂部前后端分離系統(tǒng)設計與實現(xiàn)

基于SpringBoot+Vue的健身俱樂部前后端分離系統(tǒng)設計與實現(xiàn) 前后端分離健身俱樂部網(wǎng)站系統(tǒng)這個項目我做過類似的好幾個學員和粉絲也拿這類選題當畢業(yè)設計或者練手項目。說實話SpringBoot Vue MyBatis MySQL這一套組合放在今天依然是前后端分離項目里最有代表性的技術棧之一。它不像微服務那套那么重但麻雀雖小五臟俱全RESTful API、數(shù)據(jù)持久化、JWT鑒權、跨域處理、前端路由守衛(wèi)、反向代理這些核心概念全都能覆蓋到。如果你正準備搞一個能寫進簡歷、能跑起來演示的完整系統(tǒng)這個方向非常合適。這篇就圍繞健身俱樂部這個業(yè)務場景把整個系統(tǒng)的設計思路、核心模塊、關鍵實現(xiàn)和部署過程全拆開來講。包括后端接口怎么組織、數(shù)據(jù)庫表怎么設計、前端頁面怎么對接、打包部署要注意哪些坑每一步我都會把選擇背后的理由說清楚。不管你是有一定基礎的開發(fā)者想找參考還是剛學完框架想做實戰(zhàn)項目這篇都能幫你省下不少彎路。1. 項目整體設計與思路拆解1.1 為什么選健身俱樂部這個業(yè)務場景做項目最怕的就是業(yè)務太抽象比如“電商系統(tǒng)”“管理系統(tǒng)”這種邊界模糊做著做著就不知道自己該實現(xiàn)什么了。健身俱樂部這個場景好在業(yè)務閉環(huán)非常清晰核心鏈條就是會員注冊 - 查看課程 - 預約課程 - 教練排課 - 上課簽到 - 消費結算。這個閉環(huán)涵蓋了最常見的CRUD操作還牽扯到一對多、多對多關系以及訂單狀態(tài)流轉(zhuǎn)這類稍微進階一點的數(shù)據(jù)處理。另外健身俱樂部的業(yè)務天然適合做權限區(qū)分。會員看到的是課程列表和自己預約記錄教練看到的是自己的排課和學員列表管理員則需要管理會員、審核課程、查看營收統(tǒng)計。有了三種角色JWT鑒權、路由守衛(wèi)、按鈕級權限控制這些技術點就能全部落地上而不是空談概念。1.2 前后端分離架構的優(yōu)勢在哪里早年的Java Web項目是JSP Servlet那一套前端頁面寫在Java項目里模板渲染交給服務端技術和業(yè)務耦合得非常緊。換個前端樣式要動后端代碼前端工程師和后端工程師經(jīng)常在一個項目里互相踩腳。前后端分離的本質(zhì)是把“展示邏輯”和“業(yè)務邏輯”徹底拆成兩個獨立工程中間只通過JSON格式的HTTP接口通信。這種架構帶來的直接好處有三個。第一前端可以獨立部署Vue打包出來就是一堆靜態(tài)文件扔給Nginx托管就行完全不需要Java運行環(huán)境。第二后端接口可以被多個客戶端復用同一套API既給Web用以后要做小程序或者App也能直接用。第三團隊協(xié)作效率高前端用Mock數(shù)據(jù)開發(fā)后端用Postman調(diào)試接口兩邊只要約定好接口文檔就能并行開工。1.3 技術選型的理由和替代方案SpringBoot MyBatis MySQL在這個項目里是最順手的組合。SpringBoot不用多說自動裝配和Starter機制大幅簡化了配置一個可運行的Web服務幾行代碼就能起來。MyBatis的優(yōu)勢在于SQL可控復雜查詢可以手寫SQL優(yōu)化而且動態(tài)SQL在按條件篩選這種場景下非常好用。MySQL穩(wěn)定可靠學習成本低部署簡單作為中小型項目的數(shù)據(jù)庫完全沒有壓力。前端選Vue是因為它的漸進式框架特性很契合這類項目。從Vue 2到Vue 3Composition API的引入讓邏輯復用更清晰腳手架項目默認幫你配好了Vite或者Webpack路由和狀態(tài)管理都有官方的配套方案。當然你完全可以用MyBatis-Plus替代MyBatis單表CRUD幾乎不用寫SQL或者用Spring Data JPA那是另一套風格。這些不是誰比誰好關鍵是你對哪套更熟。我建議學習階段盡量用原生MyBatis把SQL和映射關系親手寫一遍理解了底層后再用增強框架認知會扎實很多。提示既然是做完整系統(tǒng)別只把它當練習。如果你打算寫進簡歷一定要把業(yè)務模塊梳理清楚并且保證項目能在新環(huán)境下一鍵跑起來。跑不起來的項目寫再多技術點都白搭。2. 數(shù)據(jù)庫設計與后端核心實現(xiàn)2.1 數(shù)據(jù)庫表結構怎么規(guī)劃健身俱樂部系統(tǒng)的表設計重點在于把業(yè)務核心鏈路的數(shù)據(jù)模型理清楚。我一般會分三組來設計基礎信息組、業(yè)務流轉(zhuǎn)組、訂單支付組?;A信息組包括用戶表、會員信息表、教練信息表、課程表。用戶表保存登錄賬號、密碼加密存儲、角色類型這三要素角色用int型字段區(qū)分0是管理員1是教練2是會員。會員信息表關聯(lián)用戶表擴展存身高、體重、體脂率、會員等級這些健身屬性。課程表主要字段是課程名稱、封面圖、分類、簡介、價格、上課地點。業(yè)務流轉(zhuǎn)組是重點包括課程預約表和教練排課表。預約表要和課程表、用戶表建立關聯(lián)記錄約課時間、狀態(tài)。狀態(tài)字段也是用int表示0待上課、1已上課、2已取消。教練排課表則需要設置每個時間段的可約人數(shù)上限這個字段在后續(xù)實現(xiàn)預約校驗時很關鍵。訂單支付組負責消費記錄訂單表包含訂單號、用戶ID、商品類型、金額、支付狀態(tài)、支付時間、支付方式。另外再加一個操作日志表記錄誰在什么時間改了什么數(shù)據(jù)后臺管理時能看到操作痕跡。創(chuàng)建表的時候有幾個細節(jié)容易忽略。第一所有表都建議加create_time和update_time字段用datetime類型后面做排序和分析數(shù)據(jù)都方便。第二邏輯刪除字段del_flag建議加上物理刪除對運營類系統(tǒng)來說風險太高。第三金額字段強烈建議用decimal而不是float用float存金額做加減運算會出現(xiàn)精度丟失。2.2 SpringBoot項目結構怎么組織才清晰后端工程的結構直接影響后續(xù)維護體驗。按模塊分包是最常規(guī)的約定但很多人習慣把所有東西都塞到controller和service兩個包下面結果就是類越來越多后期自己都找不到。這里貼一下我用下來的結構com.example.fitness ├── config # 配置類跨域配置、JWT攔截器注冊、全局異常處理 ├── controller # 接口層接收參數(shù)返回統(tǒng)一響應體 ├── service # 業(yè)務層接口 實現(xiàn)類 ├── mapper # MyBatis的Mapper接口 ├── entity # 數(shù)據(jù)庫對應的實體類 ├── dto # 數(shù)據(jù)傳輸對象接收請求參數(shù) ├── vo # 視圖對象返回給前端的數(shù)據(jù)結構 ├── utils # 工具類JWT工具、密碼加密工具 └── common # 公共枚舉、常量、統(tǒng)一返回結果封裝entity、dto、vo分開這一點很多人會忽略。直接用entity接收前端參數(shù)、再直接返回給前端圖省事一時爽后面改需求就是災難。舉個例子前端傳登錄參數(shù)需要的是用戶名和密碼但user表有十幾個字段直接拿實體接收會有一些安全隱患多傳字段也容易出問題。只暴露出需要的字段接口安全性和可讀性都好很多。統(tǒng)一返回結果也要在一開始就做好。我習慣定義一個Result對象里面有code、message、data三個字段。code為200表示成功401表示未登錄或token失效500表示服務器異常。所有接口都返回這個對象前端axios封裝時只需處理一種數(shù)據(jù)結構。2.3 MyBatis中幾個會踩坑的細節(jié)MyBatis看似簡單但用不好真會讓人頭疼兩三天這里把最容易踩的幾個點挨個說。2.3.1 Mapper接口掃描配置Mapper接口和XML文件能否被正確識別取決于兩處配置。第一處是在啟動類上加MapperScan(com.example.fitness.mapper)或者每個Mapper接口上單獨加注解二選一即可。第二處是XML文件的存放位置如果你把Mapper XML放在java目錄下需要在pom.xml里加配置把xml文件打包進去否則構建后運行就會報“Invalid bound statement (not found)”這個錯在部署時非常常見。build resources resource directorysrc/main/java/directory includes include**/*.xml/include /includes /resource /resources /build如果XML放在src/main/resources目錄下的mapper子目錄則要在application.yml里配置mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.fitness.entity configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case這個配置強烈建議開啟這樣數(shù)據(jù)庫的create_time字段就能自動映射到實體的createTime屬性少寫很多resultMap。2.3.2 動態(tài)SQL怎么避免誤更新空字段更新操作是動態(tài)SQL最容易出問題的場景。如果用set標簽更新用戶信息前端只傳了昵稱結果把密碼、手機號也更新成null了這種事故幾乎每個新手都遇到過。解決方法是更新接口單獨設計DTO并且使用MyBatis的if標簽做非空判斷update idupdateMemberInfo parameterTypecom.example.fitness.dto.MemberUpdateDTO update member set if testheight ! nullheight #{height},/if if testweight ! nullweight #{weight},/if if testbodyFat ! nullbody_fat #{bodyFat},/if if testmemberLevel ! nullmember_level #{memberLevel},/if /set where id #{id} /update這樣前端傳什么字段就更新什么字段不傳的字段保持原狀。要注意set標簽會自動處理最后一個逗號別畫蛇添足去寫, where。2.3.3 循環(huán)插入用foreach還是單條insert批量添加課程排期、批量導入會員這類場景很多人會寫一個for循環(huán)調(diào)用單條insert數(shù)據(jù)量大了效率就很差。正確做法是用foreach一次批量插入insert idbatchInsertSchedule insert into coach_schedule (coach_id, course_id, start_time, end_time, max_people, create_time) values foreach collectionlist itemitem separator, (#{item.coachId}, #{item.courseId}, #{item.startTime}, #{item.endTime}, #{item.maxPeople}, now()) /foreach /insertMySQL默認的max_allowed_packet大小足夠容納幾千條數(shù)據(jù)的批量插入一般不用擔心超出限制。加rewriteBatchedStatementstrue到數(shù)據(jù)庫連接串還能進一步提升批量執(zhí)行效率。2.4 JWT登錄鑒權的完整邏輯登錄鑒權是前后端分離項目的核心環(huán)節(jié)。因為接口是無狀態(tài)的所以需要用一種機制讓服務端能識別“你是誰”。我用的是JWT方案流程是這樣用戶登錄后后端校驗用戶名密碼校驗通過就生成一個JWT令牌返回給前端。這個令牌由三部分組成Header、Payload、Signature核心信息放在Payload里。我習慣把userId和role兩個字段放進去這樣后續(xù)接口里從token中解析出userId就知道當前請求是哪個用戶在操作。令牌設置兩小時過期前端在axios攔截器里發(fā)現(xiàn)返回401就跳回登錄頁。生成JWT的核心代碼邏輯參考String token Jwts.builder() .setSubject(user.getUsername()) .claim(userId, user.getId()) .claim(role, user.getRole()) .setExpiration(new Date(System.currentTimeMillis() 2 * 60 * 60 * 1000)) .signWith(SignatureAlgorithm.HS256, secretKey) .compact();有了令牌攔截器在SpringBoot中通過實現(xiàn)HandlerInterceptor接口在preHandle方法里校驗token。要記得把注冊登錄接口排除在攔截范圍外配置攔截路徑時用excludePathPatterns把公開接口放行。這個過程中最大的坑是前后端對token的命名要完全一致。有的項目后端返回token字段前端卻存在access_token里結果所有請求都帶不上token全是401。盡量在一開始就約定好response里的字段叫token前端storage里存的key也叫fitness_token。注意密碼存儲絕對不能明文。使用BCrypt加密有兩點好處一是每個用戶生成的哈希值不同即使密碼相同存庫結果也不同二是BCrypt自帶鹽值暴力碰撞成本極高。Spring Security的BCryptPasswordEncoder可以直接單獨拿來用不用引入完整的安全框架。3. 前端Vue工程搭建與聯(lián)調(diào)細節(jié)3.1 初始化一個Vue項目并配好路由搭建前端工程有兩個方式Vue CLI和Vite。新項目我更推薦Vite構建速度快開發(fā)體驗好。初始化命令npm create vitelatest fitness-admin -- --template vue創(chuàng)建完成后按照需要安裝路由、狀態(tài)管理和HTTP庫npm install vue-router4 pinia axios element-plusElement Plus是這套系統(tǒng)里非常好用的UI組件庫表格、表單、對話框、分頁這些后臺管理常用的組件都封裝好了。整套后臺頁面如果不用組件庫手寫樣式的工作量至少翻三倍。路由設計是前端最需要提前規(guī)劃的部分。我習慣在路由配置文件里把整個布局拆成兩層外層是Layout包含側(cè)邊欄和頂欄內(nèi)層是具體頁面。所有需要登錄的頁面都放在一個父路由下通過路由守衛(wèi)控制訪問權限。// src/router/index.js const routes [ { path: /login, component: Login }, { path: /, component: Layout, redirect: /dashboard, children: [ { path: dashboard, name: Dashboard, component: Dashboard }, { path: course, name: Course, component: CourseList, meta: { roles: [1, 2] } }, { path: member, name: Member, component: MemberList, meta: { roles: [0] } } ] } ]路由守衛(wèi)的作用是在跳轉(zhuǎn)前檢查登錄態(tài)和角色權限。用戶沒登錄去訪問需要鑒權的頁面直接路由跳轉(zhuǎn)到登錄頁并帶上redirect參數(shù)登錄成功后跳回原來想去的頁面router.beforeEach((to, from, next) { const token localStorage.getItem(fitness_token) if (!token to.path ! /login) { next({ path: /login, query: { redirect: to.fullPath } }) } else { next() } })3.2 axios封裝與跨域處理axios封裝做得好不好直接決定后面聯(lián)調(diào)是否痛苦。我在項目里封裝了一個request模塊統(tǒng)一處理三件事請求頭自動帶上token、響應數(shù)據(jù)統(tǒng)一解包、錯誤提示統(tǒng)一彈窗。// src/utils/request.js import axios from axios const service axios.create({ baseURL: /api, timeout: 10000 }) service.interceptors.request.use(config { const token localStorage.getItem(fitness_token) if (token) { config.headers[token] token } return config }) service.interceptors.response.use( response { const res response.data if (res.code 401) { localStorage.removeItem(fitness_token) window.location.href /login return Promise.reject(new Error(未登錄或登錄已過期)) } return res }, error { ElMessage.error(error.response?.data?.message || 網(wǎng)絡異常請稍后重試) return Promise.reject(error) } )開發(fā)環(huán)境直接請求后端地址會遇到跨域問題??缬虻谋举|(zhì)是瀏覽器的同源策略前端跑在8080端口后端跑在8081端口兩者源不同瀏覽器就會攔截響應數(shù)據(jù)。開發(fā)環(huán)境下最簡單的方案是在vite.config.js里配置代理讓前端請求走自己的域名然后轉(zhuǎn)發(fā)到后端// vite.config.js export default defineConfig({ server: { port: 3000, proxy: { /api: { target: http://localhost:8081, changeOrigin: true, rewrite: path path.replace(/^\/api/, ) } } } })這樣前端代碼里請求/api/course/list實際轉(zhuǎn)發(fā)到后端的是http://localhost:8081/course/list。生產(chǎn)環(huán)境部署時同樣用Nginx處理轉(zhuǎn)發(fā)原理是一樣的。3.3 頁面開發(fā)時如何高效對接接口頁面聯(lián)調(diào)最怕的就是沒有接口文檔全靠猜。建議后端在寫接口時順手把參數(shù)和返回值整理清楚。前端拿到接口先別急著寫頁面花10分鐘把接口返回的數(shù)據(jù)結構看明白再設計表格列和表單字段效率會高很多。以課程管理為例前端調(diào)用課程列表接口后數(shù)據(jù)結構一般是這樣的{ code: 200, message: success, data: { total: 35, rows: [ { id: 1, name: 燃脂操, category: 團操, price: 29.9, status: 1, createTime: 2024-05-12 10:30:00 } ] } }前端拿到這個結構后Element Plus的Table組件直接用prop綁定字段名就能渲染。要注意時間字段后端返回的是字符串還是時間戳如果返回的是2024-05-12 10:30:00這樣的格式前端可以直接展示如果是時間戳需要做一次格式化轉(zhuǎn)換。我踩過的坑是后端把時間字段統(tǒng)一做成了字符串拼接導致日期排序完全亂掉。后面改成返回時間戳前端再統(tǒng)一格式化問題就解決了。建議后端時間格式約定成ISO字符串或者時間戳并且保證項目中所有接口風格一致否則前端處理成本很高。3.4 關鍵業(yè)務頁面怎么設計和實現(xiàn)課程預約是核心頁面用戶看到的是一個課程卡片列表加預約按鈕。點擊預約按鈕后前端彈出一個對話框展示課程詳情包括上課時間、授課教練、可約人數(shù)、價格。用戶確認后調(diào)用預約接口后端校驗是否已滿、時間是否沖突、用戶是否重復預約??紤]到真實場景里用戶可能一次預約多節(jié)課課程卡片上要標注當前剩余名額。剩余名額怎么計算每次預約成功時減少名額取消預約時增加名額同時預約時再校驗一次余量。這個邏輯聽起來簡單但并發(fā)場景下需要注意兩個人同時約最后一個名額如果先查詢再更新就會超賣。穩(wěn)妥做法是在更新時帶上條件update coach_schedule set booked_count booked_count 1 where id #{scheduleId} and booked_count max_people受影響行數(shù)為1表示預約成功為0表示名額已滿。這種原子操作比先查再更靠譜得多。教練端頁面主要展示課程日歷每個教練可以看到自己的工作安排。這個功能其實就是把某個教練的排課表查詢出來按日期分組顯示。前端用日歷組件渲染對應日期顯示課程信息。管理端頁面是重頭戲會員列表需要支持條件搜索和分頁課程管理需要支持上下架操作訂單管理需要導出Excel營收統(tǒng)計需要展示圖表。建議這些頁面按模塊獨立開發(fā)先列表再表單再操作按鈕逐步完善。實操心得開發(fā)順序有個技巧。先做后端接口用Postman驗證通過后再寫前端頁面或者先定好接口用Mock數(shù)據(jù)跑通前端再對接真實后端。千萬別兩邊同時開工邊寫邊改不然兩邊互相等排錯時也搞不清問題在前端還是后端。4. 環(huán)境準備與項目部署全流程4.1 本地開發(fā)環(huán)境需要裝哪些東西很多新手卡在環(huán)境配置上這里列一個完整的清單。JDK推薦裝JDK 8或者JDK 11。選JDK 8的原因是穩(wěn)定SpringBoot 2.x系列完全兼容網(wǎng)上搜問題也容易找到答案。JDK 17也不是不行但要確認和SpringBoot版本兼容SpringBoot 2.x對JDK 17的支持會遇到模塊化限制建議直接用JDK 8省心。Maven裝最新版或者3.6都可以重點是要在IDEA里把Maven的settings.xml指到國內(nèi)鏡像否則下載依賴慢得讓人想放棄。鏡像我這里就不寫具體地址了你在搜索引擎搜“Maven國內(nèi)鏡像”就有很多現(xiàn)成的配置。MySQL建議裝5.7或者8.0。安裝時要注意編碼設置成utf8mb4數(shù)據(jù)庫排序規(guī)則選utf8mb4_general_ci。用utf8mb4而不是utf8的原因很簡單utf8mb4能存儲emoji和生僻字utf8存不了。連接串里再加一行參數(shù)保證高版本MySQL的SSL連接不會報錯。Node.js裝16.20 LTS或者18 LTS版本都可以Vite 4要求Node 14.18以上。安裝完以后把npm的registry切換成淘寶源執(zhí)行命令npm config set registry https://registry.npmmirror.com就行。這些環(huán)境裝完后建議先各自驗證一遍JDK用java -versionMaven用mvn -vNode用node -vMySQL用mysql -u root -p登錄測試。確認都沒問題再開始跑項目不然環(huán)境出問題會干擾你判斷項目本身的Bug。4.2 前端打包與Nginx部署Vue項目開發(fā)完成后構建生產(chǎn)產(chǎn)物npm run build構建完會在項目目錄下生成dist文件夾里面就是打包好的靜態(tài)文件。把dist文件夾里的內(nèi)容復制到Nginx的html目錄然后配置Nginx。配置Nginx做兩件事托管靜態(tài)文件反向代理API請求。先看一個最小可用的配置server { listen 80; server_name your-domain.com; root /usr/share/nginx/html/fitness; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }try_files $uri $uri/ /index.html;這行是前端路由模式的關鍵配置。Vue Router默認使用history模式頁面地址看起來是/course/list這種真實路徑。如果刷新頁面Nginx會根據(jù)路徑找文件找不到就返回404。加上這行配置后所有請求兜底返回index.html再由Vue路由接管頁面就正常了。location /api/塊把前端發(fā)往/api/的請求反向代理到后端服務。注意proxy_pass http://127.0.0.1:8081/;末尾的斜杠作用是把/api前綴去掉再轉(zhuǎn)發(fā)保證后端收到的地址和本地開發(fā)時一致。前端有兩種路由模式剛才說的history模式在部署時需要Nginx配合還有一種hash模式URL地址里帶#號部署簡單但不好看。如果你用的是hash模式不需要try_files那行也能正常工作。什么場景用哪種如果域名是給外部訪問的正式項目建議history模式配好Nginx如果是本地演示或者測試環(huán)境hash模式省事不折騰。4.3 后端工程打包與運行全流程后端SpringBoot項目打包前先確認application-prod.yml配置正確。數(shù)據(jù)庫地址、用戶名、密碼換成了生產(chǎn)環(huán)境的值日志輸出級別調(diào)整成info去掉打印SQL的配置。然后執(zhí)行Maven打包命令mvn clean package -Dmaven.test.skiptrue打包成功后在target目錄下會生成一個xxx.jar文件。把這個jar上傳到服務器運行指令java -jar fitness-server.jar默認是在前臺運行關掉終端服務就停了。正式環(huán)境用后臺運行方式nohup java -jar fitness-server.jar fitness.log 21 日志輸出重定向到fitness.log文件里排查問題的時候直接看這個文件。nohup的意思是忽略掛斷信號加上符號讓進程在后臺運行。要停止服務先查進程號再殺掉ps -ef | grep fitness-server kill -9 pid繼承標題里提到的“Tomcat部署前后端分離項目”這里多說一句。如果是用SpringBoot內(nèi)嵌Tomcat打成jar直接運行就行壓根不用單獨裝Tomcat。如果你自己用SpringBoot打的是war包就需要裝一個外置Tomcat把war包丟到webapps目錄下啟動Tomcat后項目自動解壓部署。但既然用SpringBoot了沒必要退回傳統(tǒng)做法內(nèi)置Tomcat的jar包部署方式更簡單也更好維護。4.4 服務器端運行環(huán)境的快速搭建在Linux服務器上搭建整個運行環(huán)境核心要做這么幾件事# 安裝JDK 8以通用方式為例 yum install java-1.8.0-openjdk # 檢查安裝 java -version # 安裝Nginx yum install nginx systemctl start nginx # 安裝MySQL yum install mysql-server systemctl start mysqld # 設置MySQL開機自啟 systemctl enable mysqld # 導入項目數(shù)據(jù)庫 mysql -u root -p fitness.sqlJDK、Nginx、MySQL都裝好并啟動后按照前面說的方法啟動后端jar再把前端dist目錄放到Nginx的站點目錄整個系統(tǒng)就通了。驗證方式很簡單瀏覽器訪問服務器IP地址看到登錄頁面說明前端通了輸入賬號密碼能登錄說明前后端聯(lián)調(diào)沒問題。有一個經(jīng)常被忽視的點服務器的防火墻端口。如果前端頁面能打開但接口請求不通十有八九是8081端口沒開或者說Nginx轉(zhuǎn)發(fā)沒配好。檢查端口監(jiān)聽情況用命令netstat -tlnp | grep 8081如果是8080和8081這類非80端口還需確認安全組規(guī)則里放行了對應端口。4.5 演示環(huán)境的完整驗證清單項目部署完成后不能只看頁面能打開就算交付。我會按業(yè)務主流程完整走一遍確認每個模塊都在真實環(huán)境跑通。驗證清單大概是這樣的注冊一個新會員看看登錄后角色是否正確管理員創(chuàng)建課程、添加教練排課會員瀏覽課程列表預約一門課程教練端查看預約名單和排課表管理員查看預約統(tǒng)計和營收訂單會員取消預約后名額是否正常釋放所有頁面刷新后不出現(xiàn)404退出登錄后訪問受限頁面自動跳登錄頁每個環(huán)節(jié)都走一遍發(fā)現(xiàn)問題就修掉確認全通后才能把這個項目交付出去。很多人項目做完沒驗證就直接提交了答辯現(xiàn)場演示時突然崩了那場面確實是災難。注意部署到服務器和本地環(huán)境是有差異的。本地跑通的項目到服務器上很可能因為目錄路徑、數(shù)據(jù)庫名、端口占用等原因出問題務必按上面的清單在服務器環(huán)境完整驗證一遍。不要想當然認為“本地通了服務器肯定也通”。5. 常見問題與排查技巧實錄5.1 后端啟動失敗的幾個高頻坑啟動后端口被占用是出現(xiàn)頻率最高的問題。有時候是上次的進程沒殺掉有時候是另一個項目占用了同一端口。排查辦法lsof -i :8081找到占用端口的進程號殺完之后再重新啟動。如果8081端口被系統(tǒng)進程占用了最簡單的辦法是換一個端口在application.yml里改server.port同時把Nginx的代理地址同步改掉。數(shù)據(jù)庫連接失敗也比較常見SpringBoot啟動時報錯Communications link failure。絕大多數(shù)原因是MySQL沒啟動、密碼錯誤、或者連接串寫錯。逐個排查# 確認MySQL在運行 systemctl status mysqld # 確認能登錄MySQL mysql -u root -p # 確認連接串里的端口號 mysql -h localhost -P 3306 -u root -pMySQL 8.0啟動出錯還要檢查連接串里有沒有加useSSLfalse。默認會啟用SSL連接而本地MySQL實例沒有正確配置SSL證書時就會報錯。連接串這樣寫保證沒問題url: jdbc:mysql://localhost:3306/fitness?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai5.2 MyBatis相關報錯與排查“Invalid bound statement (not found)”是我在后端項目里遇到頻率最高的報錯。這個報錯的意思是Mapper接口的方法和XML里對應的id對不上或者XML文件根本沒被加載進來。排查順序如下確認Mapper接口方法名和XML的id完全一致包括大小寫確認XML文件被Maven打進了jar包檢查target目錄下有沒有對應的XML文件確認application.yml里的mapper-locations路徑配置正確“TooManyResultsException”也偶爾碰到意思是查詢結果有多條記錄但方法返回值寫的單對象。這個錯誤一般是SQL寫的條件不準查出了多條記錄排查SQL條件和數(shù)據(jù)或者改方法返回值為List。分頁時的坑也要說一下。如果用了PageHelper分頁插件注意查詢結果的類型是PageInfo要用new PageInfo(list)拿到總條數(shù)直接list.getTotal()會提示找不到getTotal方法。另外PageHelper的分頁參數(shù)只在緊跟著的下一條SQL生效想分頁哪個查詢就要在它前面緊貼著設置分頁中間不能夾雜其他SQL。5.3 前端常見報錯與解決思路前端代碼運行報錯最多的地方首推跨域。報錯信息通常長這樣Access to XMLHttpRequest at http://localhost:8081/... from origin http://localhost:3000 has been blocked by CORS policy。出現(xiàn)這個錯誤第一個要確認的是你有沒有走代理。如果你在代碼里把baseURL寫死了http://localhost:8081那請求根本沒有走vite代理而是瀏覽器直接跨域調(diào)用代理配置就白寫了。正確做法是baseURL寫/api由代理轉(zhuǎn)發(fā)到后端。前端另一個常見問題是打包后頁面白屏控制臺報錯Failed to fetch dynamically imported module。這個一般是路由懶加載的文件路徑寫錯了或者構建產(chǎn)物沒上傳完整。先看瀏覽器Network面板里面哪個js文件404了再對著修正路徑或者重新構建一次再上傳。Vue 3 Element Plus還有一個經(jīng)典問題就是圖標點擊不顯示。Element Plus從1.x版本開始圖標庫單獨拆成了element-plus/icons-vue包你沒有安裝或者沒有全局注冊圖標就是空白的。在main.js里面注冊import * as ElementPlusIconsVue from element-plus/icons-vue for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) }5.4 登錄后跳回登錄頁的排查思路前后端分離項目里“點擊按鈕后莫名其妙跳回登錄頁”也是高頻問題。先判斷是不是所有請求都跳登錄頁還是個別接口跳。如果所有請求都跳大概率是token寫入不一致。比如后端要求請求頭參數(shù)叫token前端卻用Authorization去傳后端解析不到統(tǒng)一返回401路由守衛(wèi)就把頁面重定向到登錄頁了?;蛘遲oken過期也有同樣效果。如果是個別接口跳那就是后端某些接口的攔截配置有問題。比如你登錄接口動態(tài)更新用戶信息后沒把新token返回給前端用舊token訪問新接口時就過期了。或者某個接口路徑不小心被排除在攔截范圍外了導致該鑒權的接口沒有鑒權。排查這類問題最快的辦法是把瀏覽器Network面板打開看接口返回的狀態(tài)碼和響應體。是401還是403響應信息提示是“未登錄”還是“無權限”看準了再動手改不要瞎調(diào)代碼。5.5 部署環(huán)節(jié)設計一個快速自查表結合上述經(jīng)驗整理一張排查速查表按順序檢查能解決90%的部署問題?,F(xiàn)象可能原因排查命令/操作頁面打不開Nginx未啟動或配置錯誤systemctl status nginxnginx -t 檢查配置前端頁面能開但接口404反向代理路徑配置錯誤檢查location /api塊的proxy_pass配置接口請求跨域前端沒走代理直接請求后端檢查baseURL是否為/api瀏覽器Network看請求URL后端啟動報端口被占用端口被其他進程占用lsof -i 查看占用進程并處理后端啟動報數(shù)據(jù)庫連接失敗MySQL未啟動或密碼錯誤systemctl status mysqldmysql -u root -p 測試登錄登錄后接口401/跳登錄頁token傳參名稱不一致或過期檢查前端請求攔截器headers配置刷新頁面404前端路由history模式?jīng)]配try_filesNginx中l(wèi)ocation /增加try_files配置這張表你在部署時對照著排查能省下大量查資料的時間。我自己第一次部署前后端分離項目時因為Nginx沒配try_files所有頁面刷新都404查了半天才想到是這個問題。有了這張表后來再部署就順手多了。結尾這個健身俱樂部網(wǎng)站系統(tǒng)整套做下來覆蓋了前后端分離開發(fā)的全部核心環(huán)節(jié)業(yè)務建模、數(shù)據(jù)庫設計、RESTful API開發(fā)、JWT鑒權、Vue組件化開發(fā)、Nginx部署。如果你正在找畢業(yè)設計選題或者想豐富項目經(jīng)歷按這套思路把代碼寫透收獲會遠遠超過看一遍教程。個人經(jīng)驗中最深的體會是環(huán)境準備和部署環(huán)節(jié)看似不起眼但坑最多。寧可開工前多花半天把JDK、MySQL、Node、Nginx這些環(huán)境都弄利索也不要寫到一半再來查環(huán)境問題那樣非常打斷思路。另一個建議是保留一份部署自查文檔每次換機器部署都照著跑出了問題時排查效率會高很多。最后再分享一個實用的小技巧整個系統(tǒng)跑通之后建議用Postman把主要接口整理成一份接口集合導出成JSON存到項目倉庫里。后面不管是自己重構還是別人接手都能快速看懂接口定義不用費力去代碼里翻。項目交付的世界里“文檔完善”這件事的分數(shù)占比可能比你想象中高很多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
一区超碰一区| 青娱乐亚洲自拍| 国产精品极品美女视频| 一本久道久久综合狠狠爱一密臀精| 色婷婷丁香五月| 国产女人视频三四五区| 日本精品九九九| 婷婷五月天基地| 97视频在线播放| 神马久久久久久久久久| 中文字幕在线观看AV| 天天操天天干一区二区| 亚洲欧美国产va在线播放频| 国厂麻豆77q4| 麻豆2区1区天美| 午夜电影在线观看无码专区| 日韩性爱毛片操骚逼| 超碰97COm中文| 欧美综合在线91| 国产精品久久久久av| 久久性生大片免费观看性| 精品国产国产AV| www.色婷婷| 精品人妻av在线播放| 人人搞人人插人人操| 嗯嗯嗯不要不要免费视频| 免费一级特黄特色大片在线观看看| 精品少妇99| 夜夜狠狠躁日日躁色视频| 九热视频| 亚洲九九夜夜| 一区二区三区精品黑丝白丝酒店对鸡 | 欧美最大综合网| 日韩 成人 有码| 欧美色图亚洲色图成人在在线| 国产精品呦一区二区三区| 久久AV无码AV| 激情婷婷黑人91| 午夜精品久久久久| 超碰97资源大奶| 亚洲不卡av在线| 人妻加勒比东京热| 国产小u女在线观看| 操婢日韩| 免费观看国产不卡av| 久久久久久久97| 97色网| 在线综合 亚洲 欧美中文字幕| 亚洲精品自拍| 国产精品亚洲免费| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 超碰日韩美妻| 999九九九九国产动| 亚洲双插| 日韩在线国产字幕| 丁香五月天堂网| 九九精品美女高溯喷水| 国产乱码精品久久久久久 | 欧美黄片免费在线观看视频| 51一区二区三区| 少妇超碰在线| 精品国产久久乱码| 极品色综合| 国产一级高清免费观看| 日本欧美一区二区三区免费| 丁香婷婷久久| 欧美九九九| 精品人成视频在线观看| 91人妻尻屄视频| 五月婷色| 亚洲性综合| 嗯嗯不要视频| 在线人人人人人人精品超| 九九av| 久久综合女优| 久久国产精品m码| 国产高清成人免费视频| 在线无码操| 国产13区| 婷婷激情丁香| www.伪伪| 97精品国产97久久久久久免费| 东北女人的毛片| 97在线免费视频观看| 日本十八禁免费看污网站| 亚洲欧洲国产综合av| 欧美综合97www| 丰满欧美放荡少妇在线| 亚洲一区二区三区中文字幕| 丰满少妇人妻久久久久久| 另类成人首页一区| 免费的很黄很污的全部视频| 一区二区三区 丝袜 高跟 美腿| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲人综合19| 国产夜夜操| 大香蕉日亚洲日本亚大| 免费在线黄片视频| 久久久久久少妇| 欧美日韩国产另类综合| 男人的天堂在线2| 97日韩欧美亚洲| 日韩精品在线观看观看| 青青草亚洲一区| 97干在线视频| 99热色精品| 91无摭挡| 亚洲一本大道中文字幕无码在线| 久久成人网站| 国产成人+综合亚洲+天堂| 秋霞鲁丝午夜无码一区二区三| 毛片久久| 亚洲AO在线| 97香蕉网| 日本东京热大香蕉a片| 日语五十路和六十路亚洲国产精品| 伊人五月天| 国产三级中文字幕粉嫩| 激情综合五月天| 竹菊一区二区三区AV线| 99热最新网址| 色综合av综合久久| 久久鲁夜| 国产 亚洲 丝袜 制服| 欧美日韩人妻婷婷一区| 午夜福利精品| 老鸭窝成人| 成人97人人超碰人人| 婷婷尹人大香蕉免费| 狠狠躁伊人中文字幕| 围产精品一区二区三区视频播放| 久久原创中文| 婷婷五月天综合网| 一区二区三区美女超清| 亚洲Av噜噜一区二区三区妖精| 在线色导航| 91欧美综合在线| 国产三级日产三级韩国三级| 91狠狠狠| 刺激精品视频| 激情综合二| www欧美91| 国产suv精品一区二区四| 84YTCOM性无码| 欧美超碰96| 粉嫩不卡一区二区性爱| 熟女精品日韩一区二区三区| 亚洲黄色网址| 99re这里只有精品3| 色色香蕉| 免费看黄视频亚洲网站| 日产欧美电影一区二区三区| 十八禁一区二区无码观看| 欧美综合区| 亚洲中文字幕精品久久久久久直播| 欧美综合传媒| 欧美 亚洲 制服 精品| 亚洲中文字幕精品一区| 精久久久| 超碰人妻中文在线| 亚洲宅男天堂| 思思热国产在线视频| 精品国产乱码久久久久久日本公司| 五月天开心网| 女人 A一级| 天天肏天天干| 蜜臀久久精品久久久久视频| 久久久艹艹艹| 婷婷伊人网| 久久国产逼| 亚洲色图片区| 91碰碰| 蜜桃精品一区二区三区ww| 国产精品无码av| 夜夜精品视频| 婷婷人妻激情| 熟女高潮精品一区二区| 国产青青美女玩逼视频| 成 人 影视 一区 二区 三区 四区| 亚洲精品毛片在线观看| 欧美在线91| 日韩无码人妻中字久久三区四区| 激情四射婷婷六月天| 久久久久久性爱视频| 秋霞一级视频在线观看免费| 久操com| 精品视频在线观看| v91av| 99久久免费看精品国产一区| 一本久久精品中文字| AV色天香在线| 天天综合AV| 激情四射五月天| 可能人人看人人摸| 日韩激情啪啪啪| 人人做,人人操,人人摸| a'v在线资源| 精品九区| 国产一级高清免费观看| 高清在线不卡一区二区 视频| 蜜臀99久久精品久久久久| 青青操日韩| 蜜桃视频啊啊啊啊| 欧美色图人妻| av亚洲天堂资源网站| 亚州图片第一页| 国产精品嫩草久久久久| 亚洲激情综合| 亚洲二区精品在线观看| 色色毛片| 人人操人人操人人人操| 萌白酱自拍视频| 久久社区一区二区三区| 伊人网综合在线视频| 日本丝袜人妻内射| 一区三区啪啪| 五月天色五月| 殴美性色a级欧美| 日本人体九九九九九九| 国产蜜臀精品一区免费尤物| 97硬碰| 少妇国产不卡| 亚洲AV资源| 亚洲综合在线高清| 97操在线| 亚洲素人综合| 欧美性爱一区二区| 国产精品亚洲天堂网址| 久久久久久久国产视频| 女人的久久久| 丰满人妻一区| 麻豆成人影音在线| 高清无码久操视频| 亚洲日韩美国人妻| www.夜夜| 日本不卡二三区| 劲爆欧美人妖三区91| 国产99999久久精品| 色香综合天天影视综合 | 91综合色噜噜| 极品美女福利在线观看| 午夜精品久久久久久久99热影院| 日本不卡一区二区三区| 国产精品久久久久无码Av网曝门| 天天操天天干一区二区 | 丁香五月久久| 日本 免费 一区二区三区 久久香蕉 | a男人的天堂| 亚洲s色图| 搡老女人老91二区| 日韩不卡毛片Av免费高清| 亚洲色婷婷| 先锋音影AV| 亚洲美女精品九九视频| 啪啪视频亚洲第一| 欧美乱色| 日本欧美不卡| 日本免费专区| 麻豆黄四叶草网站| 99re黄| 99久久com免费视频′| 伊人97色天使| 老司机香蕉久久久久| www.99色| 日韩精品.久久精品.AV女优.天美传媒| 91性| 欧美性生活男人的天堂| www老逼91| 国产熟女自拍| 95自拍视频在线观看| 91狠| 亚州综合色| 激情啪啪拍91| 91强在线播放| 色哟哟综合| 婷婷五月天成人网| 九九九九九九九九九国产精品| 91影库| 97资源制服丝袜| 亚欧美色图| 亚洲天堂一区二区久久| 亚洲熟妇熟在线电影视频| 九九九九精品视频| 91久久久久久久久久久| 91久久久久久久久18| av日韩在线观看电影| 人妻 制服 日韩 中文 在线| 中英熟女操女| 欧美日韩夜夜| 久久精品国产Aⅴ| 人妻激情偷乱视频一区二区三区 | 中文字幕av亚洲精品| 久操大香蕉| 清纯唯美第一页| 激情啪啪拍91| 亚洲情色 自拍| 无码自拍SM| 97欧美色| 操久久久久久| 精品视频一二三中文| 91N欧美| 好吊色综合| 色噜噜狠狠色综无码久久合欧美| 丝袜 中出 制服 人妻 美腿 中文字幕| 夜夜草网站| 国产美女高潮视频| 97二区四区| 亚洲一区日韩精品中文字幕| 夜夜狼人妻| 欧美亚洲自拍另类人妻| 青春草A| 亚洲精品尤物yw在线影院| 精品一久久久| 亚洲欧洲精品视频发布| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚洲欧美在线观看无码| 久久九操在线观看| 色99视频| 日韩欧美性吧婷婷乱伦大香蕉| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 亚洲欧美综合网站| 五月丁香影院| 中文字幕一区二区三区字幕| 日韩一级二级三级免费看完整版国语版 | 亚洲成人网站在线观看| 久久午夜色播影院免费高清| 精品中文一区二区| 乱精品一区字幕二区| 偷拍 欧美 日韩| 欧美超碰人妻97| 日韩在线观看中文字幕视频| 黑人免费福利视频| 伊人久日| 蜜桃不卡一区二区| 99色视频| 日韩性爱免费视频在线网站| 2019天天干| ai欧美亚洲小说| 天天色粽合合合合合合合| 日本操逼视频不卡直接放| 亚洲日韩久久精品一区| 天天综合网国产| 久久久久免费看少妇A片特黄| 色综九九九一区| 嗯嗯啊啊啊好舒服| 婷婷99狠狠| 日韩人妻一区二区| 国产精品熟女一区二区三区| 狠狠爱AV| 亚州久久9| 大香樵伊人网| 凸凹视频在线观看| 亚州一区二区成人片免费| 精品玖九九久| 久久久久久久久国产| 国产有码一区| 91精品综合久久久久久五月丁香| 久久av一级av少妇av高潮| 97碰久久| 亚洲天天自拍| 国产超碰97| 日本男人插女人的逼黄色| 色av中文字| 久99视频| 久久婷婷色| 亚洲第一狼人丝袜美女另类| 日小BB小视频| av网站免费线看| 九九九九九九视频免费| 欧美激情视频一区二区| 综合亚州欧美| 国产欧美另类久久久精品课程| 97免费视频在线观看视频| 97超碰天天爱天天爱| 蜜臀久久99精品久久久久久久久| 99热这里只有精品9| 丝袜美腿制服人妻二区中文字幕| 国产一区二区三区视频在线看| 激情小说在线视频| 欧洲综合色图| 黄骗免费网站| 色色色综合网| 人妻天堂综合网| 色玖玖| www.久久| 欧美1727免费观看视频| 国内91熟女人妻丝袜天天精品视频在线| 再深点灬舒服灬太大了好硬好爽| 国产视频一区二区免费| 激情综合五月| 中文字幕一区二区三区人妻少妇在线| 麻豆天美久久91| 67194无码不卡| 欧美久久婷婷| 亚洲91综合| 97超碰影音| 1024精品在线| 五月天婷婷在线看| 中文字幕亚洲永久精品| 3p国产欧美99热| 99精品久久| 亚洲欧洲小说图片视频| 中文乱码99| 欧美后入视频| 桑老女人九区| 97啪啪| 亚洲h片在线免费观看| 强奸乱伦AV网站| 午夜福利视频在线一区| 丁香六月婷婷久久综合| 伊人久久国产免费观看视频| 人妻无码久久一区二区三区免费| 久久久久久人| av三级电影在线播放| 国产一区二区成人av在线播放| 久久久久亚洲av综合波多野制衣| 日韩女模中文造逼| 综合激情97 | 色色网91| 国产成人网站在线观看| 国产人妻一区二区三区欧美毛片| 久9久9久9久9久9久9| 熟女人妻一区二区三区免费看 | 99热| 丰满丝袜少妇AV| 青青久久艹| 天堂俺去俺来也www久久婷婷| 国产视频不卡在线观看| A V视频日本| 成人午夜视频免费播放| 欧美黄片欧美黄片xxx| 曰韩精品九九无码| 欧美青青草视频| 激情文学88| 亚欧Av| 九九九综合精品| 日韩在线观看AV| 强奸乱伦 亚洲一区| 亚洲AV成人在线| 美女久久久久久久| 亚洲一区二区av| 欧美性爱91| 97精品国产97久久久久久| 蜜臀AV成人精品蜜臀| 黄色视频特级毛片| 97超碰久久色| 日韩精品字幕| 超91综合网| 国产精品午夜福利| 国产超碰人人爽人人做| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 99热色精品| 人人操人人精品影片| 欧美亚洲一级在线观看| 亚洲官网在线| 肏逼视频日本| 久久av色| 日韩欧美大力操| 歐美一級亂黃99在綫精品| 久久久久久久久久久久97 | 亚洲熟妇白浆无码AV| 五月天久久综合网| 91九色丨国产丨爆乳| 亚洲男人天堂av| 性爱综合网| 午夜九九九九九九| 吻戏激情性巴克| 一区二区三区一亚洲中文字幕、综合区灬 | 久久久久久久国产视频| SS久久| 98人妻精品一区二区色欲| 婷婷丁香五月综合| 日本不卡在线二区三区| 亚洲少妇色| 欧美性暴力猛交| 欧美男人一区| 91狠狠综合| 人妻在线中出视频| 亚洲国产精品无码AV久久久| 国产精品 午夜福利| 亚洲成人精品在线一区| 欧美白嫩在线放| 亚洲国产奇米影视久久| 岛国不卡超碰护士AV在线播放| 欧美经典一区二区三区| 天天干夜夜| 婷婷亚洲天堂| 老熟女乱伦片| 欧美一区二区三区黄色影视| 十八禁啪啦拍视频无遮挡| 九七超碰人人乐| 99热| 操逼日批| 中文字幕熟女人妻丝袜丝| 一区在线观看中文字幕| 丝袜亚洲综合| 偷拍2020| 99热色这里只有精品| 欧洲黄色网| 高清不卡 中文 人妻| 色婷视频| 岛国激情视频在线观看| 成年在线视频日本亚洲在线视频区精品江靖宇公司| 五月天婷婷综合网| 男人天堂黄片| 亚洲欧美另类图片| 久久亚洲色图中文字幕| 国产玖玖| 亚洲日韩美国人妻| 欧美99999| 91男人天堂网| 偷窥自拍亚洲色图| 97国产高清视频在线观看| 美女久久久久久久久久久| 美女性91| 色www精品视频在线观看| 激情五月婷| 天天狠操| 国内伊人久久久久久网站视频| 亚洲国内精品成人不卡| 久久婷婷国产一区二区色| 老司机射| 欧美性爱18观看| 亚洲性高潮| 91N综合在线| 麻豆精品久久久久久久| 国产真实野战在线视频| 亚洲色图尤物视频| 久久久久国色αv免费观看| 黑人与人妻| 天天综合在线4| 天天干天天狼在线视频| 秋霞成人做爱| 精品无码一区二区三区| 欧美色91| 久久中文字幕女同性恋一区| 亚洲一本色码中文字幕| 中文字幕91综合| 丁香五月综合| 日韩性爱免费视频在线网站| 老熟女乱伦片| 久久六六| 亚洲欧美综合| 亚洲综合第一页| 精品国产乱码久久久影院| 夜精品久无码| 91网站视频在线观看| 精品免费1| 国产欧美伊人| 91人妻超碰| caorenqi shipin| 97福利视频| 日本3级一区二区免费| 欧美大香蕉专区网| 人人操人人叉人人插人人| 久久久精品91八戒| 无码丰满熟妇一区二区浪潮AV| 高清国产精品福利网站| 九九综合九九综合| 欧美激情激情xxxx欧美专区| 97色碰| 人妻少妇久久中文字幕一区二区 麻豆| 欧美色综合网| 天天伊人| 午夜男女爽爽大片免费观看| 三级日本一区二区三区| 亚洲高清无毛一区二区| 三级激情网站| 亚洲最大的综合性av| 91天堂色男人的天堂| 亚洲一区二区三区AV无码| 久久久麻豆精品| 色五月激情综合网| 欧美|91色综合| 99久久无色码| 91麻豆一二三区| 人人摸人人舔一区二区| 亚洲男人天堂手机版| 中文字幕激情小说| 日本成人在线不卡一区二区三区| 超碰日韩人妻| 亚洲情色中文字幕一区| 国产精选三级在线观看| 丁香激情网| 欧美日韩免费专区在线| 丝袜av一区二区三区| 欧美日韩中国x| 国产精品久久久久久久久久久久久久| 欧美国产精品久久九九| 国产精品黄色三级av| 美女AV一区二区| 国内一区二区三区| 亚洲综合欧美| 日韩欧美一级特黄大片| 国产欧美伊人| 成人在线永久| 日本韩国五十路六十路七十路老熟女作爱视频网站| 91视频综合| 久久久久久国产无码精品| 婷婷五月天AV| 亚洲精品国产av天美传媒| 天天干夜夜鈤| 日本免费人成视频播放120秒| 亚洲色综合| 欧美 综合| 亚州,欧美在线| 99e久久国产精品| 丁香婷婷久久| 岛国不卡超碰护士AV在线播放| 国产精品久久泡妞网站| 国产女人与拘做受视频免费| 欧美精品另类人妖xxxx| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 日本韩高清无砖码22o| 国产精品久久久无码AV网站| 久久精品视频久久久| 欧亚日本情色| 熟女五十路一区二区三| 粉嫩国产精品久久久| 天天久久久久久| 中文字幕精品日韩中文字幕| 99999精品成人| 日本欧美不卡| 五月天丁香网| 夜夜嗨一区二区三区三州加勒比 | 色综合潮| 日韩少妇无码| 伊人色综合网| 亚洲一区二区av| 亚洲天堂7777| 国产第二页| 午夜乱轮操逼视频免费看| 神马久久久久眼| 欧美精品黑人猛交高潮| 99蜜桃臀亚洲成人在线观看| 中文久久久| 2023天天操夜夜操| 91 丝袜在线| 久久男人天堂| 国产精品一区人妻精品阁在线| 蜜臀网址在线| 久久艹逼视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 婷婷久久五月| 丝袜美腿操av| 五月综合视频| 日韩小电影| 噜噜在线| 亚洲色图91| 国产精品经典一卡久久久 | 成人网站 免费观看| 人妻熟女一区二区| 亚欧高清在线| 日韩精品亚洲一二三| 日韩婷婷| 久久久久99999| 人妻碰碰碰碰碰碰| 日日操免费视频| 丝袜美腿校园春色| 91爆操视频| 日本道人妻久久久在线不卡色视频| 国产精品久久久久久久久AV大片 | 91在线无码精品秘 软件| 涩亚洲欧洲| 丁香五月激情婷婷| 农村女一级毛卡片| 丝袜无码a片| 在线啊啊啊啊| 国产精品一区av在线| 加勒比伊人影院| 99re久久| 美国日韩黄片| 伊人96在线| 亚洲天堂区| 亚洲另类欧美精品| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 性感美女91影视| 野狼激情网| 欧美1区二区三区公司| 中文字幕免费看| 91亚州日韩高清| ji熟女.com| 九九九九九九综合| 欧美天天谢综合网| 日本精品第一视频在'| 欧美日韩97| 神马久久啊啊| 欧美|91色综合| 久久五月天婷婷丁香中文字幕| 中日韩久久久免费看| 蜜臀99999| 激情四射婷婷四五月天| 国产精品熟女九色九色蜜臀| 国产精品伦理| 欧美一二在线| 天天做天天爱| 精品亚洲国产成人精品| 夜色91| 亚洲综合骚逼| 欧美色偷拍| 日美免费黄片| 婷婷av在线中文字幕| 快播久久人人aV| 97在线欧洲| 国产毛片精品一区二区色欲黄A片| 亚洲啪啪视频免费| 欧美性夜| 欧美日日人人天天| 97精品97| 蜜臀在线免费观看在线免费观看| 秋霞一级视频在线观看免费| 亚洲日本激情| 又大又大又大又粗爽高潮观看| 色偷偷人人玩人人舔人人操人人摸人人爽| 亚洲18禁| 91美女丝袜诱惑视频| 久久亚洲AV成人精品无码| 99久久精品国产系列| 综合亚洲网| 四虎在线免费视频| 欧美猛交黑寡妇中文字幕| 97精品国产97久久久久久免费| 天天干人妇| 久久五月天婷婷丁香中文字幕| 激情小说亚洲| 92一区二区| 男人的天堂1024| 欧美图片色五月天| 夜夜操夜夜高潮夜夜爽国产精品区| 中文字幕少妇色| 天天综合AV| 中亚av| 天天综合亚在线| 嗯啊不要啊在线 | 厕所偷拍在线| 最新一二三区视频| 久久秀这里有精品| 91人人爽人人爽| 天天综合AV| 亚洲。日韩。欧美| 久极品在线观看| 97久精品| 中文久久一区| 啊啊啊不要啊啊受不了了视频在线 | 97超碰逼| 亚州中文字幕超碰97| 丰满精品人妻少妇久久字幕| 亚洲第91页| 色哟哟av网址| 欧美另类天堂| 91 丝袜在线播放| 91色拍| 亚洲国产精品V?在线播放| 国产精品老熟女一区二区| www.狠狠| 一区=区三区视频| 超碰97网址| 素人无码中文字幕| 国产AV天美传媒一区二区三区 | 国产亚洲精品第一最新| www.人人cao| 久久午夜伦| 青苹果影院男人的天堂| 97超碰免费人人性爱| 男人天堂久久精品不卡| 久久久偷拍| 手机午夜电影神马久久| 黄片aaaaa一区| 香蕉综合网| 熟女在线视频| 九九九九九九免费视频| 亚洲欧美黄| 黄色片一区二区三区四区五区| 日本色色色视频| 性吧在线视频| 亚洲揄拍网| 亚洲双插| 无码操逼视频一下| 在线观看日韩av不卡| 色综合91| 91处女在线视频| 97干色| 亚洲最新中文字幕免费| 色老汉玖玖爱| 97热视频在线观看| 性综合网| 欧美精品1区2区3区| 91原创在线观看| 精品乱码在线观看| 欧美人体性爱互联网第一页婷婷日本| 国产毛片久久久久久久| 一区二区激情国产熟女| 欧美亚洲激情一二三| 东京热双插| 国产亲戚伦亲在线| 久偷拍| 国产精品96久久久久久| 久久久久久国产手机AV| 91女网站| 玖玖爱视频网站| 亚洲第一狼人丝袜美女另类| 看看小穴| 久久这里只精品| 天天草夜夜草高潮片| 97超碰69| 国产精品久久久亚洲第一牛牛_在线观看 | 一级乱伦网站| 丁香色婷婷| 少妇丝袜在线观看AV| 亚洲一区日韩精品中文字幕| 91狠狠综合久久| 欧美91久久久久| 欧美成人A√在线一区二区| 免费视频无码| 97精品一区| 亚洲欧洲日韩国产自在线| 欧美久久毛片基地| 中文字幕蜜乳av| 久久极品伊人| 亚洲欧美碰碰| www.99热| 日韩成人小视频| 网页导航五月天免费一二三区| 天天天天天天天天综合| 另类图片欧美激情综合| 熟妇熟女亚洲天堂网| 成人性交午夜免费片| 日韩另类| 综合网少妇| 立川理惠无码一区二区| 国内一区二区三区| 日韩av在线免费网站| 欧美日韩亚洲电影| 偷拍自拍在线视频观看| 99re热| 熟女人妇一区二区三区| 激情文学 亚洲图片| 91精品国产日韩欧美综合| 91网站18在线| 日韩激情小说一区二区| 99热8| 蜜桃无码AV一区二区| 少妇精品久久久八区九区| 日本欧美亚洲高清在线看| 亚洲欧洲激情| 欧美色婷婷| 亚洲91色| 麻豆精品A片免费观看| www.yeyecao| 五毛骚逼极品美女怕怕| 亚洲中文日韩精品| 天天肏夜夜肏| 欧美在线|亚洲| a在线视频免费观看| 激情小说激情视频| 九色 人妻 大香蕉| 无码直播久久久| 日韩图区| 婷婷综合五月| 国产无码精品成人| 98超碰日本| 五月天婷婷激情| 欧美Ⅴ性爱| 日韩综合97P| 大香蕉手机视频| 天天日天天操天天射河南省| 伊人一区二区三区| 蜜臀操逼黄色视频操的好爽| 伊人麻豆传媒| 2019AV天堂| 去干网最新版| 思思久热在线精品66| 免费成人在线熟妇网| 中文字幕在线免费观看视频| 起碰97| 亚洲天天影视色综合| 婷婷六月色| 大学生口爆吞精| 精品视频一区二区| 欧美亚洲丝袜美女电影| 97摸视频| CCYY草草影院地址入口| 国产日产欧产美韩系列麻豆免费| 特污免视频| 国产欧美岛国精品一区| 97精| 热久久无毒不卡| 日本三级人妻a人妻一在线| 五十路三级片| 国产一区二区二区按摩精品啪视频| 色哟哟1区2区| 96AV精品| 日韩乱插| 国产精品人妻熟女aⅴ| 射综合网| 国产乱不卡| 欧美一二在线| 五月天色图影视| 搡老熟女老女人老熟妇免费视频| 亚洲国产丝袜熟女av| 欧美肥臀在线| 成人一区二区三区四区| 久久一二区四| 色五月综合网| 亚洲乱码尤物193YW| 亚洲第一免费视频| 无遮挡男女激烈动态图| 国产成人精品网站| 视频在线观看青青99国产| 人妻 制服 日韩 中文 在线| www.97在线| 五月天开心网| 久久九色| 亚洲av无码成人精品国产| 熟女乱伦A| 国产最火爆久久国产网站网站| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 国产精品不卡一区二区三区| 精品乱子一区二区三区99| 日韩人妻操B| 丁香五月激情网| 色五月婷婷在线| 91热爆在线| 欧美做爰无码A片视频| 风流老熟女一区二区三区l| 俄罗斯一区二区视频在线观看| 精品免费视频国产一区| 老女人综合网| 夜夜骑夜夜操| AAAA级日本片免费视频| 电家庭影院午夜69久久夜色精品国产69乱| 亚洲骚逼少妇| 加勒比中文av| 九九热九九| 女人天堂av在线播放| 激情五月天中文字幕色| 亚洲国产精品无码AV久久| 男人天堂欧美| 国产 日韩 欧美一区| 老熟妇乱轮| 久久午夜鲁丝片| 久久久久久久久久久免费精品| 人人干黄色| www.91人妻.com| 亚洲精品天堂久久A∨51成人漫| 三级色综合| a v网站在线播放| 午夜国产成人福利视频| 亚洲一区日韩| 伊人综合色网| 婷婷色网| 欧美日韩中国x| 九九热只有精品| 大香蕉淫人网| 翔田千里爆乳巨臀无码| 翔田千里一区二区三区奶水| 思思热国产在线视频| 欧美日韩国产色图在线| 日本天天操| 亚洲日本男人天堂网| 性色av一区二区| 另类欧美| 欧美亚洲综合高清在线| 国产精品原创巨作?v网站| 无码乱人伦中文视频| 久青草影院| 99热导航| 97精品一区| 尤物网站91| 国产 亚洲 丝袜 制服| 97干在线| 91久久18禁| 天天做日日做天天欢。| 久久久中文| 91久久久视| 久久精品操| 欧美gv在线观看| 欧美久久伊人| 精品人妻一区二区三区-国产精品| 9999九九九久久久| 啊啊啊啊啊啊啊啊在线观看| 国产成人99久久亚洲综合| av天堂5| 大香蕉综合| 日比av无码| 成年人三级黄色片视频| 天天日日夜夜| 嗯,啊。舔我逼| 亚洲精品久久久久毛片A片拉屎| 亚洲 欧美 偷拍 唯美| 五月天婷婷综合网| 中文字幕人乱码中文字的预防方法 | 综合网97| 色哟哟 日韩精品| 激情五月天丁香社区| 神马久久久久久久久久| 男人的天堂VA| 大香网站| 91美乳| 91欧美亚洲| 国产在线精品偷| 亚州高清色综合| 水多多映视AV| 操操碰| 99热大香蕉伊在线| 日韩免费高清大片在线| 熟妇熟女视频一区二区三区| 91美女国产在线| 激情五月天插| 国产大片精久久久久久| 青草一区二区| 亚洲欧美激情在线视频| 91nbbbbbb| 亚洲春色欧美激情自拍| 欧美人妻精品| 先锋女优在线观看视频| 日本在线视频导航| 射丝袜大香蕉| 素人一区二区三区日韩| 欧美se亚洲| 久久久久久网址| 搡老女人老妇女老妇老熟女怎么读| 久久在肏| 五月天色色色| 中文三一区| 99热9| 午夜啊啊| 色色五月天婷婷| 色悠悠伊人网五月天| 一级免费啪啪片| 久久99久久99精品天美传媒棢·纸:. | 十八禁的黄污污免费网站| 欧美日韩大陆黑人少妇99| 日韩熟女无码| 国产精品久久久蜜臀| 美日韩男女操屄视频| 亚洲官网在线| 日韩黄色片子| 妇人噜噜| 天堂无码精品国产久| daxiangjiao你懂的| 思思在线免费视频| 97综合久第一页| 日本熟女中文| 久久久久99999| 清纯唯美激情四射| 92性色国产午夜福利在线661| 九九英色视频| 久久91视频| 精品制服美女中文一区二区三区| 性爱乱伦网址| 中韩中文字幕在线观看| 欧美亚洲日韩人妻在线观看| 97免费在线视频| 国产精品网站www| 色伊人91| 欧美在线亚洲| 国产丝袜美女诱惑| 99久久久无码精品国产人| 久操视频免费观看| 色色操| 亚洲人妻中文在线视频| 国产性爱欧美性爱在线| 久久老子无码午夜伦不卡| 久草新在线| 国产青视频| 国产一区二区啪啪视频| 婷婷五月天激情四射| 日本 免费 一区二区三区 久久香蕉| 国产成年免费大片黄在线观看| 九九九九九九免费视频| 男人的天堂不卡一区二区| 国产精品国产亚洲区艳妇糸列| 1000午夜黄色| 色九月婷婷| 欧美综合国产精品久久丁香| 91国产丝袜美女| 国产欧美日韩在线观看麻豆传媒公司 | 无码日韩网站| 日韩中文字墓| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 亚洲欧美视| 日韩三级网址| 天天躁日日躁AAA片李宗瑞| 999综合网| 四虎在线免费视频| 国产高清1234区| 顶级丝袜熟女一区二区三区| 91久久久久久久久18| 伊人色综合欧美| 看看小穴| www.色操逼| 国产精品麻豆免费视频| 在线看污网站| 中文字幕超碰CAO| 97天天爽| 国内精品久久久久影院亚洲| 欧美区亚洲区偷拍区| 日韩精品午夜操呦呦不卡影院| 91成人国产综合久久精品蜜月| 色色色热| 天天干夜夜一操| a亚洲欧美色欲| 亚洲高清综合网| 人妻色情天天操| 超碰夫妻97| 九一综合精品视品av| 久久乐| 亚洲AV无码国产成人| 人人 操人人 操人人| 日韩亚洲欧美中文字幕| 日本三级精品| 91 国产丝袜在线播放-百度| 亚洲综合影片| 久久人妻97久久久久久久| 91丨九色丨熟女高潮| 欧美顶级黄色大片免费| 国产精品一区二区亚洲人成毛片| 国产9l 大屁股| 99re综合伊人| 日韩天天本| 啊啊好多水| 69综合网| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 加勒比人妻综合| 日本精品加勒比海一区| 伊人一区二区三区| 嗯……啊…嗯嗯…啊…好舒服| 亚洲精品男人的天堂| 中字乱伦AV| 狠狠激情综合狠狠操中文字幕| 日本免费专区| 人人看欧美性爱| 日韩欧美成人性爱在线| 性色av大全| 日本高清免费一本视频在线观看| 无码国产精品96久久久久孕妇| 96一区二区| 综合网欧美| 又大又大又大又粗爽高潮观看| 97chaopengongkai| 青草精品视频日本久久久久网站在线| 天天性射网| 欧美综合天堂| 亚洲丝袜综合| 嗯嗯啊啊好爽| 日本中文字幕不卡视频| 边做饭边操逼逼| 无码 黑人一区二区三区| 国产黄色小视频网站| 高清国产成人无码| 免费在线黄片视频| 果冻国产精品麻豆成人av| 男人的天堂一区三区| 激情综合网五月婷婷| 天天做天天爱| 东北女人av| 天天澡天天爽日日av| 老司机午夜精品福利视频一区二区| 亚洲欧美日韩中文久久自慰|