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

ARTICLE DETAIL

資訊詳情

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

SSM房屋裝修管理系統(tǒng)畢設(shè)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)設(shè)計(jì)到核心業(yè)務(wù)代碼

SSM房屋裝修管理系統(tǒng)畢設(shè)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)設(shè)計(jì)到核心業(yè)務(wù)代碼 最近遇到好幾個(gè)準(zhǔn)備計(jì)算機(jī)畢業(yè)設(shè)計(jì)的同學(xué)都在找SSM房屋裝修管理系統(tǒng)的源碼和實(shí)現(xiàn)文檔。這個(gè)題目我在帶的課程設(shè)計(jì)里也完整走過(guò)一遍所以單獨(dú)寫(xiě)一篇把從需求到數(shù)據(jù)庫(kù)再到核心業(yè)務(wù)代碼的整套思路都拆開(kāi)講講。房屋裝修管理系統(tǒng)不是簡(jiǎn)單的新增刪除它把業(yè)主、裝修公司、管理員三個(gè)角色串在一條業(yè)務(wù)線上業(yè)主發(fā)裝修需求公司報(bào)價(jià)雙方簽合同然后施工、報(bào)進(jìn)度、驗(yàn)收、評(píng)價(jià)。對(duì)于一個(gè)畢設(shè)來(lái)說(shuō)它比普通的學(xué)生管理、圖書(shū)管理更能體現(xiàn)完整的業(yè)務(wù)閉環(huán)答辯時(shí)也更有東西可講。這篇文章適合正在做JavaWeb畢業(yè)設(shè)計(jì)、需要快速理解SSM項(xiàng)目或者準(zhǔn)備用這套源碼二改的同學(xué)看完之后你至少能說(shuō)清楚每一張表是干什么的每個(gè)核心接口是怎么流轉(zhuǎn)的。1. 畢設(shè)選題里的安全牌為什么SSM加裝修管理仍然能打1.1 選題同質(zhì)化嚴(yán)重裝修管理好在哪每年畢業(yè)設(shè)計(jì)提交上來(lái)打開(kāi)一看一半是校園二手交易平臺(tái)一半是圖書(shū)管理系統(tǒng)剩下的是各種商城。不是說(shuō)這些題目不好而是太容易撞車(chē)開(kāi)題、答辯、論文查重的時(shí)候都很痛苦。房屋裝修管理系統(tǒng)的好處在于它有一個(gè)真實(shí)的行業(yè)場(chǎng)景業(yè)務(wù)流程比單一模塊的CRUD復(fù)雜一點(diǎn)但又不至于復(fù)雜到做不完。裝修行業(yè)里有一個(gè)天然的多角色協(xié)作鏈條業(yè)主想裝修裝修公司想接單中間有報(bào)價(jià)、合同、施工、驗(yàn)收、評(píng)價(jià)。這個(gè)鏈條本身就是一套狀態(tài)機(jī)需求先等待報(bào)價(jià)報(bào)價(jià)后等待業(yè)主確認(rèn)確認(rèn)后生成合同合同開(kāi)始施工施工階段要不斷更新進(jìn)度最后驗(yàn)收。每個(gè)狀態(tài)變化都對(duì)應(yīng)一個(gè)業(yè)務(wù)動(dòng)作每個(gè)動(dòng)作都會(huì)落到數(shù)據(jù)庫(kù)的某個(gè)表上。做這種系統(tǒng)論文里能畫(huà)出清晰的業(yè)務(wù)流程圖、用例圖、時(shí)序圖代碼里能體現(xiàn)多表關(guān)聯(lián)、事務(wù)控制、權(quán)限攔截比單純做一張圖書(shū)表有意義得多。1.2 SSM不是新技術(shù)但依然是畢業(yè)答辯里的穩(wěn)妥選擇很多同學(xué)會(huì)問(wèn)為什么不直接用SpringBoot如果學(xué)校允許用SpringBoot當(dāng)然更省事配置少、開(kāi)發(fā)快。但如果你所在學(xué)校課程體系里教的是SSM或者指導(dǎo)老師對(duì)框架底層比較看重那SSM反而是更穩(wěn)妥的選擇。原因很簡(jiǎn)單SSM需要你自己維護(hù)Spring的applicationContext.xml、SpringMVC的配置文件、MyBatis的Mapper映射這套配置過(guò)程能夠逼著你搞清楚Spring容器怎么啟動(dòng)、DispatcherServlet如何攔截請(qǐng)求、SqlSessionFactory是怎么構(gòu)建的。答辯時(shí)老師問(wèn)一句SpringMVC的執(zhí)行流程是什么你配置過(guò)、Debug過(guò)就能順著DispatcherServlet、HandlerMapping、Controller、ViewResolver一條線講下來(lái)。換成SpringBoot很多配置被自動(dòng)裝配隱藏掉了遇到同樣的問(wèn)題反而容易答不上來(lái)。用SSM實(shí)現(xiàn)房屋裝修管理系統(tǒng)代碼量會(huì)比SpringBoot大一些但是可控性很高。這個(gè)項(xiàng)目我測(cè)試過(guò)多次Tomcat 8.5加JDK 1.8跑得很穩(wěn)適合作為計(jì)算機(jī)畢業(yè)設(shè)計(jì)原創(chuàng)源碼去交付。1.3 源碼不是終點(diǎn)拿到手第一件事別急著運(yùn)行凡是帶贈(zèng)源碼字樣的畢設(shè)項(xiàng)目我都會(huì)提醒一句話源碼是用來(lái)學(xué)習(xí)不是用來(lái)直接交的。你把它下載下來(lái)以后第一步不是雙擊打開(kāi)數(shù)據(jù)庫(kù)腳本一頓執(zhí)行而是先花一晚上把目錄結(jié)構(gòu)、核心表設(shè)計(jì)、請(qǐng)求路由看明白。我看過(guò)太多同學(xué)答辯前一周才開(kāi)始看源碼結(jié)果連項(xiàng)目怎么啟動(dòng)都不知道更別提演示的時(shí)候突然報(bào)錯(cuò)。帶著源碼跑一遍只是會(huì)用能說(shuō)清楚每個(gè)表字段為什么這樣設(shè)計(jì)、每個(gè)接口為什么這樣寫(xiě)才是懂。這篇博文后面的內(nèi)容就是幫你從能跑走到能講。2. 需求分析不能拍腦袋裝修管理到底在管哪些事2.1 三角色與核心用例需求分析階段最容易犯的錯(cuò)誤是上來(lái)就畫(huà)頁(yè)面、寫(xiě)字段。正確的做法是先梳理角色和用例。這套系統(tǒng)里最核心的角色有三個(gè)業(yè)主客戶(hù)、裝修公司、系統(tǒng)管理員。角色核心操作典型訴求業(yè)主注冊(cè)登錄、發(fā)布裝修需求、查看報(bào)價(jià)、確認(rèn)合同、查看施工進(jìn)度、驗(yàn)收、評(píng)價(jià)找靠譜公司、控制預(yù)算、知道施工到哪一步裝修公司注冊(cè)登錄、查看需求、報(bào)價(jià)、接受合同、上報(bào)進(jìn)度、提交驗(yàn)收接到更多訂單、展示公司實(shí)力、及時(shí)同步施工情況系統(tǒng)管理員用戶(hù)管理、需求審核、公告發(fā)布、數(shù)據(jù)統(tǒng)計(jì)維護(hù)系統(tǒng)秩序、確保信息真實(shí)上網(wǎng)搜索或者看真實(shí)的裝修平臺(tái)會(huì)發(fā)現(xiàn)有些系統(tǒng)還會(huì)拆出設(shè)計(jì)師工長(zhǎng)監(jiān)理但畢設(shè)不建議拆太細(xì)。角色越多權(quán)限控制和頁(yè)面開(kāi)發(fā)工作量成倍上升。三個(gè)角色足夠形成業(yè)務(wù)差異也足夠在答辯時(shí)講清楚權(quán)限設(shè)計(jì)。2.2 一條完整的業(yè)務(wù)閉環(huán)把這套系統(tǒng)的業(yè)務(wù)閉環(huán)畫(huà)成流程應(yīng)該是這樣業(yè)主發(fā)布裝修需求填寫(xiě)房屋面積、戶(hù)型、裝修風(fēng)格、預(yù)算范圍、期望開(kāi)工時(shí)間等基本信息。需求庫(kù)里的裝修公司可以瀏覽這些需求有合適的就發(fā)起報(bào)價(jià)。業(yè)主看到多個(gè)報(bào)價(jià)后選擇合適的公司雙方自動(dòng)進(jìn)入合同簽訂環(huán)節(jié)。合同生成之后裝修公司會(huì)按施工階段持續(xù)上報(bào)進(jìn)度比如拆改階段、水電階段、泥瓦階段業(yè)主可以在系統(tǒng)里看到進(jìn)度百分比和文字描述。施工完成后裝修公司申請(qǐng)驗(yàn)收業(yè)主確認(rèn)通過(guò)后可以針對(duì)本次裝修寫(xiě)評(píng)價(jià)整條鏈路才算結(jié)束。你在答辯時(shí)如果能把這個(gè)閉環(huán)用一兩分鐘講出來(lái)老師立刻知道你不是在做一個(gè)零散的增刪改查系統(tǒng)。2.3 功能清單與判定標(biāo)準(zhǔn)需求分析之后要整理出一份功能清單。這里有個(gè)原則基礎(chǔ)功能要形成閉環(huán)加分功能量力而行?;A(chǔ)功能包括用戶(hù)注冊(cè)登錄、需求發(fā)布與列表查詢(xún)、報(bào)價(jià)管理、合同管理、施工進(jìn)度管理、驗(yàn)收管理、評(píng)價(jià)管理、后臺(tái)用戶(hù)管理。這些已經(jīng)能支撐一個(gè)完整的裝修業(yè)務(wù)流程。加分功能包括密碼加密存儲(chǔ)、攔截器權(quán)限校驗(yàn)、公告管理、需求多條件篩選、合同編號(hào)自動(dòng)生成、列表分頁(yè)顯示。如果時(shí)間和能力允許可以再加統(tǒng)計(jì)報(bào)表和文件上傳。我在給課程設(shè)計(jì)做驗(yàn)收時(shí)最看重的是狀態(tài)流轉(zhuǎn)是否閉環(huán)。很多項(xiàng)目看起來(lái)功能都有但需求發(fā)布完以后報(bào)價(jià)和合同之間沒(méi)有關(guān)聯(lián)進(jìn)度和合同之間也連不上這在老師眼里就是兩張獨(dú)立的表硬湊成一個(gè)系統(tǒng)。你寧可功能少一點(diǎn)也要保證主流程是通的。3. 數(shù)據(jù)庫(kù)表設(shè)計(jì)復(fù)盤(pán)如何用9張表?yè)纹鹫麄€(gè)系統(tǒng)3.1 用戶(hù)角色與公司信息的設(shè)計(jì)取舍數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)SSM房屋裝修管理系統(tǒng)的地基。我給的參考方案是9張核心表這在本項(xiàng)目源碼里可以對(duì)應(yīng)看到。第一組是用戶(hù)表建議命名為t_user。字段包含id、username、password、real_name、phone、role、avatar、create_time。其中role用整型區(qū)分角色比如0表示管理員、1表示業(yè)主、2表示裝修公司。這樣一張表完成登錄認(rèn)證簡(jiǎn)單直接。裝修公司不建議和用戶(hù)表合并成一張大表。雖然業(yè)務(wù)上裝修公司也是一個(gè)賬號(hào)但公司有公司名稱(chēng)、營(yíng)業(yè)執(zhí)照編號(hào)、地址、介紹、評(píng)分等信息和普通業(yè)主差異很大。如果全部塞進(jìn)t_user字段會(huì)很臃腫而且不符合單一職責(zé)的表設(shè)計(jì)原則。所以單獨(dú)建一張t_company表字段包括id、user_id、company_name、license_no、contact_person、address、intro、rating。user_id與t_user.id建立一對(duì)一關(guān)聯(lián)既保留了賬號(hào)登錄獨(dú)立性也能在裝修需求列表頁(yè)方便地顯示公司名稱(chēng)。3.2 業(yè)務(wù)主鏈需求、報(bào)價(jià)、合同第二組是業(yè)務(wù)主鏈上的三張表需求表t_demand、報(bào)價(jià)表t_quote、合同表t_contract。t_demand是業(yè)主發(fā)布需求的落點(diǎn)核心字段有id、user_id、house_area、house_layout、decoration_style、budget、description、province/city/address、status、create_time。status請(qǐng)一定用int建議定義成0待接單、1已報(bào)價(jià)、2已簽約、3施工中、4待驗(yàn)收、5已完成、6已關(guān)閉。t_quote是裝修公司對(duì)某條需求發(fā)起的報(bào)價(jià)核心字段id、demand_id、company_id、price、duration_days、plan_content、status、create_time。demand_id關(guān)聯(lián)需求表company_id關(guān)聯(lián)公司表。status可以定義成0待業(yè)主確認(rèn)、1已接受、2已拒絕。注意這里的設(shè)計(jì)邏輯一條需求可以被多家公司報(bào)價(jià)所以t_demand和t_quote是一對(duì)多關(guān)系。t_contract生成時(shí)機(jī)是業(yè)主接受了某條報(bào)價(jià)。核心字段contract_no、demand_id、quote_id、owner_id、company_id、total_price、start_date、end_date、status、create_time。從這張表開(kāi)始業(yè)務(wù)已經(jīng)從信息撮合進(jìn)入履約管理。contract_no可以用時(shí)間戳加隨機(jī)數(shù)生成答辯時(shí)也能說(shuō)這是業(yè)務(wù)編號(hào)的規(guī)范做法。3.3 輔助鏈路施工進(jìn)度、材料、驗(yàn)收、評(píng)價(jià)第三組是輔助鏈路t_progress、t_material、t_acceptance、t_comment。t_progress用于裝修公司按階段上報(bào)施工進(jìn)度。字段contract_id、stage、description、progress_percent、operator_id、create_time。其中stage可以約定為字符串比如拆改水電泥瓦木工油漆安裝竣工方便前端做時(shí)間線展示。一張合同下會(huì)有多條進(jìn)度記錄所以是一對(duì)多關(guān)系。t_material是材料清單表屬于錦上添花的功能。字段contract_id、material_name、quantity、price、create_time。有了這張表這套系統(tǒng)就比只報(bào)文字進(jìn)度的項(xiàng)目更有說(shuō)服力可以做一個(gè)簡(jiǎn)單的施工材料列表展示裝修過(guò)程的透明度。t_acceptance用于驗(yàn)收。字段contract_id、result、comment、check_time、owner_id。result可以用0待驗(yàn)收、1通過(guò)、2不通過(guò)。驗(yàn)收完成之后t_contract.status也應(yīng)該跟著變化這個(gè)要在Service層里用事務(wù)控制。t_comment是業(yè)主對(duì)裝修公司服務(wù)的評(píng)價(jià)。字段contract_id、user_id、company_id、score、content、create_time。這里也可以做一個(gè)小功能當(dāng)新的評(píng)價(jià)產(chǎn)生時(shí)更新t_company.rating讓列表頁(yè)的公司評(píng)分跟著變化。3.4 幾個(gè)容易踩的坑金額精度、外鍵約束、狀態(tài)字段數(shù)據(jù)庫(kù)設(shè)計(jì)里有三個(gè)常見(jiàn)坑這個(gè)項(xiàng)目里特別容易觸發(fā)。第一金額字段不要用double。裝修預(yù)算、報(bào)價(jià)金額、合同金額、材料單價(jià)全部用decimal(10,2)Java實(shí)體里用BigDecimal接收。用double計(jì)算金額輕則顯示0.30000000000000004重則在寫(xiě)入數(shù)據(jù)庫(kù)時(shí)出現(xiàn)精度誤差答辯時(shí)被問(wèn)到會(huì)很難看。第二不要過(guò)度使用外鍵。畢設(shè)系統(tǒng)里的外鍵約束會(huì)造成兩個(gè)麻煩刪除順序必須嚴(yán)格測(cè)試數(shù)據(jù)初始化經(jīng)常失敗聯(lián)表查詢(xún)時(shí)MyBatis的關(guān)聯(lián)映射也變得復(fù)雜。我的建議是表結(jié)構(gòu)里保留邏輯外鍵字段比如demand_id、company_id但物理外鍵可以不建。保證查詢(xún)時(shí)能關(guān)聯(lián)出數(shù)據(jù)即可這件事可以在答辯時(shí)說(shuō)成為了減少不必要的耦合使用應(yīng)用層事務(wù)保證一致性。第三狀態(tài)字段一定要加注釋。所有status字段建議在數(shù)據(jù)庫(kù)腳本里寫(xiě)成COMMENT 0待接單 1已報(bào)價(jià)...這樣的形式。你過(guò)兩天回來(lái)看代碼或者指導(dǎo)老師看數(shù)據(jù)庫(kù)能一眼明白每個(gè)數(shù)字的含義。代碼里也建議定義一個(gè)常量類(lèi)或者枚舉類(lèi)避免在各種Mapper XML里寫(xiě)裸數(shù)字。4. SSM工程落地項(xiàng)目結(jié)構(gòu)和核心代碼這樣寫(xiě)才不亂4.1 推薦的分層結(jié)構(gòu)和Maven配置拿到源碼以后先看目錄結(jié)構(gòu)。一個(gè)規(guī)范的SSM項(xiàng)目通常是Maven構(gòu)建的JavaWeb工程推薦這樣分層src/main/java/com/example/decoration ├── controller # 控制器層 ├── service # 業(yè)務(wù)接口 ├── service/impl # 業(yè)務(wù)實(shí)現(xiàn) ├── mapper # MyBatis Mapper接口 ├── entity # 實(shí)體類(lèi) ├── common # 統(tǒng)一返回結(jié)果、常量、工具類(lèi) └── interceptor # 登錄攔截器、權(quán)限攔截器 src/main/resources ├── mapper # MyBatis SQL映射XML ├── spring # applicationContext.xml、spring-mvc.xml └── db.properties # 數(shù)據(jù)庫(kù)連接配置 src/main/webapp ├── WEB-INF/web.xml └── jsp # 頁(yè)面文件這套分層的核心思路是Controller只負(fù)責(zé)接收請(qǐng)求、調(diào)用Service、返回結(jié)果不直接操作數(shù)據(jù)庫(kù)Service負(fù)責(zé)業(yè)務(wù)邏輯和事務(wù)Mapper只負(fù)責(zé)SQL。很多同學(xué)寫(xiě)畢設(shè)時(shí)喜歡在Controller里直接注入Mapper省事但答辯時(shí)老師問(wèn)你這個(gè)Service層有什么意義就會(huì)很尷尬。既然是畢業(yè)設(shè)計(jì)一定要把Controller-Service-Mapper三層分清楚。Maven的pom.xml里核心依賴(lài)就是spring-webmvc、mybatis、mybatis-spring、mysql-connector-java、druid、jstl、servlet-api、jackson。注意兩個(gè)點(diǎn)一是servlet-api要標(biāo)scopeprovided/scope否則Tomcat里會(huì)沖突二是MySQL驅(qū)動(dòng)版本要和自己本地的MySQL版本匹配5.7用5.1.49沒(méi)問(wèn)題8.x就要用8.0.33。4.2 SSM常用注解和登錄攔截器實(shí)現(xiàn)這套系統(tǒng)里會(huì)用到不少SSM常用注解答辯前必須能說(shuō)清楚Controller負(fù)責(zé)標(biāo)記控制器RequestMapping負(fù)責(zé)映射URLResponseBody負(fù)責(zé)把返回值轉(zhuǎn)成JSONService標(biāo)記業(yè)務(wù)層組件Autowired是依賴(lài)注入Transactional是聲明式事務(wù)。幾乎每個(gè)注解都是高頻考點(diǎn)。登錄攔截是本項(xiàng)目權(quán)限體系的核心。由于沒(méi)有引入Spring Security可以用SpringMVC的HandlerInterceptor來(lái)實(shí)現(xiàn)。public class LoginInterceptor implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session request.getSession(); Object loginUser session.getAttribute(loginUser); if (loginUser null) { // 未登錄則跳轉(zhuǎn)到登錄頁(yè)也可以返回JSON response.sendRedirect(request.getContextPath() /login.jsp); return false; } return true; } }然后在spring-mvc.xml里注冊(cè)攔截器并排除登錄、注冊(cè)、靜態(tài)資源等路徑mvc:interceptors mvc:interceptor mvc:mapping path/**/ mvc:exclude-mapping path/login/ mvc:exclude-mapping path/register/ mvc:exclude-mapping path/static/**/ mvc:exclude-mapping path/css/**/ mvc:exclude-mapping path/js/**/ !-- 裝修需求列表和詳情可以允許游客查看 -- mvc:exclude-mapping path/demand/list/ mvc:exclude-mapping path/demand/detail/**/ bean classcom.example.decoration.interceptor.LoginInterceptor/ /mvc:interceptor /mvc:interceptors攔截器這部分建議一定自己寫(xiě)一遍。很多網(wǎng)上源碼的權(quán)限控制就是頁(yè)面隱藏按鈕根本沒(méi)有后端攔截演示時(shí)繞開(kāi)登錄直接訪問(wèn)后端接口照樣能查數(shù)據(jù)。加上這個(gè)攔截器功能和代碼質(zhì)量都會(huì)提升一個(gè)檔次。4.3 業(yè)主發(fā)布需求三層代碼如何聯(lián)動(dòng)以業(yè)主發(fā)布裝修需求這個(gè)核心動(dòng)作為例把三層代碼完整走一遍。Controller層Controller RequestMapping(/demand) public class DemandController { Autowired private DemandService demandService; PostMapping(/publish) ResponseBody public Result publish(RequestBody Demand demand, HttpSession session) { User user (User) session.getAttribute(loginUser); if (user null || user.getRole() ! 1) { return Result.error(請(qǐng)使用業(yè)主賬號(hào)登錄); } demand.setUserId(user.getId()); demand.setStatus(0); demandService.publish(demand); return Result.success(); } }Service接口和實(shí)現(xiàn)類(lèi)public interface DemandService { void publish(Demand demand); }Service public class DemandServiceImpl implements DemandService { Autowired private DemandMapper demandMapper; Override Transactional public void publish(Demand demand) { demand.setCreateTime(new Date()); demandMapper.insert(demand); } }MyBatis Mapper接口Repository public interface DemandMapper { int insert(Demand demand); }對(duì)應(yīng)的XMLinsert idinsert parameterTypecom.example.decoration.entity.Demand useGeneratedKeystrue keyPropertyid INSERT INTO t_demand (user_id, house_area, house_layout, decoration_style, budget, description, address, status, create_time) VALUES (#{userId}, #{houseArea}, #{houseLayout}, #{decorationStyle}, #{budget}, #{description}, #{address}, #{status}, #{createTime}) /insert注意幾個(gè)細(xì)節(jié)useGeneratedKeystrue和keyPropertyid保證了插入后能立刻拿到自增主鍵后續(xù)添加報(bào)價(jià)時(shí)可以直接使用ResponseBody配合統(tǒng)一的Result對(duì)象返回JSON比管理員返回字符串路徑更清晰。這套寫(xiě)法學(xué)到之后在其他頁(yè)面也一樣用。4.4 裝修公司上報(bào)施工進(jìn)度多條件更新和事務(wù)施工進(jìn)度上報(bào)是一個(gè)典型的多條件更新場(chǎng)景。裝修公司可能只更新進(jìn)度百分比也可能只更新描述文字甚至同時(shí)修改階段名稱(chēng)。如果用固定SQL每次都要把所有字段傳進(jìn)來(lái)很別扭。MyBatis的動(dòng)態(tài)SQL正好解決這個(gè)問(wèn)題。Controller層接收參數(shù)后組裝成一個(gè)Map或者直接使用Progress對(duì)象Service層調(diào)用Mapperupdate idupdateProgress parameterTypemap UPDATE t_progress set if teststage ! null and stage ! stage #{stage}, /if if testdescription ! null and description ! description #{description}, /if if testprogressPercent ! null progress_percent #{progressPercent}, /if /set WHERE id #{id} /update這里如果把更新進(jìn)度和更新合同狀態(tài)放在同一個(gè)Service方法里建議加上Transactional。比如當(dāng)施工進(jìn)度達(dá)到100%時(shí)自動(dòng)把合同狀態(tài)改為待驗(yàn)收。這個(gè)過(guò)程中有兩張表的數(shù)據(jù)要更新任何一步失敗都不能只更新一半否則數(shù)據(jù)就亂掉了。用Spring的聲明式事務(wù)只需要在方法上增加Transactional注解Spring會(huì)基于AOP幫你完成事務(wù)的開(kāi)閉和回滾。這也是答辯時(shí)值得重點(diǎn)講的技術(shù)點(diǎn)在SSM里事務(wù)默認(rèn)是針對(duì)運(yùn)行時(shí)異常的受檢異常不會(huì)觸發(fā)回滾。所以Service里不要隨意catch掉所有異常否則事務(wù)會(huì)失效。5. 把源碼跑起來(lái)部署步驟和五個(gè)我實(shí)測(cè)踩過(guò)的坑5.1 前置環(huán)境與初始化在開(kāi)始跑這套系統(tǒng)前建議準(zhǔn)備以下環(huán)境JDK 1.8、Maven 3.6、Tomcat 8.5或9.0、MySQL 5.7開(kāi)發(fā)工具可以用IDEA或Eclipse。這些版本組合我實(shí)測(cè)下來(lái)最穩(wěn)定。具體步驟大概是這樣用IDEA將源碼作為Maven工程導(dǎo)入等待依賴(lài)下載完成。在本機(jī)MySQL里創(chuàng)建數(shù)據(jù)庫(kù)名稱(chēng)建議用decoration_system編碼用utf8mb4。執(zhí)行源碼附帶的init.sql把建表和初始化數(shù)據(jù)一次導(dǎo)入。修改src/main/resources/db.properties里的數(shù)據(jù)庫(kù)地址、用戶(hù)名、密碼。配置Tomcat把項(xiàng)目deploy到Tomcat中啟動(dòng)。瀏覽器訪問(wèn)http://localhost:8080/看到登錄頁(yè)說(shuō)明啟動(dòng)成功。初始化數(shù)據(jù)里至少要有三個(gè)測(cè)試賬號(hào)管理員、業(yè)主、裝修公司。不然你在驗(yàn)收一個(gè)功能時(shí)還要臨時(shí)注冊(cè)兩個(gè)角色非常麻煩。5.2 常見(jiàn)坑一數(shù)據(jù)庫(kù)版本和驅(qū)動(dòng)不匹配這個(gè)坑出現(xiàn)頻率最高。學(xué)校機(jī)房很多是MySQL 5.5或5.7本地同學(xué)很多裝了MySQL 8.0。MySQL 8.0默認(rèn)認(rèn)證插件是caching_sha2_password老版本驅(qū)動(dòng)連接時(shí)會(huì)報(bào)Public Key Retrieval is not allowed。解決辦法有兩個(gè)一是統(tǒng)一用MySQL 5.7數(shù)據(jù)庫(kù)腳本幾乎不用改二是如果必須用MySQL 8.0要在db.properties里加allowPublicKeyRetrievaltrueuseSSLfalse并把驅(qū)動(dòng)換成com.mysql.cj.jdbc.Driver。我在源碼環(huán)境里默認(rèn)寫(xiě)的是MySQL 5.7配置如果你用8.0記得主動(dòng)改。5.3 常見(jiàn)坑二Mapper XML沒(méi)有被打包進(jìn)classesSSM項(xiàng)目里明明代碼看起來(lái)沒(méi)問(wèn)題啟動(dòng)后報(bào)Invalid bound statement (not found)大概率是Mapper XML沒(méi)有編譯到classes目錄下。Maven在打包時(shí)默認(rèn)只把src/main/resources下的文件輸出到classpath如果你的XML放在src/main/java里需要通過(guò)pom配置resources才能打包。最簡(jiǎn)單、也最建議的目錄結(jié)構(gòu)是Mapper接口放在src/main/java對(duì)應(yīng)的XML放在src/main/resources/mapper下兩者通過(guò)MyBatis的名稱(chēng)空間和接口全限定名關(guān)聯(lián)。然后在spring-context.xml里的SqlSessionFactoryBean配置中設(shè)置mapperLocations指向classpath:mapper/*.xml。bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/ property namemapperLocations valueclasspath:mapper/*.xml/ /bean5.4 常見(jiàn)坑三中文亂碼中文亂碼幾乎每個(gè)JavaWeb畢設(shè)項(xiàng)目都會(huì)遇到。亂碼原因一般有三個(gè)位置頁(yè)面本身編碼、請(qǐng)求編碼、數(shù)據(jù)庫(kù)連接編碼。JSP頁(yè)面用% page pageEncodingUTF-8 %。web.xml里配置CharacterEncodingFilter強(qiáng)制所有請(qǐng)求和響應(yīng)使用UTF-8。數(shù)據(jù)庫(kù)連接URL加characterEncodingutf8。數(shù)據(jù)庫(kù)表創(chuàng)建時(shí)統(tǒng)一用utf8mb4不要用默認(rèn)的latin1。很多同學(xué)只改了頁(yè)面沒(méi)有配置CharacterEncodingFilter結(jié)果POST請(qǐng)求里帶中文就會(huì)亂。這個(gè)問(wèn)題我排查過(guò)不少次配置一個(gè)全局過(guò)濾器基本能解決80%的亂碼問(wèn)題filter filter-nameencodingFilter/filter-name filter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueUTF-8/param-value /init-param /filter filter-mapping filter-nameencodingFilter/filter-name url-pattern/*/url-pattern /filter-mapping5.5 常見(jiàn)坑四靜態(tài)資源被DispatcherServlet攔截SpringMVC的DispatcherServlet如果配置成/會(huì)默認(rèn)攔截所有請(qǐng)求包括css、js、圖片、html。如果不額外處理頁(yè)面就會(huì)變成裸體狀態(tài)沒(méi)有任何樣式。解決方式是在spring-mvc.xml里加入mvc:default-servlet-handler/ mvc:resources mapping/static/** location/static//然后把頁(yè)面的css和js統(tǒng)一放在webapp/static目錄下。這里要注意如果配置了自定義攔截器攔截/**靜態(tài)資源路徑一定要在exclude-mapping里排除否則登錄攔截器會(huì)把css請(qǐng)求也攔下來(lái)。5.6 常見(jiàn)坑五金額和日期字段的處理房屋裝修系統(tǒng)里到處是金額和時(shí)間處理不好就會(huì)出現(xiàn)兩類(lèi)問(wèn)題。一是金額精度問(wèn)題前面已經(jīng)提到用BigDecimal。二是在JSON返回給前端時(shí)日期會(huì)變成一串時(shí)間戳非常不友好。可以在SpringMVC配置里加入JodaTime或者fastjson的序列化配置簡(jiǎn)單一點(diǎn)的話可以在實(shí)體類(lèi)的日期字段上加JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8)。這個(gè)細(xì)節(jié)屬于沒(méi)寫(xiě)也不影響功能但寫(xiě)了會(huì)讓代碼更完整的類(lèi)型答辯時(shí)能給老師留下好印象。6. 答辯之前怎么把別人寫(xiě)的源碼講成自己的亮點(diǎn)6.1 講清楚業(yè)務(wù)閉環(huán)畢業(yè)答辯時(shí)間通常很緊張老師不可能聽(tīng)你逐個(gè)頁(yè)面念功能。建議用三分鐘時(shí)間只講一條主線業(yè)主發(fā)布需求裝修公司報(bào)價(jià)業(yè)主確認(rèn)簽約裝修公司更新進(jìn)度業(yè)主驗(yàn)收評(píng)價(jià)。這條線每走到一個(gè)節(jié)點(diǎn)指出對(duì)應(yīng)的表、對(duì)應(yīng)的狀態(tài)變化、對(duì)應(yīng)的接口老師立刻就知道你是真懂這個(gè)項(xiàng)目。比如講到需求發(fā)布你可以說(shuō)業(yè)主發(fā)布需求前端把表單數(shù)據(jù)提交給/demand/publishController層判斷登錄用戶(hù)角色后調(diào)用Service插入t_demand記錄初始狀態(tài)是0待接單。后面裝修公司登錄后查詢(xún)狀態(tài)為0的需求列表發(fā)起報(bào)價(jià)寫(xiě)入t_quote。每個(gè)業(yè)務(wù)動(dòng)作都直接驅(qū)動(dòng)狀態(tài)變化這就是狀態(tài)流轉(zhuǎn)。6.2 四類(lèi)高頻追問(wèn)和參考答案畢業(yè)設(shè)計(jì)中老師非常喜歡圍繞框架、數(shù)據(jù)庫(kù)、并發(fā)、安全來(lái)提問(wèn)。我總結(jié)過(guò)幾個(gè)高頻問(wèn)題你可以照著準(zhǔn)備。問(wèn)題核心作答思路SpringMVC的執(zhí)行流程用戶(hù)請(qǐng)求到達(dá)DispatcherServlet通過(guò)HandlerMapping找到對(duì)應(yīng)的Controller方法執(zhí)行后返回ModelAndView再經(jīng)過(guò)ViewResolver解析視圖。如果用了ResponseBody則直接由消息轉(zhuǎn)換器輸出JSONMyBatis和Hibernate的區(qū)別Hibernate是全自動(dòng)ORM把Java對(duì)象和數(shù)據(jù)庫(kù)表映射后不需要寫(xiě)SQLMyBatis是半自動(dòng)ORMSQL由開(kāi)發(fā)者自己控制和優(yōu)化。本項(xiàng)目多表聯(lián)查較多用MyBatis寫(xiě)動(dòng)態(tài)SQL更直觀項(xiàng)目里事務(wù)怎么控制在Spring配置文件中開(kāi)啟tx:annotation-driven在Service方法上使用Transactional保證多個(gè)表操作要么同時(shí)成功要么同時(shí)回滾如何防止SQL注入MyBatis的#{}底層使用PreparedStatement預(yù)編譯傳入的參數(shù)被當(dāng)作參數(shù)值不會(huì)拼接進(jìn)SQL如果用${}就要自己過(guò)濾。本項(xiàng)目統(tǒng)一使用#{}并在攔截器中校驗(yàn)登錄狀態(tài)還有一個(gè)常被問(wèn)到的為什么不用SpringBoot你只要從當(dāng)前學(xué)校課程體系以SSM為主SSM配置過(guò)程有助于理解框架運(yùn)行機(jī)制兩個(gè)角度去回答基本不會(huì)卡殼。6.3 低成本二次開(kāi)發(fā)建議源碼不是交完作業(yè)就結(jié)束了。如果你想在這個(gè)項(xiàng)目上加一些自己的東西以下三個(gè)方向成本都不高但是效果很明顯。一是加入ECharts統(tǒng)計(jì)報(bào)表。在后臺(tái)管理頁(yè)面統(tǒng)計(jì)不同裝修風(fēng)格的需求數(shù)量或者每月新增合同數(shù)量。這個(gè)只需要寫(xiě)一個(gè)聚合查詢(xún)SQL返回一個(gè)包含名稱(chēng)和數(shù)量的列表前端用ECharts畫(huà)柱狀圖或餅圖即可。它是典型的以項(xiàng)目數(shù)據(jù)為基礎(chǔ)的拓展功能論文里也好寫(xiě)。二是增加Excel導(dǎo)出。合同列表加一個(gè)導(dǎo)出Excel按鈕后端用EasyPOI或POI把查詢(xún)結(jié)果寫(xiě)入Excel前端點(diǎn)擊下載。這個(gè)功能能體現(xiàn)你對(duì)文件流和工具庫(kù)的掌握工作量不大但非常出效果。三是如果學(xué)校允許SpringBoot可以嘗試把這套系統(tǒng)改造成SpringBoot版本。把web.xml配置遷移成配置類(lèi)把spring的XML配置改成注解你會(huì)發(fā)現(xiàn)框架之間遷移的邏輯是相通的這個(gè)改造過(guò)程能讓你對(duì)SSM的理解更深一層。最后再分享一個(gè)實(shí)際經(jīng)驗(yàn)?zāi)玫竭@套SSM房屋裝修管理系統(tǒng)源碼之后我建議你第一周只干一件事把核心表之間的關(guān)系畫(huà)出來(lái)然后對(duì)著源碼把需求發(fā)布和報(bào)價(jià)確認(rèn)這兩個(gè)接口的完整調(diào)用鏈走一遍。走通了后面的進(jìn)度上報(bào)、驗(yàn)收評(píng)價(jià)、后臺(tái)管理都是一樣的套路。自己動(dòng)手改過(guò)、斷點(diǎn)打過(guò)的代碼答辯時(shí)才真正說(shuō)得出口。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
插入综合网| 又大又大又大又粗爽高潮观看| 免费精品中文字幕| 色九九九综合| 中文字幕一区二区三区人妻少妇在线| 99久久精品无码一区二区毛片免费| 一级性爱视频免费在线| 亚洲在线综合| 成人熟女区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 青草园大香蕉| 伊人久久88国产女| 中国农村熟妇毛片视频| 国产精品 视频| 欧美手机在线综合| 亚洲欧美中文日韩视频中国语| 熟女精品日韩一区二区三区| 秋霞一级鲁丝片A片| 9精品久久久久| 蜜臀久久99精品久久久久免费观| 人妻加勒比东京热| 婷婷av在线中文字幕| www.久久超碰| 欧美91网| 色在线69堂| 久久免费精品96| 麻豆久久久一区二区| 欧美视频在线视频免费va| 国产av又色又爽又黄| 亚洲国产美女久久久久| 九七人妻在线| 九九九国产精品| 欧美亚州色的图| 大香蕉综合久久| 国产精品国产亚洲区艳妇糸列| 精品人妻高清麻豆av| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 日韩成人色图| 九一精品牛牛一区二区| 欧美天天谢综合网| 婷婷五月天网| 综合影院亚洲| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 中文乱码字幕观看| 国产综合色精品在线观看| 精品人妻久久久| 青青草在线视频播放器| 3级毛片一二| 中日韩久久久免费看| 久久成人精品| 爱丝福利| 超碰97 线线 在现| 九九九九免费| 18啪啪手机免费性爱| 日韩中文字幕视频| 青椒国产97在线熟女| 操逼操网| 操操啪| 逼逼逼逼操操操操操操操操操午夜剧场| 嗯啊视频免费在线观看| 男女啪啪啪18禁网站| 久久大香蕉97| 亚洲欧美综合| 欧美A√综合网| 日本午夜福利视频| 亚洲欧美日韩不卡人妻| 色吧91| 国产伦精品| 九九九久久久| 超碰国产精品无码| 六月婷婷五月丁香| 老熟女熟妇| 99热色这里只有精品| 欧美 日韩 婷婷 五月| 亚洲蜜臀精品视频久久| 久久透逼视频| 伊人久久大香大香线蕉中文 | 蜜乳AV一区| 欧美婷婷五月天| 亚洲综合婷婷| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 无码精品一区二区三区潘金莲| 亚洲欧洲精品视频发布| 91亚洲影院综合| 久久久天美| 试看60秒 爽| 2017人人操,人人摸| 性久久| 97超碰jingpin| 四虎免费看黄| 国产不卡免费在线视频| 久久久久ab| 国产精品播放| 久久人人爽人人爽人人片Ⅴ| 久久综合18p| 熟女熟妇伦久久影院毛片一区二区| 91在线视频国产网站| 人人做人人妻人人夜视频| 欧美在线视频99| 日韩激情视频| 操B视频日韩无码| 强奸乱亚洲| 亚州 综合 色图| 淫荡网址| 久久综合激情| 日本欧美不卡| 国产尤物AV尤物在线观看不卡| 超碰97资源中文字幕| 欧美同性恋 的搜索结果 - 91n| 色穴精品| 久久男人天堂| 久久99操天天日| 香蕉精品二区二区 | 国产91精品久久久久久久网曝门| 精品免费一区| JULIA人妻风俗店中出电影| 国产91美女视频| 亚洲色人| 99操| 麻豆三极片| 麻豆精品久久久久久久| 成人无码欧美一级A片狼牙直播| 91亚洲最新在线| 人人操人人插人www| 免费视频无码| 免费一二区| www.丁香五月| 蜜臀中文字幕| 伊人久久国产免费观看视频| 八戒午夜福利理论片| 1204av韩国| 日本韩国国产精品一区| 久久久性少妇| 狠狠色综合网| 凹凸精品熟女在线观看| 啊好大好舒服| 日本欧美韩国国产在线| 大香蕉日亚洲日本亚大| 国产这里只有精品| 亚洲动态色图| 日本三级日本三级三级人妇四虎| 99久久久er直播网址| 超碰综合色| aⅴ日韩成人电影av在线免费看av大全| 亚洲欧洲国产综合av| 久久久内射良家| 尤物黄色在线观看网站| 超碰97久久国| 日本不卡三级网在线播放| 午夜国产成人精品视频| 欧美日韩亚洲五月天婷婷| 26uuu性| 日本中文字幕熟妇| 久操视频免费在线观看| 99热这里只有精品地址 | 啊啊啊网站| 91在线色| 日本高清有码网址视频| 18禁止看精品中文字幕| 精品国产乱码久久久久久久| 超碰97欧美在线| 国产精品女久久久久av爽| 亚洲色图欧美色图制服诱惑| 熟妇人妻一区二区三区| se吧提供国产乱老熟视频胖女人| 色偷偷超碰亚洲| 99热这里只有精品99| 97九色| 久久激情四射婷婷丁香五月天| 中文字幕性感少妇av| 精品无码少妇| 动漫av中文| av资源在线播放天堂| 100啪啪视频大全| 97天天插| 欧美72网页| 欧美在线视频播放| 9丨亚洲一区二区在线| 欧美手机在线综合| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 本道综合精品| 亚洲Av噜噜一区二区三区妖精| 亚洲成人综合在线| 免费综合亚洲中文| 亚洲精品无码成人久久久99| 亚洲综合97| 精品久久9| 久热精品色情| 日本 欧美 亚中文字幕| 国产激情综合| 欧美日韩亚洲一区二区在线观看| 国产大陆天天艹| 精人妻一区二区三区| 青青草白白色| 久久久九九| 91欧美偷拍| 国产黄a三级三级三级av在线看| 欧美成人一级免费电影| 神马九九九| 成人欧美日超碰| 欧美熟妇人体| 青青操在线亚洲视频观看欧美在线| 国产精品久久久久久 百度| 国产一级特黄大片处女| 中文字幕一区 二区三四五 区日 日骚| 自拍盗摄一区| 抽插无码高清一区| 日韩人妻免费精品| 国产一区二区欧美日本| 大香蕉黄色一区| 大香蕉五月天婷婷| 亚洲欧美日韩夜夜| 久久丁香五月天| 中国国国产一级特黄毛片| 日本免费人成视频播放120秒| 美女天天干| 婷婷五月天激情四射| 欧美96精品在线| 九久久精| 性久久久| 日本免费一级AAA大片器| 国产一级内射无挡观看| 超碰在线观看av不卡| 1769一区| 操我无码| 97久久久| 综合网久久| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 超碰人妻久久人妻中文97| 97精品综合久久网| 色与欲影视天天看综合网| 大香蕉日亚洲日本亚大| 中文字幕在线免费观看 | 思思热在线| 人妻精品综合中文字幕在线 | 欧美老妇综合网| 欧美极品少妇交| 精品网站9999| 日日黄色三级网站| 九九九不卡| 91成人在线免费视频| 免费AV播放| 中文字幕高清20页视频| 久久久久9999精品九九九| 亚州色图欧美| 亚洲中文字幕av| 免费无码婬片AAAA片直播色戒| 粉嫩av平台| 一级免费啪啪片| 色婷婷丁香五月| 大香蕉伊人在线成人AV在线观看| 97在线欧| 国产JDAV无码视频在线观看| 九月色婷婷| 欧洲Au麻豆| 久久久999国产精品| 欧美 亚洲 第一页| 欧美日韩操逼嗦吊| 午夜福利区| 亚洲情色视频| 五十路三区在线| 日B操| 天天天天操| 九九九九九九成人| 亚洲一区二区av| 国产毛片久久久久久久| 丝袜美腿诱惑亚洲欧美视频在线观看 | 99久久这里只有精品| 国产在线精品电影观看| 97干在线视频| 日韩精品永久在线观看| 超碰 另类 欧美 | 天天躁日日躁XXXXYY| 免費人妻夜夜爽天天爽爽一区| 日韩图区| 人妻献身系列第54部| 色婷婷电影| 久极品在线观看| 天天天干977| 天天色,天天干,天天干| 岛国人妻少妇av在线观看| 免费的黄片wwwwww| 加勒比性爱成人在线| 欧美不卡五十路| 亚洲综合五月天婷婷丁香| 99精品伊人| 又大又大又大又粗爽高潮观看 | 国产三级多多影院2022国产AA一级毛片无码 | 亚洲五区熟女| 顶级丝袜熟女一区二区三区| 伊人aaa| 伊人热综合| 91人妻丝袜无码| 9久久久久久| 国产呦精品一区二区三区下载| 亚洲色图20p| 人人摸人人入| 性欧美另类高清| 欧美人妻色| 色吧 综合| 91丨九色丨熟女高潮| 大茄子熟女AV导航| 中文字幕亚洲在线一区| henhen91| 大香蕉啪啪啪| 色97干| 日本午夜久久电影| 久久久涩| 蜜桃精品一区二区三区ww| 亚洲第一页色网| 99性视频| 精品在线蜜臀| 综合激情二| 青青青青草av在线观看| 一级做a爰片久久毛片图片| 日本东京热大香蕉a片| 天天日天天干天天色| 九区国产| 九九综合久久| 国产精品白领在线观看| 色欧洲97| 色噜噜狠狠色综无码久久合欧美| 成年无码动漫av片无尽在线| 男插女青青影院| 亚洲AV噜噜狠狠网址蜜桃动漫| 日韩精品操少妇| 亚洲日韩美女中文字幕乱| 色女99一级片在线观看| 北约熟女超碰| 亚洲综合另类色图| 中亚精品极乱| 欧美黄色手机在线观看| 久久国产999| 午夜黄色免费在线观看| 综合久久久久久久久91| 中文在线视频| 泰国AV在线观看| 日韩无码视频黄色| 国产精品网址| 日韩精品大香蕉伊人在线| 五月天激情网图片| 啪啪啪东京| 91精品国产91熟女| 欧美日韩亚洲天堂网| 不卡啪啪视频| 少妇厨房愉情理伦片bd在线观看| 国内三级自拍小视频在线观看| 久久久内射良家| 天天看高清麻豆| 日本精品性生活久久久| 久99在线免费观看视频| 二对二中文字幕。| 性色高清..……| 黑人在线91| 欧美日本天堂| 欧美老熟另类| 色婷婷丁香五月天| 成人性爱全视频观看| 久久久久久夜夜夜夜夜| 丰满高潮18xxxx| www.五月天| 老熟女91av| 91美女视频直播| 免费一级精品啪啪视频| 爱我干综合| 欧美一二三区四五区| 91精品免费| 91亚洲情色| 2019久久久久久久久福利| 一区二区三区精品黑丝白丝酒店对鸡| 中国黑人三级片网站上区| 国产怡红院在线| 波多野42部激情无码喷潮| 亚州AV无码国产精品| 人人喜人人妻| 人人澡综合涩| 亚洲日韩在线a不卡99精品| 久9视频| 熟女自慰久久久| 亚洲色电影在线| 亚州免费啪啪视频| 色999偷自拍拍| 人妻熟女一区二区三区视频| 丰满人妻av一区二区三区| 2019AV天堂| 欧美色宗合| 四虎影院成年人片| 欧美性视频二区三区| 3PAV乱伦视频| 日韩欧美女优电影| 欧美性爱一区二区三区| 亚洲一区二区精品福利| 激情五月天校园春色网| 在线观看免费视频国产| 神马午夜久久久| 日韩欧美日韩| 混色激情av| 天天摸天天操视频| 91九色首页| 91精品婷婷国产综合久久| 免费观看国产不卡av| 中文字幕在线观看网页| 亚洲最新Av| 人人操天天爽| 在线中文字幕| 九九热超碰97亚洲最新香蕉| 国模私拍一区二区三区神乳| 男人的天堂色偷偷青青草视频婷婷网| 人妻丝袜一区二区三区在线| 亚洲乱码国产乱码精网站| 91女网站| 综合自拍| 欧美色图欧美| 精品久久久无码| 久久人妻| 五月婷婷hd| 免费强奸av| 鸥美中出| 欧美日日夜夜| 亚欧免费| 999色欧美中文字幕| 日韩性爱再线视频| 97久久久久| 狠狠久久亚洲欧美专区| 中文字幕丰满人妻日本| 中文字幕加勒比海高清无码免费视频 | 免费精品AB| 婷婷丁香熟妇综合网| 蜜臀久久久99久久久久| 好湿好紧好爽 视频| 91精品国产91久久青草| 超碰在线人妻不卡| 综合欧美日本三级| 丝袜足交视频| 麻豆精品A片免费观看| 色色香蕉| 国产馆| 草b在线| 色色香蕉| 伊人骚琪琪亚洲天堂网站| 国模限制级电影| 日本成人A片网站| 成人资源中文字幕在线观看| 国产不卡精品91| 91人妻最真实刺激绿帽| 欧美成人精品一区二区男人蜜臀 | 男人的天堂午夜av| 四虎影视国产精品| 最新亚洲风情电影| 在线国产探花| 老熟女搡BBBB搡BBBB视频| 日韩不卡一二三四| 亚洲日韩AV视色| 在线 亚洲 网爆 自拍| 99re公开精品免费视频| 日韩性色| 日本孕妇孕交| 久久久久一本一区二区青青蜜月| 欧美日韩国产色图在线| 色吧5亚洲| 亚州五月| 加勒比在线视频| 青青草丝袜在线视频| 熟女探花啪啪| 精精品人妻一区二区三区| 97国产天堂岛| 国产精品青青草| 浪人综合网| 成人av性爱电影在线观看| 欧美综合色图片| 欧美亚洲高清不卡| 蜜臀AV成人精品蜜臀AV久久| 99综合免费视频| 免费看黄视频亚洲网站| 亚洲丝袜综合| 激情欧美97| 伊人午夜福利视频| 日韩少妇无吗| 国模不卡一本二本三电影| 五月天偷拍| 亚洲人妻中文高清| 测评在线观看AV| 五月天亚洲色图| 欧美综合色| 999熟女精品| 久久99手机免费视频| 中文字幕在线观看丝袜| 免费一级毛片在线视频观看| 久久av成人无码免费| 欧美日韩黄片精品在线| 男人天堂网址| 综合欧美色图| 久久大| 日日超碰亚洲| 亚洲欧美色图| 久草久热| 九九久久首页| 国内精品不卡无毒99999| 国产高潮AA片免费看| 黄色av一区二区在线| 国产欧美岛国精品一区| 一起草日韩| 911av网站免费观看| 亚洲激情综合另类男同| 在线免费观看日韩一区| 天天综合网日韩7799| 亚州免费啪啪视频| 国产1769在线| 殴美大黄片| 国产视频一区二区免费| 操人91| 天天干天天爽| 一区二区三区网站日日骚| 2020视频1区2区3区| 女人的久久久| 久偷拍| 久久久久久久久久黄色网| 97丝袜亚洲在线播放| 97在线资源| 深爱伊人影院| 欧美色女人| 粉嫩av平台| 91亚州| 亚洲小电影免费涩涩成人在线高清| 伊人精品久久网站| 亚洲高清无码免费观看视频| 五月天婷婷欧美三区| 亚洲精品一二三四区| 国产精品天美传媒| 久久久久78| 欧美天堂超碰97| 综合亚洲欧美| 国产欧美日本亚洲精品| 日本操BAV| 四虎AV在线观看| 欧美九九99久久精品| 99re在线视频国产| 超清中文乱码字幕| 操逼操网| 亚洲欧美日韩免费观看| 高清一区AV无码| 涩五月婷婷| 综合干干干av久久久综合网| AV女资源| 国产av波波国产精品| 五月婷婷激情综合| 日本一天色道久久久精品视频| 精品制服美女中文一区二区三区| 久久超碰网| 老熟女乱子伦中文字幕一区二区| 亚洲综合小说另类图欧美视频激情小说色五月天 | 综合五月天| 美女熟妇色| 亚洲操操| 欧美亚洲成人在线一区二区三区| 久久精品店| 免费伦费视频在线观看| 亚洲春色激情小说| com 首页 18岁 禁区 女优 免费 精选 同城 | 亚洲中文字幕妇伦久久| 欧美日韩妖精91com| 久久久久亚洲三级电影| av天堂影视中文在字幕在线中文 | 天天色综合天天操| 干B| 天天日夜干| 午夜无码精品免费看性色| 春色校园综合网| 东北女人性交| 综合免费无码中文| 78p欧美| 人爽不卡视频| 日本中文字幕在线视频 | 男人a天堂手机在线版| 久久久影院| 天天久久久久久| 强奸乱伦亚洲第一页| 丁香五月天婷婷姐| 婷婷五月天激情四射| 91人人臊| 人人妻天天做天天爽| 亚洲国产91精品一区二区久久| 久久麻豆一区二区| 国产白丝网站| 五月丁香婷婷综合| 日韩成人人妻网站| 在线无码操| av天堂天堂av日韩| 天天天肏屄欧美| 久久AV无码AV| 国产精品一区人妻精品阁在线| 天天干夜夜| 国产高清视频无码在线| 大香蕉综合久久| 9久在线视频只有精品| 国产精品交换一区二区| 欧美性爱超碰97| 丁香六月婷| 舔人妻中文免费视频| 亚洲精品一区二区三区在线播放| 久久久久9999精品九九九| 一级黄色性爱裸体视频| 一区二区三区四区五区高清无码永久视频 | 亚洲成?V人片在线观看福利| 神马久久久久久久久久| 日韩操逼性鲍| 天美传媒在线一区| A 天堂在线观看视频| 日韩 欧美 国产 麻豆| 久久婷婷综合国际产色怕| 亚洲麻豆18发?| 白嫩国模丰满一二三区| 97精品在线| 最新国产精品久久精品| av影院十区| 夜夜爽爽爽| 大香蕉伊人网| 欧美亚洲涩涩| 午夜男人一级A片7777| 男人的天堂视频精品乱在线| 精品少妇后入一区二区三区四区人妻巨乳 | 97中文超碰| 啪啪性爱免费视频| 九区国产| 91欧美| 久久精品国产亚洲AV清纯| 国产农村妇女精品1区二区| 91内射| 久久大陆| 亚洲av无线观看| 久久色情| 熟女乱伦A| 亚洲综合色图欧美| 免费农村成人少妇人妻Aa一区二区视频| 黄人人操人人操| 国产吹潮女在线观看| 久久五月视频| 亚洲激情在线观看一区| 激情文学亚洲| 干B视频伊人网| 国产99久久99热这里只有精品15| 久热这里只有精品9| 日本三级小说中文字幕| 综合欧美日本三级| 欧美日韩大香蕉| 久久精品电影| 九九九久千久久激情蜜桃在线看 | 国产乱人妻精品入口| 亚洲精品视频二区| 黄色电影观看久久9| 亚洲精品欧洲色| 亚洲第91页| 亚洲成人av色网| 国产理论视频在线播放| 91性色| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 久久大香蕉97| 欧美成人综合| 黄色乱论网站| www色婷婷| 久久综合资源一区二区| av影院十区| 青青久久久| 一本一首道人妻少妇免费久久| 伊人久久88国产女| 国产亚洲精品玖玖玖在线观看| 日本在线观看网址| 97伊人| 九九亚洲色在线观看| 嗯嗯啊啊用力视频免费| av中文在线| 精品国产乱码久久久久久口爆网站| 天天干人人看综合| www…国产操逼| 精品欧美А∨无码黑人大荫蒂| 蜜臀久久99精品久久久久久| 精品一区二区2| 国产精品午夜福利视频| 亚洲永久AV无码精品秋霞| 国产原创自拍| 亚洲人妻av| 国产 v乱码一区二| 亚洲暴力强奸AV| 国产精品分类在线观看| 一起草高清无码| 九九九九九九九九九国产精品| 97欧美色| 人妻少妇无码| 欧洲站一级二级三级h| 亚洲男人的天堂网| 色麻豆AV| 男人的天堂在线| 神马久久69| 天堂在线一区二区| 亚洲熟女综合| 台湾大香蕉99热| 麻豆久久久久久久久丝袜 | 日本久久女同性恋视频| 精品人妻一区二区三区在| 人妻丝袜美腿中文字幕| 久久超碰网| 91综合网| 97在线视频观看网站| 天天操天天干一区二区| 99久久婷婷丁香| 亚洲成人无码影院| 333kkkk·亚洲com久久| 丰满人妻一区二区三区大胸懂色 | 国产偷拍网站| 影音先锋每日最新资源在线观看 | 人妻少妇精品一区二区三区| 中亚精品极乱| 天天干,天天日| 日本裸体久久色噜噜| 蜜奶av| 熟妇精品juliaannAV| 亚洲男人的天堂网| 黄站在线免费观看| 先锋女优在线观看视频| 操东北女人| 三级日本一区二区三区| 宅男影院久久久,99| 丁香五月天久久精品视频一区二区三区| 影音综合网| 999 久久久| 久久亚洲天天做| 热热色青青草| 久热一区二区| 国产亚洲女v在线观看| 精品国产www久久| 精品 码产区一区二-1080P高清在线www-B029AV | 色哟哟av| 国产捆绑一区| 91社区拍啪人妻| 婷婷综合久久| 大香蕉伊人在线成人AV在线观看| 青青草伊人久久| 欧美激情在线观看视频| 26uuu国产亚洲综合| 丝袜熟女一区二区三区| 丝袜美腿欧美| 麻豆精品三区视频| 美女啊啊啊啊啊| 情趣丝袜无码操逼视频| 综合久久中文字幕综合日韩精品| 青青草在线成人视频| 六月婷婷一区二区三区| 欧美亚洲首页| 激情熟女12P| 国产91美女高潮| 激情综合网一盗摄| 综合色一区三区二区| 亚洲精品三区在线观看| 五月婷婷丁香六月| 中文字幕AV片| 亚洲天堂欧美| 久久精品国产亚洲AV片多多| 色月天AV导航| 97久久久网站| 十八禁视频一区二区| 日韩国语字幕| 天天干1区2区在线| 国产精品久久久久久久久久梁医生| 国产在线精品偷| 99xav| 91无遮挡| 操人91| 91九九九吃| 囯产精品久久久久久久久久梁医生| 国产又操| 操我啊啊啊啊啊| 国产无码成人无码| 色婷婷电影网| 噜噜瑟| 自拍偷拍 高清无码| 亚洲天堂女优在线| 天美传媒AV在线| 日本欧美亚洲高清在线看| 今日头条成人一区二区三区四虎精品 | 另类 日韩 熟女| 成人片视频| 99久久久久久亚洲精品不卡| 色噜噜综合在线| 免费视频观看60秒| 97伦乱| 国产中文字幕在线点播| 国产suv精品一区二区四| 九九热re99re6在线精品| 岛国艾薇凹凸视频天堂| 天天摸天天舔天天操| 日本孕妇一区二区视频操逼免费看| 97AV爱| 国产又黄又爽| 国产一区96在线| 国产欧美另类久久久精品课程| 中文自拍欧美影视| 男女性扦B| 国产偷拍自拍在线视频| 日韩不卡网操逼中文字幕日韩| 精品国产无码中文| 亚洲污一污二| 免费视频在线一区二区不卡| 亚熟在线| 少妇厨房愉情理伦片bd在线观看 | 97超碰人人模人人拍人人| 久操黄色视频| 91欧美大片| 9热9热综合网| 亚洲精品一区二区精品| A啊啊在线观看| 高清国产性猛交xxxx乱大交| 日韩视频小说在线观看| 大香蕉专区| 日韩av电影网站| 中文字幕在线高清男人的天堂| 久久超碰天天| 99综合免费视频| 中文字幕三四区| 久久久久一本一区二区青青蜜月| 又大又大又大又粗爽高潮观看| 久久、1234| 黑人无码一区二区| 综合亚洲网| 天美传媒国产原创中文字幕亚洲欧美另类 | 伦伦成年午夜免费视频| 少妇激情AV| 色五月婷婷网| 日本熟女不卡视频| 国产丝袜高跟美女av免费观看| 日韩黄色电影网站| 久久少妇| 久久亚洲熟妇在线视频| 欧美人妻精品一区二区| 国产美女高潮视频| 伊人青青一区成人视频在线观看区| 国产欧美日本亚洲精品| 97网址97| 一级啊性爱在线视频| 成人精品无码| 人摸人人操人| 神马久久久久久久久| 后X久久| 亚洲第一狼人丝袜美女另类| 天天日天天干天天摸天天操| 欧美制服另类丝袜| 国产不卡免费在线视频| 精品国产乱码久久久A| 国产亚卅97| 92人人操人人| 无码人妻精品一区二区三区99不卡| 少妇99| 精品久久久久9999| 天天日天天干天天整| 一起草高清无码| 污电影在线观看| 搡老女人老妇女老妇老熟女怎么读| 天天操天天干一区二区| 日本男人天堂| 国产视频小说| 人妻天天爽夜夜爽爽| 亚洲高清无码在线桃色| 91丨人妻丨国产丨丝袜| 夜夜做夜夜爽精品视频| 99黄页网站| 久草久热| 五月丁香六月婷综合成人综合 | 黄色小说亚洲| 99热最新网址| 中文字幕亚洲热播人妻| 清纯唯美亚洲综合| 国产久9| 9久久美女首页| 亚洲色偷偷色噜噜狠狠99网| 亚洲精品a人片在线观看视| 视频一区二区免费在线| 亚洲双插| 亚洲日韩欧美一区二区| 日韩精品人妻中文字幕有码午| 婷婷伊人网| 乱伦av麻豆| 777琪琪午夜免费A片| 丝袜足交视频| 欧美色综合网| 国产AV线| 天天摸天天碰天天添青青| 日韩一区二区精品视频| 丁香婷婷啪啪| 亚洲成人性爱在线观看| 精品无码不卡视频| 亚洲无码成人精品| 国产精品第一区第一页| 襙一襙| 日本成a人v网站在线观看| 三久久久四久久久久| 亚洲女人毛茸茸91| 天天射夜夜| 国产精品久久久久久久久久久久久久久久久久 | 人妻无码视频一区二区三区久久| 欧亚第一综合网| 欧美日韩人人精品| 啊啊啊啊啊啊在线看| 欧美激情亚洲色图| 国产精品久久久视频| 亚洲欧洲偷拍一区| 久久香蕉国产传媒一区剧情天美| 亚洲狠狠入| 很狠操| 欧美精品黑人猛交高潮| 熟女六十路| 91精品人妻一区二区三区蜜桃| 2001天天操| 亚洲成av人片色午夜乱码| 亚洲性爱成人| 日韩熟女精一区二区三区不卡| 成人色女网| 91九九九馒头| 中日韓欧美高清| 天美一二三在线观看Av| 97爱b| 欧美亚州色的图| 欧美综合天堂| 亚洲久久久久| 日韩综合成人免费视频| 亚洲高清无码在线桃色| 99精品在线播放| 射 色综合| 熟女中出视频| 色天堂在线观看| 国产成人啪一区二区| 久久机热| 国产成人精品网站| aV中亚| 亚洲色图尤物视频| 国产精品一二三在线看| av片在线观看免费播放| 天天操夜夜嗨| 丰满人妻一区二区三区免费,| 亚洲熟妇丝袜在线观看| 黄呦呦在线| 色欲久久99精品久久| 人妻丝袜日本| 国产亚洲深夜激情| 久操视频资源站公开| 亚洲成人免费在线| 夜夜高潮夜夜爽高清视频一 | 乱老熟女一区二区三区| 死我十八禁| 无码动漫av中文字幕| 成人性爱视频在线看| 久久婷婷五月天| 超碰性爱97| 人妻精品一区一区三区蜜桃91| 麻豆视频一区二区| 国产精品美女久久久久久网站| 欧美一级黄片视频在线| 久久久久久久人妻| 目产99999久久999| 欧美 色 亚洲| 一区二区三区国产在线播放| 入口操逼网站| 人妻插插人妻人| 啊啊啊啊在线播放| 肏逼视频日本| 亚洲AV成人无码一区二区三区在线观看| 久久这里只精品99re66图| 欧美性爱一区| 久久99国产精品| 国产精品嫩草久久久久| 偷拍 精品另类 凸凹了四区| 96国产污污污丝袜| 中文日韩欧美熟| 欧美色www亚洲国产阿娇要播| 欧美人妻一区| 亚洲欧洲无码97久久精品| 老女人综合网| 国模少妇一区二区三区| 亚洲中文电影| 免费精品无码一级毛片牛牛影视| 高跟丝袜AV专区国产| yazhousetuoumei| 欧美综合天天| 久精品无码av一区二免费国产在线观看 | 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 日韩97视频!在线| 久久久夜夜夜| 日日干夜夜干| 欧美日韩久久精品爱爱| 91婷婷| 日本97久久久精品| 在线视频 亚洲精品| 亚洲欧美成人在线| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 你懂得91| 久久久国产精品亚洲精品| 国产又粗又大硬免费色网视频| 精品国产精品一区二区| 东北操逼| 中文操逼字幕| 人妻精品综合中文字幕在线| 日逼97| 玖玖97综合| 精品欧美乱码久| 色色色综合网| 99热欧美| www网站黄| 国产精品一区二区后入| 国产美女裸体秘 永久无遮挡| 极品丝袜无码| 久久精品久| 天天日少妇逼AV| 亚洲综合一| 国产 三级自拍| 欧美日韩狠狠爱| 色播五月丁香| 天天操妹子| 欧美自拍偷拍免费观看| 蜜臀av中文字幕| 亚洲天堂7777| 九九九九九九免费视频| 亚洲AV成人无码一二三久久| 欧美后入视频| 国产AV毛片| 夜色97| 人人做人人妻人人夜视频| 黄网站黄视频网站进入口| 久久人人舔人人爽舔人人av片| 小骚逼被操的爽不爽| 操逼国产免费| 无码九九| 青青伊人这里只有精品| 狠狠色五月亚洲91| 成人 日韩欧美一区| 久久久久久久唑| 欧美 中文字幕 一区| www男人天堂| 日韩一区二区熟女| 国产一区二区在线播放量| 无码视频一区二区| 综合五月婷婷亚洲一区| 中文字幕78| www熟女乱伦com| 免费超碰97久久| 懂色AV蜜臀无码精品APP| 丁香九月婷婷| 久久綜合很很很| 亚洲一卡2卡3卡4卡乱码网站| 肉丝中文无码高清| 国产亚洲日本精品在线| 农村妇女一级二级三级视频| 96精品久久| 久久免费看高潮毛片韩国| 夜夜操青青草| 福利五区| 超91综合网| 国产在线视频二区| 久久久久久中文| 色丁香久久| 美女视频尤物网在线看| 后入式福利| 亚洲AV无码天美传媒一区| 亚洲天堂五月天国产| 亚洲色棕合| 人人喜人人妻| 亚洲AV噜噜狠狠网址蜜桃动漫| 亚洲性刺激| 狠狠操夜夜操蜜桃视频三区| 日韩欧美中文| 亚洲高清自拍| 99热8| 99re这里只有精品中心播放| 亚洲操逼视频网站| 操逼网站网站| 99蜜月精品久久| 日本精品人妻少妇一区二区| 国产精品青草综合久久| 亚洲无码视频免费在线观看网址!| 2017天天透天天通天天擦| 久久久一区二区三区四曲免费听| 人妻中文字幕日韩电影| 精品亚洲| 国产精品高朝久久久久久久| 日本免费不卡二区| 美国人人操人人操| 级做a爱无码性色永久免费| avav青青草久久夜| 一区二区精品更新提醒| 久久久久久久人妻| 国产成人在线观看综合| 久热在线精品免费观看| 亚洲国产天堂| 色偷综合| 91路www| 亚洲棕合电彰| renqi久久久久久久久久久久| 青青操少妇| 黑人综合色| 欧美丝袜激情| 99青草| 五月婷婷爱六月丁香色| 欧美伊人久久综合网| 91天天综合日韩欧美| 亚欧美色图| 伊人久日| 夜夜操一区二区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 操逼操2| 青青草在线视频播放器| 国产一区二区久久| 亚洲图片欧美制度| 人妻天天夜夜爽一区二区| 亚洲欧美高清无码| 四虎国产精品永久入口| 天天综合-91入口| 九久久精| 99超碰网| 欧美啪啪色吧在线| 色欧美色交综合| AV男人天堂网| 大屁股国产在线视频| 欧美激情一| 男人的天堂无码| 秋霞鲁丝午夜无码一区二区三| 欧美日韩淫加| a网站免费观看| 日韩欧美女优电影| 人妻天堂综合网| 亚洲日韩一区电影| 日本久久99| 国精品一区二区三| 久久久啊啊| 97综合在线观看| 蜜臀精品1区2区| 1204av韩国| 国产日韩人人| 欧美999999| 色哟哟av网址| 天干天干天干天天做| 丰满少妇精品一区二区| 麻豆a'v电影| 精品久久久久成人码免| 欧美92| 久久免费少妇| 国产强奸乱伦无码视频| 免费无码婬片AAAA片直播色戒| 欧美激情性爱视频网站| 中日亚韩免费视频| 秋霞免费AV| 国模精品一区二区三区苹果色戒| 激情开心五月天| 久久理论字幕视频| 亚洲免费97免费| 国产精品午夜成人福利| 欧美人妻另类在线| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 欧美不在线| 污色区网站| 国产日韩区| 极品色www影院| 人人色97| 96久久久精品|