亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

SpringBoot校園招聘系統(tǒng)實(shí)戰(zhàn):從架構(gòu)設(shè)計(jì)到部署全流程解析

SpringBoot校園招聘系統(tǒng)實(shí)戰(zhàn):從架構(gòu)設(shè)計(jì)到部署全流程解析 1. 項(xiàng)目定位與核心功能拆解做校園招聘系統(tǒng)最容易踩的坑就是一上來(lái)就想著“把BOSS直聘做成學(xué)生版”。真正上手這個(gè)SpringBoot大學(xué)生招聘系統(tǒng)之后我最大的感受是校園場(chǎng)景和社招場(chǎng)景的需求差異比大多數(shù)人想象的大得多。先說(shuō)這個(gè)系統(tǒng)解決的典型問(wèn)題。高校就業(yè)場(chǎng)景里學(xué)生找實(shí)習(xí)、投校招崗位企業(yè)HR招應(yīng)屆生兩邊信息不對(duì)稱(chēng)的問(wèn)題非常突出。學(xué)生散落在各個(gè)平臺(tái)投簡(jiǎn)歷企業(yè)又覺(jué)得簡(jiǎn)歷質(zhì)量參差不齊。這個(gè)系統(tǒng)做的事情就是把招聘流程拆成一條清晰的業(yè)務(wù)鏈學(xué)生注冊(cè)并維護(hù)簡(jiǎn)歷企業(yè)注冊(cè)并發(fā)布職位學(xué)生檢索職位并投遞簡(jiǎn)歷企業(yè)篩選簡(jiǎn)歷并發(fā)起面試邀約最終完成錄用流程。管理員在整個(gè)過(guò)程中做審核和治理保證平臺(tái)數(shù)據(jù)干凈。從我實(shí)際做過(guò)的項(xiàng)目來(lái)看這個(gè)系統(tǒng)的用戶(hù)角色必須拆成三類(lèi)否則后續(xù)權(quán)限控制會(huì)非常痛苦。學(xué)生端注冊(cè)登錄、簡(jiǎn)歷維護(hù)、職位檢索、投遞簡(jiǎn)歷、收藏職位、查看投遞反饋被查看、被邀約、被拒絕企業(yè)端企業(yè)資料認(rèn)證、職位發(fā)布與管理、收到的簡(jiǎn)歷管理、簡(jiǎn)歷篩選與面試邀約、錄用操作管理端學(xué)生/企業(yè)賬號(hào)審核、職位信息審核、基礎(chǔ)數(shù)據(jù)統(tǒng)計(jì)這三個(gè)角色之間的權(quán)限邊界如果不在設(shè)計(jì)階段就理清后面寫(xiě)接口的時(shí)候就會(huì)出現(xiàn)到處查角色、到處加if判斷的情況代碼會(huì)越寫(xiě)越亂。技術(shù)選型上這個(gè)項(xiàng)目用的是SpringBoot MyBatis-Plus MySQL的組合前端采用Vue ElementUI前后端分離部署。選SpringBoot的原因很直接它把Spring家族里那些繁瑣的XML配置全部干掉用自動(dòng)配置機(jī)制讓項(xiàng)目可以快速啟動(dòng)。對(duì)一個(gè)以業(yè)務(wù)功能為主的系統(tǒng)來(lái)說(shuō)SpringBoot能讓你把精力花在業(yè)務(wù)邏輯上而不是花在“怎么把框架跑起來(lái)”這件事上。整個(gè)項(xiàng)目還附帶完整的源碼適合作為畢業(yè)設(shè)計(jì)或課程設(shè)計(jì)的參考項(xiàng)目也能直接改改拿去用。2. 系統(tǒng)架構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)背后的門(mén)道2.1 前后端分離的分層架構(gòu)到底怎么分先說(shuō)項(xiàng)目結(jié)構(gòu)。一個(gè)規(guī)范的分層架構(gòu)代碼結(jié)構(gòu)直接決定后續(xù)維護(hù)的心情。這個(gè)招聘系統(tǒng)的后端按經(jīng)典的三層架構(gòu)組織Controller層接收請(qǐng)求、參數(shù)校驗(yàn)、調(diào)用Service層、返回統(tǒng)一響應(yīng)結(jié)果Service層業(yè)務(wù)邏輯處理、事務(wù)控制、調(diào)用Mapper層Mapper層數(shù)據(jù)庫(kù)訪問(wèn)負(fù)責(zé)SQL執(zhí)行在SpringBoot項(xiàng)目里包結(jié)構(gòu)建議這樣規(guī)劃config配置類(lèi)、controller、service、mapper、entity/domain實(shí)體、dto數(shù)據(jù)傳輸對(duì)象、vo視圖對(duì)象、common通用工具和返回結(jié)果封裝。我第一次寫(xiě)這種系統(tǒng)的時(shí)候把所有類(lèi)都堆在幾個(gè)包下面后來(lái)改需求的時(shí)候找文件找得懷疑人生所以包結(jié)構(gòu)一定要一開(kāi)始就規(guī)劃好。用MyBatis-Plus而不是原生MyBatis核心原因就一個(gè)字快。單表CRUD完全不需要手寫(xiě)SQL內(nèi)置的BaseMapper已經(jīng)提供了insert、updateById、selectById、selectPage這些方法。真正需要手寫(xiě)SQL的場(chǎng)景主要集中在多表聯(lián)查和統(tǒng)計(jì)報(bào)表比如查詢(xún)職位列表時(shí)聯(lián)查企業(yè)名稱(chēng)或者統(tǒng)計(jì)各企業(yè)發(fā)布的職位數(shù)量。這個(gè)項(xiàng)目的核心業(yè)務(wù)邏輯也是圍繞MyBatis-Plus的LambdaQueryWrapper做條件拼接比寫(xiě)XML文件里的動(dòng)態(tài)SQL要直觀得多。2.2 核心數(shù)據(jù)表設(shè)計(jì)與關(guān)聯(lián)關(guān)系詳解數(shù)據(jù)表設(shè)計(jì)是這個(gè)系統(tǒng)最值得細(xì)看的部分。我結(jié)合實(shí)際使用場(chǎng)景給你拆解一下幾張核心表用戶(hù)表sys_user存的是登錄憑證字段包括id、username、passwordBCrypt加密存儲(chǔ)、phone、email、role學(xué)生/企業(yè)/管理員、status啟用/禁用、create_time。注意登錄賬號(hào)和角色信息放在一張表里但學(xué)生和企業(yè)的詳細(xì)資料各自拆表存儲(chǔ)避免一張表里塞太多無(wú)關(guān)字段。學(xué)生信息表student_info關(guān)聯(lián)用戶(hù)表的userId存放姓名、學(xué)校、專(zhuān)業(yè)、學(xué)歷、畢業(yè)年份、籍貫、聯(lián)系方式等教育背景字段。要針對(duì)校園場(chǎng)景把“專(zhuān)業(yè)”字段單獨(dú)拎出來(lái)建索引因?yàn)檫@是學(xué)生端最主要的篩選條件之一。企業(yè)信息表company_info關(guān)聯(lián)userId存企業(yè)名稱(chēng)、所屬行業(yè)、規(guī)模、融資階段、辦公地址、企業(yè)介紹、營(yíng)業(yè)執(zhí)照?qǐng)D片路徑。這塊有個(gè)實(shí)操細(xì)節(jié)要提醒企業(yè)認(rèn)證不能省。哪怕做個(gè)簡(jiǎn)單的人工審核也要讓企業(yè)上傳營(yíng)業(yè)執(zhí)照否則平臺(tái)上會(huì)出現(xiàn)大量虛假招聘這是招聘類(lèi)平臺(tái)的底線問(wèn)題。職位表job_position關(guān)聯(lián)companyId核心字段有崗位名稱(chēng)、職位類(lèi)別實(shí)習(xí)/校招/兼職、薪資范圍用最低值和最高值兩個(gè)字段存儲(chǔ)便于區(qū)間查詢(xún)、工作城市、學(xué)歷要求、招聘人數(shù)、職位描述、發(fā)布時(shí)間、狀態(tài)待審核/已發(fā)布/已下架/已拒絕。投遞記錄表delivery_record這一張表是整個(gè)系統(tǒng)業(yè)務(wù)閉環(huán)的關(guān)鍵。關(guān)聯(lián)studentId和jobId核心字段是status待處理0、已查看1、面試邀約2、已通過(guò)3、已拒絕4、已取消5。這六個(gè)狀態(tài)組成了一條完整的投遞生命周期。我見(jiàn)過(guò)有項(xiàng)目把狀態(tài)設(shè)計(jì)成布爾字段“是否通過(guò)”后來(lái)需求一變就全廢了所以狀態(tài)的擴(kuò)展性一定要先想好。這幾張表的關(guān)系也很直觀學(xué)生表對(duì)投遞表是一對(duì)多職位表對(duì)投遞表也是一對(duì)多學(xué)生收藏職位是多對(duì)多需要單獨(dú)建一張收藏關(guān)聯(lián)表字段id、studentId、jobId、create_time。2.3 狀態(tài)機(jī)設(shè)計(jì)投遞狀態(tài)流轉(zhuǎn)的業(yè)務(wù)邏輯狀態(tài)機(jī)這個(gè)詞聽(tīng)起來(lái)高大上實(shí)際上就是一組“什么狀態(tài)下能執(zhí)行什么操作”的規(guī)則。投遞記錄的狀態(tài)流轉(zhuǎn)必須嚴(yán)格限制不能讓學(xué)生已經(jīng)把簡(jiǎn)歷投出去了還能重復(fù)投。整個(gè)流程里狀態(tài)流轉(zhuǎn)的合法路徑是待處理學(xué)生投遞簡(jiǎn)歷后進(jìn)入的初始狀態(tài)已查看企業(yè)HR點(diǎn)擊查看簡(jiǎn)歷后更新為已查看面試邀約企業(yè)發(fā)起面試邀約后狀態(tài)變?yōu)槊嬖囇s同時(shí)系統(tǒng)給學(xué)生發(fā)送站內(nèi)消息已通過(guò)面試通過(guò)企業(yè)執(zhí)行錄取操作已拒絕企業(yè)查看后覺(jué)得不符合或者面試后不通過(guò)已取消學(xué)生在待處理狀態(tài)下主動(dòng)撤回投遞為什么不建議讓學(xué)生隨意撤回已經(jīng)進(jìn)入面試環(huán)節(jié)的投遞從現(xiàn)實(shí)業(yè)務(wù)角度看如果學(xué)生能隨便撤回企業(yè)的招聘流程會(huì)被反復(fù)打斷數(shù)據(jù)統(tǒng)計(jì)也會(huì)亂掉。我在實(shí)現(xiàn)狀態(tài)變更的時(shí)候在每個(gè)更新的Service方法里都加了狀態(tài)冪等校驗(yàn)用update ... where status 上一狀態(tài)這種方式防止并發(fā)操作導(dǎo)致數(shù)據(jù)不一致。3. 關(guān)鍵功能模塊的實(shí)現(xiàn)剖析3.1 登錄鑒權(quán)與角色權(quán)限控制方案登錄這塊別看簡(jiǎn)單很多人在權(quán)限上翻車(chē)。我建議用JWTJSON Web Token做無(wú)狀態(tài)登錄配合攔截器做接口權(quán)限控制。具體流程是用戶(hù)登錄成功后后端生成一個(gè)JWT令牌返回給前端前端存在本地存儲(chǔ)中每次請(qǐng)求在請(qǐng)求頭里帶Authorization后端攔截器解析這個(gè)JWT獲取用戶(hù)id和角色存入ThreadLocal供后續(xù)業(yè)務(wù)代碼使用。JWT的三段式結(jié)構(gòu)——Header、Payload、Signature——里Payload部分不要放敏感信息只需放userId和role這兩個(gè)核心字段就行。實(shí)際項(xiàng)目中密鑰要放在配置文件中不要硬編碼在代碼里。過(guò)期時(shí)間建議設(shè)置成2小時(shí)前端需要配合做token過(guò)期后的自動(dòng)跳轉(zhuǎn)登錄頁(yè)。角色權(quán)限這塊我強(qiáng)烈建議用攔截器做基于路徑的權(quán)限控制而不是在每個(gè)Controller方法內(nèi)部手動(dòng)判斷。具體做法是定義一個(gè)權(quán)限攔截器在preHandle方法里解析當(dāng)前用戶(hù)的角色然后根據(jù)請(qǐng)求路徑前綴做判斷/admin/** 需要管理員角色 /company/** 需要企業(yè)角色 /student/** 需要學(xué)生角色這樣寫(xiě)的好處是權(quán)限校驗(yàn)邏輯集中在一處新增接口時(shí)只要URL規(guī)范正確權(quán)限控制就自動(dòng)生效不用每個(gè)接口都寫(xiě)一遍角色判斷的重復(fù)代碼。這里有一個(gè)我在實(shí)際項(xiàng)目中踩過(guò)的坑JWT解析失敗和過(guò)期處理的異常不要直接拋給前端應(yīng)該封裝一個(gè)統(tǒng)一異常處理器RestControllerAdvice返回固定的錯(cuò)誤碼和提示信息防止認(rèn)證失敗時(shí)前端拿到一個(gè)五顏六色的異常堆棧。3.2 職位檢索與條件組合查詢(xún)的實(shí)現(xiàn)職位檢索是學(xué)生端的核心功能也是我在這個(gè)項(xiàng)目里花時(shí)間最多的地方。檢索條件至少包括關(guān)鍵詞崗位名稱(chēng)模糊匹配、城市、職位類(lèi)別實(shí)習(xí)/校招/兼職、學(xué)歷要求、薪資范圍。這幾個(gè)條件可以任意組合用MyBatis-Plus的LambdaQueryWrapper做動(dòng)態(tài)SQL拼接非常順手。LambdaQueryWrapperJobPosition wrapper new LambdaQueryWrapper(); wrapper.eq(JobPosition::getStatus, 1) // 只查詢(xún)已發(fā)布的職位 .like(StringUtils.hasText(keyword), JobPosition::getJobName, keyword) .eq(StringUtils.hasText(city), JobPosition::getCity, city) .eq(StringUtils.hasText(category), JobPosition::getCategory, category) .ge(minSalary ! null, JobPosition::getSalaryMin, minSalary) .le(maxSalary ! null, JobPosition::getSalaryMax, maxSalary) .orderByDesc(JobPosition::getCreateTime);這段代碼的核心邏輯在于每個(gè)查詢(xún)條件都帶上一個(gè)前置的布爾判斷比如StringUtils.hasText(keyword)為false時(shí)這個(gè)條件就自動(dòng)跳過(guò)。這樣可以?xún)?yōu)雅地處理“用戶(hù)只填了城市、沒(méi)填關(guān)鍵詞”這類(lèi)情況不用寫(xiě)一堆if判斷。但職位列表不能只返回職位表的數(shù)據(jù)學(xué)生列表里要顯示企業(yè)名稱(chēng)和企業(yè)Logo所以需要聯(lián)查企業(yè)信息表。我的做法是在Mapper層自定義一個(gè)分頁(yè)查詢(xún)SQL通過(guò)LEFT JOIN把企業(yè)名稱(chēng)字段查出來(lái)封裝到VO對(duì)象中返回給前端頁(yè)面。這里還有個(gè)小細(xì)節(jié)MyBatis-Plus的分頁(yè)插件要單獨(dú)配置分頁(yè)攔截器PaginationInnerInterceptor不配置的話(huà)page方法只返回全部數(shù)據(jù)分頁(yè)不生效。這個(gè)坑很多人踩過(guò)在配置類(lèi)里補(bǔ)上即可。3.3 簡(jiǎn)歷上傳與在線預(yù)覽的文件處理方案簡(jiǎn)歷管理是學(xué)生端的另一個(gè)高頻操作。文件上傳的方案有兩條路存本地磁盤(pán)或者接對(duì)象存儲(chǔ)服務(wù)。這個(gè)項(xiàng)目里可以選一個(gè)務(wù)實(shí)的方式——本地磁盤(pán)存儲(chǔ)加靜態(tài)資源映射。具體做法是在配置文件中定義上傳路徑然后通過(guò)WebMvcConfigurer添加一個(gè)資源映射器把本地目錄映射成URL虛擬路徑。spring: servlet: multipart: max-file-size: 10MB max-request-size: 20MB file: upload: path: /data/recruitment/files/上傳文件時(shí)FileUtil工具類(lèi)負(fù)責(zé)按日期生成子目錄用UUID作為文件新名稱(chēng)防止文件名沖突和路徑穿越攻擊。特別注意文件存儲(chǔ)的目錄不能被代碼里寫(xiě)死成用戶(hù)輸入的文件名。簡(jiǎn)歷支持PDF和Word兩種格式在線預(yù)覽用兩種方案PDF直接通過(guò)瀏覽器內(nèi)置的PDF預(yù)覽插件加載Word文件建議用OpenOffice轉(zhuǎn)成PDF之后再預(yù)覽否則前端很難處理。如果你項(xiàng)目部署在云服務(wù)器上我更推薦接入MinIO做對(duì)象存儲(chǔ)。MinIO作為私有化部署的對(duì)象存儲(chǔ)服務(wù)和SpringBoot的整合非常順暢只需在pom.xml中加入依賴(lài)然后配置endpoint、accessKey和secretKey。它最大的優(yōu)勢(shì)是把文件和業(yè)務(wù)系統(tǒng)解耦后續(xù)擴(kuò)展、備份、權(quán)限管理都更方便這也是為什么現(xiàn)在項(xiàng)目里越來(lái)越多人把MinIO加入SpringBoot。文件上傳成功后返回的是MinIO中文件的訪問(wèn)URL前端直接使用該URL加載。3.4 投遞流程與面試邀約的業(yè)務(wù)閉環(huán)投遞流程是本系統(tǒng)業(yè)務(wù)閉環(huán)的核心鏈路。學(xué)生瀏覽職位詳情頁(yè)點(diǎn)擊“立即投遞”按鈕時(shí)后端要做兩件事判斷該學(xué)生對(duì)該公司這個(gè)職位是否已經(jīng)投遞過(guò)查投遞記錄表如果已存在且狀態(tài)不是已取消或已拒絕就提示“重復(fù)投遞”如果不存在則創(chuàng)建一條新的投遞記錄狀態(tài)置為待處理。投遞成功后企業(yè)端會(huì)看到新的投遞記錄點(diǎn)擊查看簡(jiǎn)歷時(shí)投遞狀態(tài)從待處理更新為已查看。企業(yè)看完簡(jiǎn)歷如果覺(jué)得合適可以填寫(xiě)面試時(shí)間、面試地點(diǎn)和備注信息發(fā)起面試邀約。此時(shí)系統(tǒng)要做的事情是更新投遞記錄狀態(tài)為面試邀約同時(shí)給學(xué)生發(fā)送站內(nèi)消息通知。這個(gè)“投遞-查看-邀約”的閉環(huán)用數(shù)據(jù)庫(kù)事務(wù)確保數(shù)據(jù)一致性。每一個(gè)狀態(tài)流轉(zhuǎn)接口我都會(huì)在Controller層做參數(shù)校驗(yàn)Spring Validation在Service層做狀態(tài)冪等校驗(yàn)盡可能減少臟數(shù)據(jù)。另外站內(nèi)消息這塊不要做得太重。學(xué)生和企業(yè)之間的溝通初期版本用簡(jiǎn)化的狀態(tài)通知就夠了不做實(shí)時(shí)聊天。如果要做聊天功能復(fù)雜度會(huì)翻倍需要上WebSocket。等核心招聘流程跑通了再加這才是合理的迭代節(jié)奏。4. 核心配置與部署實(shí)操記錄4.1 從零到一SpringBoot環(huán)境搭建與配置項(xiàng)目要用起來(lái)第一步是環(huán)境準(zhǔn)備。我以Windows開(kāi)發(fā)環(huán)境為例把整個(gè)環(huán)境的搭建過(guò)程完整跑一遍。本機(jī)需要安裝的工具有JDK 8及以上版本、Maven 3.6、MySQL 5.7或8.0、IDEA編譯器、Navicat或命令行工具。JDK方面我建議安裝JDK 8雖然現(xiàn)在有不少新項(xiàng)目起步就是JDK 17但考慮到畢業(yè)設(shè)計(jì)和課程設(shè)計(jì)場(chǎng)景的兼容性JDK 8的生態(tài)最成熟遇到問(wèn)題網(wǎng)上都有現(xiàn)成解決方案。創(chuàng)建一個(gè)SpringBoot項(xiàng)目有兩種方式一種是去Spring Initializr網(wǎng)站生成然后導(dǎo)入IDEA另一種是直接在IDEA的Spring Initializr引導(dǎo)界面創(chuàng)建。選SpringBoot 2.7.x版本比較穩(wěn)妥不要一上來(lái)就追最新的SpringBoot 3.x因?yàn)?.x版本要求JDK 17且部分依賴(lài)的命名和配置方式有變化遷移成本不低。parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.18/version relativePath/ /parent創(chuàng)建項(xiàng)目時(shí)勾選的核心依賴(lài)有Spring Web、MyBatis-Plus需要手動(dòng)加入坐標(biāo)、MySQL Driver、Lombok、Validation。在pom.xml中Lombok依賴(lài)需要配置annotationProcessorPaths否則會(huì)出現(xiàn)注解不生效的問(wèn)題。配置文件里最重要的就是MySQL連接和日志配置。注意MySQL 8.0和5.7的驅(qū)動(dòng)類(lèi)名有區(qū)別8.0用com.mysql.cj.jdbc.Driver而且必須配置時(shí)區(qū)serverTimezoneAsia/Shanghai否則默認(rèn)時(shí)區(qū)是美國(guó)時(shí)區(qū)查出來(lái)的時(shí)間與本地不一致會(huì)讓你懷疑人生。4.2 關(guān)鍵配置逐項(xiàng)說(shuō)明數(shù)據(jù)庫(kù)連接與MyBatis-Plus設(shè)置把a(bǔ)pplication.yml中幾個(gè)關(guān)鍵配置項(xiàng)拎出來(lái)單獨(dú)說(shuō)一說(shuō)都是實(shí)操中驗(yàn)證過(guò)的重要點(diǎn)位。spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/recruitment?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: 123456 jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: Asia/Shanghai mybatis-plus: mapper-locations: classpath:mapper/*.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true global-config: db-config: id-type: auto數(shù)據(jù)源配置里的useUnicodetrue和characterEncodingutf8這兩個(gè)參數(shù)直接決定中文能不能正常存入數(shù)據(jù)庫(kù)缺了會(huì)出現(xiàn)亂碼。jackson的時(shí)間格式配置同樣不能漏否則前端拿到的日期是時(shí)間戳數(shù)字還得額外寫(xiě)工具轉(zhuǎn)換。MyBatis-Plus的map-underscore-to-camel-case必須設(shè)為true這樣才能把數(shù)據(jù)庫(kù)的create_time字段自動(dòng)映射到實(shí)體類(lèi)的createTime屬性。id-type設(shè)為auto表示主鍵自增這是最省事的方案。為了調(diào)試方便開(kāi)發(fā)階段我建議把SQL日志輸出到控制臺(tái)。log-impl設(shè)置為StdOutImpl后每次執(zhí)行SQL都會(huì)打印完整語(yǔ)句和參數(shù)排查問(wèn)題效率翻倍。4.3 前端聯(lián)調(diào)Vue項(xiàng)目打包并整合進(jìn)SpringBoot的快捷路徑這個(gè)系統(tǒng)是前后端分離的開(kāi)發(fā)階段前端用Vue的devServer代理轉(zhuǎn)發(fā)請(qǐng)求到后端接口但是到了部署階段前后端要能用一個(gè)端口跑起來(lái)。最省事的方式是把前端項(xiàng)目打包后的dist目錄直接放到SpringBoot的src/main/resources/static目錄下然后重新打包后端項(xiàng)目這樣SpringBoot會(huì)自動(dòng)將靜態(tài)文件作為資源服務(wù)。訪問(wèn)http://localhost:8080就直接打開(kāi)前端頁(yè)面后端接口在同一個(gè)端口下用/api前綴區(qū)分無(wú)需額外配置Nginx。但這里有幾個(gè)注意點(diǎn)需要提前處理好??缬騿?wèn)題開(kāi)發(fā)階段前端在8080端口、后端在8081端口必須處理后端跨域配置。我一般寫(xiě)一個(gè)全局CORS配置類(lèi)允許本地開(kāi)發(fā)環(huán)境的所有來(lái)源跨域Configuration public class CorsConfig { Bean public CorsFilter corsFilter() { CorsConfiguration config new CorsConfiguration(); config.addAllowedOriginPattern(*); config.addAllowedHeader(*); config.addAllowedMethod(*); config.setAllowCredentials(true); UrlBasedCorsConfigurationSource source new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration(/**, config); return new CorsFilter(source); } }實(shí)際聯(lián)調(diào)中還有另一個(gè)常見(jiàn)問(wèn)題前端頁(yè)面是打包后的靜態(tài)文件但頁(yè)面里的接口請(qǐng)求路徑是相對(duì)路徑部署到Tomcat二級(jí)目錄時(shí)會(huì)出現(xiàn)路徑錯(cuò)亂。解決辦法是在前端的axios配置中設(shè)置baseURL為/api然后SpringBoot里配置context-path為空或者直接使用根路徑部署。4.4 項(xiàng)目啟動(dòng)與部署注意事項(xiàng)啟動(dòng)項(xiàng)目有兩種方式。開(kāi)發(fā)階段直接IDEA里運(yùn)行主類(lèi)生產(chǎn)環(huán)境部署推薦把項(xiàng)目打成JAR包使用java -jar命令啟動(dòng)。打JAR包前要確認(rèn)pom.xml中已經(jīng)配置了SpringBoot的Maven插件否則會(huì)打出普通JAR包直接運(yùn)行會(huì)報(bào)“沒(méi)有主清單屬性”。mvn clean package -DskipTests java -jar recruitment-system-1.0.0.jar --server.port8080啟動(dòng)之后第一次進(jìn)入系統(tǒng)時(shí)注意看日志。SpringBoot啟動(dòng)時(shí)打印的端口、數(shù)據(jù)源、MyBatis-Plus配置等信息如果發(fā)現(xiàn)數(shù)據(jù)源連接失敗優(yōu)先檢查MySQL服務(wù)是否啟動(dòng)、賬號(hào)密碼是否正確、數(shù)據(jù)庫(kù)是否已創(chuàng)建并導(dǎo)入SQL文件。這些基礎(chǔ)問(wèn)題排查完系統(tǒng)一般就能正常跑起來(lái)了。5. 實(shí)操中常見(jiàn)的坑與排查技巧實(shí)錄5.1 數(shù)據(jù)庫(kù)連接失敗與字符集問(wèn)題這是新手最容易卡住的一關(guān)?,F(xiàn)象是項(xiàng)目啟動(dòng)時(shí)報(bào)Communications link failure或者HikariPool連接池創(chuàng)建失敗??赡艿脑蛴蠱ySQL服務(wù)沒(méi)啟動(dòng)、端口不是默認(rèn)的3306、賬號(hào)密碼錯(cuò)誤、數(shù)據(jù)庫(kù)不存在。另一種情況更隱蔽數(shù)據(jù)庫(kù)表創(chuàng)建好了但查詢(xún)中文條件時(shí)結(jié)果為空。這通常是因?yàn)閿?shù)據(jù)庫(kù)字符集和連接字符串字符集不一致。我遇到過(guò)MySQL數(shù)據(jù)庫(kù)使用的是latin1字符集中文插入后變成亂碼。排查方法是執(zhí)行SQL查看字符集SHOW VARIABLES LIKE character%;如果是latin1需要修改數(shù)據(jù)庫(kù)和數(shù)據(jù)表的字符集為utf8mb4。utf8mb4比utf8更完善支持存emoji表情是現(xiàn)在的標(biāo)準(zhǔn)選擇。5.2 文件上傳大小超限問(wèn)題開(kāi)發(fā)時(shí)上傳PDF簡(jiǎn)歷調(diào)用接口直接報(bào)MultipartException: The field file exceeds its maximum permitted size of 1048576 bytes。這是因?yàn)镾pringBoot默認(rèn)單文件大小限制為1MB多文件請(qǐng)求體限制為10MB。配置文件中把限制調(diào)大即可spring: servlet: multipart: max-file-size: 10MB max-request-size: 20MB注意調(diào)整之后要重啟項(xiàng)目。如果項(xiàng)目部署在Nginx后面Nginx的client_max_body_size也要同步修改否則請(qǐng)求根本到不了后端。5.3 JWT登錄失效與重復(fù)登錄問(wèn)題JWT方案最常見(jiàn)的兩個(gè)問(wèn)題一是用戶(hù)退出登錄后token還能繼續(xù)使用二是修改密碼后舊token依然有效。這兩個(gè)問(wèn)題本質(zhì)上都是無(wú)狀態(tài)登錄方案的天然缺陷。輕量級(jí)解決方案有兩種思路。第一種是把JWT的token版本號(hào)存入Redis每次登錄生成新版本號(hào)退出或改密時(shí)刪除對(duì)應(yīng)token。這個(gè)方案需要額外引入Redis依賴(lài)。第二種更輕量退出登錄的操作在前端刪掉localStorage里的token即可后端維持無(wú)狀態(tài)改密后強(qiáng)制前端跳轉(zhuǎn)登錄頁(yè)重新登錄。項(xiàng)目初期我建議用第二種代碼最少邏輯清晰。等到系統(tǒng)并發(fā)量上來(lái)了再引入Redis做token的統(tǒng)一管理。5.4 IDEA中SpringBoot項(xiàng)目導(dǎo)入與依賴(lài)下載失敗跑不起來(lái)附帶的源碼拿到之后導(dǎo)入IDEA最常見(jiàn)的報(bào)錯(cuò)是Maven依賴(lài)下不下來(lái)pom文件一直飄紅。原因一般兩個(gè)本地倉(cāng)庫(kù)沒(méi)有對(duì)應(yīng)依賴(lài)包且Maven中央倉(cāng)庫(kù)訪問(wèn)慢或者IDE使用的Maven配置不對(duì)。解決步驟打開(kāi)IDEA的File - Settings - Maven確認(rèn)Maven home path指向自己安裝的Maven不要用IDEA內(nèi)置的有時(shí)候緩存會(huì)出問(wèn)題確認(rèn)User settings file指向Maven的conf/settings.xml文件。然后在settings.xml中配置阿里云鏡像倉(cāng)庫(kù)下載速度會(huì)有質(zhì)的提升。mirror idaliyunmaven/id mirrorOf*/mirrorOf name阿里云公共倉(cāng)庫(kù)/name urlhttps://maven.aliyun.com/repository/public/url /mirror配置完鏡像之后執(zhí)行Maven的clean命令再reload項(xiàng)目依賴(lài)就會(huì)嘩嘩往下拉。5.5 端口被占用與項(xiàng)目啟動(dòng)沖突啟動(dòng)SpringBoot項(xiàng)目時(shí)提示Port 8080 was already in use。這個(gè)問(wèn)題的排查最快的方式是查端口占用進(jìn)程netstat -ano | findstr 8080 taskkill /F /PID 進(jìn)程號(hào)如果不想每次啟動(dòng)前手動(dòng)殺進(jìn)程直接在application.yml里把server.port換成8081或者其他常用端口徹底避開(kāi)沖突。5.6 跨域問(wèn)題前端調(diào)用后端接口報(bào)No Access-Control-Allow-Origin如果你從Vue開(kāi)發(fā)服務(wù)器比如localhost:5173直接訪問(wèn)后端接口瀏覽器會(huì)攔截跨域請(qǐng)求控制臺(tái)報(bào)錯(cuò)CORS。這個(gè)問(wèn)題非常高頻我這里再?gòu)?qiáng)調(diào)一遍后端必須配置CORS過(guò)濾器或使用CrossOrigin注解。我見(jiàn)過(guò)很多人在網(wǎng)上搜了一堆妥協(xié)方案比如強(qiáng)行關(guān)閉瀏覽器的跨域限制這非常不可取只在本地調(diào)試勉強(qiáng)能跑部署上線必炸。正確的做法是后端在網(wǎng)關(guān)層或全局配置類(lèi)中統(tǒng)一處理跨域并只允許可信的域名來(lái)源。上面CorsConfig的代碼直接可用配置之后一般不會(huì)再報(bào)跨域問(wèn)題。6. 項(xiàng)目二次開(kāi)發(fā)與功能擴(kuò)展建議源碼拿到手之后下一個(gè)問(wèn)題往往是“我想要的功能源碼里面沒(méi)有該怎么改”。從實(shí)際經(jīng)驗(yàn)出發(fā)我給大家?guī)讉€(gè)低風(fēng)險(xiǎn)高回報(bào)的二次開(kāi)發(fā)方向。數(shù)據(jù)看板在管理端增加一個(gè)招聘數(shù)據(jù)統(tǒng)計(jì)面板用ECharts可視化展示每日投遞量、職位發(fā)布量、學(xué)生注冊(cè)量趨勢(shì)。這些統(tǒng)計(jì)數(shù)據(jù)都是現(xiàn)成的寫(xiě)幾個(gè)COUNT加GROUP BY的SQL再通過(guò)接口把聚合結(jié)果返回前端加上圖表組件就夠了。畢業(yè)生答辯時(shí)這塊功能非常加印象分。簡(jiǎn)歷模板多樣化學(xué)生端提供2到3套簡(jiǎn)歷模板讓用戶(hù)選擇布局和配色。實(shí)現(xiàn)思路是將簡(jiǎn)歷內(nèi)容拆成結(jié)構(gòu)化JSON保存前端根據(jù)JSON數(shù)據(jù)渲染對(duì)應(yīng)模板。這個(gè)功能不涉及后端業(yè)務(wù)邏輯的改動(dòng)只增加一個(gè)模板字段即可。企業(yè)信用評(píng)價(jià)在職位詳情頁(yè)增加企業(yè)評(píng)分展示學(xué)生投遞或面試后可以對(duì)企業(yè)和職位評(píng)分。這個(gè)功能要設(shè)計(jì)好評(píng)價(jià)維度和防惡意刷評(píng)邏輯初期可以做簡(jiǎn)化版只保留總體評(píng)分。郵件通知面試邀約和錄用通知除了站內(nèi)消息外額外發(fā)送郵件提醒。SpringBoot中發(fā)送郵件非常方便引入spring-boot-starter-mail依賴(lài)配置郵箱SMTP參數(shù)調(diào)用JavaMailSender即可。從我個(gè)人維護(hù)這類(lèi)項(xiàng)目的體會(huì)來(lái)看一個(gè)畢業(yè)設(shè)計(jì)級(jí)別的招聘系統(tǒng)源碼本身已經(jīng)能把核心業(yè)務(wù)鏈路走通真正拉開(kāi)差距的是數(shù)據(jù)完整度、細(xì)節(jié)體驗(yàn)和能否自圓其說(shuō)的設(shè)計(jì)文檔。二次開(kāi)發(fā)選一個(gè)合適的點(diǎn)做深做透比堆砌十個(gè)半成品功能更值得。7. 寫(xiě)在最后的一點(diǎn)實(shí)際體會(huì)做這個(gè)SpringBoot大學(xué)生招聘系統(tǒng)的整個(gè)實(shí)踐過(guò)程我最大的收獲倒不是寫(xiě)了多少行代碼而是想明白了“一個(gè)業(yè)務(wù)系統(tǒng)跑通比跑完美更重要”這個(gè)道理。招聘領(lǐng)域本身是個(gè)天然的復(fù)雜業(yè)務(wù)場(chǎng)景涉及三方角色、狀態(tài)流轉(zhuǎn)、文件交互如果一開(kāi)始就想著把所有功能都做成大而全的產(chǎn)品項(xiàng)目大概率爛尾。如果你正在拿這套源碼做畢業(yè)設(shè)計(jì)或課程設(shè)計(jì)我的建議是先把項(xiàng)目完整跑起來(lái)逐條梳理業(yè)務(wù)鏈路看清楚每一個(gè)表字段的來(lái)龍去脈然后再動(dòng)手改代碼。改動(dòng)的時(shí)候每改一個(gè)功能點(diǎn)都要考慮會(huì)不會(huì)影響相鄰狀態(tài)流轉(zhuǎn)。我見(jiàn)過(guò)不少同學(xué)改了學(xué)生端簡(jiǎn)歷字段結(jié)果企業(yè)端查看簡(jiǎn)歷的頁(yè)面報(bào)空指針就是沒(méi)有全局梳理數(shù)據(jù)依賴(lài)導(dǎo)致的。最后分享一個(gè)小技巧在IDEA中全局搜索TODO注釋源碼作者往往會(huì)在關(guān)鍵業(yè)務(wù)節(jié)點(diǎn)留下注釋說(shuō)明這些注釋是你快速理解整個(gè)項(xiàng)目邏輯的捷徑。把每個(gè)TODO對(duì)應(yīng)的業(yè)務(wù)場(chǎng)景理清整個(gè)系統(tǒng)的設(shè)計(jì)思路就會(huì)像拼圖一樣在腦子里完整呈現(xiàn)出來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久美国毛片| 香蕉黄色一级视频| 少妇高潮99p| 亚洲āv网址在线观看| 久操在97| 欧美少妇第一页| 欧美日韩香蕉| 黄页网站成人免费| 高树玛利亚无码流出| 日韩成人私密一级精品av| 91久久堂| 91AV天美在线视频| 国产熟女二区| 四月丁香婷婷| 激情六月婷婷| 日韩av一级黄片| 91色综合| 野狼福利社区| 日韩BBN| 亚洲中文字幕乱码无码一区二区| 91操操| 强奸国产精品视频| 在线观看成人性爱免费小视频| 国产后入式在线观看| 96精品久久久久中文字幕| 秋霞一级视频在线观看免费| 欧美精品一区二区少妇免费A片 | 日产操逼| 啊啊啊啊啊啊啊啊视频| 综合网欧美| 亚洲色图日韩丝袜制服一区二区五月在线| 五十路成人在线视频二区三区| 久久夜夜夜夜| 极品美女嘿咻| sewuyueav| 亚洲蜜臀精品视频久久| 亚洲色色探花| 欧美麻豆成人同性GⅤ在线| 日韩无码极品| 中文一区二区三区影院| 白丝AV| 日韩欧美~中文字| 91无码人妻| 97超碰逼| 精品人妻一区二区乱码一区二区| 中文字幕诱惑制服人妻丝袜美丝袜美| 99国内熟女露脸视频| 中文字幕十五区| 夜夜操天天肏| 91麻豆一二三区| 热热色色综合| 大香蕉啪啪啪| 91丨九色丨东北熟女| 久久精品性| 黄色网址在线免费观看| 抽插无码高清一区| 婷婷激情啪啪| 亚洲另类色图片| 亚洲熟女国产综合另类| 91老熟女91老女人| 国内毛片欧美香蕉精品| 亚洲欧洲日韩天堂av| 岛国免费黄色网址| 99re这里只有精品中心播放| 精品无吗久久| 青青草日韩免费观看高清在线| 青青草乱入乱欲视频在线观看| 91天天爱| 91美女视频在线观看| 性天堂| 麻豆国产精品午夜视频| 激情网色| 天天干天天爽| 日韩青久久| 淫荡网址| 无码日韩人妻av一| 91夜夜蜜桃臀1区2区3区| 91天天爱| 欧美内射少妇| 91情色在线| 蜜臀久久99精品久久久久久-DVD原版全| 校园春色五月天| 豆花视频操逼网址| 国模吧 一区二区三区| 夜夜爽33333| 欧美性暴力猛交XXXX| 丝袜狠狠草尤物 91| 男人的天堂com| 精品人妻中文字幕高清| 久99热| 操逼精品视频| 99夜夜操| 在线人人人人人人精品超| 午夜免费视频1000| 老色鬼成人精品视频下载大在线观看| 男人天堂网址| 日韩有码一区三区| 久久久久久人| 青娱乐国产盛宴视频| 69超碰综合| 少妇色综合| 毛片一区二区| 日本人体九九九九九九| 爱媛媛久久国产福利| 91丨国产丨白浆| 日本久久久久久久久久| 欧美性爱一级操| 日本不卡二三区| 91精品91久久久久77777俄罗斯老妇姓x| 精品国产丝袜一区二区三区乱码| 亚洲熟女综合| 人妻精品视频一区二区三区 | 久草五月| 亚洲精品熟妇1区2区3区。| 大学生口爆吞精| 久操B网| 99999久久精| 天天日B夜夜干B时时操B| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 女同在线视频一区| 九九九偷拍| 人人操,操人人| 曰本熟女视频| 国产精品999zyz| 亚州欧美综合| av日韩在线观看电影| 欧美国产一区二区三区麻豆传媒| 日韩激情啪啪啪| 蜜桃中文字日产乱幕4区| 91人妻在线视频| 青娱乐导航AV| 国产操操日韩三级黄| 1204av韩国| 亚洲成人性| 大香蕉一人在线| 无码av永久免费专区网站| 久久少妇人妻| 久久九九国产精品| 亚洲天堂电影网99999| www国产天美久久久| 天天摸天天舔天天操| 无码直播久久久| 99天天超碰| 国产精品日韩在线一区| 四虎在线免费视频| 五月婷婷丁香| 国产精品人人爽人人做可爱福利| 99精品人人爽| 丁香五月天啪啪| AV天天在线观看| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 久久熟妇五十路一区| 26uuu性| 成人草草视频| 欧美久久婷婷| 五月婷婷丁香中文字幕| 99热99re6国产在线播放| 日本午夜久久电影| 超碰欧美97| 嫩草 人人网精品| 91足交| sewuyueav| 厕所偷拍在线| 91高清无码下载| 九热久| 在线视频一区二区传媒| 美中日韩无码| www.91人妻.com| 91网站18+| 女人爽到高潮久久久| 人人操人人操人人操人人操人人操人人人11.CM | 国产精品 视频| 国产精品久久久久久久免牛肉蒲团 | 天天综合网~91| 嗯嗯嗯嗯啊啊啊好紧好大| 一区操逼日比视频| 97操| 亚洲情色 自拍| 亚洲情色在线| 超碰av人人人| 久久鲁干| 日本免费一级AAA大片器| 欧美日韩亚洲天堂| 久久久久久中文| 日韩AV一区二区三区三州三州| 久久直播国产| 国产亚洲精品久久久久小| 男人天堂导航| 亚热日本熟女| 欧美18禁91| 99ri精品| 自慰白浆在线观看| www国产天美久久久| 久久精品国产亚洲AV清纯| 久操免费电影| 日韩中文9| 超碰97最新人妻| 欧美色综合网| 五十路一区无码| 精品无码人妻一区二区免费蜜桃| 五月天激情小说| 国产动漫操逼视频| 99久久婷婷国产综合| 人妻一区视频| 久操网视频| 岛国1区2区3区在线观看| 亚洲中文字幕一区二区| 天天干夜夜操一区二区| 欧洲自拍第一页| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美亚洲清纯| 日韩中文9| 国产精品3| 99热日| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 性欧美另类高清| 夜夜草网站| 国产高潮AA片免费看| 看日韩操逼| 亚洲国产尤物yw在线观看| 26uuu欧美日韩| ,成人免费啪啪视频| 男啪女色黄无遮挡免费观看| 91综合在线| 最近2018中文字幕在线高清第一页| 亚洲成a人v欧美综合天堂下载| 狠狠操狠狠操操| 欧美综合自拍| 人干人人人操人人摸| 久草网站免费在线观看| 日韩国产中文字幕| 五月天综合网| 性爱AV天堂| 色偷偷人人玩人人舔人人操人人摸人人爽| 999久久芭蕾| 东京热毛片调教| 亚洲高清91| 亚洲无码 国产无码| 日韩精品中文字幕人妻| 国产高清成人mv在线观看| ?亚洲伊人伊成久久人综合网| 色色九区| 亚洲十八禁止| 九九免费影片| 亚洲无码偷拍| 欧美东京热精品A∨| 婷婷丁香成人| 亚洲综合有玛| 精品人妻一区二区三区蜜桃视频| 精品一区二区三区丰满熟女-亚洲欧美一区| 亚洲第一页色网| 伊人国产成人av网站| 久久五十路熟女人妻| A片 AV一级在线播放观看免费| 操逼日韩无码 | 大色综合网| 婷婷午夜| 99蜜月精品久久| 少妇一区二区三区| 97碰在线视频| 人妻素股| 双插性欧美一二三区| 色五月婷婷网| 欧美姓爱综合网| 狠狠操夜夜| 久久久影院| 呻吟 欧美 日本 中出| 欧美性xxxxx狂欢| 亚洲成人性爱在线观看| baiduhicn.com。| 91麻豆天美传媒在线| 色狠狠 - 百度| 丝袜熟女2P| 欧美青青草视频| A级毛片在线看免费| 91宗合网| 亚洲欧美国产其他二区| 97视频新免费| 高清一区AV无码| 精品人妻一区二区三区-国产| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 免费视频a级毛片免费视频| 99re这里只有精品中心播放 | 亚洲中文一区二区三区| 97超碰天天爱天天爱| 女生看匆91网站| 一本一道vs波多野结衣| 久久天堂网| 久久美女国产| 99久在线精品99re8热视频在线| 色在线视频导航| 在线 制服丝袜中出 人妻| 啊啊啊久久久视频| 亚洲码专区| 乱色老一区二区三区的观看方式 | 久久日韩毛| 600国产精品视频| 黄色片大香蕉| 中文字幕一区av| 四虎免费在线播放| 色婷婷五月天| 淫荡网址| 青青草久久在线| 人人做人人妻人人夜视频| 亚洲性感丝袜诱惑在线观看| 一级久久久久久久久久久| 亚洲啪啪啪啪视香蕉| 超碰色大香蕉| 国产理论视频在线播放| 91美女国产在线| 破苞ⅩXXX性无码动漫无码| 日本中文字幕一区| 人成午夜免费大片| 91亚洲人| 草蕉影视亚洲无码| 欧美aaaaaaa| 亚洲素人综合| 爽爽淫人网| 极品色| 天天弄欧美| 中文字幕日韩人妻视频一区二区三区| 久久国产999| 在线99热| 日本1区2区不卡视频| 天美传媒av一区二区| 成人性爱美曰韩| 狠狠躁久久躁| 中文字幕免费在线观看| 欧洲性爱无码区| 亚洲成人精品久久久| 久久亚洲AV无码专区国产精品| 夜夜操夜夜高潮夜夜爽国产精品区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 亚洲天堂另类美腿| 日韩国产不卡在线视频| 91美女精品| 色一射色一射| 国产自偷自拍一区| 欧美日韩啪啪电影| 一本色道久久综合精品婷婷| 啊啊啊97视频| 婷婷99狠狠| 国产精品久久久无码aV去| 日日碰视频网| 欧美色997| 色婷婷香蕉| 超碰日韩人妻| 青草成人免费视频一COm| 97碰碰日本乱偷人妻中文的| 校园春色制服丝袜中文字亚洲| 草草影院最新网址| 亚洲欧美日韩中文播放| 国产精品69久久久久久久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 粉嫩久久久久| 91亚洲欧美色图| 九色PORNY9l原创自拍| 囯戸精品高潮呻吟旡码| 久久久久久九九九九九| 97鸡把在线视频| 日han少妇无码| 欧美日不卡| 操逼视频免费日韩无码| 国产高清无码一区三区二区| 日韩在线欧美精品一区二区| 亚洲丝袜综合| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 性爱1区| 国产欧美在线观看免费观看| 91性网| 国产精品色| 亚洲鸥美色图| 色情婷婷久久五月天| 成人日韩中文字幕| 日韩精品人妻中文字幕久久久| 98一区二区精品| 亚洲性天堂| 顶级少妇BT天堂| 麻豆精品天美| 久久国产乱子伦精品免费女人| 久久99干一本高清| 天天日天天操VV| 中文字幕版| 久久国产99精品72福利| 久久黄黄| 日韩人妻资源在线看| 丁香五月天激情网站| 岛国黄| 日韩欧美俄罗斯A片| 草莓精品视频在线免费观看| 大香蕉乱级| 亚洲本色精品一区二区久久| 97香蕉网| 91免费看一区二区三区| 国产精品人妻免费精品| 人妻一区二区三区四区视频| 亚洲天天综合| 亚瑟国产精品久久无码| 亚洲无吗在线视频| 欧美成人午夜免费福利785| 日韩丝袜二区| 色人久久| 久久国产精品一级二级三级| 亚洲另类久操网| 一区二区久久天天干狠狠| 校园春色之综合网| 一直超碰| 夜夜嗨一区二区三区直播内容| 中文字幕视频二区| 婷婷操视频| 欧美日日操| 岛国艾薇凹凸视频天堂| 国产成人网| 免费视频在线观看啊啊啊啊啊| 亚洲情色1区| 欧美97在线观看| 丝袜美腿射精91| 天美久久久久| 人妻啪| 青青草天天亲夜夜操网| 偷拍欧美激情| 一区二区亚州激情久婷婷欧美| 亚洲色棕合| 国产性爱强奸乱伦大全| 日韩乱伦影音先锋| 日本三级久| 日本五十路在线| 欧综合网| 日本成人电影资源网| 热九九精品| 天堂麻豆天美| 中文字幕丝袜| 日韩欧美一级特黄大片| 九色 人妻 大香蕉| 天天碰久久入| 亚洲欧美日韩精品久久久一区二区| 狠狠狠狠狠| 日本大香蕉| 欧美色乱| 国内三级自拍小视频在线观看| 久久色人体| 日韩丨制服丨中文|在线| 囯产精品久久久久久久久久二区三区| 国产一级不卡在线观看| 国产精品乱人伊人网| 色婷婷一区二区三区久久午夜| 激情文学88| 久精品无码av一区二免费国产在线观看| 亚洲综合97中文网| 久久久九| 再深点灬舒服灬太大了好硬好爽| www被窝色com| 中日亚韩免费视频| 亚洲综合影片| 九九综合九九综合| 亚州宗合另类| 一起草高清无码| 看一级黄色视频| 国产后入内射| 成人aⅴ一区二区三区| 91在线美女| 婷婷综合伊人一区| 九九热精品| 少妇大屁屁| 伊人黄色视频免费观看| 超碰这里有精品| 无码黑人精品一区二区三区三| 嗯嗯嗯不要不要免费视频| 久久黄人人爽视频| 黑丝少妇| 91一区二匹| 午夜免费视频1000| 午夜一区| 日本高清电影欧美色图| 国产99热| 久久啊哟| 无码高清操逼网址| 亚洲激情天堂网| 韩三级a视频在线观看| 亚洲限制级在线| 色欲Av人妻精品一区二| 久久久久亚洲精品| 制度丝袜99| 茄子社区国产精品| 五月婷婷基地| 国产精品网址| 久久精品一区| 欧美老妇曰批的视频| 欧洲小说色图视频另类| 人、人、摸,人、人、草| 97欧美色| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 日本三级R| 78精品在线| 麻豆人妻精品一区二区| 亚洲无码电影久久久| 久久精品72| 殴美在线AⅤ| 久久高潮妇女视频| 久草婷婷| 中文字幕 国产 精品 | 天堂九九九九九九九九九| 日韩av无码网站| 国产青视频| 成人网址在线观看| 91被操| 青操影院| 久久9亚洲| 亚洲AV性爱电影| 中文字幕一区二区无码成人 | 国产一区二区三区高清视频| 色综合超碰超| 国产原创精品| 国产精品香蕉热久久新品| 久久婷婷成人综合色怡春院| 久久久久七视频| 牛黄色久午久| 色哟哟AⅤ| WWW美腿丝袜香蕉中文| 97干日韩| 第一高清av中文字幕| 欧美91精品国产自产| 国产妇女精品视频青青草| 亚洲综合五月天| 成人无码在线视频网站| 欧美成人精品欧美一级乱黄一区二…| 操b网站亚洲无码| 亚洲另类在线观看| 人人操人人摸人人看人人干| 无码精品久久久久久亚洲| 欲女人妻性色av| 人人手机欧洲亚洲国产人妻| 成人国产精品三级A片| 中字幕人妻一区二区三区| 清纯唯美第一页| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 中文字幕性感少妇av| 亚洲人成网站7777| 天天干18禁| 欧美九一精品久久久熟妇| 日韩精品人妻中文字幕有码午| 人成午夜免费大片| 成人性爱美曰韩| 久久久一区二区三区三州| 日韩啪啪视频| 日本幼女18+| 亭亭在线资源| 亚洲熟久久| 深爱伊人影院| 亚洲精品不卡一二三区| 操学生天天| 少妇99成人麻豆| 丁香六月天| 九九av| 久久98| 九色婷婷| 亚洲综合色网| 久热这里| 亚洲美女精品| 欧亚久久偷拍视频| 久久啊啊啊视频| 国产av热热色| 久久偷偷色综合蜜桃| 日本男人插女人的逼黄色| 亚洲色图a| 美女主播色欲91抠b在线播放| 国产黄色动态精品| 欧美综合在线91| 好舒服视频| 亚洲综合校园春色| 夜夜做夜夜爽精品视频| 91蜜桃传媒精品久久久一区二区| 97操97干| 中文字幕欧美丝袜07资源| 免费视频97| 免费无码婬片AAAA片直播色戒| 啊啊啊好想要| 最新亚洲风情电影| 精品一区二区三区四区外站| 亚洲久久东京热一二三四五区视频| 亚洲色图第一页| 极品人妻少妇综合| 亚洲欧美不卡线| 家庭乱伦麻豆| 成人激情无码在线视频| 中文字幕精品资源在线| 欧美操逼一二三区| 中文字幕片| 精品一二三区四视频| 久久华人网| 91一区二匹| 国产精品4p在线观看| 国产亚洲精品农村妇女| 日韩999| 精品久久久久9999| 激情小说亚洲视频| 99精品人妻| 亚洲天堂中文字| 思思热在线| 国产传媒1234区| 精品一区二区2| 久久夜夜| 丝袜熟女一区二区三区| 按摩中文字幕| 欧美 日韩第一性色| 91在线免费精品视频| 国产中文字幕曰本毛片| 国产精品2020| 精品人妻一区二区三区四区| 交换娇妻呻吟声不停中文字幕| 色丁香五月婷婷| 美女毛片999| 后入国产| 中文字幕性感少妇av| 97硬碰| 91熟女在线| 欧美日韩香蕉| 白丝少妇一区二区| 日韩无码人妻| 久久黄黄| 久久久偷拍| 一区二区三区激情在线观看| 色大师网站www永久网站视频| 青青青在线高清视频在线一二三四区 | 一区二区三区视频国产免费| 91人人爽人人爽| 国产精品伦理| 91精品丝袜在线观看| 亚洲欧美一区二区不卡视频播放| 亚洲国产丝袜熟女av| 婷婷丁香五月综合| 久操视频在线| 国产精品激情久久久久久久| laoshunv91| 欧美日韩国产一区二区小黄片大全| 婷婷99狠狠躁天天躁| 国产热av| 亚洲一区二区精品福利| 夜夜骑操视频| 在线综合色| 精品久久大胆人体| 日韩欧美成人性爱在线| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 免费强奸av| 人妻丝袜肏逼| 综合免费无码中文| 色爽——AV| 思思热影视| 国产亚热在线久久| 亚洲最大网站av| 熟妇高潮二区三区| 性色av婷婷久久一区二区点复制| 久久一二三四五六七八九区| 麻豆啪啪啪视频| 精品丰满熟妇人妻一区| 日本在线不卡一二区| 9精品久久久久| www.婷婷六月天| 中文久久久| 亚洲AO在线| 26UUU欧美激情一区二区| 久久久99999久网站| 国产日逼视频| 欧美白嫩女HD| 熟女人妇一区二区三区| 啊嗯嗯啊好大好爽| 久热伊人| 日韩一卡二卡三卡| 日本少妇va7777| 国产精品不卡一区二区三区av| 99热导航| 久久成人国产| 久久精品无码专区| 日本天天吊| 日逼视频日本| 久久少妇人妻| 密桃99999| yiqicaoav| 99国产精品免费| 一区二区视频在线播放| 国产视频第二页| 国模一区二区三区| 精品中文字幕一区二区| 99这里都是精品| 日本成人A片网站| 午夜九九| 欧美不卡在线美女| 亚洲成人免费中文字幕| 亚洲丝袜二区在线| 91殴美大片| 殴美在线AⅤ| 女生91网站| 绑缚麻绳人妻寝取完整版| 97人人模人人爽人人| 91精品网站| 青青草男人天堂| 色小视频蜜乳| 免费观看性欧美一级| 极品AV网站在线观看| 韩国久久97| 欧 美 自 拍 偷 拍| 97伊人| 一区麻豆 高清中文字幕| 久久久 国产精品| 97综合久久| 中文字幕在线观看网页| 久久艹逼视频| 性饥渴少妇av无码毛片| 超碰在线91| 九九九久久久久| 亚洲另类久操网| 99久久久er直播网址| 日韩欧美性吧婷婷乱伦大香蕉| 男人网站婷婷| 久久蜜桃综合网| 熟女视频久久| 中文字幕aⅴ在线视频| 久久老女人| 国产怡红院在线| 男人的天堂VA在线| 冬京热男人的天堂| 97色色婷婷| 一,爱啪啪,在线免费视频| 热99这里有精品综合久久 | 东京日日夜夜| 亚洲av综合色区无码一| 久久久精品中文字幕爱豆| 97视频免费在线| 亚洲日韩久久精品一区| 91 国产丝袜在线放观看| 成人在线日韩| www.国产高潮精品| 午夜福利视频在线一区| 天天视频网站黄| 国产精品一区二区手机看片| 男人天堂2019| 97网色| 久久精品国产97欧美精品亚洲| 亚洲色图 综合| 天美精品一区二区三区四区在线观看| 久久国产精品一级二级三级| 色婷婷五月综合激情中文字幕| 日本人妻中文字幕精品| 97这里只有精品| 蜜臀久久99精品久久久久久成人小说| 91亚洲丝袜| 加勒比伊人影院| 国产suv精品一区二区四| 久久草在线综合视频| α√在线| 91一起操| 91操碰| 亚洲欧洲视频小说在线观看| 久久久久免费少妇| 91N欧美| 天天欧美欧美亚洲网| 欧美激情五月天| 日本视频一区二区三区| AAAA欧美日韩| 国产午夜福利专区综合| 亚洲无码 国产无码| 香蕉综合网| 人人操人人色网| 日本成a人v网站在线观看| 亚洲国产精品成人综合| 欧美激情综合网| 影音先锋日本乱伦| 粉嫩不卡一区二区性爱 | 久久有码视频| 久久久久久久唑| 日本国产亚洲一区在线观看| 欧美日韩午夜精品一区二区三区| 日韩激情啪啪啪| 日韩A优精品在线观看| 亚洲午夜av| 亚洲欧美精品一区天堂久久 | 超碰色老头| 97综合久久| 日本天天操| 久久久国产成人一区二区三区在线| 六月丁香啪啪| 色香阁在线| 香蕉色网| 人妻第一页| 超碰色男人操熟女| 人人玩人人添人人澡免费| 国产在线视视频有精品| 色综合加勒比四四季| 国产精品天干天干综合网麻豆| 欧美日韩小说| 中文?日韩?免费?精品| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 国产乱伦性爱区| 在线观看精品国产免费| 亚洲丝袜色图| 久久人妻一区二区三区高清 | 二三四区精品| 天天干人人乐| 另类 日韩 熟女| 亚洲欲色9532548967一区| 在线情色电影 91大| 色色九区| 国产精品久久伊人| 欧美最婬乱婬爆婬性视频 | 91男人天堂网| 级做a爱无码性色永久免费| 免费伦费视频在线观看| 日本丝袜美腿人妻九九| 成人情色综合网| 人妻一区视频| 十八禁网站在线| 欧美日韩中文字幕不卡| 国产精品久久妻无码网站| 日韩三级一区 | 天堂无码精品国产久| 男人兔费天堂| 日日干日日摸| 亚洲天堂一区二区久久| 视频二区美腿丝袜制服人妻欧美 | 啪啪AV导航| 看看小穴| 91骚熟女| 精品四五区| 夜夜骑日日| 亚洲天堂无码| 操死我了嗯嗯嗯| 人妻无一区二区三区| 9+1视频网址| 蜜汁欧美| 久久精品国产亚洲AV无码电影| 欧亚日韩三区| 久久精品国产亚洲AV先锋| 日韩三级一区| 欧美玖玖爱免费玖玖| 国产无码久久高清| 蜜臀AV一区二区三区激情综合| 五月天婷婷社区| 97干在线| 9久9久| 99热66| 日日躁天天躁狠狠躁| 97最新在线播放视频| 亚洲日产专区婷婷| 亚洲国产av中文字幕久久| 99热这里| 97亚洲在线| 中出91| 97国产人人| 亚 欧 美 综合| 在线视频亚洲无码| 亚洲一本色码中文字幕| 另类小说综合网| 欧美在线 亚洲| 国产欧美岛国精品一区| 一级免费精品| 人妻熟女av国产网站| 啊啊啊啊免费视频| 99色热| www.av家庭乱伦| 久啪| 人人插人人摸人人| 国产青青综合伊人| 中文字幕成人| 五月天人妻综合| 日本免费人成视频播放120秒| 亚洲国产精品久久久男人的天堂| 国产无码高清操逼视频| 岛国人妻少妇av在线观看| 无码操逼视频一下| 妇女乱色二区| 啊啊啊啊啊操我视频| 欧美日韩啪啪电影| 久草老司机| 激情第四色| 在线无码视频| 国产风韵犹存熟妇三区| 插入综合网| 国产亚洲日韩在线三区黑人| 中文无线日韩一区| 混色激情av| 久久久久久久伊人精品| 风间由美日韩欧美久久| 久久久久精| 久久99人妖视频国产| 日韩性爱长视频免费| 午夜精品久久久久久久99热影院| 国产强奸超碰AV| 午夜在线播放| 中文字幕在线2| 五月丁香| 全球成人中文在线| 日韩精品色呦呦| 日本 情色 1区2区3区| 97人亚洲综合字幕| 日韩欧美国产高清视频| 操逼视频色| 色踪合AV| 色诱avtt| 成年女人一区| 国产精品免费日韩| 操逼无码操逼| 久久精品无码熟妇一区二区三区视频导航 | 欧美色图自拍| 国产suv精品一区二区四| 国产在线精品偷| 国产精品免费日韩| 97超碰欧美| 中国91AV| 日韩中文字幕宗合在线| 中日韩久久人妻一区二区| 久悠悠av| 色噜噜人妻丝袜a∨先锋影| 51久久夜色精品国产麻豆| 91欧| 五月天精品| 69久久久久久久久久久久久| 欧洲综合视频| 欧美一区91大爱| 亚洲操逼无码| a v网站在线播放| 国产精品午夜AV完会免费| 青青五月天| 九久久九九久视频| 久久6热精品99视频| 亚洲综合另类欧美久久久| 91久久久久免| 国产亚洲禁久一区二区| 少妇高潮特黄A片| 一类av片在线看| 麻豆视频国产一区二区| 亚洲欧美日韩制服另类| 国产精品乱码久久久| 中文字幕黄色一起草| 精品二区久久| 操逼天美3区| 成人精品欧洲亚洲| 亚洲人91| 国产精品久久久久中文字幕| 激情五月天视频| 蜜乳AV网址| 亚洲最大成人a毛毛片| 日韩操逼HD| 女人与公拘交酡2020视频| 9色国产精品一区粉嫩| 91视频综合| 91色拍| 久久AV无码AV| 色99999| 精品无码一区二区三区| 人人妻人人爽 97人人看碰人免费公开视频| 五月天伊人网| 污色区网站| 五月天婷婷社区| 国产久久久久久| 18禁看网站一区| 日韩欧洲操屄视频| 免费看黄视频亚洲网站| 黄色高清无码无码破解免费暗网| h无码动漫在线观看| 人人做人人妻人人夜视频| 入口操逼网站| 久久超碰爱| 绑缚麻绳人妻寝取完整版| 人人澡综合涩| 亚洲素人综合| 91狠狠综| 欧美性爱日韩高清| 亚洲av影音先锋| 欧美成人一区二区三区在线播放| 色一情一乱一乱一区91Av| 久久久久久大| 欧美视频激情久久久久久| 激情视频图片| 国产精品剧情| 大屁股人妻女教师撅着屁股| 在线强奷到舒服的无码视频| 囯产乱伦一区二区三女| 久久久精品国产亚洲伊人| 鸥美插入视频| 青青草中日韩在线| 电家庭影院午夜69久久夜色精品国产69乱| 久久女女| 国产精品久久久吖| www.国产高潮精品| 防屏蔽在线视频| 午夜综合在线| 天天躁日日躁狠狠躁| 久久天天艹| 国产成人亚洲精品自产在线| 性欧美精| 午夜啊啊| 亚洲成人日韩小说| 婷婷五月天福利| 大香蕉琪琪日本女优不卡| 亚洲丝袜综合| 国产精品无码久久久久2028| 日韩人妻少妇中文字幕| 操91| 女沟厕偷窥piss小便| 欧美强奸一区二区诱惑| 精品人妻一区二区三区-国产精品| 婷婷丁香一区二区三区| 天天做天天爱| 久久久久亚洲AV无码专区少妇| 人妻AV 中文字幕的| 丝袜美腿射精91| 91性片| 免费视频a级毛片免费视频| 最新av在线| 91精品国产91熟女| 牛牛aV| 激情文学网伊人| 日本高清一本二本免费不卡| 国产精品露脸在线观看| 日本久久99| 五十路成人在线视频二区三区| 亚洲国产av中文字幕久久 | 精品亚州18| 精品蜜乳AV免费观看| 日韩性爱高清免费视频| 亚洲图片 激情小说| 国产福利电影| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 蜜桃臀久久| www.91理论| 中文幕97| а√天堂资源官网在线资源| 日韩人体偷拍| 老女人综合| 亚洲国产无码精品首页久久久| 亚洲综合校园春色| 911av网站免费观看| 日日日啊啊啊| 国产精品一区二区手机看片| 91丝袜美腿网站| 欧美天天干| 欧美黑人XXXⅩ高潮交| 麻豆亚洲AV成人无码久久精品| 日本高清一区二区在线| 国产少妇内射| 性饥渴少妇av无码毛片| 97色在线观看| 色悠久| 女人喷水视频在线观看| 18一区二区三区| 蜜桃久久一区二区| 东京热男人的天堂网| 久久久久久人体| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日本91白丝| 青草地一本线一区二区三区| 深爱五月婷婷| 91激情国产| www五月| 亚洲一区二区在线观看91| 日本道久久综合色色| 有码专区最新中文字幕有码| 日本福利社| 国产400孕妇孕交群| 中文乱码99| 丰满人妻无码一区二区三区| 狠狠2050在线观看| 翔田千里av一区二区三区| 男人的天堂va在线| 操逼日韩无码| 久久狠狠色噜噜狠狠狠狠97| 久久夜夜夜夜| 18禁止看精品中文字幕| 色香伊人| 丁香五月成人| 久久啊啊| 亚洲综合在线高清| 小情侣高清国产在线视频| 国产精品播放| wwe 天天干.com| 亚洲一区二区性爱电影| 999久久久九九九九| 色妹子A V| 日本激情免费大片| 久久精品—区二区三区内射| 你操综合| 熟女字幕| 97超碰人人模人人拍人人| 啊啊啊97视频| 97操操| 性爱免费视频成人| 欧美91精彩| AV天天在线观看| 无色无码| 18禁看网站一区| 欧美在线综合| 熟妇视频一区二区三区在线观看| 色婷婷九月天天综合| 久久9精品| 一二三四视频在线社区中文字幕| 天天干少妇| ji熟女.com| 亚洲欧美999| 视频在线97| 久久思思热| 天天做日日爱夜夜爽| 一本色道综合久久欧美| 99热这里都是精品| 亚州精品丝袜-不卡成人免费| www久久99| 熟女精品va中文字幕| 欧美懂色综合网| 日本αv| 91强在线播放| 97亚洲综合电影| 亚洲AV永久无码一区仙野| 91综合站| 青青操视频在线| 操死我干死我| 日本福利二区视频| 少妇厨房愉情理伦片bd在线观看| 欧美综合色综合| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产精品久久久久久久毛片1| 国产综合色精品在线观看| 99操逼| 大香蕉之青青草原| 9精品在线| 中文字幕少妇色| av天堂影视中文在字幕在线中文| 天天干人妇| 人妻精品一区二区在线| 九九热精品视频六| 亚洲AV色图一区| 99re综合伊人| 国产精品午夜福利视频| 青青草原综合久久大伊人精品| 无码9区| 久久超碰爱| 97干在线| 丁香六月婷婷久久综合| 日本九九九九| 色婷婷久久| 亚洲中文字母在线播放| 亚洲精品aa久久伊人| 在线视频免费播放一区| 久久超碰com| 91五十路| 蜜臀一区二区三区在线| 少妇色| 91N综合网| 欧美在线天堂| 女性91网站| 嗯嗯啊啊的视频| 人人操人人精品影片| 91痴汉| 久久久久久久久久9| 综合欧美色图| 91欧美亚洲| 操逼无码操逼| 日韩人妻一二三区视频| 一区二区三区在线美女| 在线观看岛国有码| 久久久九九网站|