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

ARTICLE DETAIL

資訊詳情

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

SSM+JSP+MySQL學(xué)生選課管理系統(tǒng)實(shí)戰(zhàn):從分層架構(gòu)到并發(fā)控制

SSM+JSP+MySQL學(xué)生選課管理系統(tǒng)實(shí)戰(zhàn):從分層架構(gòu)到并發(fā)控制 簡介這是一個(gè)基于 SSMSpringMVC MyBatis框架、搭配 JSP 與 MySQL 實(shí)現(xiàn)的學(xué)生信息管理與選課系統(tǒng)適合 Java Web 初學(xué)者、畢業(yè)設(shè)計(jì)或課程設(shè)計(jì)參考。項(xiàng)目前端采用 Bootstrap 與 particles.js 插件后臺使用 PageHelper 完成分頁查詢并對添加、修改操作通過 Ajax 校驗(yàn)主鍵是否可用同時(shí)已配置登錄攔截代碼分層清晰、輸入框約束較強(qiáng)便于二次開發(fā)。整個(gè)資源包共 266 個(gè)文件以 Java 源碼、JSP 頁面、XML 配置文件為主輔以 SQL 腳本、JavaScript 與樣式文件壓縮包大小僅 2.64MB結(jié)構(gòu)緊湊能快速導(dǎo)入 IDE 運(yùn)行學(xué)習(xí)。已有 806 人瀏覽學(xué)習(xí)適合希望掌握 SSM 整合、前后端交互及基礎(chǔ)權(quán)限控制的學(xué)生對照實(shí)踐從中可獲取完整可運(yùn)行的項(xiàng)目源碼、數(shù)據(jù)庫腳本和目錄結(jié)構(gòu)參考用于理解選課業(yè)務(wù)模塊與框架配置細(xì)節(jié)。1. 為什么“基于SSMjspmysql的學(xué)生信息管理系統(tǒng)(選課)”依然是重復(fù)使用率最高的教學(xué)項(xiàng)目骨架把“學(xué)生信息管理”和“選課”放進(jìn)同一個(gè)標(biāo)題意味著你已經(jīng)選中了 Java Web 開發(fā)里最經(jīng)典的一條教學(xué)路線JSP 負(fù)責(zé)頁面渲染SpringMVC 負(fù)責(zé)請求分發(fā)Spring 管理業(yè)務(wù)對象MyBatis 做 SQL 映射MySQL 存全部業(yè)務(wù)數(shù)據(jù)。這套組合在高校實(shí)訓(xùn)、畢業(yè)設(shè)計(jì)、企業(yè)內(nèi)部培訓(xùn)中出現(xiàn)的頻率遠(yuǎn)超微服務(wù)方案原因是它能在不出局域網(wǎng)的前提下用一臺 Tomcat 把登錄、CRUD、多表關(guān)聯(lián)、事務(wù)控制和權(quán)限攔截完整串起來恰好是初學(xué)者建立 Java Web 全鏈路認(rèn)知的爬坡路徑。對工作五年以上的工程師這個(gè)項(xiàng)目也有其價(jià)值很多公司里仍跑著以 JSP 為核心的遺留系統(tǒng)改造為前后端分離之前你需要一份對 JSP 生命周期、MyBatis 代理機(jī)制、Spring 事務(wù)邊界都有掌控力的基線版本。選課是最值得動(dòng)手的模塊超容量限制、重復(fù)選課校驗(yàn)、退選釋放名額、并發(fā)情況下防止超賣每一行代碼都直接對著數(shù)據(jù)庫的鎖和事務(wù)。2. SSMJSPMySQL的分工邏輯哪一層決定選課業(yè)務(wù)哪一層只做展示2.1 Spring、SpringMVC、MyBatis 三個(gè)框架在選課場景中的職責(zé)邊界很多初學(xué)者把 SSM 當(dāng)成一個(gè)整體來背但排錯(cuò)和改造時(shí)最忌諱的就是分不清每一層的邊界。Spring 在這里是 IoC 容器負(fù)責(zé)管理CourseService、SelectionService、CourseMapper這些 Bean 的生命周期事務(wù)由它統(tǒng)一控制SpringMVC 只做兩件事把 HTTP 請求解析成控制器方法參數(shù)再把方法返回值渲染到 JSP 頁面MyBatis 則把 DAO 接口和 Mapper XML 里的 SQL 綁定起來返還的結(jié)果直接映射成 JavaBean。放到選課業(yè)務(wù)里看這三層各管一段Controller 不寫if (selectedCount capacity)這種判斷它只負(fù)責(zé)接收courseId和studentId然后調(diào)用 Service判斷課程是否選滿、學(xué)生是否重復(fù)選課、事務(wù)邊界在哪里是 Service 的職責(zé)而SELECT ... FOR UPDATE、UPDATE course SET selected_count selected_count 1這類真正和數(shù)據(jù)打交道的 SQL只出現(xiàn)在 Mapper XML 里。我把這種分層原則叫做“Controller 越薄越好Service 越厚越穩(wěn)”因?yàn)橐坏┌褬I(yè)務(wù)判斷寫進(jìn) Controller將來新增一個(gè)選課入口比如管理員代選、批量選課你就得把判斷邏輯復(fù)制一遍這是事務(wù)失效和 bug 重復(fù)出現(xiàn)的根源。2.2 JSP 在后端渲染為主的后臺管理系統(tǒng)里為什么還管用前端界面上這個(gè)項(xiàng)目用 JSP 而不是 Vue、React常被當(dāng)成“技術(shù)陳舊”的典型。但放在選課管理系統(tǒng)這種場景里JSP 的服務(wù)器端渲染模式其實(shí)有不可替代的優(yōu)勢頁面數(shù)據(jù)量小、交互簡單主要操作是“查課表、點(diǎn)擊選課、看結(jié)果”服務(wù)端一次把課程列表和已選狀態(tài)渲染完瀏覽器幾乎不需要維護(hù)狀態(tài)。對比前后端分離方案JSP 省掉了一整套前端構(gòu)建鏈不需要 Node.js 環(huán)境也不需要考慮跨域一個(gè) Tomcat 部署完即可訪問。JSP 文件的另一個(gè)實(shí)際好處是 JavaBean JSTL 的配合。在course_list.jsp里用c:forEach遍歷ListCourse直接用${course.courseName}輸出屬性這套語法對剛接觸 Java Web 的新手非常直觀對一個(gè)上線的后臺管理系統(tǒng)也足夠穩(wěn)定。等系統(tǒng)真的復(fù)雜到需要圖表聯(lián)動(dòng)、實(shí)時(shí)刷新選課人數(shù)時(shí)再逐步在個(gè)別頁面引入 Ajax 接口也不遲這比一開始就上前后端分離的改造成本低得多。2.3 一次選課請求在 SSM 鏈路中的完整數(shù)據(jù)流把一次選課請求在整套框架里的流動(dòng)畫出來故障排查就成功了一半。學(xué)生在 JSP 頁面點(diǎn)擊“選課”按鈕表單 POST 提交到student/selectCourseDispatcherServlet 根據(jù)RequestMapping找到CourseController的對應(yīng)方法Controller 從 HttpSession 拿到當(dāng)前學(xué)生 ID把課程 ID 傳給SelectionServiceService 開啟事務(wù)先通過課程 ID 查詢課程行并加鎖檢查容量和重復(fù)選課插入選課記錄更新selected_count事務(wù)提交后返回成功提示Controller 把提示消息寫進(jìn) Model轉(zhuǎn)發(fā)回課程列表頁面JSP 用${msg}顯示給用戶。鏈路環(huán)節(jié)所在層典型問題排查手段表單提交JSP / 瀏覽器URL 地址或參數(shù)名寫錯(cuò)F12 看 Network 的實(shí)際請求請求分發(fā)SpringMVC返回 404 或 405檢查RequestMapping與 JSP form action業(yè)務(wù)判斷Spring Service事務(wù)未回滾選課數(shù)據(jù)不一致查看 rollbackFor 配置SQL 執(zhí)行MyBatis / MySQL鎖等待超時(shí)、參數(shù)綁定失敗打開 MyBatis 日志輸出實(shí)際 SQL這一層看在項(xiàng)目排錯(cuò)時(shí)最有價(jià)值的是最后一行把 MyBatis 的日志級別調(diào)到 DEBUGSpring 的applicationContext.xml里加上日志配置立刻能看到框架實(shí)際執(zhí)行的 SQL 語句和綁定參數(shù)。很多“頁面報(bào)錯(cuò)但不知道哪里錯(cuò)”的問題從這里開始查比逐行讀代碼快得多。3. MySQL建表與 Maven 工程骨架選課系統(tǒng)的地基怎么搭3.1 學(xué)生表、課程表、選課中間表的建表 SQL 與設(shè)計(jì)理由選課系統(tǒng)最少需要三張表學(xué)生表、課程表、選課中間表。學(xué)生表存基礎(chǔ)信息和登錄密碼課程表設(shè)計(jì)時(shí)必須包含capacity容量字段和selected_count當(dāng)前已選人數(shù)選課中間表是學(xué)生與課程的多對多關(guān)系的載體同時(shí)也承擔(dān)了“防止重復(fù)選課”的職責(zé)。建表 SQL 我一般這樣寫CREATE DATABASE IF NOT EXISTS student_selection DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE student_selection; CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, student_no VARCHAR(20) NOT NULL UNIQUE, name VARCHAR(50) NOT NULL, password VARCHAR(64) NOT NULL, class_name VARCHAR(50), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE course ( id INT PRIMARY KEY AUTO_INCREMENT, course_no VARCHAR(20) NOT NULL UNIQUE, course_name VARCHAR(100) NOT NULL, teacher VARCHAR(50), credit DECIMAL(3,1), capacity INT NOT NULL DEFAULT 60, selected_count INT NOT NULL DEFAULT 0, version INT NOT NULL DEFAULT 0, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE selection ( id INT PRIMARY KEY AUTO_INCREMENT, student_id INT NOT NULL, course_id INT NOT NULL, select_time DATETIME DEFAULT CURRENT_TIMESTAMP, status TINYINT NOT NULL DEFAULT 1 COMMENT 1已選0退選, UNIQUE KEY uk_student_course (student_id, course_id), KEY idx_course_id (course_id), CONSTRAINT fk_selection_student FOREIGN KEY (student_id) REFERENCES student(id), CONSTRAINT fk_selection_course FOREIGN KEY (course_id) REFERENCES course(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;說三個(gè)關(guān)鍵參數(shù)。第一個(gè)是ENGINEInnoDB選課會用到行鎖和事務(wù)MyISAM 不支持行鎖并發(fā)選課時(shí)會出現(xiàn)數(shù)據(jù)錯(cuò)亂這一點(diǎn)必須明確。第二個(gè)是UNIQUE KEY uk_student_course (student_id, course_id)這是防止重復(fù)選課的最后一道物理防線哪怕業(yè)務(wù)代碼里漏了校驗(yàn)數(shù)據(jù)庫層也會拒絕第二次插入。第三個(gè)是selected_count字段它屬于冗余字段為的是避免每次展示課表時(shí)都COUNT(*)一張巨大的中間表但冗余字段必須在更新選課時(shí)同步維護(hù)這也就是后面事務(wù)中兩條 UPDATE 不能脫節(jié)的原因。3.2 pom.xml 依賴清單與版本兼容關(guān)系SSM 項(xiàng)目早期的坑大多集中在版本沖突上。Spring 4 和 Spring 5 之間跨越了 Java 版本基線MyBatis 3.4 以前與 Spring 集成時(shí)還需要單獨(dú)配org.mybatis:mybatis-spring的兼容版本。下面這份pom.xml依賴清單是我常用的組合對應(yīng) JDK 8 Tomcat 8.5 環(huán)境properties spring.version5.2.22.RELEASE/spring.version mybatis.version3.5.6/mybatis.version /properties dependencies dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version${spring.version}/version /dependency dependency groupIdorg.mybatis/groupId artifactIdmybatis/artifactId version${mybatis.version}/version /dependency dependency groupIdorg.mybatis/groupId artifactIdmybatis-spring/artifactId version2.0.6/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version scoperuntime/scope /dependency dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version4.0.1/version scopeprovided/scope /dependency dependency groupIdjavax.servlet/groupId artifactIdjstl/artifactId version1.2/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.8/version /dependency /dependencies依賴說明Spring 版本與 JDK 版本強(qiáng)制綁定JDK 8 用 5.2.x 最省心升到 Spring 6 就必須搭配 JDK 17。mysql-connector-java選 8.0.x 時(shí)JDBC 驅(qū)動(dòng)類名是com.mysql.cj.jdbc.Driver跟 5.x 版本的com.mysql.jdbc.Driver不一樣這也是新手最常遇到的ClassNotFoundException來源。javax.servlet-api用provided作用域目的是編譯時(shí)可用、打包時(shí)不重復(fù)打進(jìn)去否則部署到 Tomcat 會與容器自帶的 Servlet 類沖突。3.3 spring、springmvc、jdbc 三個(gè)配置文件的落地寫法SSM 的配置可以拆成三份jdbc.properties放數(shù)據(jù)庫連接參數(shù)spring-context.xml放 Spring 容器與 MyBatis 集成springmvc.xml放控制器掃描與視圖解析器。先看數(shù)據(jù)庫連接參數(shù)jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/student_selection?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalse jdbc.usernameroot jdbc.passwordroot jdbc.initialSize5 jdbc.maxActive20serverTimezoneAsia/Shanghai是 MySQL 8 連接參數(shù)里最容易被忽略但直接影響業(yè)務(wù)的一環(huán)。不指定時(shí)區(qū)JDBC 把 Java 的Date寫入數(shù)據(jù)庫會按服務(wù)器默認(rèn)時(shí)區(qū)轉(zhuǎn)換經(jīng)常出現(xiàn)“插入的時(shí)間和數(shù)據(jù)庫看到的時(shí)間差 8 小時(shí)”。useSSLfalse避免本地開發(fā)時(shí)因?yàn)樽C書問題報(bào)一堆 warning生產(chǎn)環(huán)境如果開啟 SSL 則去掉這個(gè)參數(shù)。spring-context.xml的核心是把數(shù)據(jù)源、SqlSessionFactory 和事務(wù)管理器串到一起context:property-placeholder locationclasspath:jdbc.properties/ bean iddataSource classcom.alibaba.druid.pool.DruidDataSource init-methodinit destroy-methodclose property namedriverClassName value${jdbc.driver}/ property nameurl value${jdbc.url}/ property nameusername value${jdbc.username}/ property namepassword value${jdbc.password}/ /bean bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/ property namemapperLocations valueclasspath:mapper/*.xml/ property nametypeAliasesPackage valuecom.example.entity/ /bean bean classorg.mybatis.spring.mapper.MapperScannerConfigurer property namebasePackage valuecom.example.dao/ /bean bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean tx:annotation-driven transaction-managertransactionManager/mapperLocations告訴 MyBatis 去哪里找 XML 映射文件typeAliasesPackage讓 Mapper XML 里寫resultTypeCourse時(shí)能自動(dòng)映射到實(shí)體類不用寫全路徑MapperScannerConfigurer則是把 DAO 接口動(dòng)態(tài)代理成 Bean。事務(wù)管理器選中DataSourceTransactionManagertx:annotation-driven開啟Transactional注解生效。springmvc.xml要單獨(dú)掃描Controller避免把業(yè)務(wù) Service 重復(fù)掃描context:component-scan base-packagecom.example.controller/ mvc:annotation-driven/ bean classorg.springframework.web.servlet.view.InternalResourceViewResolver property nameprefix value/WEB-INF/jsp// property namesuffix value.jsp/ /bean視圖解析器的prefix設(shè)置成/WEB-INF/jsp/而不是/jsp/是為了讓 JSP 文件放在 WEB-INF 目錄下瀏覽器無法直接通過 URL 訪問只能經(jīng) Controller 轉(zhuǎn)發(fā)這對后臺管理系統(tǒng)的訪問控制是重要的一層保護(hù)。4. 選課核心實(shí)現(xiàn)Controller、Service、MyBatis 映射怎么寫4.1 Service 層處理超容量與重復(fù)選課的事務(wù)代碼選課業(yè)務(wù)最核心的一條規(guī)則是課程已選人數(shù)達(dá)到capacity后不能再選同一個(gè)學(xué)生不能重復(fù)選同一門課。這兩條規(guī)則在并發(fā)場景下會放大成“超容量選課”和“重復(fù)插入”。只靠單機(jī)代碼里的if (selectedCount capacity)判斷做不到絕對安全因?yàn)閮蓚€(gè)請求可能同時(shí)讀到同一個(gè)舊值。所以 Service 層要同時(shí)依賴事務(wù)和數(shù)據(jù)庫行鎖Service Transactional(rollbackFor Exception.class) public class SelectionServiceImpl implements SelectionService { Resource private CourseMapper courseMapper; Resource private SelectionMapper selectionMapper; Override public boolean selectCourse(Integer studentId, Integer courseId) { Course course courseMapper.selectByIdForUpdate(courseId); if (course null) { throw new BizException(課程不存在); } if (course.getSelectedCount() course.getCapacity()) { throw new BizException(該課程已選滿); } Integer exists selectionMapper.checkExists(studentId, courseId); if (exists ! null exists 0) { throw new BizException(請勿重復(fù)選課); } selectionMapper.insertSelection(studentId, courseId); int rows courseMapper.increaseSelectedCount(courseId); if (rows 0) { throw new BizException(選課失敗請重試); } return true; } }代碼邏輯不復(fù)雜但要注意三處。第一Transactional(rollbackFor Exception.class)必須顯式聲明rollbackFor因?yàn)?Spring 默認(rèn)只在運(yùn)行時(shí)異常時(shí)回滾如果業(yè)務(wù)代碼拋的是受檢異常比如Exception的直接子類事務(wù)不會回滾選課記錄插入成功但課程人數(shù)沒增加數(shù)據(jù)就錯(cuò)亂了。第二查詢課程用的selectByIdForUpdate不是普通查詢它會在 MySQL InnoDB 引擎里對這條課程記錄加排他鎖鎖會一直持有到事務(wù)提交或回滾這是防止并發(fā)超選的關(guān)鍵。第三先查checkExists再插入的做法能擋住大部分重復(fù)請求但極端并發(fā)下仍可能出現(xiàn)兩個(gè)事務(wù)同時(shí)通過檢查所以數(shù)據(jù)庫中uk_student_course唯一索引是最后的兜底。4.2 MyBatis XML 中的加鎖 SQL 與兩個(gè)參數(shù)綁定差異對應(yīng)CourseMapper接口的三個(gè)方法在CourseMapper.xml里這樣寫mapper namespacecom.example.dao.CourseMapper select idselectByIdForUpdate resultTypeCourse SELECT id, course_no, course_name, teacher, credit, capacity, selected_count, version FROM course WHERE id #{courseId} FOR UPDATE /select select idcheckExists resultTypejava.lang.Integer SELECT COUNT(*) FROM selection WHERE student_id #{studentId} AND course_id #{courseId} AND status 1 /select insert idinsertSelection INSERT INTO selection (student_id, course_id, status) VALUES (#{studentId}, #{courseId}, 1) /insert update idincreaseSelectedCount UPDATE course SET selected_count selected_count 1, version version 1 WHERE id #{courseId} /update /mapper重點(diǎn)說FOR UPDATE。這里FOR UPDATE鎖的是課程表里id #{courseId}這一行不是表鎖因此在多門課并發(fā)選課時(shí)互不阻塞。但鎖的生效前提是查詢必須在事務(wù)內(nèi)執(zhí)行如果 Service 方法沒加TransactionalMySQL 會自動(dòng)提交每條語句查詢返回后鎖立刻釋放后面的insert和update就又回到無鎖狀態(tài)了。排查這類問題時(shí)可以打開 MySQL 命令行執(zhí)行SHOW ENGINE INNODB STATUS;查看TRANSACTIONS段能直接看到當(dāng)前事務(wù)持有的行鎖與等待關(guān)系。#{}的作用是把參數(shù)預(yù)編譯成?占位符由 JDBC 的PreparedStatement綁定值SQL 注入對#{courseId}無效這是 Mapper XML 里必須無條件使用#{}的原因。${}則是字符串替換直接把參數(shù)拼進(jìn) SQL 字符串比如排序字段ORDER BY ${sort}這種場景才用得到且傳入值必須白名單校驗(yàn)絕不能用用戶輸入直接拼。4.3 SpringMVC 控制器接收參數(shù)后如何回傳 JSPController 層把頁面上的表單參數(shù)接進(jìn)來調(diào)用 Service再把結(jié)果交給 JSP 渲染。這里用forward而非redirect的原因要講清楚forward是服務(wù)端內(nèi)部轉(zhuǎn)發(fā)瀏覽器 URL 不變請求參數(shù)和 Model 數(shù)據(jù)可以原樣傳遞redirect是一次 302 跳轉(zhuǎn)瀏覽器重新發(fā)起一次 GET 請求Model 數(shù)據(jù)會丟失只能用RedirectAttributes傳值。選課失敗后要保留學(xué)生的課表搜索條件我通常選擇forwardController RequestMapping(/student) public class StudentCourseController { Resource private SelectionService selectionService; RequestMapping(value /selectCourse, method RequestMethod.POST) public String selectCourse(RequestParam(courseId) Integer courseId, HttpSession session, Model model) { Integer studentId (Integer) session.getAttribute(studentId); try { selectionService.selectCourse(studentId, courseId); model.addAttribute(msg, 選課成功); } catch (BizException e) { model.addAttribute(msg, e.getMessage()); } model.addAttribute(courseList, courseService.listAllCourses()); return course_list; } }RequestParam(courseId)的值對應(yīng) JSP 表單里input namecourseId或按鈕的namecourseId名字對不上會直接報(bào) 400。把返回字符串寫成course_list后視圖解析器自動(dòng)拼接成/WEB-INF/jsp/course_list.jsp。這里每做一次選課都重新查詢一次課程列表能保證頁面上已選名額是準(zhǔn)的如果課程量大也可以把courseList放到 session 上一段時(shí)間內(nèi)復(fù)用減少每一次選課請求都打數(shù)據(jù)庫的壓力。JSP 頁面里接收消息并展示同時(shí)把課程遍歷出來% page contentTypetext/html;charsetUTF-8 languagejava % % taglib prefixc urihttp://java.sun.com/jsp/jstl/core % html body p${msg}/p c:forEach items${courseList} varcourse form action${pageContext.request.contextPath}/student/selectCourse methodpost 課程名${course.courseName} 教師${course.teacher} 名額${course.selectedCount}/${course.capacity} input typehidden namecourseId value${course.id} button typesubmit選課/button /form /c:forEach /body /html${pageContext.request.contextPath}會自動(dòng)帶上應(yīng)用部署路徑例如/student_selection這樣即使把 WAR 包改名部署表單提交的 URL 也不會錯(cuò)。hidden輸入框用來帶課程 IDJSTL 的forEach遍歷的對象必須是 Controller 里通過model.addAttribute放入的ListCourse如果 LAZY 加載打開且 Session 關(guān)閉訪問關(guān)聯(lián)屬性時(shí)會拋LazyInitializationException這與 MyBatis 的延遲加載配置有關(guān)。4.4 并發(fā)選課常犯的三個(gè)錯(cuò)誤第一個(gè)是用同步關(guān)鍵字解決并發(fā)。給selectCourse方法加synchronized只能在單機(jī)單實(shí)例內(nèi)生效一旦應(yīng)用部署多個(gè) Tomcat 實(shí)例或進(jìn)入集群鎖就完全失效而且會讓本可并行處理的課程選課請求全部串行化。第二個(gè)是把容量判斷放在 INSERT INTO selection 之后先插入中間表再校驗(yàn)人數(shù)結(jié)果學(xué)生課表里出現(xiàn)了記錄但課程人數(shù)沒增加事務(wù)回滾時(shí)因?yàn)楫惓1?catch 后吞掉導(dǎo)致臟數(shù)據(jù)。正確的順序是加鎖查詢、業(yè)務(wù)校驗(yàn)、插入中間表、更新人數(shù)且所有操作在同一個(gè)事務(wù)里。第三個(gè)是不處理數(shù)據(jù)庫唯一索引沖突。依靠checkExists完成后覺得萬事大吉但當(dāng)兩條 SELECT 同時(shí)返回 0兩個(gè) INSERT 都會被數(shù)據(jù)庫執(zhí)行第二個(gè)會撞上uk_student_course拋出DuplicateKeyException。Service 里應(yīng)當(dāng)捕獲這個(gè)異常并轉(zhuǎn)成業(yè)務(wù)提示“你已選過該課程”否則前端會看到滿屏 500 異常棧。5. 部署驗(yàn)證、選課導(dǎo)出與兩個(gè)常用優(yōu)化5.1 把項(xiàng)目跑起來的部署順序與常見報(bào)錯(cuò)排查開發(fā)環(huán)境里 IDE 啟動(dòng) Tomcat 是一回事打成 WAR 包部署到獨(dú)立 Tomcat 又是另一回事。我先在項(xiàng)目根目錄執(zhí)行mvn clean package -DskipTests跳過單測減少構(gòu)建時(shí)間打包成功后到target/下找到.war文件拷貝到 Tomcat 的webapps/目錄啟動(dòng)腳本bin/startup.sh后查看logs/catalina.out。這里有個(gè)關(guān)鍵點(diǎn)WAR 包名稱就是應(yīng)用上下文路徑把target里的 WAR 重命名成ssm-select-course.war訪問地址就變成http://localhost:8080/ssm-select-course/JSP 表單里的${pageContext.request.contextPath}會自動(dòng)適配不會因?yàn)楦拿?404。部署階段報(bào)錯(cuò)現(xiàn)象優(yōu)先檢查項(xiàng)數(shù)據(jù)庫連接Cannot create PoolableConnectionFactoryjdbc.properties 的端口、用戶名、密碼MySQL 是否啟動(dòng)驅(qū)動(dòng)加載ClassNotFoundException: com.mysql.cj.jdbc.Driverpom.xml 依賴是否正確包是否打入 WEB-INF/libSpring 容器啟動(dòng)NoSuchBeanDefinitionExceptionMapperScannerConfigurer 的 basePackage 是否掃描到 DAO頁面訪問404 找不到 /student/loginweb.xml 中 DispatcherServlet 的 url-pattern 是否覆蓋JSP 渲染EL 表達(dá)式原樣輸出${msg}JSP 里isELIgnoredfalse或容器版本是否過高補(bǔ)一個(gè)高頻問題JSP 編譯報(bào)錯(cuò)時(shí)Tomcat 日志里通常只能看到Unable to compile class for JSP這時(shí)要單獨(dú)把 JSP 里的語法剝離出來最常見的原因是 JSTL 標(biāo)簽庫的 URI 寫錯(cuò)http://java.sun.com/jsp/jstl/core這個(gè)地址必須原樣保留不要改成 https 或加多余路徑。5.2 把選課名單導(dǎo)出為 Excel 的最小實(shí)現(xiàn)項(xiàng)目里常有“把選課名單導(dǎo)出成 Excel”的需求不用上 Apache POI 也能快速做出一版可用結(jié)果。POI 在 SSM 里會引入五六個(gè)別名包如果只是導(dǎo)出表格直接用 JSP 或 Controller 輸出帶 BOM 的 CSV 文件Excel 打開后仍然正常分列。Controller 里這樣寫RequestMapping(/student/exportSelection) public void exportSelection(Integer courseId, HttpServletResponse response) throws IOException { ListSelectionVo list selectionService.listByCourseId(courseId); response.setContentType(text/csv;charsetUTF-8); response.setHeader(Content-Disposition, attachment;filenameselection_ courseId .csv); PrintWriter writer response.getWriter(); writer.write(\ufeff); writer.println(學(xué)號,姓名,班級,選課時(shí)間); for (SelectionVo vo : list) { writer.println(vo.getStudentNo() , vo.getName() , vo.getClassName() , vo.getSelectTime()); } writer.flush(); }setContentType告訴瀏覽器這是一個(gè) CSV 文件Content-Disposition里的attachment觸發(fā)下載而不是直接在瀏覽器打開\ufeff是 UTF-8 BOM不加它Excel 打開中文 CSV 文件時(shí)會出現(xiàn)“學(xué)號、姓名”亂碼。這層實(shí)現(xiàn)適合幾百行的選課名單超過五千行則建議用 POI 的 SXSSF 方式寫真實(shí).xlsx避免 CSV 受列數(shù)限制。5.3 選課列表分頁的 MySQL 寫法與索引落點(diǎn)課程數(shù)量和選課記錄增長后SELECT * FROM course全量查詢會拖慢首頁加載。分頁用 MySQL 的LIMIT #{offset}, #{pageSize}配合ORDER BY id DESC保證連續(xù)翻頁時(shí)數(shù)據(jù)不重復(fù)。翻頁越深LIMIT 100000, 20這種寫法越慢MySQL 需要掃描前面 10 萬條再丟棄所以超過幾十萬行時(shí)改成游標(biāo)分頁記住上一頁最后一條記錄的id下一頁直接用WHERE id #{lastId} ORDER BY id DESC LIMIT 20讓索引直接定位。分頁查詢的offset和pageSize參數(shù)傳入 Mapper 時(shí)用#{}綁定不會注入但offset一定要在 Service 里做page 0 時(shí)重置為 0、pageSize 100 時(shí)截?cái)酁?100的限制防止惡意用超大頁碼拖垮數(shù)據(jù)庫。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
青青久久大香蕉| 五月色丁香婷婷中文字幕| 99精品偷自拍| 超碰日日操| 美女天天艹人人爽| 丁香九月综合| 婷婷色基地在线看| 丁香五月影| 国产精品色色| 狠色色狠网| 久久婷婷网站| 久久日韩婷婷五月| 色综合婷婷99| 亚洲婷婷性爱| 国产特级毛片AAAAAAA高清| 六月色婷婷| 色色色精品无码区| 五月婷婷在线丁香| 91超碰在线观看| 婷婷狠狠综合网入口| 最新色色五月天| 日日操日日射| 2023天天日夜夜爽| 色五月五月天| 欧美色播综合在线观看| 成人天天爽| 五月婷婷七月丁香| 91xxxx九色| 九九亚洲| 99热亚洲| 色色五月婷婷| 六月丁香五月婷婷| 一本大道嫩草AV无码专区| 99在线视频播放| 日韩在线婷婷五月天综合| 性爱AV天堂| 九九精品热播| 亚洲AV网站在线观看| 99色在线观看视频者| 色激情五月天| 五月天激情国产综合婷婷婷| 五月婷婷激情综合| 丁香五月影院| 69凹凸成人综合网| 伊人激情综合| 99九九热视频免费| 日本色色网站| www.91婷婷| 久青草大香蕉| 国产资源在线视频| YJLZZJLZZ亚洲乱熟无码| 激情五月婷婷色色| 色婷婷88| 色色丁香| 深爱激情九九五月天| 五月六月婷婷激情网| 99久久精品色老| 美腿丝袜AV天堂网| 日本视频99| 色综合久久88色综合天天看| 99re6热在线精品视频播放速度| 婷婷月综合| 91综合在线视频| 婷婷色情五月| 丁香婷婷激情综合五月激情| 欧美韩日AAA网站| 婷婷五月AA五月在线| 久久这里只有精品07 | 五月丁香婷婷综合网| 丁香婷婷色六月| 婷婷色丁香五月| 密桃激情五月天综合网| 天天爽天天干| 99网| 激情人妻蜜夜系列区| 丁香色婷婷色手机免费在线| 伊人狠狠色婷婷综合丁香一区| 五月婷婷,狠狠操| 精品99在线看| 丁香开心深爱| 操日视频| 五月婷婷啪啪啪啪| 伊久久婷婷| 九九这里只有精品在线视频| 视色综合| 久久99精品视频| 99精品视频在线观看| 性做久久久久久久免费看| 青草视频在线观看视频| 五月天狠狠色| 色综合久久88色综合天天人守婷| 五月婷婷六月情| 亭亭五月色男人| 丁香五月婷婷基地| 182TV大香蕉| 草草视频91| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 丁香五月婷婷五月| 欧美色色色色色色| 这里只有免费的精品| 2025色婷婷| 日韩综合久久| 91丁香色五月| 亚洲丁香婷婷五月天综合色| 天天日天天干天天爽| 婷婷色九月| 人妻AV在线| 丁香亭亭激情四射| 99色看这里只有精品| 五月天狠狠草| 99re6在线视频精品免费| 热99热久| 丁香五月激情站| 丁香婷婷激情六月五月开心| 99热人人艹| 台湾无码A片一区二区| 欧美99热| 九九综合| 久久婷婷六月综合综合| 婷婷丁香五月噜噜噜| 婷婷性爱网| 婷婷福利影院| 五月丁香婷婷婷婷综合网| 夜夜爱网站| 天天干天天爽| 欧美极品999| 亚洲色情网站| 无码视频国内精品久久久| 日本九九视频| 婷婷狠狠干| 狠狠精品干练久久久无码中文字幕| 99丁香五月婷婷在线| 色情丁香五月天| 久久多色| 91avse| 天天精品视频在线观看视频| 激情小说色五月| 久久婷五月天| 五月天综合视频| 《久久综合九色综合97婷婷| 丁香久久| 丁香五月天天| 久久婷婷五月综合啪| 中国操逼99| 九九热这里只有精品5| 色综合天天| 亚洲欧美综合7777色亭亭| 婷婷激情五月天综合| 欧美视频五区| 狠狠爱婷婷爱| 一区二区乱码视频| 色综合久久综合中文综合网| 五月丁香啪啪啪啪| 色综合激情| 激情五月婷婷| 成人在线视频网| 激情五月天综合网| 99热免费精品| 99A片| www.99婷婷| 99成人| 96色婷婷| 色婷婷69| 99色天堂| 精品一二三区久久AAA片| 99啪| 色色色999| 久久激情视频| 色婷婷成人做爰A片免费看网站| 婷婷丁香六月五月天| 日夜操B| AV在线免费播放| 五月 成人 婷婷| 欧美色碰| 五月天堂色| 无码操B| 婷婷五月无码| 婷香五月| 婷婷色五月噜噜| 婷婷五月色播| 色播播之激情五月婷婷| 色综合99无码| 天天澡天天狠天天天做| 久久激情五月网| 丁香六月婷婷色XXXXX| 丁香六月视频| 九九热手机在线视频| 熟妇人妻中文字幕无码老熟妇 | 亚洲综合1024| 激情五月综合亚洲另类| 十月丁香婷婷| 九九成人电影婷婷| 异能之下短剧免费观看全集| 69超碰在线| 久久婷婷五月天激情| 另类在线| 五月色情婷婷开心五月色情| 99九九精品视频推荐| 亚洲 无码 中文字幕 中出| 国产小精品| RenRenSe在线视频网站| 丁香激情综合| 五月婷婷天| 亚洲激情五月| 婷婷伊人五月天| 五月天日日操夜夜操 | 色狠狠色综合久久久绯色aⅴ影视| 伊人六月丁香婷婷| 五月婷婷九| www.99热精品| 亚洲激情99| 国产激情一区| 六月婷婷激情图片| 色插综合网| 综合色、色综合| 五月丁香六月婷婷国产视频| 久色网址| 丁香五月欧美婷婷综合| 色九亚洲| 26uuu亚洲欧美| 狠狠爱夜夜| 激情小说五月天| 婷婷另类开心| 另类激情四射| 色色色五月天婷婷| 九九RE视频在线精品| 天天摸夜夜爽天天做| 日韩人妻在线播放| 色色色五月婷婷| 99综合一区| 久久人人九九| 亚洲AV成人精品网站在线播放| 天天色天天日天天舔| 日91高清无玛| 日本玖玖在线| 日本三级韩三级99久久| 色五月天在线观看| 婷婷的五月天另类视频| 久久看婷婷| 国产成人精品一区二三区熟女在线 | 国产夫妻操逼内射视频| 天堂资源欧日浪女在线播放| 婷婷丁香五月社区亚洲| 天天射影院| 99色色色色| 99热这里只有精品98| 美腿丝袜AV天堂网| av在线免费播放观看| 超碰超碰在线| 九九热最新| 六月丁香啪| 丁香五月桃花在线激情综合| www.超碰在线| 九九五月天| 免费播放99性爱视频| 亚洲精品影视| 成年视频免费观看| 高清av在线国产| 激情五月天网| 中文字幕av在线| 婷婷开心五月| 婷婷激情五月天亚洲综合| 久久婷婷网站| 狼人婷婷久久| www.99精品在线| tingtingcaobi| 久久a热| 激情五月天综合网| 99热这里是精品| 激情五月丁香色婷婷| 五月天综合色| 久9热在线免费观看| 伊人婷婷五月天| 精品久久这里热66| 色婷久| 婷婷五月天堂一本在线| 五月丁香婷婷中文网| 久草婷婷| 丁香六月婷婷| 五月天婷婷色| 五月丁香综合网色欲| AV在线免费播放| 97热超碰| 国产黄色av| 影音先锋男人AV资源站| 1024成人免费看| 久久国产一区二区三区| 成人日韩欧美| 亚洲欧洲中文日韩久久AV乱码 | 激情亚洲婷婷| 在线你懂的亚洲欧| 人人操插| 婷婷和五月天| 六月婷婷私欲| 五月丁香六月综合激情网| 五月天播播综合| 无码一区二区日韩| 五月开心六月婷婷在线播放网站| 五月激情婷婷开心五月| 色婷婷国色天香综合| 99热这里只有精品手机在线观看| 狠狠人人| 色婷婷丁香AV综合| 五月婷av| 青青草轻轻操| 天天艹夜夜艹| 少妇性BBB搡BBB爽爽爽电影| 日本在线播放97| 亚洲成人AV电影在线| 黄桃AV无码免费一区二区三区| 婷婷成人五月天| 极品少妇XXXX精品少妇偷拍| 狠狠干狠狠干| 丁香五月天堂亚洲社区| 九九九九九九毛片| 毛片新网地| 久久9视频欧美| 亚洲六月婷婷| 精品一区二区三区四区五区六区介绍| 蜜桃五月天色| 色噜噜狠噜噜视频| 91蜜桃婷婷狠狠久久综合9色| 99九九在线| 影音先锋毛片网站| 人妻乱码久久久| 久久草大香蕉| 天天操天天日天天操| 色色色色色色色色综合网| 激情五月天伊人av| 中文字幕成人| 五月婷婷操操| 欧美日韩国产伦精品日韩人妻一| 日韩啪啪视频| 婷婷六月插屄激情| 操骚货在线| 91美女被操| 日本天天操| 91919191919久久成人视频| www.亚洲激情.com| 热99国产精品| 天天干天天操| 九九色综合| 桃色成人网| 性爱111111| 中文字幕av亚洲| 深爱婷婷基地| 日本狠狠色| 久色激情| 欧美啪啪五月天| 99无码超碰| 色噜噜伊人| 日日操夜夜骑| 久久婷婷五月综合色和| 丁香五月综合激情性爱| 色婷婷综合久久久久| 色婷婷内射| 狠狠色噜噜| 九九色欲网| 久久久亚洲精品一区二区三区浴池| 月丁香久久久| 99色最新在线视频| 亚洲愉拍99热成人精品| 婷婷丁香五月天之开心少妇| 五月婷丁香花| 丁香激情网| 国产特级毛片AAAAAAA高清| 久久婷婷的综合色丁香五月| 少妇人妻凹凸视频| 激情五月天小说网| 99热99| 亚洲人人96@| 色婷婷电影网| 色综合99色| 一本久久亚洲五月婷婷| 国产 亚洲 在线| 果冻传媒A片一二三区| 久/久精品99看9| 国产成人99久久亚洲综合精品| 思思re99视频在线观看| 天天日P天天射P| 可以免费观看的av网址| 天堂网啪啪| 天天干天天日蜜臀av| 色噜噜狠狠色综合日日| 成人综合AV| 色六月 婷婷| 色婷婷久久综合久色| 激情六月婷婷| 亚洲天堂制| 久久99热免费| 人人操AV| 好好干Av| 五月天开心网| 99热这里只有精品8| 人操人人| 99九九精品| 青柠影视免费高清电视剧| 亚洲六月婷婷| 99思思| 神马欧美精| 婷婷五月骚厕所| 国产精产国品一二三在观看| 99re最新地址视频| 激情五月婷婷网| 日本操碰碰| 99精彩视频| 日韩三级视频一区二区| 六月久久狠狠| 波多野结衣成人作品在线| 5月婷婷激情6月| 欧美性生交A片免费看| 久九色| 曰曰久久| 狠狠色婷婷7777久| 九九热这里| www.色综合| 婷婷激情性爱| 日本欧美在线| 五月天色色网站| 色色色综合网| 99精品偷自拍| 色五月婷激情| 99综合入口| 一级操逼内射在线视频| 98热精品| 久色激情| 五月丁香在线视频观看| 精国产品一区二区三区A片| 九九热在视频| 九九热9| 婷婷综合色播网| 国产综合丁香五月天| 99爱视频在线播放| 久久精品91视频| 色五月婷婷综合在线| AV成人在线播放| 91丨九色丨熟女丰满| 亚洲操逼片| www.99色| 五月天婷婷六月| 国产真实乱了老女人视频| 五月永久激情| 亚洲天堂玖玖| 五月丁香色综合| 色碰碰| 五月天婷婷在线观看| 中文字幕成人| 国产91资源在线| 五月丁香激情欧洲啪啪| 99在线视频播放| 色色色色色色网| 99热99热在线观看| www色哟哟| 九九99香蕉在线视频播放| 久9久9热久热| 色综合99无码| 99热碰碰热| 26uuu.| 超碰婷婷五月| av在线免费播放| 亚洲激情淫网| 久久思思99| 97自拍视频在线| 色狠狠综合网| xxxx久| 激情五月天综合网| 拳交大逼| 丁香五月1页| 中文字幕1区2区。| 香蕉国产2013| 日韩按摩二区| 一逼色综合| 少妇人妻人伦A片| 99这里都是精品6| 18av天堂| 五月婷婷综合成人| 精品女人九九九| 激情的五月婷婷蜜桃| 色约约视频一区二区三区四区五区| 超碰在线9| 热久久66| 99操| 67194中文字幕| 99爱在线视频| 五月婷婷色| 亚洲丁香五月天在线视频| 亚洲一区二区 成人网站戴套| 99这里只有精品|v| 狠狠操天天干| 婷婷五月天人妻| 99在线观看精品| 久久se 综合网| 久久99激情| 婷久看人爽| 9999热在线免费观看| 日日影院 | 激情九月综合| 激情综合激情综合| 色五开心五月五月深深爱| 色婷婷综合网| 91ncm视频| 国产女18毛片多18精品| 九九99精品视频在线观看| 97色片| 色婷婷久久综合丁香五月| 色婷婷久久| 九九美女视频| 超碰在线免费观看3 9| 在线中文av| 久久人妻伊人| AAA亚洲AV| 激情综合网婷婷久久| 久久大香蕉同僚| 另类亚洲电影| 亚洲最大视频网站| www.久99| 日本一级淫| 天天玩夜夜操| 精品乱码久久久久| 免费黄色片子| 久久 婷婷 五月天| 99色中文| 在线观看的av| 亚洲超碰在线| 婷婷的99视频网站| 丝袜激情网| 丁香婷婷影院| 五月天天视频| 人人综合久| 天天天天干| 五月丁香啪啪综合| 欧美啄木乌丝袜人妻系列| 日韩av干| 天天精品视频在线观看视频| 操一操插一插| 婷婷五月天堂一本在线| 亚洲 五月 婷婷 成人| 亚洲美女婷婷五月天| 色之综合网| 九九热这里只有精品首页| 久久婷婷91| 九九久久99精品免费观看www| 色色五月激情| www.婷婷亚洲基地| 久久XX| 99在线精品观看99| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 性爱激情小说AV五月丁香花| 色 五月 天 婷婷 丁香 九月| 黄色成人AV在线| 亚洲性爱AV| 亚洲成人av在线观看| 天堂久久大香蕉| 婷婷五月丁香色播| 亚洲AV人人操| 婷婷久久午夜网| 玖玖伦理电影| 日韩乱玛久久| 开心激情婷婷| 婷婷五月天综合在线| 五月天激情视频| 亚洲无AV在线中文字幕| 久热99久热| 婷婷五月天午夜激情影院| 综合九九中文字幕| 大香蕉综合| 久久久精品AV| 狠狠操天天操综合| 天天视频亚洲| 九九成人| 可以免费观看的av| 午夜精品人妻无码一区二区三区| se色婷婷视频| 色情开心五月| 狠狠色丁香五月婷巨| 久久久er热| 五月草影视| 激情婷婷五月天| 九九色婷婷| www.色五月| 99干免费视频| 99黄色性生活| 五月丁香久久激情网| 五月婷婷真爱激情网| 人妻AV在线观看| 丁香九月激情| 久久久全国免费视频| 《久久综合九色综合97婷婷| av 一区三区四区| 婷婷噜噜| 亚洲综合色网| 久久婷婷五| 亚洲国产婷婷色五月| 激情五月四色| 狠狠干婷婷| 伊人狼人干| 殴美日比视频| 六月色丁香中文字幕| 中文AV在线播放| 大伊香蕉精品视频在线| 久久精品91视频| 色五月激情五月丁香五月婷婷啪啪综合 | 亚洲另类在线观看| 五月丁香六月婷婷综合| 99小精品| 婷婷五月天影院| 丁香五月婷婷av影院| 99在线资源| 三十路磁力链接| 97热在线精品| 久久五月婷综合网| 久久与婷婷| 五月丁香综合影院| 亚洲精品无码A片一区二区| 久久丝丝热| 丁香五月天啪啪a日本| 丁香五月欧美| 成人综合AV| 99热日韩| 国产精品91抖高| 久热9| 天天搞天天爽| 久久丁香综合香蕉| 玖玖国产视频一区| 激情综合五月天| 色操b| 色情五月综合婷婷| 欧美天堂久久| 五月婷婷草| 天天综合网~91| anquye伊人| 97在线/亚洲| 91精品视频男人的天堂| 大香蕉院线| 99久re热视频精品98| 99精品久久久久| 天天舔日日肏夜夜爽| 性爱综合网| 久久婷婷综合网| 五月开心网| 9l视频自拍九色9l黑人| 五月婷婷婷自由综合| 五月天婷婷色| 成人va在线观看视频| 99A级片| 欧美性爱中文字幕| 五月婷婷色五月| 精品九九久久| 99热日韩| www.色情五月天.com| 五月涩涩网| 9精品久久999| 九九视频热| 国产SUV精品一区二区883| 五月婷六月综合在线观看| 国产成人AV在线| 久久99激情| 色综合色综合色综合| 大香蕉丁香婷婷| 天天色综合综合| 大香蕉在线99热| 久热这里只有精品视频6| WW婷婷五月天com| 丁香五月激情六月综合| 人妻无码视频网| 久久五月婷综合网| 91精品刘玥| 影音先锋人妻出差| 在线五月婷| 久久人妻www| 五月丁香久久丝袜啪啪| 欧美日韩成人在线网| 97五月天婷婷综合激情网| 五月天伊人网| 91热久久| 日本天天色| 午夜九九电影| 五月婷婷中文字幕AV| 草榴视频网| 日本一级特黄大片AAAAA级| 99riAv1国产在线观看| 91丨九色丨熟女|新版| 婷婷久久网| 99热99色| WWW.夜夜| 伊人大香蕉在线视频| 殴美激情综合网| 久久xxxx| 视频这里只有精品16| 99热10在线高清播放| 噜噜噜噜综合在线| 国产白丝在线一区| 久操热| 五月婷婷开心六月激情小说| 婷婷终合色图| 国产激情综合五月久久| VA国产在线综合网站| 日韩人妻AV在线| 五月天婷婷在线视频| 日本三级中文字幕| 日韩另类| 国产成人99久久亚洲综合精品| 色域五月婷婷丁香| 色色五月婷婷| 亚洲第一第二网站| 在线婷婷| 丁香婷婷久久五月天| 天天肏高清在线| 秋霞黄色一级久久| 欧美日韩国产一二区| 久综合色| 狠色狠色综合久久| 黄色成人网站在线播放| 亚洲妇女熟BBW| 色播五月天激情| 天天综合色丁香| 色色图五月天| 夜夜操狠狠操| 97操碰在线视频| 婷婷激情丁香五月天综合| 婷婷色狠狠| 性爱视频99| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 激情久久五月天| WWW色五月| 丁香五月婷婷AV| 午夜精品777| 色欲九区| 丁香花五月天社区| 婷婷五月天综合网| 播播网色播播| 色宗合久久五月婷婷| 色婷五月| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 开心五月激情| 99WWW免费视频| 九九99九九精品免费 | 亚洲综合婷婷六月丁香五月| 99er6免费视频热播| 丁香五月激情五月| 亚洲亚洲人成综合网络| 九九综合伊人| 九九热99热| 五月激情另类| 丁香五月花婷婷开心| 亚洲超级碰| 热久久999| 被男人添B超爽视频| 丁香九月综合| 六月丁香社区| 亚洲AV无码久久精品色欲| 婷婷五月天免费小说| 97操碰在线视频| 深夜婷婷 丁香| 99热综合| 思思热视频在线观看| 色99色| 操一操插一插| 久久五月天激情婷婷| 五月婷在线影院| sewuyuetingtingiii| 国产乱子轮XXX农村| 91精品久久久久久77777| www.91婷婷| 婷婷五月av| 丁香五月 六月婷婷首页| 中文字幕+乱码+中文字幕在线观看| 外国碰视频网站97| 玖玖精品婷婷| WwW色婷婷| av在线播放网站| 亚洲男人的天堂婷婷色五月| 狠狠 婷婷| 天天爽天天弄| 六月五月丁香五月欧美| 婷婷九九| 国产精典视频在线观看| 色婷婷A| 六月婷婷综合久久| 色婷婷色| 激情文学第四色婷婷丁香五月| 婷婷丁香大香蕉| 天天日日| 亚洲视频另类| 五月婷婷www| 激情婷婷综合网| OUMEIRIHANCHENGREN| 亚洲乱码日产精品BD| 五月开心播播网| 久久综合99综合| 亚洲成人AV电影在线| 99久久喉9| 182tv992tv人之初午夜免费观看| 色五月婷婷在线观看第一页舔| 97香蕉碰碰人妻国产欧美| 婷婷五月在线视频| 午夜天堂一区人妻| 五月天激情美女久久| av不卡网站| 91久久人人操| 91无码高清| 天堂综合久久| 天天操无码| 97超碰综合| 丁香五月婷婷婷婷欧美综合| 99热这里只有精品2016| 久久久久久五月天| 五月婷婷视频| 欧美色婷婷| 亚洲精品V天堂中文字幕| 香蕉久久av一区二区三区| 亚洲色色色| 丁香婷婷五月色综合| 壅壅儕家a| 日本WWW九九九| 九九色中文| 丁香五月另类小说在线阅读| 丁香六月激情蜜桃| 丁香五月最新地址| 亚洲天天操| av网址在线播放| av操逼网| 午夜成人综合| 婷婷色激情网| 色欲日日躁| 丁香五月婷婷视频| 久久97| 中文字幕在线免费看线人| 婷婷综合干| 欧美三级欧美一级| 亚洲色五月天在线| 5月丁香啪啪啪| 亚洲操b| 99热热热天天人人人超超碰| 大伊香蕉玖玖爱| 国产五月丁香在线| 久久婷婷五月免费视频| 操逼巨乳91| 91婷婷| 色狠久| 色色色色综合网| 大色鬼综合| 激情伊人网| 色婷婷婷av| 99 这里只有精品| 欧美久久网| 欧美日韩中文国产一区发布| 五月天激情美女久久| 中文字幕在线不卡视频| 黄网在线播放| 五月婷婷网站| 9久国产精品| www.婷婷| 五月天AV大香蕉| 五月婷婷色| 亚洲欧美999| 色噜噜狠狠色综合网| 国产精品扒开腿做爽爽爽A片唱戏 青青草国产亚洲精品久久 | 丁香五月综合网亚洲综合欧美狠狠| 97欧美在线| 国产小精品| 亚洲综合99| 久播影院免费观看电视剧大全最新网| 丁香色婷婷| 婷婷五月天综合亚洲| 在线伦子99热| 丁香六月中文| 久久婷婷五月免费视频| 丁香五月久久| 亚洲视频码| 色五月 激情婷婷 综合五月天| 天天操夜夜操| 亚洲午夜国产成人电影VA国产欧…| 91操熟女| 日本爆乳片手机在线播放| 狠狠精品干练久久久无码中文字幕| 久操综合| 五月丁香六月婷婷色情| 色爽干| 开心婷婷中文字慕| 啪啪婷婷五月天激情| 在线视频九色97| 好吊操这里只有精品| 99热在线中文字幕| www.爱婷婷.com| 欧美婷| 黑人糟蹋人妻HD中文字幕| caop在线| 99热这里只有精品8| 免費观看aV在线网址| 亚洲俩性性爱图片久久第六页| 亚洲婷婷91丁香| 97五月婷婷| 99视频这里只有精品10| 91男女视频在线观看| 99爱免费在线观看| 99久久久99久久91熟女| 一区操| 少妇人妻综合色6699| 年轻的妺妺伦理HD中文| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷五月天综合AV| 婷婷丁香五月激情| 操逼综合激情网| 狠狠操.COM| 亚洲电影在线观看| 2025中文在线视频字幕免费观看| 啪啪啪大香蕉| 一逼色综合| 六月婷婷激情| 97五月天婷婷综合激情网| 丁香五月婷婷日本| 色吊丝中文字幕| 99爱视频在线| 99视频在线观看视频| 婷婷久久亚洲| 久久天堂婷婷五月| 五月婷婷五月天在线 | 五月天六月婷婷电影| 天天色中文字幕女优AV| 色婷婷裸体色性在线| 久在热99| 亚洲aV写真天天综合网久久| 五月天婷婷丁香人人操91| 日本操逼九九九九58日本操逼| 九久久九精品视频| 天天天天天日| 亚洲久艹| 久热只有精品| WWW99视频| 99狠狠| 九色视频91| 五月天婷婷无码| 丁香六月AV| 亚洲V国产V欧美V久久久久久| 婷婷深爱五月天在线| 超碰在线caop| 人人噜天天上| 九九偷拍网| 91狠狠综合久久久久久| 婷婷激情丁香五月天综合| 婷婷综合五月| 色性五月天| 丁香色五月AV在线| 伊人玖玖精品| 操人妻90p| 天久综合91综合首页| 色婷婷综合视频| 中文AV在线观看| 一本久道综合色婷婷五月| 五月天五月色婷婷综合| 国产偷人爽久久久久久老妇APP| 热99只有精品| 色婷婷情片| 久久xx| 久久久这里都是精品| 日逼AV影音先锋男人资源站| 这里只有精品视频一区| 99久久网站| 丁香五月色色| ..真实国产乱子伦对白在线_欧| 天天五月情| 99久操| 五月综合色| 狠狠色噜噜色狠狠狠综合久久成人波| 99热99美国在线观看| 五月天激情久久| 久久婷婷操| 婷婷操超碰| 女人高潮内射99精品| 久久网站观看免费欧洲国产| 综合久久综合五月天婷婷| 九九热婷婷| 天天干天天日日| 丁香熟女乱| 色五月五月婷婷| 激情深爱五月| 视频这里只有精品| 色综啪啪啪啪啪啪| 国产成人亚洲综合A∨婷婷| 9这里只有精品| 99热播放| 极品精品一区二区三区在线| 六月合五月婷| 色五月激情问网站| 日本欧美999久久久三级片| 狠狠综合| 婷婷五月天在线综合| 亭亭色色五月天| 久久欧洲综合网| 成人噜噜网| 最新AV在线观看| 天天插天天插| 色五月在线视频观看| 包操45分钟网站| 婷婷五月丁香色播| 大香蕉220| 五月天综合久久| 欧美另类五月激情| 色域五月婷婷丁香| 久热A片| 99久久99九九99九九九| 色色日本| 婷婷五月天激情亚洲小说| 97久久人人| 婷婷性爱综合| 九色综合网| 精品久久99码| 99精品在线观看视频| 婷婷综合激情五月综合| www.99在线| 色情婷| 欧美在线ee日韩| 精国产品一区二区三区A片| 超碰男人色| 人妻videos人妻高清| 久操操| 中文字幕婷婷在线| 国产操B| 五月婷婷综合激情| 五月天激情久久| 开心五月婷婷在线| 激情五月丁香综合蜜桃| 色婷婷狠狠18禁| 成人丁香五月婷| www.1024久久| 人人摸人人操人人爱| 五月丁香六月天| 操99| www99在线观看视频| 99精品综合| 这里只有精品免费视频在线观看| 久热 91| 日本九九视频| 伊人影院久久网| 婷婷五月天最新网址| 久久久天堂国产精品女人| 五月综合激情婷婷六月色窝| www.超碰| 91精品久久久久久久| 丁香五月区| 性爱久久| 午夜丁香综合婷婷| 五月丁香婷婷AV| 五月丁香六月激情在线| 婷婷色爱| 99综合激情久久精品久久| www.俺去也com| 五月丁香啪啪啪啪| 九九热视频免费观看| 五月天堂婷婷| 五月丁香婷中文| 思思热精品免费视频| 99色啊| 婷婷丁香五月视频| 丁香六月婷婷开心| 国产日批视频| 婷婷五月丁香五月丁香| 精品九九在线观看| 美女五月天婷婷| 丁香婷婷五月天激情四射| 综合色五月| 九九碰九九爱97超| 丁香五月婷婷六月婷婷| 亚洲激情四射| 五月天·www·com| 婷婷五月天激情综合| 天天爽天天爽夜夜爽| 99爱免费在线视频| 中文不卡一二区| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 99伊人性爱在线影院| 99热综合网| 青草五月天| 久久九九综合| 国产精品第一国产精品| 久草婷婷在线| BlACKEDRAW视频一区二区| 先锋男人91资源| 国产资源在线视频| 超碰久热| 婷婷五月天伊人在线| 99热大片| 天天综合亚洲| 五月天激情婷婷| 91操碰| 色播五月丁香| 67194中文在线| 99热在线看| 色婷五月| 激情五月激情综合网一级丸片| 婷婷五月色网| 五月天四色房丁香亭亭| 久久婷色| 中文字幕网伦射乱中文| 风流少妇A片一区二区蜜桃| 国产操B| 日本色色网站| 99热99在线| 日日夜夜爽爽| 97色热| 综合久久婷婷| 婷婷五月色花丁香社区| 国产精品操| 千人斩操逼| 狠狠操狠狠做| 91超碰人人操| 熟女少妇内射日韩亚洲| 九月丁香八月婷婷久久综合久97| 日本久久综合| 久久五月天合网| 久热网站| 五月天六月色| 一级黄色影片| 久久激情婷婷| 综合五月丁香97| 婷婷五月天影院| 五月丁香亭亭A片| 91九色熟女| 西瓜美女a片| 97热在线精品| 午夜精品久久久久久久爽| 日韩AV一区二区三区| 蜜臀av粉嫩av懂色av| 丁香激情合作五月| 综合在线色婷婷| 少妇高潮呻吟A片免费看软件 | 五月激情网站| 99免费在线视频| 97色啪| 激情五月综合视频| 天天日人人| 亚洲AV综合网| 黄色片久久| 色综合色色| 色综合射婷婷| 狠狠狠狠狠干| 九九综合网色全集| 99.色| 91狠狠综合久久久久久| 九九精品婷| 99热这里只有精品21| 99热只有| 中文字幕1区2区。| 亚洲成人在线播放| 怡红院视频| 成人无码髙潮喷水A片| 亚洲成人另类| 中文字幕色色| 综合激情婷婷| 91综合国免费久入| 婷婷五月综合激情免费视频| 欧美性猛交 XXXX 乱大交| 婷婷五月天精品| 久久性爰视频这里只有精品| 96丁香六月婷婷蜜桃综合久久| 久久99精品日本| 丁香五月亚洲天堂| 少妇AB又爽又紧无码网站| 好看的国产精品| 激情五月综合婷婷| 香蕉婷婷五月| 五月激情综合激情五月| 任我肏| 亚洲成人无码网站| 这里只有精品视频一区| 国产真人做爰视频免费| 伦乱天堂| 丁香五月影视| 大香蕉啪啪啪啪啪啪| A久网| 熟妇人妻中文字幕无码老熟妇| 久久久久婷婷| 9九色首页| 色五月婷婷青娱乐| 国色天香伊人狠狠色| 亚洲中文字幕在线观看| www.激情五月天。com| 久草A片| 9999热在线免费观看| 久久婷婷五月| 99在线看视频| 99er久久| 欧州婷婷五月天综合| 天天操天天爽天天爱| 五月激情在线| 丁香五月婷婷啪| 色综合中文| 成人婷婷| 婷婷五月激情中文字幕| 人妻Av在线| 五月丁香婷婷综合视频| 色九九中文字幕| 丁香五月婷婷俺也要去| 婷婷香草网| 天天插天天干天天舔| 免费看欧美成人A片无码| 成人AV在线网站| 亚洲妇女熟BBW| 五月天中文字幕在线婷婷| 99国产精品久久久久久久久久久| 日本美女天天日天天爽| 日本婷婷五月天| 免費亭亭成人| 99热综合| 天天爽曰日爽| 99色视频| 婷婷黄色五月天在线视频| 精品香蕉99久久久久网站| 狠狠干总合| 午夜69成人做爰视频| 久久婷婷六月综合资源| 丁香网五月天| 夜夜爽天天日| 97色视频网| 超碰人人操| 亚洲超碰在线| 婷婷亚洲综合| 日韩按摩二区| 96精品国产综合久久久久久| 五月丁香啪啪综合| 久久综合伊人77777蜜臀| 五月丁香久人妻中文| 日木狠狠干| 99在线免费视频| 久久亚洲婷婷| 日韩 mm 不卡| 亚洲中文字幕网| 婷婷性爱影院| 99re久久| 婷婷五月天婷婷| 丁香五月天激情四射网络不好 | 色宗合久久五月婷婷| 丁香五月天社区婷婷| 激情婷婷六月天| 婷婷99狠狠躁天天躁| 激情婷婷五月天| 六月色国内综合| 婷婷.com| 深爱激情五月网| 91欧美| 国产69精品久久久久999小说| 亭亭五月色男人| 色婷婷先锋| 男女啪啪做爰高潮无遮挡| 五月婷婷偷| 丁香五月天日韩无码| 婷婷伊人综合中文字幕| 五月亭亭六月色| 亚洲成人电影在线免费观看| 九九热精品视频在线观看| 中文精品久久久久人妻不| 日本熟妇乱妇熟色A片蜜桃| 婷婷开心激情| 九色七七| 五月香婷婷| 婷婷五月天视频亚洲| 99综合在线| 伊大人久久| 激情五月色婷婷| www.操逼comm| 99久精品视频| 色优久久| 99人妻碰碰碰久久久久视| 色情五月丁香婷婷网| av操一操|