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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue前后端分離旅游平臺實(shí)戰(zhàn):從開發(fā)到部署上線

SpringBoot+Vue前后端分離旅游平臺實(shí)戰(zhàn):從開發(fā)到部署上線 花兩周時間把一個前后端分離的旅游平臺從零跑到部署上線是什么體驗(yàn)說實(shí)話這和網(wǎng)上那些只教你某個局部功能的教程完全不同——你面對的是數(shù)據(jù)庫建模、接口設(shè)計(jì)、Vue頁面開發(fā)、前后端聯(lián)調(diào)、服務(wù)器部署一整條鏈路任何一個環(huán)節(jié)出問題整個項(xiàng)目就卡住。我做的這個桂林旅游景點(diǎn)導(dǎo)游平臺用的是SpringBootVueMyBatisMySQL這套經(jīng)典組合前后端完全分離源碼和部署流程都整理好了。如果你正在找畢業(yè)設(shè)計(jì)題目或者想通過一個完整項(xiàng)目把前后端分離開發(fā)整個流程徹底打通這篇可以當(dāng)你的參考路線圖里面包含了我實(shí)際踩過的坑和調(diào)通的細(xì)節(jié)不是那種只貼代碼不解釋的筆記。1. 為什么拿桂林旅游景點(diǎn)導(dǎo)游平臺做實(shí)戰(zhàn)項(xiàng)目——選題邏輯與需求拆解1.1 旅游類業(yè)務(wù)為什么適合練前后端分離做項(xiàng)目練手或畢業(yè)設(shè)計(jì)最怕兩件事一是業(yè)務(wù)太抽象邊界不清楚做著做著不知道該寫什么功能二是業(yè)務(wù)太復(fù)雜比如電商下單加庫存加支付物流一個人根本扛不住。旅游景點(diǎn)導(dǎo)游平臺恰好處在一個非常合適的區(qū)間。它的核心業(yè)務(wù)就是展示景點(diǎn)、規(guī)劃線路、下單預(yù)訂、用戶互動天然分成游客端和管理端兩塊。游客端需要的是景點(diǎn)瀏覽、搜索篩選、查看詳情、預(yù)訂門票、收藏和評論管理端需要的是維護(hù)景點(diǎn)數(shù)據(jù)、管理訂單、審核內(nèi)容。這種雙端結(jié)構(gòu)就是前后端分離開發(fā)最常見的業(yè)務(wù)形態(tài)前端界面偏展示型后端接口偏數(shù)據(jù)管理型兩邊各自的復(fù)雜度都不算高但加在一起能把整套開發(fā)流程完整覆蓋。從技術(shù)角度講它涵蓋的知識點(diǎn)非常典型列表查詢、條件檢索、分頁、詳情展示、表單提交、登錄狀態(tài)管理、文件上傳景點(diǎn)圖片、關(guān)聯(lián)表查詢、一對多數(shù)據(jù)組裝。這些技能幾乎是所有后端開發(fā)崗位的日常做完這個項(xiàng)目再去接觸電商、外賣、預(yù)約類系統(tǒng)你會發(fā)現(xiàn)業(yè)務(wù)變了但套路完全一樣基本可以平移。另外桂林景區(qū)的數(shù)據(jù)模型有天然的可擴(kuò)展性比如漓江、陽朔、龍脊梯田這些景點(diǎn)可以掛多個分類、多條線路、若干圖片這為設(shè)計(jì)多對多關(guān)系和復(fù)雜的查詢條件提供了真實(shí)場景不用為了演示而硬造需求。1.2 功能模塊與頁面流轉(zhuǎn)先畫清楚再寫代碼我動手之前先把功能邊界列了一張表避免開發(fā)中途加需求導(dǎo)致返工。這里分享我當(dāng)時整理的核心模塊清單游客端景點(diǎn)列表按分類篩選、關(guān)鍵詞搜索、景點(diǎn)詳情圖片輪播、介紹、評論、線路推薦一日游/兩日游、門票預(yù)訂下單、個人中心我的訂單、我的收藏管理端登錄校驗(yàn)、景點(diǎn)管理增刪改查圖片上傳、分類管理、線路管理、訂單管理查看和狀態(tài)更新、評論管理頁面流轉(zhuǎn)是這樣的用戶進(jìn)入首頁看到輪播圖和推薦景點(diǎn)點(diǎn)擊景點(diǎn)進(jìn)入詳情頁可以收藏、評論、選擇線路進(jìn)行預(yù)訂下單后進(jìn)入個人中心查看訂單狀態(tài)管理員通過獨(dú)立端口登錄進(jìn)入后臺操作維護(hù)數(shù)據(jù)前端把操作結(jié)果通過API同步到數(shù)據(jù)庫。整個流程走下來前后端能覆蓋到的交互模式基本都有了。1.3 技術(shù)選型的實(shí)際取舍沒有微服務(wù)也沒有盲目上全家桶技術(shù)選型上我堅(jiān)持一個原則能用簡單方案解決的問題不引入額外復(fù)雜度。后端用SpringBoot做基礎(chǔ)框架MyBatis做持久層MySQL存數(shù)據(jù)前端用Vue寫頁面配合Vue Router做路由、Axios做請求管理端和游客端放在同一個前端工程里用路由和權(quán)限去區(qū)分而不是拆成兩個獨(dú)立應(yīng)用。沒有引入微服務(wù)的原因很直接這個體量的業(yè)務(wù)單體應(yīng)用完全夠用拆微服務(wù)只會增加服務(wù)注冊、配置中心、網(wǎng)關(guān)這些和學(xué)習(xí)目標(biāo)無關(guān)的負(fù)擔(dān)。沒用MyBatis-Plus而用原生的MyBatis是我刻意的選擇——原生MyBatis能讓你理解Mapper接口、XML映射、動態(tài)SQL、結(jié)果映射這些底層機(jī)制一旦換成MyBatis-Plus這些細(xì)節(jié)會被封裝掉大半寫起來爽了但底層理解容易留下盲區(qū)。當(dāng)然項(xiàng)目后期我也嘗試過換MyBatis-Plus來做對比確實(shí)省事不少這個放到后面擴(kuò)展部分細(xì)說。如果你參考過若依框架會發(fā)現(xiàn)它的前后端分離版也是SpringBootVue但若依更像是一個快速開發(fā)腳手架帶了一整套代碼生成器和管理系統(tǒng)模板對于學(xué)習(xí)來說容易迷失在框架自帶的功能里自己從零搭一遍反而對每個環(huán)節(jié)的理解更扎實(shí)。2. 后端落地SpringBootMyBatisMySQL的數(shù)據(jù)模型與接口設(shè)計(jì)2.1 數(shù)據(jù)庫表設(shè)計(jì)九張表如何撐起整個業(yè)務(wù)后端開發(fā)的第一步永遠(yuǎn)是數(shù)據(jù)庫設(shè)計(jì)。表結(jié)構(gòu)沒想清楚后面寫接口會處處別扭。我最終設(shè)計(jì)了九張表這里把核心表的結(jié)構(gòu)和設(shè)計(jì)考慮講一下。表名用途關(guān)鍵字段設(shè)計(jì)說明t_user用戶信息id, username, password, nickname, phone, avatar, role, create_time角色字段區(qū)分普通用戶和管理員密碼存的是BCrypt加密后的密文不能明文存儲t_category景點(diǎn)分類id, name, sort, statusstatus控制分類是否在前端展示方便下架不刪除t_scenic景點(diǎn)信息id, category_id, name, summary, detail, cover_image, images, price, address, status, create_timeimages字段用逗號分隔存多張圖片簡單場景下比建子表更實(shí)用t_route旅游線路id, name, days, description, cover_image, price, statusdays表示游玩天數(shù)用于前端展示一日游/兩日游t_route_scenic線路景點(diǎn)關(guān)聯(lián)id, route_id, scenic_id, sort多對多關(guān)系表給線路里的景點(diǎn)排順序t_order訂單表id, order_no, user_id, scenic_id, route_id, quantity, total_price, status, create_time訂單號用時間戳加隨機(jī)數(shù)生成狀態(tài)字段用數(shù)字表示待支付/已支付/已完成/已取消t_comment評論表id, scenic_id, user_id, content, score, create_time冗余了nickname字段避免聯(lián)查用戶表這是常見的空間換時間優(yōu)化t_favorite收藏表id, user_id, scenic_id, create_time加唯一索引(user_id, scenic_id)防止重復(fù)收藏t_banner首頁輪播圖id, image, url, sort, status首頁運(yùn)營位后臺可維護(hù)這里說幾個設(shè)計(jì)要點(diǎn)。第一所有表都帶create_time字段而且由數(shù)據(jù)庫默認(rèn)值填充這樣插入數(shù)據(jù)時不用手動傳第二景點(diǎn)表的status字段很重要景點(diǎn)下架用的是狀態(tài)而不是物理刪除避免訂單、收藏等關(guān)聯(lián)數(shù)據(jù)失效第三線路景點(diǎn)關(guān)聯(lián)表里的sort字段很多人會省略但實(shí)際線路中先到哪個景點(diǎn)、后到哪個景點(diǎn)是需要排序的沒有這個字段后期補(bǔ)數(shù)據(jù)會非常痛苦。我當(dāng)時花了一天時間建模和調(diào)整實(shí)際開發(fā)中發(fā)現(xiàn)前期表設(shè)計(jì)多花的時間完全值得后面寫Mapper幾乎沒出現(xiàn)字段不夠用、要改表結(jié)構(gòu)的情況。2.2 MyBatis的Mapper層設(shè)計(jì)動態(tài)SQL才是效率關(guān)鍵MyBatis的配置我用了最標(biāo)準(zhǔn)的XML方式這也是面試?yán)锍1蛔穯柕膶懛?。SpringBoot中需要兩步在application.yml配置數(shù)據(jù)源和MyBatis掃描路徑然后在啟動類上加上MapperScan注解讓MyBatis掃描到Mapper接口。application.yml里的關(guān)鍵配置大概長這樣spring: datasource: url: jdbc:mysql://localhost:3306/guilin_travel?useUnicodetruecharacterEncodingutf-8useSSLfalseserverTimezoneAsia/Shanghai username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.guilin.travel.entity configuration: map-underscore-to-camel-case: true這里兩個比較容易踩的細(xì)節(jié)。第一個是數(shù)據(jù)庫連接串里的serverTimezone參數(shù)MySQL 8默認(rèn)時區(qū)不是中國時區(qū)不配會報(bào)時間相關(guān)的錯誤第二個是map-underscore-to-camel-case一定要開啟這樣數(shù)據(jù)庫的create_time才能自動映射到Java實(shí)體里的createTime不用手寫一堆ResultMap。景點(diǎn)列表查詢是典型的動態(tài)SQL場景用戶可能按分類過濾、按關(guān)鍵詞搜索、按價格排序、還要分頁。如果用MyBatis-Plus直接QueryWrapper搞定但原生MyBatis需要自己寫動態(tài)標(biāo)簽我實(shí)際寫出來的Mapper XML片段如下select idfindByCondition resultTypecom.guilin.travel.entity.Scenic SELECT * FROM t_scenic where if testcategoryId ! null AND category_id #{categoryId} /if if testkeyword ! null and keyword ! AND (name LIKE CONCAT(%, #{keyword}, %) OR summary LIKE CONCAT(%, #{keyword}, %)) /if if teststatus ! null AND status #{status} /if /where if testsort ! null and sort ! ORDER BY ${sort} /if /select這里where標(biāo)簽會自動處理第一個條件前面的AND問題這個細(xì)節(jié)是原生態(tài)MyBatis最常用的技巧。注意ORDER BY后面用的是${sort}而不是#{sort}因?yàn)榕判蜃侄问菙?shù)據(jù)庫列名不能參數(shù)化但這里有SQL注入風(fēng)險(xiǎn)我在前端傳參時做了白名單校驗(yàn)只允許傳price_asc、price_desc等固定值而不是直接把前端傳的字符串拼進(jìn)去。分頁我用的是PageHelper分頁插件引入依賴后在查詢前調(diào)用PageHelper.startPage(pageNum, pageSize)查詢后拿到PageInfo里面已經(jīng)封裝好了總記錄數(shù)、總頁數(shù)這些分頁數(shù)據(jù)。返回給前端的數(shù)據(jù)結(jié)構(gòu)我已經(jīng)把列表和總數(shù)都包好前端表格組件直接用total字段渲染分頁器即可。2.3 Controller統(tǒng)一返回結(jié)構(gòu)和全局異常處理少走半天彎路寫接口第二天我就發(fā)現(xiàn)一個問題如果不統(tǒng)一返回結(jié)構(gòu)每個接口返回的JSON格式都不一樣前端Axios攔截器根本沒辦法做通用處理。于是我定義了一個Result類作為所有接口的統(tǒng)一返回體。public class ResultT { private Integer code; private String message; private T data; public static T ResultT success(T data) { ResultT result new Result(); result.code 200; result.message 操作成功; result.data data; return result; } public static T ResultT error(String message) { ResultT result new Result(); result.code 500; result.message message; return result; } }與之配套的是一個RestControllerAdvice全局異常處理器把業(yè)務(wù)異常、參數(shù)校驗(yàn)異常、系統(tǒng)異常分別處理統(tǒng)一包裝成Result返回。這樣做的好處是前端只需要判斷code是不是200其余情況直接彈出message即可不會因?yàn)槟硞€接口的返回格式不一致導(dǎo)致前端解析崩潰。實(shí)際開發(fā)中我發(fā)現(xiàn)很多新手項(xiàng)目里Controller直接返回實(shí)體類或者M(jìn)ap表面上省了封裝代碼但一旦前端需要區(qū)分成功但數(shù)據(jù)為空和請求異常這兩種情況就會非常被動。再配合Valid注解做參數(shù)校驗(yàn)后端在入口處就攔截掉空參數(shù)、非法參數(shù)不用在每個Service里寫一堆if判斷。2.4 圖片上傳與存儲先本地后對象存儲景點(diǎn)圖片的上傳管理我第一版用的是最簡單的本地存儲方案后端接收MultipartFile文件重命名為時間戳加隨機(jī)數(shù)保存到服務(wù)器指定的upload目錄再把訪問路徑存到數(shù)據(jù)庫。SpringBoot里需要配置靜態(tài)資源映射讓上傳的圖片可以通過URL直接訪問Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/upload/**) .addResourceHandler(file: uploadPath /); }這樣前端只需要用/upload/xxx.jpg就能拿到圖片。這個方案在本地開發(fā)和單機(jī)部署完全夠用代碼量少理解也直觀。如果將來要上云可以把上傳邏輯替換為MinIO或OSS前端訪問路徑完全不用變因?yàn)楹蠖朔祷亟o前端的始終是一個URL字符串。3. Vue前端從零搭建路由、API封裝與頁面編碼3.1 前端工程化用Vite還是Vue CLI前端這部分我糾結(jié)了一下是用Vue CLI還是Vite??紤]到Vite在開發(fā)環(huán)境下的啟動速度明顯更快而且Vue官方已經(jīng)將Vite作為默認(rèn)推薦我直接用Vite初始化了一個Vue 3項(xiàng)目搭配Element Plus組件庫做后臺管理界面游客端頁面則用了手寫的樣式保持個性化。如果你更習(xí)慣Vue 2的寫法用Vue CLI腳手架也是一樣的思路核心技術(shù)點(diǎn)不沖突。安裝依賴和啟動開發(fā)服務(wù)器這步我在環(huán)境配置那篇筆記里踩過一次坑Vite需要Node.js 16以上版本版本太老會直接報(bào)錯。建議先用node -v確認(rèn)一下當(dāng)前版本再決定是否升級。3.2 路由設(shè)計(jì)游客端和管理端如何共存一個工程里同時容納游客端和管理端最核心的是路由規(guī)劃。游客端是公開訪問的管理端需要登錄后才有權(quán)限所以我拆了兩套路由一套是基礎(chǔ)路由包括首頁、景點(diǎn)列表、景點(diǎn)詳情、登錄頁另一套是管理端路由統(tǒng)一掛在/layout組件下用路由守衛(wèi)校驗(yàn)登錄狀態(tài)。核心路由表長這樣const routes [ { path: /, component: Home }, { path: /scenic, component: ScenicList }, { path: /scenic/:id, component: ScenicDetail }, { path: /login, component: Login }, { path: /admin, component: AdminLayout, meta: { requiresAuth: true }, children: [ { path: scenic, component: AdminScenic }, { path: order, component: AdminOrder }, { path: comment, component: AdminComment } ] } ]; router.beforeEach((to, from, next) { const token localStorage.getItem(token); if (to.meta.requiresAuth !token) { next(/login); } else { next(); } });這里的關(guān)鍵點(diǎn)是meta里的requiresAuth標(biāo)記。我一開始把權(quán)限判斷寫死在每個頁面的created里結(jié)果發(fā)現(xiàn)每個頁面都要粘貼一遍判斷代碼后來統(tǒng)一收斂到路由守衛(wèi)里代碼干凈很多。3.3 Axios封裝請求攔截器和響應(yīng)攔截器的分工幾乎所有前端請求都要做兩件事自動攜帶token、統(tǒng)一處理錯誤提示。我封裝了一個request.js核心邏輯如下const request axios.create({ baseURL: /api, timeout: 10000 }); request.interceptors.request.use(config { const token localStorage.getItem(token); if (token) { config.headers.Authorization Bearer token; } return config; }); request.interceptors.response.use( response { const result response.data; if (result.code 200) { return result.data; } if (result.code 401) { localStorage.removeItem(token); router.push(/login); return Promise.reject(new Error(登錄已過期)); } ElMessage.error(result.message); return Promise.reject(new Error(result.message)); }, error { ElMessage.error(網(wǎng)絡(luò)請求異常); return Promise.reject(error); } );baseURL用的是/api配合前端開發(fā)環(huán)境的代理配置把請求轉(zhuǎn)發(fā)到后端的localhost:8080。響應(yīng)攔截器先判斷Result.code只有200才把data返回給頁面其他情況直接彈出錯誤提示頁面里的業(yè)務(wù)代碼就不用再重復(fù)寫錯誤處理了。這種方式讓頁面的請求代碼從十幾行縮減到幾行而且審查得很清楚。3.4 核心頁面實(shí)現(xiàn)列表頁、詳情頁和下單流程景點(diǎn)列表頁是典型的查詢條件表格/卡片布局。頁面加載時調(diào)用getScenicList方法傳入分類篩選條件和搜索關(guān)鍵詞const getList async () { loading.value true; try { const result await getScenicList({ categoryId: categoryId.value || null, keyword: keyword.value, pageNum: pageNum.value, pageSize: 10 }); scenicList.value result.list; total.value result.total; } finally { loading.value false; } };景點(diǎn)詳情頁要展示的是基本信息圖片輪播評論列表收藏按鈕預(yù)訂入口。數(shù)據(jù)來源分別是景點(diǎn)詳情接口、評論接口和收藏接口。詳情接口一次返回景點(diǎn)基本信息評論和收藏分別在頁面掛載時并行請求用Promise.all控制并發(fā)請求結(jié)束狀態(tài)避免一個接口阻塞整個頁面渲染。下單流程我簡化成了訂單創(chuàng)建邏輯前端先拉取景點(diǎn)和線路信息用戶選擇游玩日期和數(shù)量點(diǎn)擊提交后調(diào)用createOrder接口后端生成訂單對象并寫入數(shù)據(jù)庫前端帶著返回的訂單編號跳轉(zhuǎn)到我的訂單頁面展示支付狀態(tài)占位。整個流程雖然簡化了但訂單表的狀態(tài)機(jī)設(shè)計(jì)保留了完整邏輯以后接支付網(wǎng)關(guān)可以平滑擴(kuò)展。3.5 后臺管理頁面表格加彈窗是標(biāo)配管理端頁面沒有做太多創(chuàng)新設(shè)計(jì)就是扎實(shí)的表格加彈窗表單左側(cè)導(dǎo)航固定右側(cè)內(nèi)容區(qū)用Element Plus的el-table展示數(shù)據(jù)頂部的工具欄放新增和條件搜索行內(nèi)放編輯和刪除按鈕。新增和編輯共用一個彈窗表單通過判斷row參數(shù)是否存在來區(qū)分模式。景點(diǎn)管理頁是管理端里最復(fù)雜的因?yàn)樯婕皥D片上傳。上傳邏輯是先調(diào)upload接口把圖片存到后端拿到返回的URL后再把這個URL作為表單字段提交。如果先提交表單再上傳圖片會出現(xiàn)圖片還沒傳完表單已經(jīng)提交的情況處理起來很別扭。調(diào)整順序之后整個流程穩(wěn)定多了。4. 聯(lián)調(diào)階段值得記錄的四個問題——CORS、JWT、日期格式與空值前后端分離開發(fā)必然要面對聯(lián)調(diào)這一階段我實(shí)際遇到的問題比開發(fā)階段多得多挑了四個典型記錄在這都是常規(guī)文檔不太會細(xì)講的內(nèi)容。4.1 跨域問題的完整排查鏈路開發(fā)模式下前端跑在5173端口后端跑在8080端口瀏覽器直接發(fā)請求必然觸發(fā)跨域。我在后端項(xiàng)目里加了一個CorsConfig的Bean用WebMvcConfigurer配置允許跨域指定允許的路徑、域名和方法。但如果你的前端請求帶Authorization頭還需要單獨(dú)考慮Header暴露否則前端Axios拿不到響應(yīng)頭里的狀態(tài)信息。我實(shí)際排查時發(fā)現(xiàn)了一個隱蔽問題后端雖然配置了CORS但Spring Security如果存在它的攔截器優(yōu)先級更高跨域配置可能被Security的過濾器提前攔截掉。好在我的項(xiàng)目沒有引入Spring Security用自定義攔截器做鑒權(quán)跨域配置直接生效。如果你的項(xiàng)目同時有Spring Security需要額外配置Security的CorsConfigurationSource。4.2 JWT登錄鑒權(quán)的實(shí)現(xiàn)細(xì)節(jié)和放行規(guī)則登錄態(tài)管理我選了JWT原因很簡單服務(wù)端不需要存session適合前后端分離的分布式場景。后端在用戶登錄時生成token返回給前端前端存儲到localStorage請求時通過Authorization頭攜帶后端寫一個攔截器統(tǒng)一校驗(yàn)。JWT的關(guān)鍵實(shí)現(xiàn)邏輯不算復(fù)雜用jjwt依賴生成tokensub放用戶IDexp設(shè)置過期時間為24小時。真正容易出問題的是攔截器里哪些路徑要放行。如果攔截器配置成所有接口都要驗(yàn)證那么登錄接口自身也被攔截了因?yàn)榈卿洉r根本沒有token。我的配置方式是登錄接口、景點(diǎn)列表接口、景點(diǎn)詳情接口這些公開接口放行管理端接口全部要求登錄個人中心和訂單相關(guān)接口必須登錄。用攔截器的時候注意放行規(guī)則應(yīng)該寫成白名單形式而不是黑名單——只明確列出不需要登錄的路徑其余全部攔截這樣更安全。4.3 日期格式和null值的隱形坑排查過兩個坑。第一個是前端傳2025-06-01給后端后端用LocalDateTime接收直接報(bào)格式錯誤。原因是Jackson默認(rèn)只認(rèn)識ISO格式需要全局配置日期格式我在application.yml里加了spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8第二個坑是數(shù)據(jù)庫的date字段傳到前端后顯示成2025-06-01T00:00:00.00000:00這樣的UTC格式前端要再轉(zhuǎn)換一次。后來我在實(shí)體類的日期字段上加了JsonFormat注解指定輸出格式前端直接拿到2025-06-01 00:00:00就省事了。null值的問題體現(xiàn)在分頁接口上當(dāng)列表為空時后端返回的list是null還是空數(shù)組直接影響前端v-for渲染。我統(tǒng)一處理為只要數(shù)據(jù)庫沒查到數(shù)據(jù)返回空數(shù)組而不是null前端不用寫一堆空值防御代碼。4.4 MyBatis動態(tài)SQL里if判斷等于0的問題這是我在寫篩選功能時真正踩過的坑。定義用戶的角色字段時我一開始判斷條件寫了if testrole ! null and role ! 結(jié)果前端傳role0管理員時條件不生效因?yàn)镸yBatis的OGNL表達(dá)式把數(shù)字0當(dāng)成了false空值處理。排查半天才定位到問題不是SQL邏輯而是MyBatis對整數(shù)類型的if判斷有個特殊規(guī)則數(shù)值為0時非空判斷不成立。解決方式有兩種一是改用String類型傳參傳0而不是0二是判斷條件寫全if testrole ! null and role ! 并在Service層把0轉(zhuǎn)換成字符串。我最后選擇在后端把篩選參數(shù)的類型統(tǒng)一調(diào)整避免這類隱蔽問題再次出現(xiàn)。5. 從開發(fā)機(jī)到云服務(wù)器完整部署流程與配置清單項(xiàng)目在本地跑通只是第一步部署到服務(wù)器才是完整閉環(huán)。我用的是一臺Linux云服務(wù)器配置是2核4G對這套系統(tǒng)來說完全夠用。5.1 服務(wù)器基礎(chǔ)環(huán)境準(zhǔn)備JDK、MySQL8、Nginx部署環(huán)境三件套JDK、MySQL、Nginx。我的服務(wù)器是CentOS系統(tǒng)JDK用tar包解壓安裝MySQL用官方rpm源安裝Nginx用yum直接裝。具體步驟不贅述但有幾個關(guān)鍵點(diǎn)必須提醒。MySQL裝完一定要執(zhí)行mysql_secure_installation做基礎(chǔ)安全配置否則root空密碼裸露在公網(wǎng)上很快會被掃描爆破。另外MySQL 8的密碼策略比5.7嚴(yán)格設(shè)置密碼時要滿足長度和復(fù)雜度要求否則會報(bào)錯。數(shù)據(jù)庫導(dǎo)入就是把本地導(dǎo)出的SQL文件用source命令執(zhí)行一遍注意在導(dǎo)入前先創(chuàng)建好數(shù)據(jù)庫并指定默認(rèn)字符集utf8mb4否則中文會亂碼。5.2 后端打包發(fā)布Maven打包與Systemd守護(hù)進(jìn)程后端工程是標(biāo)準(zhǔn)的Maven項(xiàng)目打包命令非常簡單mvn clean package -DskipTests打包后在target目錄生成一個jar包。上傳到服務(wù)器后我一開始用java -jar前臺啟動但關(guān)掉SSH窗口進(jìn)程就死了。后來寫了一個Systemd服務(wù)文件讓后端作為守護(hù)進(jìn)程運(yùn)行[Unit] DescriptionGuilin Travel Backend Afternetwork.target [Service] Userroot WorkingDirectory/opt/guilin ExecStart/usr/bin/java -Xms512m -Xmx512m -jar /opt/guilin/guilin-backend.jar SuccessExitStatus143 Restartalways RestartSec10 [Install] WantedBymulti-user.target配置好之后執(zhí)行systemctl enable設(shè)為開機(jī)自啟用systemctl start啟動用journalctl -u guilin-backend查看日志。啟動參數(shù)里Xms和Xmx設(shè)置一樣大避免了JVM動態(tài)擴(kuò)展內(nèi)存帶來的性能抖動2G內(nèi)存的服務(wù)器運(yùn)行很平穩(wěn)。5.3 前端構(gòu)建與Nginx反向代理配置前端構(gòu)建相對簡單npm run build會生成dist目錄里面是純靜態(tài)文件。把這個目錄上傳到服務(wù)器配置Nginx指向它同時把/api路徑反向代理到后端8080端口這是前后端分離項(xiàng)目部署最核心的一步。server { listen 80; server_name your_domain_or_ip; root /opt/guilin/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /upload/ { proxy_pass http://127.0.0.1:8080; } }location /里的try_files配置很關(guān)鍵它把前端路由的刷新請求都指向index.html否則在頁面里點(diǎn)路由刷新會出現(xiàn)404。如果不加這個Vue Router的history模式部署后刷新就白屏這是前后端分離部署最常見的坑之一。5.4 部署上線后必須檢查的性能隱患上線后我做了幾項(xiàng)檢查。第一是MySQL連接串里的useSSL參數(shù)部署環(huán)境如果MySQL配了SSL但連接串是useSSLfalse會一直報(bào)SSL連接錯誤排查方式是看后端日志里at com.mysql.cj.jdbc的報(bào)錯堆棧非常典型。第二是MySQL最大連接數(shù)默認(rèn)151如果前端并發(fā)不高還好但測試階段用壓測工具一跑就會把連接池打滿建議配置到300以上。第三是JVM的GC日志觀察Full GC頻率如果太高說明堆內(nèi)存設(shè)置不合理。我把這些檢查項(xiàng)整理成了一個部署檢查清單每次部署新項(xiàng)目都按這個順序過一遍防火墻端口是否放行、數(shù)據(jù)庫是否可遠(yuǎn)程訪問、后端進(jìn)程是否守護(hù)運(yùn)行、Nginx是否配置反向代理、靜態(tài)資源能否訪問、接口能否通過域名請求。6. 項(xiàng)目復(fù)盤這套系統(tǒng)還能怎么擴(kuò)展6.1 換用MyBatis-Plus到底能省多少事項(xiàng)目完成之后我把Mapper層整體換成了MyBatis-Plus做了一個對比實(shí)驗(yàn)。同樣的分頁查詢用MyBatis-Plus的Page對象加LambdaQueryWrapper代碼量確實(shí)減少了大概四成不再需要手寫XML里的動態(tài)SQL標(biāo)簽簡單查詢一句lambda表達(dá)式搞定。如果你追求開發(fā)效率MyBatis-Plus確實(shí)值得用。但如果你還在學(xué)習(xí)階段我強(qiáng)烈建議先用原生MyBatis把動態(tài)SQL、ResultMap、多表查詢這些底子打好再切換效率方案否則出了問題都不知道從哪排查。6.2 進(jìn)階方向地圖、Redis和對象存儲這套系統(tǒng)繼續(xù)擴(kuò)展的方向很清晰。第一是接地圖SDK在景點(diǎn)詳情頁展示景點(diǎn)位置在旅游線路頁展示線路軌跡這個只要申請地圖開放平臺的密鑰前端引入對應(yīng)的JavaScript庫就能實(shí)現(xiàn)數(shù)據(jù)模型已經(jīng)預(yù)留了經(jīng)緯度字段。第二是引入Redis做緩存和熱點(diǎn)數(shù)據(jù)加速比如首頁輪播圖、景點(diǎn)列表熱門數(shù)據(jù)緩存起來后數(shù)據(jù)庫壓力會明顯下降。第三是把本地圖片存儲替換為MinIO或云對象存儲解決單機(jī)磁盤容量和訪問帶寬的問題。如果要做視頻類內(nèi)容也可以參考Vue播放m3u8這類視頻流方案的集成方式把景區(qū)宣傳視頻嵌進(jìn)詳情頁。6.3 給準(zhǔn)備復(fù)用源碼的朋友的建議如果你打算在這個項(xiàng)目源碼基礎(chǔ)上做二次開發(fā)或改造我有幾條實(shí)際建議。第一數(shù)據(jù)庫SQL文件和Redis的配置項(xiàng)都在源碼目錄里有導(dǎo)入后記得修改application.yml里的數(shù)據(jù)庫密碼和IP地址。第二前端管理端的賬號是初始化時手動寫入數(shù)據(jù)庫的登錄時密碼經(jīng)過BCrypt加密不要直接用明文SQL插入否則登錄會失敗。第三運(yùn)行項(xiàng)目前最好先按照我前面說的流程把環(huán)境確認(rèn)一遍JDK版本、Maven版本、Node版本、MySQL版本每一步都用命令行驗(yàn)證避免浪費(fèi)一下午在環(huán)境配置上。我在實(shí)際運(yùn)行中發(fā)現(xiàn)前后端分離項(xiàng)目真正花時間的不是寫代碼而是調(diào)通鏈路從瀏覽器發(fā)請求到Nginx到SpringBoot到MyBatis到MySQL數(shù)據(jù)再原路返回渲染整個過程每個環(huán)節(jié)都可能出問題而多數(shù)問題不在你自己的代碼里而在配置和環(huán)境的默認(rèn)設(shè)置中。所以調(diào)試時一定要習(xí)慣看完整報(bào)錯堆棧一層層往下追而不是只看最上面那段異常描述。多踩幾次坑把每一個問題的排查路徑記下來你的排錯速度會隨著項(xiàng)目數(shù)量增長得越來越快。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天美欧美国产| 99热最新网址| 日韩精品三区四区| 春色91| 久久成人国产| 久久久久久久久久精| 麻豆久久一区二区三区| 欧美精品第四五页中文字幕在线观看| 三级激情网站| 97视频在线观看高清资源| se..亚洲欧美| 思思热在线视频精品| 久热伊人| 男人的天堂久久狠| HEYZO高无码国产精品227| 丝袜视频一区二区在线播放国产中文| 女人被男人桶爽视频网站| 国产精品久久久久久久久久久久久久久久久久| 国产探花日韩援交| 色偷综合| 日韩啪啪啪啪啪| 最新制服中文第一页| 国产AV高清AV无码| 九t超碰| 97电影院超碰| yaouchengrenav| 91亚洲精品青草| 91中出| 嗯啊啊啊轻点视频| 爽极品影院| 国产吹潮女在线观看| 中国探花熟女| 国产精品自拍视频 | 免费AV中文网在线观看| 最新av中文字幕高清| 中美日韩毛片| 激情网色| 亚州综合色| 97视频观看| 性爱乱伦视频免费| 日本一卡二区在线| 夜夜爽爽夜夜精品视频| 国产97色在线| 日韩操逼HD| 久久色AV线| 色婷婷小说| 天天日天天干天天操| 操我啊啊啊啊啊| 先锋激情∨在线视频播放| 色眯眯av| 超碰97欧美日韩| 开心五月婷婷激情| 尤物黄色在线观看网站| 日逼97| 91欧美丨精品丨入口| 国产高潮AA片免费看| 欧亚日韩中文在线| 日日日日做夜夜夜夜做无码97| 狠狠色色| 999亚洲国产视频| 久久久久久中文| 啊啊啊用力在线观看| 97人人夜夜精品视频| 亚洲文学偷乱拍啪啪啪啪| 中文字幕精品一区二区精品| 成人电影一区| 欧美综合娱乐久久| se吧提供91精品国产91久久久久久 | 国产成人自拍视频在线| 欧美片第一页| 91色婷婷综合久久中文字幕二区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 欧美精品1区2区3区| 久这精品中文在线观看视频| 热热色色综合| 丰满人妻-区二区三区| 中文字幕制服欧美久久一区| 夜夜操狠狠操| 97色干| 人人艹亚洲| 啊啊啊好想要| www欧美91| 国产搭汕a级片| 久久久中文版| 久久人人爽爽爽人久久久| 日本在线播放不卡一区| 美国一区二区免费视频| 国产精品一区二区校花| 国内亚洲高清无码| 人人操人人爽人人操人人| 亚洲资源一区| 亚洲综合第一页| 97国产精品一区| 婷婷探花久久精品一区| 亚洲综合草草| 蜜桃网熟妇| 69丨亚洲丨精品丨入口免费播放| 欧美在线|亚洲| Julia Annxxxxx| 国产99999久久精品| 久久婷婷欧美| 欧美综合亚洲综合| 国产女人与拘做受视频免费| 做爱A级亚欧| 天天色,天天干,天天干| 中文字幕123| 一牛影视成人片免费| 国产精品无码成人精品| 曰韩精品视频一区二区| 淫荡少妇免费| 亚洲欧美激情在线视频| 激情99| 69人妻人人揉人人躁人人精品| 九九九九久久久| 97久久精品亚洲| 欧美亚洲国内自拍| 中文字幕丝袜人妻| 国产精品久久久久久久久久久久久久久 | 91精品无码人妻系列| 日韩欧美aⅴ综合网站发布| 久久这里是精品| 人人摸.人人色| 在线看片国产精品每日更新| 精品亚洲国产成人AV制服丝袜| 精品中文日韩字幕视频| 久久久久久九九九九九九| 天天综合网~91综合网| 97草草| AV色女综合| 干B网| 肏逼视频日本| 国产精品无码av在线| 每日更新AV| 久久丁香五月天| 久久欧美按摩999| 伊人五月天青青草婷婷| 亚洲的天堂网| 日本不卡在线二区三区| 亚洲av无线观看| renqi久久久久久久久久久久| 毛片17S| 九九九九九九九九九九精品视频| 日本阿v天堂在线观看| 久久精品人人做人人看| 精品黑人一区二区| 九九九午夜| 日韩淫色网| 91五十路| 熟女色综合久久| 精品精品精品| 国产后入清纯| 秋霞 色色| 久久久久免费少妇| 先锋音影AV| 男生通女生屁股| 四虎国产精品永久在线囯在线| 九九久久一区二区伦理| 日韩99神马视频播放片在线播放| 久久久少妇诱惑精品视频| 五十路一区无码| 伊人五月天激情| 天天日少妇逼AV| 97精品综合久久网| 97爱爱| 在线人人人人人人精品超| 成人综合色网| 在线天堂资源亚洲| 新婚人妻扶着粗大强行坐下| 久草资源在线视频官方总站日韩丝袜美腿 | 婷婷探花久久精品一区| 欧美精品69性爱| 欧美国产日韩高清在线| 久久动漫精品视频这里只有精品| 极品色| 97综合在线| 九九九影院| 中文字幕一区二区视频在线观看 | 青青伊人这里只有精品| 一区二区三区四区五区高清无码永久视频| 后入福利| 国产A v无码专区| 丝袜制服字幕在线| 大香蕉中文| 亚洲综合在线视频| 97精品视频在线| 色天使亚洲综合在线观看| 96精品在线| 大茄子熟女AV导航| 国产精点久久久成人| 又摸又舔在线观看网站| 久久久草成人网站久久久草成人久久久草久久久 | 欧美亚洲丝袜人妻制服99| 亚洲啪啪啪啪视香蕉| 日韩免费av片高清无码| 亚洲精品97在线| 国产精品一区二区三| 国产伦精品一区二区三区在线观| 春色综合免费| 无码抄逼网| 91黑丝操| 吻戏激情性巴克| 久久女人| 久久熟女人| 三及片网站| 久久亚洲av成人无码国产| 色99久草| 日本大片日本一区二区免费高清 | 天天日熟妇| 人人干人人操人人..com| 亚洲污污网站| 8050午夜少妇无码| 97ai亚洲| 大香蕉伊人一区在线观看| 色综合av综合久久| 9久久美女首页| 波多野结衣一级视频| 老鸭窝黄色视频网站| 免费的很黄很污的全部视频| 国产熟女自拍| 91精品人妻一区二区三区蜜桃臀| 天堂а√在线最新版在线 | 大香蕉97久久| 91伊人久| 视频在线观看青青99国产| 视频分类 国内精品| 国产97色在线 | 亚洲| 五月婷婷丁香六月| 国产丝袜欧美在线视频| 久久天堂网| 天美av在线观看| 日韩无码精品综合久久| 中文字幕第95页| 免费观看欧美日韩操逼视频| 俺去啦俺来也久久综合| 熟女熟妇一区二区三区视频| 精品国产91久久久久久一区黄无| 1024人妻熟女一区二区三区| 国产精品96| 在线黄色污污网站| 国产熟女少妇一区| 国模精品一区二区三区苹果色戒| 99e久久国产精品| 激情文学小说一区二区| 欧美黄色图片| 五月丁香影院| 国产对白刺激视频| 亚洲欧美另类图片| 欧美瑟综合| 色婷婷综合久久久久中文一区二区 | 国产成人91一区二区三区| 成人天天爽| 人人操AV| 久久一级无码精品毛片6| 后入式免费视频| 日韩中文字幕宗合在线| 亚洲人在线成线成人| 国产强奸超碰AV| 秋霞午夜成人福利片片| 91精品国产91久久久久久久久久久久| 久久久久亚洲一区女同性恋中文字幕| 欧美日韩999| 91丨九色丨国产丨人妻在线| 亚洲情色欧美| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 8050无码八戒| 影音先锋日本乱伦| 美女久久久| 超碰在线在公开超碰在线在公开| 青青草黑寡妇男人天堂| 99热97| 麻豆这里只有精品| 在线强奷到舒服的无码视频 | 狠狠入| 91国精产品| 日韩久久超碰色| av天天在线观看| 超碰AV在线| 日人妻视频91| 亚洲国产奇米影视久久| 黄总AV色图| 一区二区三区黄色片a| 高潮内射在线| 久操黄色视频| 亚洲中文字幕97久久精品少妇| 成人亚欧免费视频| 乱伦a片视频| 亚洲av噜噜噜噜噜噜| 91性网| 精品一区二区2| 亚洲高清男人天堂| 亚洲97网站| 黑人粗大V S日韩女优视频| 欧亚久久偷拍视频| 欧美中字二区| 老司机免费视频在线91| 亚洲激情色片 | 67914亚洲精品| 自偷自拍的亚洲视频| 一级久久久久久久久久久 | 久久久四区| 天天日天天看| 日欧操屄| 免费精品人妻一区二区三| 奇米四色影视777久久久| 日本性爰一道本| 加勒比久久综合网高清| 手机看片1025| 五月激情小说| 禁止观看美女黄| 日韩精品人妻中文字幕有码午| 中文字幕在线观看第二页| 亚洲中文制服诱惑| 亚州色图欧美| 久肏视频字幕| 69XX一中文字幕人妻91| 日韩欧美aⅴ综合网站发布| 亚洲一级特黄大片在线播放91| 污污汅18禁网站在线永久免费观看 | 97综合久久| 97亚洲精品| 无码高清操逼网址| 91呆哥人妻| 亚洲夜色在线| 久操在97| 91女日逼| 免费观看的黄色的网站| 九九99久久| 亚州操操穴网| 东京热99999| 日逼97| 中文字幕一区二区三区四区在线视频| 青娱乐久久艹| 欧美无圣光在线| 亚洲熟女偷拍在线观看| 无码人妻一区二区三区四区老鸭窝| 性天堂| 国产操伦| 色呦呦、国产精品| 人人妻天天做天天爽| 色爱亚洲| 国产精品色片一区二区| 久久久久久久久久久人妻| 97超碰资源网| 啊啊啊操死我| 国产精品一二三在线看| 伊人综合色网| 青青草依人大香蕉| 又大又长又粗又爽又黄| 99啪| 久草看看看| 成人av福利在线观看| 久久久久亚洲Aⅴ无码| 男人天堂久久精品| 亚洲综人网| 午夜福利一区二区影院| 好吊妞转入那个网| 情色五月天就去干| 另类小说综合网| 色99色| 91九九九吃| 日韩成人无码| 亚洲天堂综合AV| 亚洲综人| 天天看天天在线精品| 国产人妻精品久久久一区二区三区| 一直超碰| 亚洲国产婷婷在线播放| 日日橹狠狠爱欧美超碰| 3PAV乱伦视频| 大香蕉操久久| 狠日欧美| 美国美女AV在线| 亚洲第一视频 欧美风情 日韩| 最新三级网址| 色综合久久夜色精品国产天堂| 男人的午夜天堂| 男女一级A片大黄,一进一出| 欧亚韩国999| 多毛小伙内射老太婆| 久久嫩草国产成人一区| 亲子敌伦对白在线播放| av优播| 少妇久久久| caorenqi shipin| 草久在线| 天天影视网综合少妇| 青青操日韩| 无码国产精品久久久久| 日日日色色色色色| 色婷婷丁香| 四虎精品永久在线观看| av资源在线播放天堂| 亚洲色综网| 黄色性爱网网| 亚洲成成熟女人综合一区二区| 大地资源在线观看中文第二页| 亚欧美综合网。| 亚洲国产ⅴ高清在线观看| 大香蕉色网| 国模私拍一区二区三区神乳| 国产25页| 99在线观看| 亚洲资源站| 天天爽天天| 亚洲欧美伦综合| 伊人天堂在线| 久久精品中文字幕观看| 天天干夜夜肏| 东北夫妻性偷拍| 秋霞一级鲁丝片A片| 麻豆影音天美视频| 午夜福利精品| 人妻熟女一区二区在线视频| 欧美黑人性猛交91| 九九视频黄色片| 国产成人天堂| 天天插天天插| 操逼大黄片| 97视频免费在线| 五月丁香久久| av最新免费中文字幕| 人妻大香蕉| 大香蕉97久久| www.伪伪| 欧美天天干| 久久久久一本一区二区青青蜜月| 操逼免费视频无码国产| 欧美韩日精品99综合| 亚洲AV无码天美传媒一区| 欧美精品精品一区二区| 亚洲午夜蜜臀| 91在线色| 91在线色综合| 国产高清在线观看欧美| av影片在线观看不卡| 国产精品久久久999| 色色色欧美| 自拍偷拍 日韩欧美| 青青草中日韩在线| 午夜福利久久久噜久噜久久综合 | 久久久久久亚洲Av无码精| 亚洲日韩XXX| 欧美视频在线第3页| 午夜视频好爽啊| 狠狠爱夜夜| 日日黄色三级网站| 五月丁香成人网| 制度丝袜99| 人妻欧美| 日韩无码服务区| 日韩成人午夜精品久久高潮| 操逼日韩无码 | 亚洲成熟国产精品美女| 97精品久久| 欧洲一区二区三区四区在线观看| 在线97在线| 开心五月天激情网| 亚欧Av| 日韩精品国产一区二区| 毛片一区二区| 久久久久白虎| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 乱伦熟女区| 亚洲成人性爱网站在线播放| 欧美组图日韩亚洲中文字幕| 无码人妻一区二区三区免费九色| 国产91丝袜 在线播放| 久久偷偷色综合蜜桃| 超碰碰97| 熟女色图在线| 午夜久久一区二区无码中出| 红杏大香蕉| 成人av免费观看| 在线性黄高清免费视频| 亚洲色图日韩精品| 中日亚韩免费视频| 日韩综合成人免费视频| 91被操| 欧洲性爱无码区| 男人的天堂久久久| 亚洲欧美日韩激情不卡| 久久久久久性爱免费视频| 99少妇内射| 大香蕉2017| 国产一区二区精品久久久不卡蜜臀 | 欧美一级A片在线看视频性色| 久久久亚洲高清不打码| 色伊人91| 欧美丰满熟妇XXXX性ppX人交| 中文字幕丝袜国产第一页不卡| 亚洲精品成人动漫在线| 国产精品国产自产高清AV| 欧美A片中文字幕| 久久透逼视频| 日本操大逼| 白嫩国模丰满一二三区| 欧美婷婷五月天| 国产精品一区二区黄片| 色色国产| 精品久久在线区一区| 天堂日本亚洲欧美| 熟女高潮合集-永久久久-成人AV| 天堂网 主播 亚洲| 91综合天天| 亚州综合色| 成年人网站在线免费观看| 婷婷伊人五月| 黄色免费网页无码| 国产少妇肉丝在线观看| 怡红院怡春院| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 老女人爆菊| 国产成自自拍在线观看| 国产精品一区二区后入| www.人人摸在线视频| 91国模| 欧美大波激情xxxx| 在线观看色视频| 日韩成人综合网| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 啊啊啊啊啊好舒服视频| 97超碰超| 亚洲欧美日韩二区视频| 婷婷色婷婷| 精品乱子一区二区三区99| 天天舔天天日天天射| 精品国产乱码久久久久久免费| 色五月AV| 狠狠色噜噜狠狠狠狠狠色综合久久 | 中字乱伦AV| 久久色激情一区二区三区| 精品一区二区三区四区外站| 五月天伊人网| 亚洲导航深夜福利| 嗯啊啊啊轻点视频 | 综合情欲网| 亚洲另类天堂| www色日本| 刺激性视频黄页| 大香交| 色婷婷六月丁香七月婷婷| 日本午夜精品理论片A级APP发布| 9久久9综合| 后入合集| 日韩欧美国产一区二区三区四区| 99丝袜福利在线播放| 91N综合网在线| 69视频入口| 国内三级自拍小视频在线观看| 99re9这里只有精品| 欧美高清91| jk白丝没脱就开始啪啪| 日韩一999精品| 精品少妇一区二区| 干日本人少妇午夜寂寞影院| 久久蜜桃综合网| 东京热男人天堂| 日韩AV一起草| 精品成人女人久久| 日韩黄色片子| sss视频华人在线| 欧美se综合| 国产AV高清AV无码| 黄色一区三区| 26uuu性| 精品人妻一区二区乱码一区二区| 97在线观看免费视频| 二色av| 97人人色| 久久精品国产免费观看99| 999综合色| 三级日韩一区二区三区| 久久久久密| 99re在线| 黄色成品网站| 欧美性爱综合,免费| 97久精品| 五月天婷婷在线看| 成人网欧美风情| 国产美女在线精品免费看| 高清不卡视频| 欧美亚洲国产91在线| 熟女一区二区| 亚洲高清无毛一区二区| 国产91精品久久久久久久网曝门| 在线观看一级α片刺激高潮视频| 99re69综合| 国产成人精品必看| 亚洲图片 激情小说| 亚洲暴力强奸AV| 人妻熟女一区二区| 伊人五月天| 亚洲Av诱惑| 欧美熟爽综合| 三级激情网站| 青久久| 噜噜吧,噜噜色,噜噜| 99在线精品观看视频中文 | 亚洲欧洲精品视频发布| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 日韩国产精品人妻无码久久久| 天堂九九九九九九九九九| 人妻天天爽天天爽三区| 一区二区 电影 亚洲| 隔壁邻居波多野结衣中文字幕 | 亚洲一区二区 麻豆传媒| 亚洲AV无线| 人妻熟妇一区二区三区| 久久久久久久 九九九九九九九| 69视频入口| 国产精品一区二区后入| 色婷婷av在线观看| 福利视频香蕉免费一区二区在线| 欧美78| 色丁香五月婷婷| 在线日韩精品一区二区三区| 亚洲性少妇| 91久久婷婷| 久久久久久网址| 999熟女精品| 欧美午夜精品久久久久久超碰| 国产精品久久天天干| 91女优在线观看| 中文字幕二区日韩天堂| 伦伦成年午夜免费视频| 97免费视频在线| 国产乱码精品久久久久久| 我爱大香蕉| 国产一级内射无挡观看| 亚洲欧美在线丝袜| 亚洲天堂人人妻| 亚洲国男人的天堂| 国产精品激情久久久久久久| 中文字幕乱亚洲美女精品一区| 青青草色插素人| 欧美男人一区| 成人性爱全视频观看| 人人操欧美风骚| 超碰社区97| 日日AV加勒比| 粉嫩国产精品久久粉嫩| 岛园激情| 日本三级A片网站com| 色妺妺AⅤ| 国产精品久久久久久久久久二区三区| 黄色小说亚洲| 在线黄页看毛片| 日韩一级片在线看| 亚洲第一狼人丝袜美女另类 | 精人妻一区二区三区| 亚热日本熟女| 麻豆乱码久久精| 最新欧洲欧美日本激情网站| 欧美疯狂做爰xxxx| 先锋色眉乱伦资源| 日韩免费三级黄片电影| 视频不卡中文字幕| 欧美性爱超碰97| 亚洲欧美综合网站| 日日噜噜夜夜久久亚洲一区二区 | www.av在线观看| 淫荡熟女乱伦网| 99久久精品无码一区二区毛片免费| 麻豆天美一区二区| 好涩综合| 校园激情狠狠四射| 欧洲亚洲人妻无码久久三区四区| 国产诱惑| 神马九九九| 亚洲国内精品成人不卡| 丝袜视频一区二区在线播放国产中文| 精品网站9999| 青青草自拍视频在线播放| 人妻激情偷乱视频一区二区三区 | 啊啊好多水| 老师充足的奶水小说| 九九久久一区二区三区| 极品丝袜无码| 蜜桃精品一区二区三区ww| 亚洲天天艹| 天天日日舔舔| 久久久不能久久久久| www.欧精品| 午夜呻吟欧美| 懂色AV中文| 91丝袜熟女| Aa东京男人的天堂| 青青草一区二区三区四| 欧美人妻一区二区| 日韩久射综合| 嗯嗯啊啊好爽| 亚洲97成人在线观看| 亚洲无线码欧洲精品区别| 色就色综合| 国产操操日韩三级黄| 欧日a| 五月婷久久| 中文字幕在线播放2中文字幕在线观看2| 五月香婷婷| 中文字幕视频一区视频二区| 精品国产99| AV色五月天| 国产丝袜啪啪| 午夜舔阴达高潮视频免费看| 欧美1区二区三区公司| 日韩人妻 中文字幕| 亚洲精品久久久久久久蜜桃臀| 免费一级视频特黄色大片| 日韩有码一区三区| 欧美视频第二页| 精久久久| 综合久久97| 涩涩这里只有精品视频| 色色色999| 涩爱AV在线| daxiangjiao你懂的| 人妻丝袜一区二区三区在线| 四虎午夜影院| 手机在线看片免费人成视频| 久久婷婷一区二| 欧美日动态视频| 大香蕉视频啪啪啪啪| 黄色免费网| 自拍偷拍2025在线观看| 国产精品乱人伊人网| 91美女視頻| 国产精品午夜AV完会免费| 亚洲av综合色| 亚洲 图片 综合91| 青青草无码视频| 水多多映视AV| www…国产操逼| 亚洲色9| 久九九九九九九九热| 精品久久久久久AV无码| 91狠狠综合久久久久久| 欧美999999| 少妇久久| 东京热免费视频| 婷婷15月天青娱乐| 免费精品无码一级毛片牛牛影视| 亚洲乱码国产乱码精网站| 岛国小电影| 青青青在线高清视频在线一二三四区 | 超碰色美女| 都市久久精品激情亚洲| 亚洲精品 大香蕉| 欧美极品少妇| 亚欧免费| 天天弄欧美| 亚洲色交| 亚洲夜夜欢无码一区二区| 人人搡人人肉久久精品| 成人精品在线免费视频| 91欧美| 无码人妻毛片丰满熟妇精品区| 久操操AV电影| 国产白领连续中出在线观看| 亚洲欧美91| 亚洲欧洲网站免费观看| 99热这里只有是精品10| 日韩激情电影中文字幕| 97超级久久强资源| 伊人91| 大香蕉人妻| 日韩综合色网| 欧美亚洲日本激情在线| 久久草视频污视频| 国产精品人妻熟女aⅴ| 欧美熟女激情| 在线播放成人高清免费视频 | 97人妻碰碰中文无码久热丝袜| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 热热色91| 亚洲男人天堂Av| 婷婷激情四射| 国模一区二区三区| 久夜视频| 欧美美女啪啪视频| 极品销魂美女一区二区| 亚洲色图久久成人| 久久人妻| 图色综合网| 黄色片A级一区二区三区| 中文字幕91综合| 免费AV中文网在线观看| 99久久久无码| 日韩黄片影院| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 懂色AV蜜臀无码精品APP| 99999这里都精品| 午夜黄色免费在线观看| 淫纸中9区| 婷婷综合视频| 国产毛片毛片4p懂色| 国产精品网站www| 欧亚成人| 无码在线亚洲| 2017天天操天天日| 777超碰| 不卡在线观看视频| 欧美综合区| 亚洲色图欧美色18直播在线| 久久秀这里有精品| 久久婷婷五月天| 欧美成人色| 天美传媒AV在线播放| 国产一区二区a毛片| 99re这里只有精品中心播放| 日日摸日日弄日日拍| 久久亚洲欧美中文字幕国语| 国产日本熟女顶级一区二区三区视频| 肉丝无码中文高清| 97精品一区二区视频| 久久婷婷色| 啊啊啊啊啊好舒服视频| 91人妻人人澡人人爽人人精品| 超碰人人干| 激情四射婷婷六月天| 强奸乱伦AV网址| 日本青青草在线| 超碰九区| 大香交伊人网| 99久在线精品99re8蜜桃| 激情综合网五月婷婷五月天| 欧美久久久15P| 亚洲色欧美| 人妻久久久久久久久久久久久久久| 久久久一区二区| 中日亚韩免费视频| 日韩欧美水蜜桃人妻| 亚洲AV无码乱码| 好看的91视频| 欧美一区二区三区互相| 日韩一999精品| 日韩免费中文字幕视频| 日本精品人妻少妇一区二区| 国产v亚洲v日韩v欧美v片另类| 亚洲天堂男人在线| 不卡在线观看视频| 最新AVzaixian| 精品九九九| 99999精品成人| 国产午夜福利专区综合| 亚洲av热热色| 精品人体无圣光凹凸| 无码人妻精品一区二区三区九九| 久久久久久亚洲中文| 97这里只精品| 草莓精品视频| 9精品久久久久| 国产亚洲人妻综合日韩 久久| 久久无码精品| 久久的网站啊啊啊啊啊| 最新亚洲人成网站在线影院| 欧美夜色| 5月婷婷6月六月丁香| 激情另类激情| 老鸭窝亚洲毛片| AA级电影三区| 久久9999| 久久欧美按摩999| 手机看片91人妻| 亚洲天天影视综合网| 欧美日韩香蕉| 九九九九九精品视频| 韩国女主播青草福利视频| 日韩免费三级黄片电影| 在线五区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 天天狠操| 国内一区二区三区| 亚洲色人妻综合| 福利社区午夜一区二区| 97视频一区| 久久九九一区二区三区成人| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 熟女精品一区二区三区| 久久精品人人做人人看| 精品二区三四区五电影 | 中文字幕 av v| 操逼无码一区| 丰满熟女一区二区三区在线播放| 久久蜜色情在线视频xxx免费观看| 人妻中文字幕日韩电影| 成人线上超碰| 五十路成人在线视频二区三区| 97天天爽| 插欧洲美女欧美精品| 人人操人人插 - 百度 - 百度| 蜜桃午夜视频一区二区| 国产60区。| 国产精品色| 高清无码 国产精品| 加勒比综合| 伊人嫩草| 婷婷另类小说| 中文高清一区二区的| 国产亲戚伦亲在线| 翔田千里无码一区| 欧美日韩精品久久久久久久久东北老熟妇| 色五月第四色| 97视频网站在线观看| 国产一区二区在线电影| 亚洲男人久久综合天堂| 嗯嗯啊好爽| 亚洲97资源| 自拍亚洲综合| 97香蕉人人乳| 熟妇人妻一区二区三区| 丁香五月激情综合| 久久久久成人亚洲国产| 午夜乱轮操逼视频免费看| 国产熟妇 码视频户外直播 | 国产女人91精品嗷嗷嗷嗷| 高清在线不卡一区二区 视频| 国产白丝AV| 97视频免费在线| 97就爱干| 日本一久是| 欧美亚洲AN| 干b在线性社区| 人妻天天爽夜夜爽精品2| 精品少妇后入一区二区三区四区人妻巨乳 | 欧美日韩亚洲一区二区在线观看| 人妻一区二区三区四区视频| 一本色道综合久久欧美日韩精品| 91超碰在线观看| 亚洲综合另类色图| 婷婷九月丁香| 一区二区三区四区在线不卡| 超碰69| 97热视频在线观看| 欧美日韩人妻少妇 一区二区三区| 欧美性爱一区| 91爰爱欧美| 色男人色天堂东京热| 亚州综合色图| 丝袜美女诱惑 91 视频| 亚洲91大片| 亚洲 欧美 综合 91| 四虎在线免费视频| 99国产精品自在自在| 国产精品色| 狠久久| 国产97亚洲| 成人午夜高潮av猛片| 欧美真人抽搐一进一出gif| 国产二区三区免费视频| 成人无码在线视频网站| 中文字幕国产| 国产乱码精品一区二区三区四川| 国产家庭乱伦网址| 国产1769在线| 久久天堂婷婷网| 亚洲日韩av一区二区三区百合| 青青草国产亚洲精品久久| 九九成人精品| 夜色97| 91色欧美| 夜草网站| 操逼操逼逼操操逼91| 精品国产肉丝袜在线拍国语| 五月丁香影视| 97免费视频网| 久艹99| 校园春色五月天| 亚洲日韩视频二区| 亚洲国产一区二区三区四区国产| 五月丁香| 粉嫩AV一区夜夜嗨| 久久老熟女| 在线毛片片免费观看| 国产综合网站在线播放| 免费精品99| 国产成人主播| 高颜值美女口爆高潮浪叫| 日韩性爱一级片| 免费A V在线播放| 2011国产精品| 九热超碰| 国产v亚洲v日韩v欧美v片另类| 精品午夜福利国产一区二区在线观看| 亚洲AV永久无码一区仙野| 偷窥自拍亚洲色图| 嗯~啊~快点 死我视频免费看网站| 亚洲高潮影院| 国产日韩在线播放av| 婷婷五月天丁香| 日本蜜桃| 欧美亚洲图片| 日韩一区二区三区四区五区| 欧美成人9797| 欧美色道啊| 欧美日韩*字幕一区| 最新国产精品久久精品| 97超碰逼| 久久久亚洲| 日本性爱网址| 久插综合| 久草午夜| 日本中文字幕在线电影| 国产在线精品电影观看| 国产精品乱码久久| 国产18精品亚洲精品| 五月天久久婷婷亚洲| 欧美天天射| 日韩不卡av一二三| 天堂精品小草| 男啪女色黄无遮挡免费观看| 伊人色综合网电影| 日韩ab网 | www.激情| 久久久天美| 探花在线免费观看视频国产一区| 97精品国产97久久久久久户外免费| 久热网| 国产区性爱在线视频秋霞豆| 青青草吊丝| 97操| 玖玖视频在线资源一区二区三区| 欧美激情亚洲情色| 欧美日产国产在线成人第一区| 亚洲最大黄网| 高清国产精品福利网站| 桃色五月天| 欧美一区二区| 国产伦精品一区二区三区在线观| 18禁久极品美女久久哦哟呀!| 欧美巨大性舒爽顶到了| 日韩美一区| 天天噜| 国产人妻精品久久久一区二区三区 | 69精品| 超碰79人人乐| 超碰97亚洲| 天无日色综合| 97超碰精品| 日韩国产品视频中文字| 久久久久亚洲Av无码专区老牛影视| 亚洲人成网www| 久久人妻| 亚洲色性情三级| 熟妇的味道HD中文字幕| 欧美夜夜骑视频| 日韩av在线免费网站| 日本天堂在线播放| 男人的天堂一区三区| 四虎影视国产精品| 婷婷久久综合| 五十路熟女人妻一区二区三区四区五| 国产久久一区二区午夜| 懂色Av| 久久 亚洲 日韩 人妻| 国产亚洲美日韩Aⅴ中文字幕无码成人| 亚洲精品蜜桃久久久久久久| 国产精品色片一区二区| 亚州五月| 亚洲春色激情小说| 一本色道无码DVD中文字幕| 超碰人妻中文在线| 天天视频综合在线观看视频| 欧美日韩精品久久久久东北老熟妇| 97福利视频| 免费观看日本操逼视频| 色网在线| 国产久久久久久久久一区二区| 色爱亚洲| 伊人精品视频| 国产精品熟女乱伦| 亚洲综合20p| 青青草色插素人| 女人被添高潮免费视频| 夜夜精品视频| 久草在| 久久九九99| 韩国成人精品久久久免费看| 男人的天堂kva| 亚州成人A√| 日韩欧美午夜视频在线| 九九九九精品精| 日韩精品9999| 国产亚洲99久久精品| 日韩免费人妻色情网站| 手机av天堂久久久久| 樱花蜜乳av| 九九操久久国产免费视频| 蜜臀AV成人精品蜜臀AV久久| 久久无码电影| 欧洲特黄毛片免费看欧洲毛片| 亚洲色香| 天天综合色电影| 国产不卡免费在线视频| 精品久久久久久久| 亚洲色图伊人网| 狠狠躁AV| 午夜精品视频777| 26uuu偷拍亚洲欧洲综合| 亚洲一区二区av| 天美传媒av在线| 黑丝少妇麻豆| 亚洲欧美中文日韩视频中国语| 久久av无码| 中文字幕在线免费观看 | 少妇天堂网络| 熟女性视频| 日本精品第一视频在'| 亚洲性爱电影| 国产精品视频内谢女人| 国产一区二区在线看| 国产精品视频在线播放 | 欧美精品二区视频在线| 黄色成年| 国产AV线| 97丝袜亚洲在线播放| 亚洲中文字幕乱码无码一区二区| 开心五月婷婷激情| 欧美日韩性爱无码| 操人人| 亚洲av成人精品一区| 欧美的精品的视频| 亚洲极品| 婷婷九月国产| 亚洲色图综合网| 在线黄色污污网站| 中文有码第五页| 97色在线观看| 亚洲图片欧美日韩| 中文字幕 码 自拍 视频 区| 欧美日韩国产色图在线| 亚洲高清国产理伦片| 自拍偷拍亚洲熟女妇人精品| 成人av毛片在线观看| 91国产操逼视频| 成人性爱免费播放| 99久久国产精品免费高潮| 亚洲精品97| 97欧美视频| 亲子敌伦对白在线播放| 91超碰在线| 精品视频一区二区| 国产在线综合福利网站| 国产真实子伦对白| 东京热一区二区中文字幕| 欧美综合网| 久久久久久久免费A片国产成a人亚洲精∨品无码| 日韩15p| 无码不卡亚洲成?人片| 免费视频在线一区二区不卡| 激情黄色片在线观看| 国产最火爆久久国产网站网站| 操逼逼一区视频| av无码av无码专区| 欧日a| 九九综合久久| 国产农村妇女一区二区| 九九九久千久久激情蜜桃在线看 | 综合色播| 婷婷香蕉欧美在线一区二区三区| 四虎影库国产精品免费|