99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Java課設(shè)必備:健身房管理系統(tǒng)SSM+MySQL完整實(shí)現(xiàn)指南

Java課設(shè)必備:健身房管理系統(tǒng)SSM+MySQL完整實(shí)現(xiàn)指南 簡介面向Java開發(fā)學(xué)習(xí)者及畢業(yè)設(shè)計(jì)/課程設(shè)計(jì)人員這份基于SSM框架的健身房管理系統(tǒng)資源覆蓋了從會員卡辦理、課程與教練信息管理到私教課程報名、上課記錄維護(hù)、會員繳費(fèi)統(tǒng)計(jì)及意見反饋處理等完整業(yè)務(wù)鏈系統(tǒng)后臺按管理員和會員兩種角色劃分前者負(fù)責(zé)卡務(wù)、課程、教練、記錄與統(tǒng)計(jì)管理后者可查看個人會員卡、修改信息、報名私教并提交反饋。資料包以zip壓縮包形式提供整體大小約21.61MB壓縮包格式便于直接下載部署。目前已有75人參與學(xué)習(xí)。資源以Java為開發(fā)語言采用SSM框架進(jìn)行代碼分層管理配合MySQL數(shù)據(jù)庫設(shè)計(jì)能幫助讀者理解框架整合思路、數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)以及角色權(quán)限下的核心交互流程可作為課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或項(xiàng)目初期原型的代碼基礎(chǔ)與業(yè)務(wù)參考適合需要快速掌握健身房管理系統(tǒng)核心模塊的開發(fā)者。1. 健身房管理系統(tǒng)為什么它成了Java課設(shè)里的常駐題目在Java課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)選題里健身房管理系統(tǒng)是出現(xiàn)頻率極高的題目。它技術(shù)棧相對固定Java SSMSpring、SpringMVC、MyBatis MySQL卻把會員卡辦理、課程和教練管理、私教課報名、上課記錄、會員繳費(fèi)、意見反饋這些業(yè)務(wù)串成完整閉環(huán)還區(qū)分了管理員和會員兩套權(quán)限視角。它不是那種只有幾個登錄頁面的空殼demo。管理員要管會員卡與繳費(fèi)、維護(hù)課程和教練信息、添加私教課上課記錄、回復(fù)會員反饋會員能修改資料、報私教課、查繳費(fèi)記錄和上課記錄、提交反饋。業(yè)務(wù)面覆蓋了權(quán)限區(qū)分、一對多建模、統(tǒng)計(jì)查詢正好把SSM框架知識落到真實(shí)項(xiàng)目里。適合正在做課設(shè)、需要參考源碼的同學(xué)也適合剛學(xué)完Servlet想看看SpringMVCMyBatis怎么組織項(xiàng)目的新手。下文按拆表→搭框架→實(shí)現(xiàn)業(yè)務(wù)→排坑→驗(yàn)收講解的順序把這套系統(tǒng)關(guān)鍵環(huán)節(jié)完整復(fù)現(xiàn)一遍。2. 數(shù)據(jù)庫設(shè)計(jì)先拆七張業(yè)務(wù)表再寫Mapper SQL2.1 先按角色把業(yè)務(wù)邊界劃出來在建表之前先把兩個模塊的邊界理清。管理員負(fù)責(zé)會員卡信息管理和會員繳費(fèi)完成課程和教練信息的添加與管理添加私教課程上課記錄查看和回復(fù)意見反饋還要能對繳費(fèi)記錄、上課記錄做查詢統(tǒng)計(jì)。會員負(fù)責(zé)查看會員卡信息、修改個人資料、報名私教課程、查看自己的繳費(fèi)和上課記錄、提交意見反饋。邊界定了表就出來了。會員得存教練和課程得存私教報名是“一個會員選一門課”的關(guān)聯(lián)關(guān)系上課記錄要反映“誰在什么時間上了誰的課”繳費(fèi)記錄要回答“會員為什么付了多少錢”反饋要記錄“會員說了什么、管理員有沒有回復(fù)”。按這些業(yè)務(wù)點(diǎn)我拆成七張表member、coach、course、signup、attend_record、payment、feedback。表名職責(zé)關(guān)鍵字段member會員與會員卡信息card_no、balance、expire_datecoach教練信息name、specialty、statuscourse課程信息coach_id、price、start_time、end_timesignup私教報名關(guān)系member_id、course_idattend_record實(shí)際上課記錄member_id、course_id、coach_idpayment繳費(fèi)記錄member_id、amount、pay_typefeedback意見反饋與回復(fù)content、reply、status這里有個取舍會員卡信息我沒有單獨(dú)建card表而是把卡號、卡類型、到期時間、余額直接放進(jìn)member表。一個會員對應(yīng)一張卡本來就是一對一關(guān)系課設(shè)這個規(guī)模下單獨(dú)建表只會增加聯(lián)表查詢沒什么收益。如果以后要支持實(shí)體卡掛失補(bǔ)辦、多卡種切換再把card拆出來也不遲。2.2 建表腳本與關(guān)鍵字段設(shè)計(jì)member表的建表腳本長這樣CREATE TABLE member ( id INT(11) NOT NULL AUTO_INCREMENT, card_no VARCHAR(32) NOT NULL COMMENT 會員卡號, card_type VARCHAR(20) DEFAULT 普通卡 COMMENT 卡類型普通卡/月卡/年卡, password VARCHAR(64) NOT NULL COMMENT 登錄密碼MD5 后存儲, name VARCHAR(30) NOT NULL, phone VARCHAR(20) DEFAULT NULL, balance DECIMAL(10,2) DEFAULT 0.00 COMMENT 卡內(nèi)余額, expire_date DATE DEFAULT NULL COMMENT 會員卡到期時間, status TINYINT(4) DEFAULT 1 COMMENT 1 正常0 停用, PRIMARY KEY (id), UNIQUE KEY uk_card_no (card_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT會員表;幾個字段值得單獨(dú)說明。金額一律用DECIMAL(10,2)不用float或double浮點(diǎn)數(shù)在結(jié)算類業(yè)務(wù)里會累積誤差這在課設(shè)答辯時經(jīng)常被問到。密碼字段存的是MD5后的值不是明文登錄時拿頁面輸入做同樣的MD5再比較不要在SQL里對數(shù)據(jù)庫字段做運(yùn)算。card_no加了唯一索引防止同一張卡被重復(fù)辦理。課程和教練是典型的“教練一對多課程”關(guān)系course表里存coach_idCREATE TABLE coach ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, phone VARCHAR(20) DEFAULT NULL, specialty VARCHAR(50) DEFAULT NULL COMMENT 擅長方向增肌/減脂/康復(fù), status TINYINT(4) DEFAULT 1 COMMENT 1 在職0 離職, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT教練表; CREATE TABLE course ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, coach_id INT(11) DEFAULT NULL, type VARCHAR(20) DEFAULT 私教 COMMENT 私教/團(tuán)課, price DECIMAL(10,2) DEFAULT 0.00, start_time DATETIME DEFAULT NULL, end_time DATETIME DEFAULT NULL, max_count INT(11) DEFAULT 10 COMMENT 團(tuán)課人數(shù)上限, status TINYINT(4) DEFAULT 1, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT課程表;課程表里同時存start_time和end_time是為了后面排課沖突判斷和上課記錄查詢時可以直接用時間范圍去查不用在Java里手動解析拼接字符串。max_count對團(tuán)課有用私教課默認(rèn)填1頁面報名按鈕什么時候置灰就看當(dāng)前報名數(shù)是否等于max_count。剩余四張表signup、attend_record、payment、feedback結(jié)構(gòu)差異大合并放在一個腳本里CREATE TABLE signup ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, course_id INT(11) NOT NULL, signup_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_member_course (member_id, course_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT私教報名表; CREATE TABLE attend_record ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, course_id INT(11) NOT NULL, coach_id INT(11) NOT NULL, attend_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT上課記錄表; CREATE TABLE payment ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, amount DECIMAL(10,2) NOT NULL, pay_type VARCHAR(20) DEFAULT 現(xiàn)金 COMMENT 現(xiàn)金/微信/支付寶, pay_time DATETIME DEFAULT CURRENT_TIMESTAMP, remark VARCHAR(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT繳費(fèi)記錄表; CREATE TABLE feedback ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, content VARCHAR(500) NOT NULL, reply VARCHAR(500) DEFAULT NULL COMMENT 管理員回復(fù)內(nèi)容, status TINYINT(4) DEFAULT 0 COMMENT 0 未回復(fù)1 已回復(fù), create_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT意見反饋表;signup表上的唯一索引(member_id, course_id)是我最看重的一個細(xì)節(jié)防止同一會員反復(fù)報名同一節(jié)課產(chǎn)生臟數(shù)據(jù)。業(yè)務(wù)層可以做判斷但數(shù)據(jù)庫索引兜底更穩(wěn)。還要分清signup和attend_recordsignup是報名代表“他選了課”attend_record是實(shí)際上課記錄代表“他來了并上完了”。2.3 建表階段的四個禁忌第一主鍵不要用業(yè)務(wù)字段。比如有人覺得card_no唯一直接拿它當(dāng)主鍵結(jié)果會員卡掛失換號時所有關(guān)聯(lián)表都得跟著改這是給自己挖坑。主鍵永遠(yuǎn)用自增id業(yè)務(wù)字段用unique key約束。第二時間字段類型不要亂選。日期型用DATE日期時間型用DATETIME不要圖省事全用VARCHAR。用VARCHAR存時間排序是字典序區(qū)間查詢不走索引后面統(tǒng)計(jì)“本月繳費(fèi)總額”時特別痛苦。第三金額和數(shù)量用DECIMAL和INT。金額用DECIMAL(10,2)人數(shù)、次數(shù)用INT不要用字符串存數(shù)字。這個屬于“看一眼數(shù)據(jù)庫就知道作者有沒有經(jīng)驗(yàn)”的檢查點(diǎn)。第四表名和字段名統(tǒng)一小寫下劃線風(fēng)格。Java實(shí)體類用駝峰屬性MyBatis里打開mapUnderscoreToCamelCase配置后select * 的列就能自動映射到實(shí)體省掉每張表寫resultMap的功夫。很多java課程設(shè)計(jì)案例源碼里表字段一會兒駝峰一會兒下劃線Mapper里就不得不寫一堆別名純屬自找麻煩。表結(jié)構(gòu)定稿后我建議先別急著寫Java代碼花十分鐘用Navicat的ER圖功能核對一遍表關(guān)系。member和signup是一對多course和signup是一對多feedback掛在member下面打開ER圖一眼就能看到哪條線連錯。代碼寫到一半發(fā)現(xiàn)查不到數(shù)據(jù)回來看往往是外鍵方向?qū)懛碋R圖能提前暴露這個問題。3. SSM三層架構(gòu)把請求從JSP送到數(shù)據(jù)庫再返回來3.1 依賴清單與版本選擇SSM項(xiàng)目第一步是Maven依賴。這套系統(tǒng)的技術(shù)棧是Spring SpringMVC MyBatis MySQL核心依賴如下dependencies dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version5.2.22.RELEASE/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version5.2.22.RELEASE/version /dependency dependency groupIdorg.mybatis/groupId artifactIdmybatis/artifactId version3.5.9/version /dependency dependency groupIdorg.mybatis/groupId artifactIdmybatis-spring/artifactId version2.0.7/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.8/version /dependency dependency groupIdjavax.servlet/groupId artifactIdjstl/artifactId version1.2/version /dependency /dependencies版本選擇上有幾個經(jīng)驗(yàn)。Spring 5.2.x兼容JDK8也兼容大多數(shù)課設(shè)環(huán)境里的Tomcat 8.5/9MySQL驅(qū)動必須用8.x的com.mysql.cj.jdbc.Driver原因在避坑章節(jié)單獨(dú)講druid連接池比c3p0配置簡單自帶監(jiān)控頁面答辯時還能演示一下連接池狀態(tài)。如果拿到的源碼里是Spring 4.x配c3p0也能跑只是排查問題時參考資料少很多。項(xiàng)目結(jié)構(gòu)按Controller→Service→Mapper三層排布controller包放SpringMVC控制層service包放業(yè)務(wù)接口和實(shí)現(xiàn)類mapper包放MyBatis接口resources目錄下建mapper文件夾放XML文件。JSP頁面放WEB-INF/views下避免用戶繞過Controller直接訪問頁面。3.2 兩個核心配置文件的分工SSM的Spring配置通常拆成兩份applicationContext.xml負(fù)責(zé)業(yè)務(wù)層和持久層spring-mvc.xml負(fù)責(zé)控制層。前者在web.xml里通過ContextLoaderListener加載后者由DispatcherServlet加載。拆開的好處是以后要加定時任務(wù)、消息隊(duì)列它們只依賴業(yè)務(wù)層不必經(jīng)過MVC的Web環(huán)境。applicationContext.xml里最重要的是數(shù)據(jù)源、SqlSessionFactory、Mapper掃描和事務(wù)管理context:component-scan base-packagecom.gym.service/ bean iddataSource classcom.alibaba.druid.pool.DruidDataSource init-methodinit destroy-methodclose property namedriverClassName valuecom.mysql.cj.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/gym?useUnicodetrueamp;characterEncodingutf8amp;serverTimezoneAsia/Shanghai/ property nameusername valueroot/ property namepassword value123456/ /bean bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/ property namemapperLocations valueclasspath:mapper/*.xml/ property nameconfiguration bean classorg.apache.ibatis.session.Configuration property namemapUnderscoreToCamelCase valuetrue/ /bean /property /bean bean classorg.mybatis.spring.mapper.MapperScannerConfigurer property namebasePackage valuecom.gym.mapper/ /bean tx:annotation-driven transaction-managertransactionManager/ bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean三處容易翻車的地方。第一url里的符號在XML里必須寫成字面量否則XML解析直接報錯第二mapperLocations指向classpath:mapper/*.xml如果Mapper接口和XML不在這個路徑下后面所有Mapper方法都會失效第三mapUnderscoreToCamelCase打開后member表的card_no列自動映射到Member實(shí)體的cardNo屬性所有SQL都不用寫resultMap。如果你改過實(shí)體類屬性名這里記得保持風(fēng)格一致否則屬性永遠(yuǎn)為null。spring-mvc.xml的職責(zé)是把請求分發(fā)給Controller并決定視圖跳轉(zhuǎn)context:component-scan base-packagecom.gym.controller/ bean classorg.springframework.web.servlet.view.InternalResourceViewResolver property nameprefix value/WEB-INF/views// property namesuffix value.jsp/ /bean mvc:annotation-driven/ mvc:default-servlet-handler/InternalResourceViewResolver的prefix和suffix組合起來很直白Controller里return course/list最終渲染的是/WEB-INF/views/course/list.jsp。default-servlet-handler這行解決靜態(tài)資源被攔截的問題少了它jsp里的css和js會全部404。3.3 一次請求的完整旅程Controller→Service→Mapper以查看課程列表為例。瀏覽器請求/course/listDispatcherServlet交給CourseControllerController RequestMapping(/course) public class CourseController { Autowired private CourseService courseService; RequestMapping(/list) public String list(Model model) { ListCourse courseList courseService.findAll(); model.addAttribute(courseList, courseList); return course/list; } }Controller注解讓SpringMVC掃描到這個類RequestMapping(/course)是類級URL前綴方法上的RequestMapping(/list)拼起來就是完整請求路徑。Model在這里往JSP頁面?zhèn)鲾?shù)據(jù)頁面用EL表達(dá)式${courseList}遍歷即可不需要手動把數(shù)據(jù)塞進(jìn)request。return返回的不是頁面內(nèi)容是邏輯視圖名最終由視圖解析器拼成真正的JSP路徑。Service接口只暴露業(yè)務(wù)方法實(shí)現(xiàn)類注入MapperService public class CourseServiceImpl implements CourseService { Autowired private CourseMapper courseMapper; Override public ListCourse findAll() { return courseMapper.selectAll(); } }這里的Autowired按類型注入要求CourseMapper是被Spring管理的Bean前面MapperScannerConfigurer掃描com.gym.mapper包就是為了讓這些接口生成代理對象。啟動時報CourseMapper注入失敗十有八九是component-scan的base-package和mapper掃描的basePackage沒對齊。這段鏈路其實(shí)把Spring兩個核心概念都落到了實(shí)處。IoC體現(xiàn)在Service和Autowired上對象由容器創(chuàng)建注入代碼里沒有一行new CourseServiceImpl()AOP體現(xiàn)在事務(wù)管理上Transactional注解的方法執(zhí)行時Spring AOP自動在方法前后加上開啟事務(wù)和提交回滾的邏輯業(yè)務(wù)代碼里看不到一個commit或rollback調(diào)用。這兩句話背下來面試講項(xiàng)目比單背八股文有說服力得多。3.4 Mapper接口與XMLSQL的正確位置CourseMapper接口只寫方法簽名SQL寫在同名XML里兩者通過namespace綁定public interface CourseMapper { ListCourse selectAll(); }?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.gym.mapper.CourseMapper select idselectAll resultTypecom.gym.entity.Course SELECT * FROM course WHERE status 1 /select /mappernamespace必須寫成接口的全限定名id必須與方法名完全一致。resultType寫com.gym.entity.Course因?yàn)轳劮逵成湟汛蜷_表里的start_time列能自動映射到實(shí)體的startTime屬性不需要寫resultMap。這里稍微注意一下如果查詢的列在實(shí)體里沒有對應(yīng)屬性MyBatis不會報錯只會忽略排查頁面表格空列時記得先查這個。4. 核心業(yè)務(wù)落地辦卡繳費(fèi)、報名判重與上課記錄一條線4.1 會員辦卡與繳費(fèi)事務(wù)和并發(fā)一起考慮前端頁面填好姓名、電話、卡類型后提交后臺。表面上只是insert一條member記錄但產(chǎn)品流程里辦卡往往伴隨首筆繳費(fèi)比如辦年卡收2000元。兩個操作必須在一個事務(wù)里卡建好了錢沒記上對不上賬錢記上了卡沒建成會員沒法入場。Service方法加TransactionalService public class MemberServiceImpl implements MemberService { Autowired private MemberMapper memberMapper; Autowired private PaymentMapper paymentMapper; Transactional(rollbackFor Exception.class) public void openAccount(String name, String phone, String cardType, BigDecimal firstPay) { Member member new Member(); member.setName(name); member.setPhone(phone); member.setCardNo(generateCardNo()); member.setCardType(cardType); member.setBalance(firstPay); member.setStatus(1); memberMapper.insert(member); Payment payment new Payment(); payment.setMemberId(member.getId()); payment.setAmount(firstPay); payment.setPayType(現(xiàn)金); payment.setRemark(辦卡首充); paymentMapper.insert(payment); } }注意Transactional的rollbackFor要顯式寫成Exception.class。Spring默認(rèn)只在運(yùn)行時異常時回滾如果你在service里catch了異常又往外拋檢查型異常默認(rèn)配置不會回滾這筆賬就悄悄記錯了。這是課設(shè)代碼評審里出現(xiàn)頻率最高的問題之一。繳費(fèi)的第二種場景是續(xù)費(fèi)充值這里有個并發(fā)細(xì)節(jié)。用Java代碼先select出balance加錢后再update回去兩個請求同時進(jìn)來會互相覆蓋。常見做法是直接在SQL里完成原子更新update idincreaseBalance UPDATE member SET balance balance #{amount} WHERE id #{memberId} /update用balance balance #{amount}而不是把計(jì)算后的值作為參數(shù)傳進(jìn)去數(shù)據(jù)庫行鎖能保證兩次并發(fā)更新不會丟失。這個問題在面試?yán)锝?jīng)常被問“怎么保證數(shù)據(jù)一致性”直接把這條SQL和事務(wù)注解講出來比背概念扎實(shí)。4.2 私教報名與判重唯一索引兜底業(yè)務(wù)層也擋一遍會員報名私教課本質(zhì)是往signup表插一條記錄。但流程上要先檢查三件事會員卡是否到期、課程是否存在、這個會員是否已經(jīng)報過這門課。Transactional(rollbackFor Exception.class) public boolean signUp(Integer memberId, Integer courseId) { Member member memberMapper.selectById(memberId); if (member.getExpireDate().before(new Date())) { throw new BusinessException(會員卡已過期請先續(xù)費(fèi)); } int count signupMapper.countByMemberAndCourse(memberId, courseId); if (count 0) { throw new BusinessException(您已報名該課程請勿重復(fù)操作); } Signup signup new Signup(); signup.setMemberId(memberId); signup.setCourseId(courseId); signupMapper.insert(signup); return true; }countByMemberAndCourse對應(yīng)的SQLselect idcountByMemberAndCourse resultTypeint SELECT COUNT(*) FROM signup WHERE member_id #{memberId} AND course_id #{courseId} /select業(yè)務(wù)層判重之后數(shù)據(jù)庫的uk_member_course唯一索引仍然保留這是雙重保險。為什么數(shù)據(jù)庫要兜底因?yàn)轫撁嫔线B點(diǎn)兩次報名按鈕兩個請求幾乎同時到達(dá)兩個count查詢可能都返回0兩個insert都能進(jìn)去。有唯一索引在第二個insert會直接報Duplicate entry異常事務(wù)回滾數(shù)據(jù)不會臟。報名頁面通常還要展示這門課已報多少人、還剩多少名額。不能把signup表全量數(shù)據(jù)拉出來讓頁面自己數(shù)用聚合查詢一次算出來SELECT c.id, c.name, c.max_count, COUNT(s.id) AS signed_count FROM course c LEFT JOIN signup s ON c.id s.course_id WHERE c.id #{id} GROUP BY c.idLEFT JOIN配合GROUP BY是這里的關(guān)鍵。用INNER JOIN的話沒被報過名的課程根本查不出來頁面上就看不到這門課。LEFT JOIN保證所有課程都出現(xiàn)signed_count為0的課程也能正常展示。4.3 上課記錄、繳費(fèi)統(tǒng)計(jì)與反饋閉環(huán)上課記錄和報名的區(qū)別在于會員來了管理員在后臺給這個會員添加一條attend_record相當(dāng)于簽到確認(rèn)。它關(guān)聯(lián)member、course、coach三張表前端要顯示成“張三 3月5日 上了一節(jié) 李教練的 增肌私教課”Mapper里最省事的寫法是三表聯(lián)查select idselectRecordsWithDetail resultTypemap SELECT m.name AS memberName, c.name AS courseName, co.name AS coachName, a.attend_time FROM attend_record a JOIN member m ON a.member_id m.id JOIN course c ON a.course_id c.id JOIN coach co ON a.coach_id co.id WHERE a.member_id #{memberId} ORDER BY a.attend_time DESC /select這里resultType用了map因?yàn)椴樵兘Y(jié)果跨了多張表不是任何一張表的實(shí)體。MapString,Object在MyBatis里自動把列名作為key數(shù)據(jù)量不大時這種寫法比新建VO類省事。頁面拿到List后直接通過memberName、courseName這些key取值。管理員首頁的統(tǒng)計(jì)模塊基本就是COUNT和SUM的組合。比如“本月繳費(fèi)總額”SELECT COALESCE(SUM(amount), 0) FROM payment WHERE pay_time #{monthStart} AND pay_time #{monthEnd}COALESCE很關(guān)鍵。本月還沒有繳費(fèi)記錄時SUM返回NULL頁面的金額一欄會顯示成空COALESCE把NULL轉(zhuǎn)成0前端EL表達(dá)式才不會因?yàn)閚ull報錯。同理統(tǒng)計(jì)上課次數(shù)時最好也寫COALESCE(COUNT(*), 0)雖然COUNT本身不太會返回NULL但統(tǒng)一寫法能少踩一個坑。會員提交反饋后feedback表生成status0的記錄管理員回復(fù)后UPDATE reply字段并置status1。會員端查詢自己的反饋時用status區(qū)分“待回復(fù)”和“已回復(fù)”頁面用不同顏色展示。這個模塊邏輯最簡單但它是體現(xiàn)系統(tǒng)完整度的細(xì)節(jié)很多課設(shè)demo只有提交沒有回復(fù)流程斷了一截。5. 避坑與排查SSM項(xiàng)目從部署到交付的5個經(jīng)典問題SSM項(xiàng)目真正讓人頭疼的不是業(yè)務(wù)代碼而是配置和部署階段的環(huán)境問題。以下5條是我自己踩過、也幫別人排查過的經(jīng)典故障按現(xiàn)象→原因→解決的順序列出來遇到直接對號入座。5.1 頁面樣式全丟JS/CSS請求404現(xiàn)象項(xiàng)目能啟動主頁HTML能出來但所有靜態(tài)資源全部404頁面沒有樣式控制臺一堆Failed to load resource。原因web.xml里把DispatcherServlet的url-pattern配成了/*導(dǎo)致所有請求都進(jìn)了SpringMVC而SpringMVC默認(rèn)不處理靜態(tài)資源。有人把靜態(tài)資源放WEB-INF下規(guī)避那是繞路不是解決問題。解決在spring-mvc.xml里加一行mvc:default-servlet-handler/這行的含義是SpringMVC處理不了的請求交回容器默認(rèn)Servlet處理Tomcat的DefaultServlet會把css、js、圖片正常返回。如果有多個DispatcherServlet記得加在真正處理頁面請求的那個配置文件里。5.2 中文亂碼連接串、頁面、過濾器三處必須一致現(xiàn)象數(shù)據(jù)庫里中文正常頁面上顯示“???”或者表單提交后存進(jìn)數(shù)據(jù)庫變成亂碼。原因亂碼從來不是單一配置造成的。MySQL連接串沒指定characterEncodingJSP頁面沒聲明pageEncodingSpring的CharacterEncodingFilter沒配置三者任一處不一致都會亂。解決三處一起改。jdbc.url加上useUnicodetruecharacterEncodingutf8也就是第3章示例里那個寫法JSP頂部寫pageEncodingUTF-8web.xml里配置CharacterEncodingFilterfilter 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 init-param param-nameforceEncoding/param-name param-valuetrue/param-value /init-param /filter filter-mapping filter-nameencodingFilter/filter-name url-pattern/*/url-pattern /filter-mappingforceEncodingtrue保證請求和響應(yīng)都強(qiáng)制走UTF-8。三處改完重啟Tomcat亂碼基本消失。如果還亂查Tomcat的server.xml里Connector是否配置了URIEncodingUTF-8這一條經(jīng)常被漏掉。5.3 數(shù)據(jù)庫連接失敗驅(qū)動類名和時區(qū)是重災(zāi)區(qū)現(xiàn)象Tomcat啟動日志報Communications link failure或The server time zone value й?? is unrecognized項(xiàng)目起不來。原因MySQL 8.x對時區(qū)要求嚴(yán)格連接串沒指定serverTimezone就報錯。舊驅(qū)動com.mysql.jdbc.Driver雖然兼容模式還能用但很多老教材和舊源碼里都寫的是這個類名驅(qū)動類與MySQL版本不匹配連接自然失敗。解決驅(qū)動類換成com.mysql.cj.jdbc.Driverurl加serverTimezoneAsia/Shanghai。即使本機(jī)是MySQL 5.7也建議統(tǒng)一用8.0驅(qū)動配8.0的連接寫法這樣本地和服務(wù)器環(huán)境一致部署時少一個問題源。5.4 Mapper方法報Invalid bound statement現(xiàn)象項(xiàng)目正常啟動一調(diào)用某個Mapper方法就拋Invalid bound statement (not found)接口和XML明明都寫了。原因MyBatis在運(yùn)行時找不到XML文件。常見成因是namespace寫錯、方法id不一致、或mapperLocations路徑?jīng)]匹配到XML實(shí)際位置。解決按三步排查。第一步核對XML的namespace是否與Mapper接口全限定名一致第二步核對select標(biāo)簽的id是否與接口方法名一致第三步確認(rèn)resources目錄下的mapper文件夾被編譯到classes目錄直接看target目錄里有沒有對應(yīng)xml文件。如果XML放在java源碼目錄下Maven默認(rèn)不會把它當(dāng)資源打包需要在pom.xml的build節(jié)點(diǎn)里配置resources把**/*.xml也納入編譯路徑。5.5 導(dǎo)入項(xiàng)目后依賴缺失ClassNotFound與NoClassDefFound現(xiàn)象下載的源碼導(dǎo)入IDEA運(yùn)行時拋java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener或者NoClassDefFoundError。原因這類問題大多不是代碼問題而是項(xiàng)目結(jié)構(gòu)問題。Maven依賴沒刷新、Artifacts里沒把依賴打包到WEB-INF/lib、本地倉庫缺jar三種情況都會出現(xiàn)。解決第一次導(dǎo)入先執(zhí)行mvn clean install讓依賴完整下載然后在IDEA的Project Structure里打開Artifacts選中項(xiàng)目的war exploded在Available Elements里把library dependencies右鍵加入WEB-INF/lib。做完這步Tomcat啟動時才能看到全部依賴。另外pom里同時引入多個版本的spring-jdbc和spring-webmvc會出現(xiàn)重復(fù)類沖突把版本統(tǒng)一成一致即可。我一般習(xí)慣多版本沖突時先看Dependency Analyzer紅色沖突項(xiàng)直接右鍵排除比手動翻pom快得多。這5條排查完項(xiàng)目基本能穩(wěn)定跑起來。剩下的就是業(yè)務(wù)邏輯問題比如變量名寫錯、SQL條件寫反這些靠斷點(diǎn)調(diào)試就能解決不算框架層面的坑了。6. 從“能跑”到“能講”一頁紙驗(yàn)收腳本與答辯視角6.1 一頁紙驗(yàn)收腳本兩條主線各走一遍拿到源碼的第一件事不是改代碼而是按業(yè)務(wù)路徑完整走一遍。我會在紙上列出管理員和會員兩條主線每完成一步勾一下步驟操作預(yù)期結(jié)果1管理員登錄進(jìn)入后臺首頁無報錯2添加教練教練列表出現(xiàn)新紀(jì)錄3添加課程并關(guān)聯(lián)教練課程列表出現(xiàn)信息完整4新開會員卡并收費(fèi)member和payment表各新增一條記錄余額正確5會員登錄并修改資料修改后頁面立即生效6會員報名私教課signup表新增重復(fù)報名被攔截7管理員添加上課記錄會員端能看到上課記錄8會員提交反饋管理員能回復(fù)狀態(tài)從待回復(fù)變?yōu)橐鸦貜?fù)9管理員查詢繳費(fèi)統(tǒng)計(jì)金額與數(shù)據(jù)庫payment表SUM一致全程不報500、不跳404數(shù)據(jù)庫記錄和頁面顯示一致這套系統(tǒng)就算驗(yàn)收通過。這一步值得每個拿到源碼的人先做很多課設(shè)源碼能登錄、能瀏覽但一走到寫操作就報錯問題往往在事務(wù)配置或表結(jié)構(gòu)差異上。先跑通再改能省掉大量無效排查。6.2 答辯視角三個問題講清這個項(xiàng)目驗(yàn)收通過后再讀代碼我建議按拆表、搭框架、核心業(yè)務(wù)、查坑的順序來。面試或答辯講這套系統(tǒng)時準(zhǔn)備三個能展開的點(diǎn)第一Spring的IoC和AOP在項(xiàng)目里的具體體現(xiàn)對象由容器注入事務(wù)是聲明式切面第二MyBatis的#{}預(yù)編譯和${}字符串拼接的區(qū)別項(xiàng)目里所有用戶輸入都用#{}防止SQL注入第三signup表唯一索引解決并發(fā)重復(fù)報名。把這三句話結(jié)合代碼講透比背十道java八股文都有說服力。這套資源不是拿來直接交差就完事的。我見過太多人下載后連數(shù)據(jù)庫腳本都不看就開始改頁面最后表結(jié)構(gòu)改了對不上Mapper整晚陪SQL調(diào)錯。從那以后我每次拿到這類SSM源碼不管多急都強(qiáng)制自己先花半小時跑完這頁紙驗(yàn)收腳本再決定動哪個文件、改哪一行這個習(xí)慣幫我少走了很多彎路。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷伊人五月天| 久久人妻视频| 99热日| 成人av在线电影| 96色婷婷| 九一娱乐在线观看视频| 国产成人精品一区二区三区视频| 天天综合精品| 91九色网| 五月婷婷黄色| 日本久久婷婷| 久久在线大香蕉| 五月婷婷丁香在线视频| 色99综合视频| 天天干天天 亚洲| 最新日本A片| 欧美色色色色色色色| 性爱激情小说AV五月丁香花| 久久ri精品视频| 精品成人在线| 无码少妇高潮喷水A片免费| 色色色无码| 婷婷狠狠操| 久久机热/这里只有精品| 79色色免费| 99re这里只有精品免费| 五月丁色AV| 亚洲精品99| 99精品97| AV成人在线播放| 色yeye色综合| 久久久久久久久久久久63| 91se视频| 九月丁香久久网| 少妇性BBB搡BBB爽爽爽电影| 影音先锋天天日| 欧美狠狠地| 91婷婷五月天综合视频| 国模狼狼| 亚洲乱码精品久久久久..| 99热这里有精品| 99在线小视频| 99在线精品观看99| 国产成人精品亚洲线观看| 99这里只有精品| 99热在线只有精品| 五月丁香婷婷综合| 熟妇内谢69XXXXXA片| 伊人99热| 综合天堂AV久久久久久久| 国产成人一区二区三区在线观看| 中文字幕在线日亚洲9| 超碰97干| 99在线精品免费视频| 色噜噜狠狠色综合日日| 久久思思热| 99热官网| 精品国产乱码久久久久夜深人妻| 黄色片久久| 亚洲乱码日产精品BD| 欧美内射AAAAAAXXXXX| 91丨九色丨东北熟女| 九九热视频在线观看| 欧美S码亚洲码精品M码| 97日本在线播放| av首页在线| 婷婷色资源| 99精品丰满| 五月天久草| 婷婷五月天丁香激情| 99热插| 丁香五月婷婷综合精品素人| 成人亚洲精品| 九九综合精品| 久久九九大香蕉电院| 五月天另类小说久久小说网| 国产va视频| www.色婷婷.com| 欧美色色色色色色色| 四色永久成人网站| 国产又黄又爽又色的免费| 久久精品国产AV一区二区三区 | 91国产精品视频播放| 九九成年视频| 五月丁香婷婷成人版| 久久丝袜婷婷| 少妇丁香婷婷| 九九热视频免费的| 婷婷色五月婷| 久久久性爱视频| 久久曰曰| 欧美熟女视频 色婷婷| 青青操日本摸摸看看| 小泽玛利亚视频一区二区| www.久久99热地址发布| 五月丁香久久网| 五月丁香综合久久| 婷婷涩涩五月天| 九九视屏| 五月婷婷六月丁香| 日本熟女啪啪| 9999三级片| 激情小说五月天社区丁香 | 久热这里只有精品在线观看 | 亚洲色图啪啪| 婷婷精品免费久久| 秋霞网在线观看理论91| 亚洲综合五月天婷婷| 婷婷久久免费| 久久xx| 丁香综合日产精品久久| 免费看无码视频A级| 亚洲超碰在线| 激情婷婷狠狠干| WWW,五月| 色五月激情| 国产午夜成人免费看片无遮挡| 97午夜一区二区| 综合伊人久久| 久er7久热| 婷婷激情5月| 99热8| www.99视频| 人妻丰满精品一区二区A片| 无语停婷丁香网| 98永久精品| 婷婷成人综合| 婷婷五月天成人综合网| 久久婷婷五月综合伊人| 成人国产欧美大片一区| 色99婷婷五月天| 久久性爱视频| 五月丁香婷庭在线| 成片免费播放| 丁香五月天大香蕉啪啪| 99在线精品视频| 操笔无码| 天天影院色| 五月激情影视| 99re久热| 精品九九在线观看视频| 99热这里只有精品2| 久久xxxx| 国产av网| 91狠狠色丁香婷婷综合久久| WWW,婷婷,COM| 欧美婷婷| 嫩草哈哈操| 五月丁香另类图片| 亚洲丁香五月在线观看| 婷婷综合| 色婷婷狠狠18yy| 色婷婷免费观看| 91视屏在线观看com.wwwvv| 99热这里全都是精品| www.超碰在线| 91丨九色熟女丨首页| 都市激情久久| 五日激情综合| 色综合五月天| 夜夜爱伊人| 五月激激网w'w'w| 五月婷婷六月色| 色色五月天婷婷| 我想看国产大学生口爆吞精的视频| 丁香无月在线观看| 色综合色| XX色综合| 丁香婷婷性爱| 色婷婷久综合久久一本国产AV| 色婷婷视频在线| 五月婷九月| 色五月激情视频在线综合| 婷婷激情五月天在线| 91狠狠综合久久| 91久女| 99碰超| 激情五月天色婷婷| 啪啪91| A1片久久| 深爱丁香激情| 五月天社区| 日韩人人操| 亚洲小视频免费播放| 久热视频这里只有精品| 天天干天天干天天| 婷婷九月激情| 亚洲狠狠干| 色综合色色| 密臀av无码人妻精品| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 九九精品在线视频观看| 婷婷五月激情图片| 色婷婷呢狠禁久禁| 只有精品在线观看| 九月婷婷激情| 婷婷六月偷拍| 综合五月亭亭9| 丁香婷婷六月天| 色色五月天 亚洲| 天天色月| 婷婷少妇激情| 欧亚中文A V| 五月婷婷成人网首页| 国产婷婷综合| 超级碰碰碰久久网站| 激情综合五月激情| 超碰人人超碰| 欧美日本高清视频99| 五月激情综合五月| 丁香激情五月天| 99综合熟女| 人人做人人看人人摸| 六月激情婷婷| 九九re精品视频在线观看| 激情综合六月| 无码少妇高潮喷水A片免费| 爆乳熟妇一区二区三区爆乳| 色婷婷五月天久久| 香蕉曰比| 亚洲99手机免费看视频| 伊人99热| 婷婷色网| 996热re视频精品视频| 91美女艹逼网站| 六月婷婷色五月| 综合激情五月天| 婷五月天丁香婷五月| 四色女婷婷| 99热这里只有精品8| 色99热| 婷婷五月天伊人网| 黄色网址五月婷婷| 狠狠狠人妻| 性色五月天| 大香蕉免费9| 欧美啄木乌丝袜人妻系列| 色色色综合网| 99色精品视频| 色色色欧美| 天堂五月婷婷| 午夜丁香婷婷| 精品国产a| 色丁香久综合在线久综合在线观看| 婷婷五月天影院| 中文无码婷婷| 99热播放| 色五月婷婷综合在线| 夜夜夜夜夜操| 一级韩国产精品毛| 亚洲色A| 激情综合无码| 六月撸婷婷| 色爱亚洲| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 亚洲日韩26uuu| 久草热在线视频| 热久久91| 九九五月天| 亚洲成人另类| 91综合色| 91狠狠色色丁香婷婷综合久久| 99爱视频在线观看这里只有精品| 人妻在线观看视频| 久久精品亚洲一级牲爱综合 | 久碰视频| 中文久久久人妻| 婷婷五月天在线视频网站| 五月天小说激情| 青草热视频这里只有精品| 少妇2做爰HD韩国电影| 爱爱色五月天| 五月丁香六月激情综合| 五月婷婷天天色| 操操啪| 天天草人人摸| 超碰成人免费| 天天做天天爰天天爽天天无遮挡| 公的粗大挺进了我的密道| 开心六月丁香五月婷婷| 久草五月| 丁香色啪综合| 韩日另类| 色婷婷九月| 久操香蕉| 国产亚洲精久久久久| 有码一区二区三区| 九九九九这里只有精品| 夫妻超碰在线| 激情五月天婷婷| 久久日韩婷婷五月| 玖玖婷婷色五月| 激情九月天天天天婷婷| 91人人操人人| 天天爱天天做天天日| 六月综合婷婷开心伊人| 五月丁香婷婷综合在线| 五月婷婷丁香| 激情 婷婷 插| 五月婷婷欧洲| 婷婷淫淫狠狠六月| 婷婷激情人妻| 欧美色图天堂网| 激情五月天色网站| 五月婷婷综合在线| 丁香婷五月天| 毛片九九九九九九九九18| 丁香五月中文字幕久色| 综合九色| 五月天婷婷色色网| 九九色逼| 久久久久久久人妻| 99在线看片| 久cao香蕉影院| 九九热视频免费| 色婷婷激情视频| 狠狠xx| 九九偷拍网| 欧美色色色色色色色色色色| 天天看A片| 99热国产免费| 婷婷色五月久久| 狠狠爱成人综合网| 天天操婷婷| 国产婷婷五月天| 在线另类| 九九视频精品在线免费| 九色综合五月天婷五月| 伊人婷婷色| 色色丁香婷婷| 国产精产国品一二三在观看| 五月中旬婷婷丁香六| 婷婷狠狠香蕉综合| 超碰人人91| 五月丁香激情综合网| 狠狠爱综合| 精品色色网| 七七色综合| 国产精品爽爽久久久久久| 99ri久久| 色五月婷婷在线| 另类激情五月| 一区三区视频有限公司| 91丨九色丨43老版熟女| 美女婷婷六月色| 91大屁股在线| 国产九九一区二区三区| 狠狠搞五月天| 大香蕉久久视频久久视频 | 五月天激情小说| 丁香五月亭亭六月综合激情网| 成人网在线观看视频| 激情丁香五月天图片| 激情婷婷久久| 婷婷五月天激情小说| 欧美性色五月天| 97色视频网| 深夜男女福利刺激影院一区| 五月婷婷亚洲综合网| 久久免费高| 天天操天天干天天日| 久热综合| 久久久av久av久片一区二区| 婷婷社区五月天| 丁香婷婷久久| 成人av在线网| 五月婷婷|欧美| 激情六| 亚洲狠狠色丁香婷婷综合久久| 婷婷亚洲五月| 婷婷五月激情四月综合| 日本色99网站| 91玖玖| 狠狠色丁香99| 色色色色色色五月婷婷| 六月婷婷中文字幕| 激情五月婷婷色播网| 激情图片婷婷| 丰满少妇猛烈A片免费看观看 | 婷婷婷久久久| 国产全是老熟女太爽了| 六月丁丁香| 热九九在线| 中文AV网站| 97碰| 嫩BBB槡BBBB搡BBBB视频| 光棍影院日韩精品| 91狠狠综合久久久久久| 夜夜干天天操| 99激情视频热| 人人操操| 色婷婷成人做爰A片免费看网站| 天天草比天天爽| 大香蕉伊人久久| 色欲五月丁香| 成人精品在线| 人人人舔人人人操人人人摸人人人97| 五月停亭六月,六月停亭的英语| 538在线精品| 色色色网站| 丁香色情五月天| 色五月色五天色情网址| 色999五月色| 在线1青婷| 99色视频| www.色色com| 色色热| 色色色免费视频| 亚洲色婷婷| 婷婷丁香六月天激情四射网| 99精品综合| 欧美人妻一区二区| 99久久黄色顶级视频| 九九久久精品國產| 国产毛片欧美毛片久久久| 五月天婷婷在线视频| 久久精品国产色| 操人精品| 99热网精品| 色99在线视频| 色色色.COM| 人人爱操| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 两性婷婷丁香五月| 亚洲视频99| av性爱网站| 五月丁香在线视频观看| 国产综合婷婷| 九九婷婷热| 99久久极情精品一区| 婷婷五月18永久免费视频| 婷婷丁香人妻天久久| 毛片蕉地一二| 少妇性按摩无码中文A片| 香蕉婷婷色五月| 久久成人天| 婷婷色色网| 香蕉色色网| 亚洲色啪| 九月婷婷丁香| 色色99| 中文字幕+中文在线| 婷婷丁香社区| 成人看片网站| 丁香五月天婷婷激情| 另类丁香五月天区图| 9|无码久久久久久| 夜夜爱爱亚洲| 亚洲精品a成人在线播放| 色婷婷基地| 五月婷婷,六月丁香| 综合xx网| www99热| 婷婷第一页| 一级AV片| 99九九精品| 色五月天丁香婷婷| 五月婷婷五月天激情网| 开心五月深爱五月婷| 大香蕉婷婷| 五月婷婷六月丁香首页| 狠狠婷婷日韩| 中文字幕精品无码一区二区| 婷婷五月激情图片| 九九色大香蕉| 97 A I色色| 一本道综合网| 婷婷五月综合婷婷| 久久五月激情| 婷婷五月花.97| 99性爱| 91碰在线| 涩五月婷婷| 天天干天天爽天天爽| anquye伊人| 欧美影院婷婷| 狠狠色丁香久久| 婷婷五月激情在线| 色欧美色色色| 内射爽无广熟女亚洲| 亚洲激情在线| 9999三级片| 五月天激情婷婷久久| 色婷婷香蕉丁丁网| 五月婷久久| 久久这里只有精彩| www久久99| 久久九九99桃花视频| 日本婷婷色| 亚洲精品国产A久久久久久| 色偷偷五月天| 欧美在线视频99| 一区二区乱码视频| 这里有精品| 激情五月天开心总和网| 久热这里只有精品在线| 欧洲亚洲欧洲99久久| 热热久久精品视频| 狠狠色噜噜狠狠色噜噜噜999| 九九热视频99| 欧美日比视频| 日韩高清久久| 99热69| 婷婷六月久久| 五月天另类小说久久小说网| www.色多多婷| 婷婷丁香综合网| 嫩草AV久久伊人妇女超级A| 欧美99热| 婷婷五月在线观看| 色五月 五月婷婷| 五月丁香天堂网| 日韩成人av在线| 成人av在线网址| 五月丁香婷婷深深爱| 婷婷开心激情| 久久久这里有精品| 五月丁香中文字幕| 亚洲视色| www.99热视频| 天天色噜| 能看的AV| 色婷婷先锋| 日本3级片一区2区| 伊人玖玖婷婷| 99啪啪网| 久热 91| 99久在线观看| 亚洲成人AV在线观看| 91丨九色丨熟女| 国产avapp 网| www.91久久| 9|人妻人人操| 丁香五月天啪啪| WWW99热| 色综合五月| 97热九九| 国产婷婷久久| 成人网丁香五月| 99re热在线视频观看| 97干婷婷| 久久性操| 六月丁香啪啪| 五月天六月丁香| 99热日韩这里只有精品| 色婷婷综合五月| ss99热| 五月丁香六月婷婷玖玖| 色噜噜狠狠狠综合曰曰曰| 美女美女美女三级色天天天天天| 久久人妻www| 久久婷婷成人综合色怡春院| 久久人妻人人| 伊人久久大香线蕉av一区| 91丨九色丨丰满人妖| 九九久久99精品免费观看www| 九九综合| 热久精品| 青草青草视频2免费观看| 日韩精品一区二区三区,四区,五区视频| 亚洲狠狠终合停停终合| Av在线资源| 久草丁香婷婷五月天婷| 97操碰碰无码视频| 26uuu青青| 五月丁香怕怕综合| 99爱视频在线免费观看| 丁香六月天堂| 播播网色播播| 五月天色色网站| 综合网天天| 99国产精品久久久久久久久久久 | 91综合网| 操人久久| 激情五月天黄色小说| 色婷婷五月丁香在线观看| 日本噜噜色网| 一起草性爱不卡视频| 久色五月丁香视频| 久99久视频| 色综合伊人网| 日韩黄在免| 色爱爱综合网| 91久久综合亚洲噜噜成人在线| 激情综合五月天| 国产五月丁香在线| 五月丁香六月婷婷亚洲| 婷婷色色婷婷| 激情色播| 日本欧美成人片AAAA| 岛国AAAV| 9l视频自拍九色9l视频在线观看| 开心五月六月婷婷| 天天日人人爽| 色情成人五月天| 91精品在线看| 欧美性猛交 XXXX 乱大交| 色色色com| 百度4399有码精品V在线观看| 大香蕉综合在线| 五月丁香婷婷五月色| 欧美成人五月天| 天堂久久婷婷| 开心婷婷五月| 九九久久偷拍| 久热中文字幕| 五月丁香六月婷婷免费| 99色免费视频| 青青草tp| 99ER热精品视频| 一级黄色操B| 婷婷色五月丁香六月欧美啪| 亚洲激情丁香五月基地| 色综合色色| 99操逼| 国产欧美精品AAAAAA片| 五月天伊人久久| 色婷婷久久| 亚洲五月婷天天操| 亚洲无码99| 五月婷婷色播| 亚洲精品第一国产综合亚AV| 超碰三级片| 婷婷五月天日本国产| www夜夜操com| 婷婷五月天色| 久久您您综合网| 日韩精品超碰在线观看| 婷婷丁香成人在线视频| 美女五月狠狠| 99操逼| 亚洲欧美日韩另类| 丁香五月婷婷久久综合激情网 | 婷婷黄色网| 色五月色五天色情网| 五月丁香婷婷婷婷综合网| 天天爽天天| 亚洲激情综合| 成人在线高清| 九九sese| 深爱五月婷婷| 五月婷婷丁香| 婷婷五月天天激情| 99色这里| 色婷婷婷婷五月天| 婷婷色综合| AV六月丁香| site:hcxsz888.com| 五月丁香操亭亭网| 天天色天天日| 天天综合色99| WWW色五月天| 国产激情婷婷| 亚洲中文字幕在线观看| 青青草原伊人网| 深爱激情九九五月天| 激情综合色婷婷啪啪六月天| 成人国产欧美大片一区| 永久免费视频| AV79| 思思热在线视频精品| 去色色五月天| 久久ER视频com| 爱婷婷都市激情| 少妇人妻人伦A片| 亚洲婷婷五月| 国产精品色色色色| 婷婷久久大香蕉| 依人大香蕉在钱1| 婷婷综合激情| 久久九九热视频| 婷婷五月天激情小说| 99色日本| 五月久久亚洲| 六月婷婷开心| 91pornav在线| 狠狠操狠狠狠| 精品久久久人妻| 日本在线wwww| 色六月丁香婷婷狠狠干| 五月丁香婷婷色色色| 色九四色| 婷婷五月天成人五月天| 丁香五月激情五月| 色逼综合网| 天天操天天爱天天日| 天天爱天天做天天操| 99精品偷自拍| 精品人人操| 色色色9| 丰满老熟妇BBBBB搡BBB| 99爽视频| 国产精品色婷婷AV综合色色| 国产做爰视频免费播放| www.91操| 日本五月天激情| 无人区码一码二码三码医生系列| 婷婷五月天色色| 日本狠狠网| 激情婷婷狠狠干综合| 色噜噜狠狠色综| 婷婷五月天美女21p| 蜜乳av一级av| 99思思在线视频| 激情综合网激情五月天| 国内久久婷婷| 色五月婷婷大| 色99色| 久99久热| 色色日本| 新激情五月天| 26UUU成人网| 九九精品在线网| 亚洲中文字幕网| 玖玖爱综合网| 成人丁香| 沈娜娜av| 91视屏在线观看com.wwwvv| 色99网站| 日韩 中文 欧美| 久久九九热视频| 成人AV在线中文版| 影音先锋女人av鲁色资源网小说免费| 97干视频在线| 9 1 A v久久久| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 九九精品99| 五月丁香婷婷视频| www.久操| 色久综合天天做视频| 强壮的公次次弄得我高潮A片日本 | 婷婷五月天丁香花| XX久久| 亚洲蜜乳AV| 青草激情在线| 国产精品久久久久久喷浆| 99婷婷五月天| 五月丁香综合激情| 中文字幕,综合,91| 婷婷激情六月| 亚洲天堂碰碰婷婷| 日日夜夜小色哥| 51精品国自产在线| 操国产人妻| 开心五月网| 97在线综合| 色色五月婷婷久久| 久久影视婷婷五月| 婷婷五月天小说网| www...com黄在线观看| 六月婷婷七月丁香| 色综合天天| 色婷婷影视| 色狠狠综合| 亚洲AV网址| www,com,五月色色| 亚洲AV无码影院| 九热视频| 久久33视频| 天天操天天日天天操| 日韩ww| 日本噜噜色网| 久久久久久久久久久久久9| 亚洲综合网激情小说| 丁香五月色| 五月丁香啪啪啪免费看| 亚洲色网络| 99re这里只有精品99| 丝袜人妻| 九九热10| 婷婷五月天激情小说| 久久免费操| 美欧日韩国产成人在战| 九色无码| 先锋资源婷婷| 婷婷丁香五月天影院 | 另类少妇人与禽zOZZ0性伦| 久久亚洲A| 狠狠操狠狠| 99re熱| 九九热最新| 五月六月丁香激情视频| 五月天桃色深爱网| 9九热视频| 欧美一级色| 婷婷五月激情六月丁香| 91丨九色丨国产打屁股| 热99精品视频观看| 欧美激情五月天| 婷婷五月深深的爱| 久久久国产精品黄毛片| 久久婷婷五月综合激情国产| 99视频| 天天色天天舔天天爱天天爽| 67194中文在线| 天天做天天爱天天做| 大香蕉久久久久久久久| 激情五月天综合| 色婷婷情片| 中文字幕综合| 久久久WWW| 狠狠干无码| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 日本操天堂| 我要看激情五月天| 91综合网| 狠狠色成人影片| 亚洲天99| 色色婷| 天天婷婷综合| 国产精品扒开腿做爽爽爽A片唱戏| 五月五丁香婷婷| 先锋影音男人的天堂AV| 色婷婷综合视频| 另类在线观看视频| 综合色图区| 五月天色播网| 久久综合久色欧美综合狠狠| 五月婷婷伊人在线| 亚洲成人无码片| 99热热这里只精品996小说| 欧美久久婷婷| 97碰在线视频| 五月丁香六月合| 久久丁香婷| 九九热最新| 伊人久久大香网| 久综合网| 日韩精品色| 91九色无码内射| 久久五月天色婷婷| 五月天婷婷色在线视频免费观看| 亚洲精品字幕在线观看| 五月色丁香激情| 91色欲综合| 思思99久久| 女人露出p毛视频www网站| 蜜桃成语时李时珍 免费| 伊人午夜综合色啪| 丁香五婷| 六月 丁香 视频| 婷丁香五月天| 99热在线播放精品| 久99热在线观看| 五月婷婷黄色| 欧美槡BBBB槡BBB少妇| 五月激激激情综合网| 在线99精品| 成人精品在线观看| 深爱激情九九五月天 | 国产 码在线成人网站| 天天草天天爱| 五月天婷婷网站| 91热视频色网站| 99视频色在线观看| 操操操B| 色婷婷的五月天| 色五月综合激情| 国产午夜精品一区二区三区四区| 亚洲第79页| 操操人人| 国产毛多水多女人A片| 婷婷草| 99ri国产在线| 久久99热这里只频精品6学生| 亚洲免费99| 色婷婷五月天偷拍| 久久香蕉网| 丁香六月婷婷激情| 色婷婷玖玖影院| 激情久久久久| 26UUU亚洲欧美| 久99精品视频| 另类激情综合| 亚洲色综合性| 色九月婷婷综合| 国产看真人毛片爱做A片| 六月丁香社区| 亚洲色碰| 婷婷伊人久久无码色五月| 99精品综合| 亚洲视99| 久久丁香婷婷色情综合| 亚洲AV成人片无码网站| 五月丁香综合伦理片| 激情久久网| 六月丁丁香| 久久婷婷五月综合伊人| 天天色图| 超碰人人摸人人操| 激情视频综合| 色吧五月婷婷六月丁香| 九九中文色色| 色色网站在线| 欧美激情五月| 99九色视频在线观看| 久久综合婷婷激情| 日韩 中文 欧美| 开心久久爱五月天| 欧美大道不卡| 国产又粗又大又爽又黄| 丁香五月六月综合欧美| 天天操夜夜啊| 久久五月婷综合网| 丁香在线视频| 婷婷香五月天| 五月伊人综合| 9久久网| 性爱视频久久| 丁香五月婷婷日本| 综合综合色色| 欧美日本高清视频99| 亚洲成人AV在线播放| 丁香伊人综合| 日本一级一片免费视频| 极品人妻VIDEOSSS人妻| 色色激情五月| 日日夜夜噜噜爽爽| 欧美熟女99| av首页在线| 五月丁香六月在线| 久久99性爱| 亚洲国产色婷婷| 91性人人| 亚洲乱码精品久久久久.. | 丁香六月婷婷久久高清| 亚洲精品国产A久久久久久| 96精品久久久久久久久| 色小说五月婷婷| 91趴趴| 婷婷伊人綜合中文字幕| 五月天综合视频网| 成人小说 五月天 婷婷| 91九色小视频| 操碰色一区就去操| www.99视频| 五月丁香六月婷婷国产视频| 久久五月天综合视频网站| 99久久久久久久| 情欲禁地| www.99久| 五月丁香婷爱在线| 日本熟女三区| 婷婷涩涩五月天| 91九色PORNY肉丝在线| 久久婷婷五月天| 婷婷五月综合亚洲| 亚洲开心激情网| 丁香五月另类色婷婷麻豆| 91男人资源站| 激情综合五月| 99热免费精品| 深爱婷婷丁香五月激情| 99热久久这里只有精品| 99精品在线观看视频| 久草x色在线观看99| 丁香五月天视频| 色五月婷婷网| 人人看人人要| 婷婷色播色五月五色五月天色妇| 久久嘟嘟丁香| 五月婷婷av在线| 97色色网| 五月丁香成人| 天天天天天日| 日韩无码人妻一区二区三区综合| 日韩操人| 玖玖婷婷婷丁香五月| 大香蕉 婷婷| 色婷婷小说| 人妻精品在线| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 天天日人人爽| 99久热这里只有精品视频删减版| 婷婷丁香五月色偷偷| 人妻有码乱操| 色五月综合| 久久久com| 亚洲色五月婷婷| 天天插天天| 26uuu国产色| 久久99操| 91嫩草久久| 2015在线中文字幕| 四虎国产精品永久在线国在线| 婷婷色五月激情| 婷婷六月色开| 婷婷丁香综合| 内射丰满人妻| www.25五月婷婷| 五月丁香激情综合| 大天天伊人| www.婷婷久久五月天| 风流少妇A片一区二区蜜桃| 婷婷五月天伊人网| 丁香色综合| 五月婷婷综合丁香视频| 99热亚洲精品66| 婷婷亚洲丁香五月| 涩综合在线 | 国产毛片精品一区二区色欲黄A片| 91热在线| 人人摸人人| 五月丁香婷婷激情视频| 婷婷丁香激情五月| 电影爱拉战争免费观看| 日本三级大片| 六月丁香大香蕉| 久久亚洲天堂| 狠狠色狠狠色综合日日91| 色色色九九九五月婷婷| 国产精品99久久久久久久女警| 另类激情综合| 丁香五月久久| 婷婷中文无码| 99操免费视频| 俺去也婷婷| 精a品a| 岛国AV网站| 中文字幕久久一区二区三区| 亚洲AAA| 色婷婷成人在线| www.av视频xx999.com| 99re在线观看| 婷婷的99视频网站| 久9热视频在线观看| enecarbon-materials.com污K127封锁请涟系@wip1688 | 五月丁色AV| 色婷婷五月天激情| 色综合久久久久| 中文字幕av久久爽一区| 五月丁香色婷婷久久| 99热第一页| 激情五月天婷婷色色色色色色色色色色色 | 人伦30P| 97久人人| 日韩精品超碰在线观看| 成人网站av免费网站推荐| 91日精品| 色综合久网| 九九热99久久99| 在线亚洲综合网| 婷婷五月欧美AA片免费| 啪啪操网| 激情五月天情色| 亚洲成人av在线观看| 极品五月天| 葵花AV在线| 欧美69色| 成人短视频免费| 五月丁香趴趴| 日韩情色在线观看| A1片久久| 狠狠爱婷婷丁香| 成人网站av免费网站推荐| 日本99视频精品免费播放| 五月婷婷激情日本| 九九色院| 97热这里精品在线视频| 热久国产| 丁香五月婷婷黑人妻黄色电影院| 99re免费精品视频| 大香蕉久操| 性爱先锋AV| 狠狠色噜噜狠狠色噜噜噜999| 天堂婷婷五月在线| 噜噜噜噜噜日本视频| 欧美色播综合在线观看| 国产丁香五月天婷婷| 激情www.98com| 极品五月天| 97婷婷五月天| 色五月天电影| 综合99视频| 综合大香蕉| 欧美色色色色色| 激情五月婷婷| 国产69久久久欧美黑人A片 | 欧美婷婷| 国自产拍偷拍精品啪啪一区二区| 日本三级成人秘书精品片| 五月天婷婷丁香成人网| 色婷婷aV四虎| 狠狠色婷婷7777久综合| 91人人澡人人爽人人看| 91九色丨国产丨爆乳| 天天艹天天综合网| 99色看这里只有精品| 亚洲看av的网站| 婷婷亚洲五月色综合| 亚洲色激情| 日本色婷婷| 五月天久久婷婷| 99久久这里只有精品| 国产精品99久久久久久久女警| 免费黄网不卡AV| 99爱在线| 久久午夜丁香| 美欧日韩国产成人在战| 久久婷五月| 欧美va国产va| 婷婷五月天色综合| 日本婷婷色日| 夜夜爱伊人| 深爱五月激情| 欧美激情性做爰免费视频| av大片在线| 一区操| 开心五月婷婷婷美女| 在线日韩视频| 色爱综合视频| 色五月婷激情| 强伦轩人妻一区二区电影| 狼人婷婷综合| 久久这里有精品| 白人荫道BBWBBB大荫道| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 狠狠干狠狠操狠狠爱| 中文字幕日韩成人| 激情综合啪啪啪| 26uuu国产精品| 婷婷五月天六点丁香五月| 色婷婷AV在线| 亚洲无码99| 日韩国产在线精品| 六月丁香天堂| 色情综合| 伊人成人宗合网| 激情VA视频| 99在线精品视频| 中文字幕在线免费观看视频| 色综合激情图区| 久久九九婷婷| 99操逼| 涩涩涩婷婷| 五月天综合激情网| 亚洲av综合网| 五月激情在线| 色色色丁香| 伊人久久大香线蕉av一区| 婷婷激情丁香五月天综合| 日本激情五月| 五月天婷婷色色网| 天天日天天插| 亚洲成人日韩无码精品| 婷婷五月天丁香社区| 婷激情五月天视频导航| 激情综合网 激情五月天| 国产毛片精品一区二区色欲黄A片| 99热精品在线| 国产精品日本一区二区在线播放| 丁香色情五月综合激情| 91九色精品女同系列| 人人添人人| 野战毛片三一3| 国产成人亚洲综合A∨婷婷| 97碰在线免费观看| AV大片在线观看| 久久多色| 五月丁香av在线| 色无码| 99久久网站| 182.t午在线观看| 成人丁香色| 丁香五月亭亭六月综合激情网| 久久er99| 依人大香蕉| 大香蕉AV电影在线| 久久草中文日韩欧美| 五月激情网五月综合网| 成人精品亚洲性爱| 六月婷婷开心| 久草婷妨| 久婷五月| 五月婷婷手机在线| 色婷婷大香蕉| 日本女色人人| 亚洲成人超碰| 色视五月天婷婷| 1区2区视频| 丁香婷婷综合激情五月色| 人人妻人人澡人人爽| av 一区三区四区| 色五月婷婷影院| 丁香五月社区| 91九九精品| 美女亚洲五月丁香| 深爱开心激情| 丁香婷婷社区| 天天视频精品9| 热99国产精品| 婷婷六月五月天综合| 色婷婷丁香五月| 亚洲成人电影在线免费观看| 色婷婷97| 99思思热只有在这里看| 丁香五月激情啪啪| 婷婷丁香精品视频在线观看| 五月天综合网| 亚洲色色香蕉| 99色综合| 人妻在线网站| 热无码A∨| 色色99| 免费视频在线观看的网站| 久青操| 午夜无码精品色综合久久| 丁香婷婷网| 中文字幕不卡网站| 色色色色欧洲| 这里只有精品1| 婷婷激情五月| 91chinese 在线| 很很干五月天| 亚洲AV成人在线| 久久性都花花世界成人免费视频| 色亚洲无码| 亚州色色色| 五月天综合网| 97色欧美| 99热这里只有精品无码| 99热网站| 丁香五月97视频| 天天激情视频| 色哟哟精品| 秋霞九九无码| 色婷婷五月天天天天天| 天天爱天天秀天天做| 无码91中文字幕| 亚洲激情av| 26uuu在线观看| 久久人妻熟女一区二区| 欧美 日韩 成人 在线| 欧美狠狠地| 丁香五月婷婷啪啪| 超碰93在线观看| 丁香六月婷婷综合在线| 婷婷五月天福利| 嫩草视频观看| 天天干、天天日日| 九九激情| 91视频免费后入强操| 人人舔天天| 成功精品影院| 极骚大香蕉伊人| 综合亚洲六月婷婷在线| 狠狠操综合| 欧美色男人网站| 天天久久人人| 神马欧美精| 九月性爱网| 丁香婷婷偷拍| 色五月色五天色情网| 激情丁香五月| 青娱乐美女福利视频美臀| 欧美成人A片AAA片在线播放| 五月天AV大香蕉| 思思热久久婷婷五月天| 成人片在线播放| 久操福利| 激情五月开心五月丁香五月| 强壮的公次次弄得我高潮A片日本 | 日韩久久视频| 五月丁香综合网| 日本色色视频| 激情的五月|