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

ARTICLE DETAIL

資訊詳情

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

SSH三層架構(gòu)實(shí)戰(zhàn):從XML配置到分層職責(zé)的深度解析

SSH三層架構(gòu)實(shí)戰(zhàn):從XML配置到分層職責(zé)的深度解析 簡介本資源是一份面向Java Web初學(xué)者與中級開發(fā)者的三層架構(gòu)系統(tǒng)性學(xué)習(xí)文檔聚焦企業(yè)級Web應(yīng)用的結(jié)構(gòu)設(shè)計(jì)與SSH框架整合實(shí)踐。文檔深入剖析表示層Struts實(shí)現(xiàn)MVC解耦、業(yè)務(wù)邏輯層Spring IoC/DI與AOP管理及數(shù)據(jù)訪問層Hibernate ORM映射的職責(zé)劃分與協(xié)同機(jī)制并通過SSH組合方案說明如何構(gòu)建高內(nèi)聚、低耦合、易維護(hù)的J2EE輕量級應(yīng)用。資源為1個(gè)102KB的Word文檔.doc內(nèi)容涵蓋框架原理、組件交互圖示、配置要點(diǎn)及實(shí)際項(xiàng)目集成案例結(jié)構(gòu)清晰、術(shù)語規(guī)范適合作為課堂補(bǔ)充材料或自學(xué)筆記。目前已有2376人學(xué)習(xí)下載讀者可直接獲取完整架構(gòu)設(shè)計(jì)思路、SSH各層核心配置范例、Spring管理Struts Action的實(shí)操說明以及MVC分層落地的關(guān)鍵注意事項(xiàng)。1. 為什么今天還要講 SSH 三層架構(gòu)不是懷舊是看清分層本質(zhì)的“照妖鏡”你可能已經(jīng)用 Spring Boot 寫過三個(gè) REST 接口、用 MyBatis Plus 自動(dòng)生成了十張表的 CRUD甚至在簡歷里寫過“熟悉微服務(wù)架構(gòu)”。但當(dāng)導(dǎo)師問“你寫的那個(gè)用戶管理模塊Controller 里調(diào) Service 的那一行背后到底發(fā)生了幾次對象創(chuàng)建、事務(wù)邊界在哪、異常怎么穿透、SQL 是誰拼的”——如果答得含糊說明你還沒真正踩過三層架構(gòu)的“地基”。這不是復(fù)古情懷。SSHSpring 2.5 Struts 2.0 Hibernate 3.2這套組合恰恰是 Java Web 分層思想最“裸露”、最“可拆解”的標(biāo)本。它沒有 Spring Boot 的自動(dòng)裝配黑匣子沒有內(nèi)嵌 Tomcat 的封裝幻覺所有依賴注入、請求流轉(zhuǎn)、SQL 映射、事務(wù)開啟都明明白白寫在 XML 里、跑在你眼皮底下。我?guī)н^三屆畢設(shè)凡是把 SSH 三層跑通、改透、調(diào)明白的同學(xué)后續(xù)學(xué) Spring Cloud 或重構(gòu)老系統(tǒng)時(shí)debug 效率高出一倍不止——因?yàn)樗麄冊?Struts 的 ActionServlet 里看見過請求如何被攔截在 Spring 的 applicationContext.xml 里親手配過事務(wù)傳播行為在 Hibernate 的 .hbm.xml 里逐字段核對過 lazyfalse 的副作用。這份方案就是為那些需要交一份能講清每一層職責(zé)、每一步流轉(zhuǎn)、每一個(gè)配置項(xiàng)作用的畢設(shè)/課設(shè)同學(xué)準(zhǔn)備的。它不教你“怎么快速生成代碼”而是帶你親手把一個(gè)用戶管理模塊從數(shù)據(jù)庫建表開始一層一層搭起來DAO 怎么封裝 JDBC 模板、Service 怎么被 Spring 容器托管、Action 怎么拿到 Service 實(shí)例、JSP 怎么通過 Struts 標(biāo)簽庫安全取值。最終交付的不是 ZIP 包而是一套可答辯、可演示、可被追問到源碼級的完整結(jié)構(gòu)認(rèn)知。如果你正卡在“知道概念但不會落地”“能跑但說不清為什么這么配”那接下來這五章就是你的通關(guān)地圖。2. 總體架構(gòu)設(shè)計(jì)四層職責(zé)劃分與 SSH 各框架的精準(zhǔn)卡位SSH 組合常被簡稱為“三層”但實(shí)際落地時(shí)必須明確劃出四層表示層View、控制層Controller、業(yè)務(wù)邏輯層Service、數(shù)據(jù)持久層DAO。之所以強(qiáng)調(diào)“四層”是因?yàn)?Struts 的 Action 本質(zhì)是控制器它不處理業(yè)務(wù)也不操作數(shù)據(jù)只做請求分發(fā)與視圖跳轉(zhuǎn)——這個(gè)角色必須獨(dú)立出來否則 Service 層會不自覺地承擔(dān)流程控制破壞分層純粹性。下面這張職責(zé)劃分表是我?guī)掣咝Un程設(shè)計(jì)時(shí)反復(fù)打磨的交付標(biāo)準(zhǔn)學(xué)生按此檢查答辯通過率提升 40%層級職責(zé)定位關(guān)鍵技術(shù)載體禁止行為典型文件位置表示層View展示數(shù)據(jù)、接收用戶輸入純展示邏輯JSP Struts TagLibs:textfield、s:iterator寫 Java 腳本% %、調(diào)用 Service、訪問 request.getAttribute() 以外的對象/WebContent/pages/user/list.jsp控制層Controller接收 HTTP 請求、調(diào)用 Service、決定跳轉(zhuǎn)路徑Struts Action 類繼承ActionSupport處理業(yè)務(wù)邏輯、直接操作數(shù)據(jù)庫、手動(dòng) new Service 實(shí)例com.simon.oa.user.controller.UserAction.java業(yè)務(wù)邏輯層Service封裝核心業(yè)務(wù)規(guī)則、協(xié)調(diào)多個(gè) DAO、管理事務(wù)邊界Spring 管理的 Service 接口及其實(shí)現(xiàn)類UserService/UserServiceImpl訪問 HttpServletRequest、構(gòu)造 JSON 響應(yīng)、寫 JSP 路徑字符串com.simon.oa.user.service.UserService.java數(shù)據(jù)持久層DAO封裝數(shù)據(jù)庫 CRUD 操作、屏蔽 JDBC 細(xì)節(jié)Hibernate DAO 實(shí)現(xiàn)類繼承HibernateDaoSupport手寫 SQL 字符串、手動(dòng)管理 Session、在 DAO 中開啟事務(wù)com.simon.oa.user.dao.UserDao.java提示很多同學(xué)混淆“控制層”和“業(yè)務(wù)層”典型表現(xiàn)是把用戶登錄校驗(yàn)邏輯寫在 Action 的execute()方法里。這是致命錯(cuò)誤——Action 只負(fù)責(zé)“收到用戶名密碼 → 調(diào) UserService.login() → 根據(jù)返回值跳轉(zhuǎn) success 或 input”。校驗(yàn)規(guī)則、密碼加密、失敗次數(shù)統(tǒng)計(jì)全在 Service 層。這樣改下次需求變“登錄失敗三次鎖定賬號”你只需改UserServiceImpl.login()Action 一行不動(dòng)。2.1 表示層JSP Struts TagLib 的安全邊界實(shí)踐Struts 2 的標(biāo)簽庫不是語法糖而是強(qiáng)制隔離 View 和 Controller 的安全柵欄。比如用戶列表頁傳統(tǒng) JSP 可能這樣寫!-- ? 危險(xiǎn)腳本混入破壞分層 -- % ListUser users (ListUser) request.getAttribute(userList); for(User u : users) { % tr td% u.getUsername() %/td td% u.getEmail() %/td /tr % } %而 Struts 2 的正確寫法必須通過 ValueStack 傳遞數(shù)據(jù)并用標(biāo)簽取值!-- ? 正確純標(biāo)簽無腳本數(shù)據(jù)來自 Action 的 getter -- s:iterator valueuserList varuser tr tds:property value#user.username //td tds:property value#user.email //td td s:a hrefeditUser.action?id%{#user.id}編輯/s:a s:a hrefdeleteUser.action?id%{#user.id} onclickreturn confirm(確定刪除)刪除/s:a /td /tr /s:iterator關(guān)鍵設(shè)計(jì)點(diǎn)說明s:iterator的valueuserList會自動(dòng)從 ValueStack 查找getUserList()方法Action 必須提供該 getter而非從 request 中硬取。s:property value#user.username /中的#user表示迭代變量username是 User 對象的屬性名Struts 會自動(dòng)調(diào)用getUsername()。這比${user.username}更安全因?yàn)樗叩氖?OGNL 表達(dá)式引擎支持類型轉(zhuǎn)換、空值處理。s:a標(biāo)簽的href支持 OGNL 表達(dá)式%{#user.id}生成形如editUser.action?id123的 URL避免手拼字符串導(dǎo)致 XSS 漏洞。2.2 控制層Action 的生命周期與依賴注入實(shí)操Struts 2 的 Action 不是單例每次請求都會創(chuàng)建新實(shí)例。這意味著你不能在 Action 里用static緩存 Service 實(shí)例——這是新手高頻翻車點(diǎn)。正確做法是讓 Spring 管理 Action并通過 setter 注入 Service// com.simon.oa.user.controller.UserAction.java public class UserAction extends ActionSupport { private UserService userService; // 提供 setter供 Spring 注入 private ListUser userList; // 用于頁面顯示的屬性需提供 getter // Spring 通過此 setter 注入 userService 實(shí)例 public void setUserService(UserService userService) { this.userService userService; } // Struts 2 調(diào)用此方法處理請求 public String list() { try { this.userList userService.findAll(); // 直接調(diào)用業(yè)務(wù)層 return SUCCESS; } catch (Exception e) { addActionError(查詢用戶列表失敗 e.getMessage()); return ERROR; } } // 頁面需要訪問 userList必須提供 getter public ListUser getUserList() { return userList; } }配置要點(diǎn)struts.xml!-- struts.xml -- package nameuser extendsstruts-default namespace/user !-- 注意class 屬性指向 Spring 容器中的 bean 名不是類全限定名 -- action namelistUser classuserAction methodlist result namesuccess/pages/user/list.jsp/result result nameerror/pages/error.jsp/result /action /package為什么 classuserAction 而不是 com.simon.oa.user.controller.UserAction因?yàn)?Struts 2 配置了 Spring 插件struts2-spring-plugin.jar它會將struts.xml中的class值當(dāng)作 Spring Bean ID 去容器中查找。所以你必須在applicationContext.xml中聲明該 Action!-- applicationContext.xml -- bean iduserAction classcom.simon.oa.user.controller.UserAction scopeprototype property nameuserService refuserService / /bean注意scopeprototype是必須的因?yàn)?Struts 2 每次請求新建 ActionSpring 必須每次返回新實(shí)例。若用默認(rèn)singleton多用戶并發(fā)時(shí)會共享同一個(gè) Action 實(shí)例導(dǎo)致 userList 數(shù)據(jù)錯(cuò)亂。2.3 業(yè)務(wù)邏輯層Spring IoC 與事務(wù)管理的黃金搭檔Service 層是整個(gè)架構(gòu)的“中樞神經(jīng)”它必須滿足兩個(gè)硬性要求被 Spring 容器統(tǒng)一管理、事務(wù)邊界清晰可控。我們以用戶注冊為例展示 Service 接口、實(shí)現(xiàn)類及 Spring 配置的完整閉環(huán)// com.simon.oa.user.service.UserService.java 接口 public interface UserService { /** * 用戶注冊包含業(yè)務(wù)校驗(yàn) 數(shù)據(jù)庫插入 積分初始化 * param user 待注冊用戶對象 * return 注冊成功后的用戶ID */ int register(User user); } // com.simon.oa.user.service.impl.UserServiceImpl.java 實(shí)現(xiàn)類 public class UserServiceImpl implements UserService { private UserDao userDao; // 依賴 DAO由 Spring 注入 public void setUserDao(UserDao userDao) { this.userDao userDao; } Override Transactional // Spring AOP 事務(wù)注解關(guān)鍵 public int register(User user) { // 1. 業(yè)務(wù)校驗(yàn)用戶名是否已存在 if (userDao.findByUsername(user.getUsername()) ! null) { throw new RuntimeException(用戶名已存在); } // 2. 插入用戶 int userId userDao.add(user); // 3. 初始化積分假設(shè)積分表有外鍵關(guān)聯(lián) Point point new Point(); point.setUserId(userId); point.setPoints(100); pointDao.add(point); // pointDao 同樣由 Spring 注入 return userId; } }Spring 配置核心applicationContext.xml!-- 啟用注解事務(wù)管理 -- tx:annotation-driven transaction-managertransactionManager/ !-- 事務(wù)管理器基于 Hibernate SessionFactory -- bean idtransactionManager classorg.springframework.orm.hibernate3.HibernateTransactionManager property namesessionFactory refsessionFactory/ /bean !-- Service Bean 聲明 -- bean iduserService classcom.simon.oa.user.service.impl.UserServiceImpl property nameuserDao refuserDao/ property namepointDao refpointDao/ /bean事務(wù)傳播行為解讀Transactional默認(rèn)使用PROPAGATION_REQUIRED即“如果當(dāng)前存在事務(wù)則加入該事務(wù)如果不存在則新建一個(gè)事務(wù)”。這意味著register()方法內(nèi)所有 DAO 操作userDao.add()、pointDao.add()都在同一個(gè)數(shù)據(jù)庫事務(wù)中。一旦pointDao.add()拋出異常整個(gè)事務(wù)回滾userDao.add()的插入也會撤銷——這是保證數(shù)據(jù)一致性的基石。若此處漏配事務(wù)管理器或忘記加Transactional注冊成功但積分未加就是典型的“玄學(xué) bug”。2.4 數(shù)據(jù)持久層Hibernate DAO 的封裝藝術(shù)與性能陷阱DAO 層的目標(biāo)是“讓業(yè)務(wù)層感覺不到數(shù)據(jù)庫存在”。Hibernate 通過HibernateDaoSupport提供了開箱即用的模板方法但直接調(diào)用getHibernateTemplate().save()會掩蓋底層細(xì)節(jié)。我建議在 DAO 實(shí)現(xiàn)中顯式暴露 Session 操作便于后續(xù)排查// com.simon.oa.user.dao.UserDao.java public class UserDao extends HibernateDaoSupport { /** * 根據(jù)用戶名查詢用戶使用 HQL非 SQL * param username 用戶名 * return 用戶對象不存在返回 null */ public User findByUsername(String username) { // 使用 HibernateTemplate 的 find 方法執(zhí)行 HQL ListUser list getHibernateTemplate().find( from User u where u.username ?, username); return list.isEmpty() ? null : list.get(0); } /** * 保存用戶返回主鍵 ID * param user 待保存用戶 * return 主鍵 ID */ public int add(User user) { // save() 返回 Serializable需強(qiáng)轉(zhuǎn)為 Integer Serializable id getHibernateTemplate().save(user); return ((Integer) id).intValue(); } /** * 查詢所有用戶使用 loadAll避免 N1 查詢 * return 用戶列表 */ public ListUser findAll() { // loadAll 是 HibernateTemplate 提供的便捷方法 return getHibernateTemplate().loadAll(User.class); } }HQL vs SQL 的關(guān)鍵區(qū)別findByUsername中的from User u where u.username ?是HQLHibernate Query Language它操作的是 Java 類User和屬性username而非數(shù)據(jù)庫表和字段。Hibernate 會根據(jù).hbm.xml映射文件自動(dòng)翻譯成對應(yīng)數(shù)據(jù)庫的 SQL如 MySQL 的SELECT * FROM t_user WHERE username ?。這意味著更換數(shù)據(jù)庫Oracle → MySQL時(shí)DAO 代碼零修改只需改hibernate.cfg.xml中的方言配置。映射文件示例User.hbm.xml!-- src/com/simon/oa/user/model/User.hbm.xml -- class namecom.simon.oa.user.model.User tablet_user id nameid columnid typejava.lang.Integer generator classnative/ !-- 主鍵生成策略 -- /id property nameusername columnusername typejava.lang.String length50/ property nameemail columnemail typejava.lang.String length100/ property namecreateTime columncreate_time typejava.util.Date/ /class注意columncreate_time中的下劃線命名是數(shù)據(jù)庫習(xí)慣而namecreateTime是 Java 屬性駝峰命名。這種映射解耦正是 ORM 的核心價(jià)值。3. 模塊化目錄結(jié)構(gòu)從包命名到文件組織的工業(yè)級規(guī)范一個(gè)能通過企業(yè)級代碼審查的 SSH 項(xiàng)目目錄結(jié)構(gòu)本身就是設(shè)計(jì)文檔。我見過太多畢設(shè)因包名混亂被導(dǎo)師當(dāng)場質(zhì)疑“你這個(gè)com.xxx.dao.impl里放了 Service 類是故意混淆分層嗎” 下面這套目錄方案源自某公司 OA 系統(tǒng)的生產(chǎn)環(huán)境規(guī)范已驗(yàn)證可支撐 50 模塊、20 人并行開發(fā)src/ ├── com.simon.oa/ # 根包名反向域名 │ ├── common/ # 公共工具類日志、分頁、常量 │ └── user/ # 用戶模塊按業(yè)務(wù)域劃分 │ ├── controller/ # 控制層Struts Action │ │ └── UserAction.java │ ├── service/ # 業(yè)務(wù)接口層定義契約 │ │ ├── UserService.java │ │ └── impl/ # 業(yè)務(wù)實(shí)現(xiàn)層具體邏輯 │ │ └── UserServiceImpl.java │ ├── dao/ # 數(shù)據(jù)訪問接口層 │ │ ├── UserDao.java │ │ └── impl/ # 數(shù)據(jù)訪問實(shí)現(xiàn)層Hibernate 實(shí)現(xiàn) │ │ └── UserDaoImpl.java │ ├── model/ # 持久化實(shí)體POJO .hbm.xml │ │ ├── User.java │ │ └── User.hbm.xml │ └── vo/ # 視圖對象用于 JSP 展示可含格式化方法 │ └── UserVO.java ├── hibernate.cfg.xml # Hibernate 全局配置 ├── applicationContext.xml # Spring 核心配置Bean 事務(wù) └── struts.xml # Struts 動(dòng)作映射配置3.1 包命名的深層邏輯為什么controller不叫action初學(xué)者常把包命名為action、serviceimpl、daoimpl這暴露了對分層理解的淺薄。controller包名強(qiáng)調(diào)職責(zé)處理控制流而非技術(shù)實(shí)現(xiàn)Action 類只是 Struts 的一種控制器。同理service包下放接口impl是其子包體現(xiàn)“面向接口編程”原則——未來若用 Dubbo 替換本地 Service 調(diào)用只需新增service.rpc包實(shí)現(xiàn)同一接口上層 Action 無需修改。真實(shí)案例某畢設(shè)同學(xué)在service包下直接放UserServiceImpl.java答辯時(shí)被問“如果要把用戶服務(wù)拆成微服務(wù)你現(xiàn)在的代碼要改幾處” 他愣住。而按規(guī)范放在impl子包答案就是“只新增service.rpc包修改applicationContext.xml中userService的ref指向即可?!?.2 VO 與 Model 的嚴(yán)格分離避免“貧血模型”陷阱model包下的User.java是持久化對象PO它只包含數(shù)據(jù)庫字段對應(yīng)的屬性和 getter/setter是 Hibernate 映射的基石。而vo包下的UserVO.java是視圖對象VO它專為頁面展示設(shè)計(jì)可包含計(jì)算屬性、格式化方法// src/com/simon/oa/user/vo/UserVO.java public class UserVO { private String username; private String email; private String createTimeStr; // 格式化后的時(shí)間字符串非數(shù)據(jù)庫字段 // 構(gòu)造函數(shù)從 PO 轉(zhuǎn)換而來 public UserVO(User user) { this.username user.getUsername(); this.email user.getEmail(); // 格式化時(shí)間PO 中是 DateVO 中是字符串 this.createTimeStr new SimpleDateFormat(yyyy-MM-dd HH:mm).format(user.getCreateTime()); } // 頁面直接調(diào)用無需在 JSP 中寫格式化邏輯 public String getCreateTimeStr() { return createTimeStr; } }為什么不在 JSP 里用s:date標(biāo)簽格式化因?yàn)楦袷揭?guī)則屬于表現(xiàn)邏輯應(yīng)由 VO 封裝。若多個(gè)頁面都要顯示“yyyy-MM-dd HH:mm”你在每個(gè) JSP 里寫一遍s:date formatyyyy-MM-dd HH:mm .../維護(hù)成本高。而 VO 中統(tǒng)一處理Action 只需userList.stream().map(UserVO::new).collect(...)JSP 里s:property value#user.createTimeStr/一行搞定。3.3 配置文件的協(xié)同關(guān)系XML 之間的隱式契約SSH 三大配置文件不是孤立的它們通過Bean ID和類名約定形成強(qiáng)契約。例如struts.xml中action namelistUser classuserAction的userAction必須與applicationContext.xml中bean iduserAction ...的id完全一致applicationContext.xml中property nameuserService refuserService/的userService必須與bean iduserService ...的id一致User.hbm.xml中class namecom.simon.oa.user.model.User的name必須與UserDaoImpl中g(shù)etHibernateTemplate().loadAll(User.class)的User.class完全匹配。血淚經(jīng)驗(yàn)?zāi)惩瑢W(xué)User.hbm.xml里寫nameUser缺包名運(yùn)行時(shí)報(bào)ClassNotFoundException。他花 3 小時(shí)查 jar 包最后發(fā)現(xiàn)是映射文件少寫了com.simon.oa.user.model.。這種錯(cuò)誤無法編譯期發(fā)現(xiàn)只能靠規(guī)范檢查表規(guī)避。4. 常見問題排查五個(gè)讓 80% 新手當(dāng)場宕機(jī)的“靜默陷阱”SSH 架構(gòu)的調(diào)試難點(diǎn)在于錯(cuò)誤不報(bào)在你寫的代碼行而藏在 XML 配置、類加載順序、代理機(jī)制的縫隙里。以下是我在指導(dǎo)過程中學(xué)生提問頻率最高的五個(gè)問題按“現(xiàn)象 → 原因 → 解決”結(jié)構(gòu)整理每一條都來自真實(shí)翻車現(xiàn)場。4.1 現(xiàn)象Action 中 userService 為 null調(diào)用時(shí)報(bào) NullPointerException原因applicationContext.xml中未聲明userActionBean或id與struts.xml中class值不一致userActionBean 的scope錯(cuò)誤設(shè)為singletonStruts 2 要求 prototypeUserAction類中setUserService()方法名拼寫錯(cuò)誤如setUserservice()Spring 因找不到 setter 而跳過注入。解決檢查struts.xml的class值與applicationContext.xml的bean id是否完全一致區(qū)分大小寫確認(rèn)userActionBean 的scopeprototype在UserAction中添加System.out.println(userServiceuserService);到execute()開頭啟動(dòng)時(shí)觀察控制臺輸出若仍為 null在applicationContext.xml的userActionBean 中添加property nameuserService valuetest/若報(bào)NoSuchMethodException證明 setter 方法名錯(cuò)誤。4.2 現(xiàn)象Transactional注解無效數(shù)據(jù)庫操作不回滾原因applicationContext.xml中遺漏tx:annotation-driven transaction-managertransactionManager/transactionManagerBean 的class錯(cuò)誤如用了DataSourceTransactionManager而非HibernateTransactionManagerService 方法被本類其他方法調(diào)用如A.method1()調(diào)用A.method2()此時(shí) Spring 代理失效Transactional不生效AOP 代理只對外部調(diào)用生效。解決檢查applicationContext.xml是否包含事務(wù)驅(qū)動(dòng)配置確認(rèn)transactionManager的class為org.springframework.orm.hibernate3.HibernateTransactionManager若需本類調(diào)用改為this.getUserService().register(user)→ApplicationContextUtil.getBean(UserService.class).register(user)需自定義工具類獲取 Bean終極驗(yàn)證在register()方法中throw new RuntimeException(test rollback)觀察數(shù)據(jù)庫是否回滾。4.3 現(xiàn)象JSP 頁面顯示#user.username為空但后臺userList有數(shù)據(jù)原因UserAction中未提供getUserList()getter 方法Struts 2 通過反射調(diào)用 getter 獲取值userList屬性類型錯(cuò)誤如聲明為ArrayListUser而非ListUserOGNL 解析失敗struts.xml中result的路徑錯(cuò)誤如寫成/pages/user/list.jsp但實(shí)際文件在/WebContent/pages/user/list.jsp。解決確保UserAction有public ListUser getUserList()方法將userList聲明為private ListUser userList;接口類型非具體實(shí)現(xiàn)在瀏覽器地址欄直接訪問http://localhost:8080/yourapp/user/listUser.action確認(rèn)能進(jìn)入 Action在list.jsp頂部加s:debug/標(biāo)簽查看 ValueStack 中的數(shù)據(jù)結(jié)構(gòu)。4.4 現(xiàn)象Hibernate 報(bào)org.hibernate.MappingException: Unknown entity: User原因User.hbm.xml未放入src目錄或classes目錄導(dǎo)致 Hibernate 啟動(dòng)時(shí)找不到映射文件hibernate.cfg.xml中mapping resourcecom/simon/oa/user/model/User.hbm.xml/的路徑錯(cuò)誤如寫成User.hbm.xml而非帶包路徑的全名User.java類未被sessionFactory加載hibernate.cfg.xml中未配置mapping classcom.simon.oa.user.model.User/。解決確認(rèn)User.hbm.xml文件物理路徑為src/com/simon/oa/user/model/User.hbm.xml檢查hibernate.cfg.xml中mapping resource...的路徑是否與物理路徑完全一致包括斜杠方向在hibernate.cfg.xml中同時(shí)配置mapping resource...和mapping class...雙保險(xiǎn)啟動(dòng)時(shí)觀察控制臺日志搜索Mapping file關(guān)鍵字確認(rèn) Hibernate 是否成功加載該文件。4.5 現(xiàn)象Struts 2 報(bào)There is no Action mapped for namespace [/user] and action name [listUser]原因struts.xml中package namespace/user的namespace值與訪問 URL 的路徑不匹配如 URL 是/listUser.action但 namespace 是/user則需訪問/user/listUser.actionstruts.xml未被 Struts 2 加載web.xml中filter配置錯(cuò)誤或struts.xml不在WEB-INF/classes下struts.xml文件名錯(cuò)誤如寫成struts-config.xmlStruts 2 默認(rèn)只識別struts.xml。解決檢查web.xml中 Struts 2 Filter 的init-param是否為param-nameconfig/param-nameparam-valuestruts.xml/param-value確認(rèn)struts.xml物理位置為WEB-INF/classes/struts.xml訪問http://localhost:8080/yourapp/user/listUser.action帶 namespace在struts.xml頂部加constant namestruts.devMode valuetrue/啟用開發(fā)模式錯(cuò)誤信息更詳細(xì)。5. 畢設(shè)答辯驗(yàn)收指南從演示邏輯到答辯話術(shù)的實(shí)戰(zhàn)清單答辯不是復(fù)述 PPT而是用最小可行演示證明你真正掌控了三層架構(gòu)的脈絡(luò)。我?guī)н^的畢設(shè)中90% 的高分同學(xué)都遵循一個(gè)鐵律演示只聚焦一個(gè)端到端場景但把每一層的“開關(guān)”都擰開給你看。下面以“用戶注冊”為例給出一套可直接套用的答辯流程、話術(shù)及避坑點(diǎn)。5.1 演示設(shè)計(jì)用“單點(diǎn)爆破”代替“全面鋪開”不要說“我的系統(tǒng)有用戶管理、權(quán)限管理、日志管理”而要說“請看用戶注冊這個(gè)功能如何在三層架構(gòu)中被精確切分、協(xié)同執(zhí)行?!?演示步驟嚴(yán)格按請求流向前端觸發(fā)打開瀏覽器輸入http://localhost:8080/yourapp/user/register.jsp填寫用戶名、郵箱點(diǎn)擊“注冊”控制層捕獲在UserAction.register()方法第一行加斷點(diǎn)F6 進(jìn)入展示userService已被 Spring 注入業(yè)務(wù)層流轉(zhuǎn)F6 進(jìn)入U(xiǎn)serServiceImpl.register()停在if (userDao.findByUsername(...))說明業(yè)務(wù)校驗(yàn)在此持久層落庫F6 進(jìn)入U(xiǎn)serDaoImpl.findByUsername()展示 HQL 語句和getHibernateTemplate().find()調(diào)用事務(wù)驗(yàn)證在pointDao.add(point)后手動(dòng)拋異常刷新頁面證明用戶表和積分表數(shù)據(jù)均未插入。為什么只演示注冊因?yàn)樽院w前端交互View、請求分發(fā)Controller、業(yè)務(wù)規(guī)則Service、數(shù)據(jù)庫操作DAO、事務(wù)控制Transaction五大核心要素。一個(gè)功能講透勝過十個(gè)功能泛泛而談。導(dǎo)師追問時(shí)你隨時(shí)能切到任意一層的代碼這就是“掌控感”。5.2 答辯話術(shù)用“問題驅(qū)動(dòng)”替代“功能羅列”導(dǎo)師最常問“你這個(gè)設(shè)計(jì)有什么優(yōu)勢” 如果回答“分層清晰、易于維護(hù)”等于沒說。要用對比法直擊痛點(diǎn)問“為什么不用 Servlet 自己寫 MVC而用 Struts”答“Servlet 需手動(dòng)解析 request 參數(shù)、判斷請求類型、跳轉(zhuǎn)頁面代碼冗余。Struts 通過struts.xml集中配置Action 只關(guān)注業(yè)務(wù)比如listUser.action對應(yīng)UserAction.list()解耦了流程控制與業(yè)務(wù)邏輯。這是 MVC 的‘控制器’職責(zé)被框架接管的價(jià)值?!眴枴癝pring 的 IoC 有什么用”答“看這里指向applicationContext.xmluserAction依賴userServiceuserService依賴userDao全部由 Spring 在啟動(dòng)時(shí)自動(dòng)組裝。如果我要把userDao換成 MyBatis 實(shí)現(xiàn)只需改applicationContext.xml中userDao的class和refAction 和 Service 代碼零修改。這就是依賴注入帶來的可替換性?!眴枴癏ibernate 的 HQL 和原生 SQL 有什么區(qū)別”答“HQL 操作對象from UserSQL 操作表SELECT * FROM t_user。比如User.hbm.xml中tablet_usercolumncreate_timeHQLfrom User u where u.createTime ?會被 Hibernate 翻譯成SELECT * FROM t_user WHERE create_time ?。換 Oracle 時(shí)只需改hibernate.dialectHQL 不動(dòng)——這是 ORM 的數(shù)據(jù)庫無關(guān)性。”5.3 驗(yàn)收檢查表答辯前必須自測的 7 個(gè)硬性指標(biāo)把這份表格打印出來逐項(xiàng)打鉤。少一項(xiàng)答辯時(shí)就可能被卡住序號檢查項(xiàng)通過標(biāo)準(zhǔn)自測方法1分層隔離Action 中無new UserServiceImpl()Service 中無request對象全局搜索new、HttpServletRequest2依賴注入applicationContext.xml中所有ref的id在bean標(biāo)簽中均有定義用 IDE 的 “Find Usages” 功能檢查每個(gè)ref3事務(wù)生效Transactional方法拋異常后數(shù)據(jù)庫無臟數(shù)據(jù)在 Service 方法末尾throw new RuntimeException()查數(shù)據(jù)庫4HQL 正確UserDao中所有 HQL 語句能在hibernate.cfg.xml中找到對應(yīng).hbm.xml映射檢查 HQL 中的類名、屬性名與.hbm.xml一致5URL 可訪問struts.xml中每個(gè)action的name都能通過http://host:port/context/namespace/name.action訪問瀏覽器直接輸入 URL看是否進(jìn) Action 斷點(diǎn)6JSP 安全所有 JSP 頁面無% %腳本僅用s:xxx標(biāo)簽全局搜索%確認(rèn)結(jié)果為空7VO 封裝vo包下類有toString()或格式化方法model包下類只有 getter/setter對比兩個(gè)包的類確認(rèn)無業(yè)務(wù)邏輯混入 PO5.4 答辯心態(tài)把“不知道”轉(zhuǎn)化成“可追溯”遇到不會的問題千萬別編。工程師的尊嚴(yán)不在于“全知”而在于“可定位”。我的習(xí)慣是第一步坦誠說“這個(gè)點(diǎn)我當(dāng)前沒深入但我知道它在哪一層、涉及哪個(gè)配置”第二步立刻打開對應(yīng)文件邊指邊說“比如事務(wù)管理它在applicationContext.xml的transactionManagerBean 里配置如果要研究傳播行為我會查 Spring 的Propagation枚舉”第三步提出驗(yàn)證路徑“我可以現(xiàn)在加個(gè)斷點(diǎn)看事務(wù)代理是否生效”。這種回應(yīng)比胡謅一個(gè)答案更能贏得尊重。因?yàn)閷?dǎo)師要的不是百科全書而是你解決問題的方法論。從那以后我每次帶畢設(shè)都強(qiáng)制學(xué)生在答辯前三天用這套檢查表過一遍代碼再對著流程圖講三遍“用戶注冊怎么走完三層”。不是為了背稿而是讓肌肉記住路徑——當(dāng)導(dǎo)師問“DAO 怎么拿到 Session”你能不假思索說出getHibernateTemplate().getSessionFactory().getCurrentSession()那一刻你就真的懂了。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚州欧美色图| 怡红院视频在线| 极品色社| 欧美丝袜亚洲| 人人操,操人人| 69AV女优男人的天堂| 丝袜加勒比| 又大又长又粗又爽又黄| 九九玖玖精品| 日本 情色 1区2区3区| 亚洲中文字幕精品一区| 国产AV久久久蜜爱影集| 久久久久国产| 97天堂| 久操免费电影| 乱老女人一区二区视频| 蜜臀无码一区二区| 日日噜噜夜夜狠狠视频无| 男人亚洲91首页在线| 99精品九九九九九九| 人人妻人射| 在线视频一区二区传媒| 国产精品久久久久久久久久梁医生| 五月丁香婷婷综合| 欧美天天综合网版| 亚洲五月丁香花狠狠干一区二区三区| 天天综合91入口| 狼狼色丁香久久婷婷综合五月| 久久久久久久极品香蕉视频| 69视频入口| 四虎AV影视国产精品亚洲精品| 性夜影院爽黄A爽免费动漫| 最新欧美色网| 中文字幕后石码三区四区| 91国产精品在线看| 99久久无码| 大鸡吧尹人在线| 青青草国产欧美非洲黑人| 99国产人成精品| 久操免费观看| 啊啊啊啊啊啊啊国| 做爱A级亚欧| 老汉网| 国产自产一区视频在线| 999热日韩精品| 妺妺跟我一起洗澡没忍住| 污电影在线观看| 欧美人妻一区| 国产精品欧美在线观看| 北京专精特新企业招聘信息| 国产av强奸美女| 啊啊啊啊啊好舒服视频| 国产精品亚洲免费| 我要去看2个日本美女.com曹逼| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚洲丝袜色| 一级毛片电影免费看| 欧州激情视频在线一区二区| 五月香婷婷| 一区二区中文| 男女香蕉一区二区| 欧美超碰96| 人妻乱仑一区二区三区| 伊人加勒比| 在线黄色污污网站| 91狠| 99久久精品无码一区二区毛片免费 | 久9爱经典视频| 亚洲激情综合| 国内亚洲精彩视频在线| 一本色道人妻久久| 综合网少妇| 久久婷婷一区二| 99精品视频在线观看免费| 麻豆一区二区AV天美| 99中出在线| 丁香五六月啪啪| 欧美色亚洲色| 9精品在线| 久久女婷| 操逼www.| 亚洲天堂人妻熟妇视频| 97超碰欧美中文字幕| 91丝袜熟女| 人人天天欧洲| 天天做日日爱夜夜爽| 日本精品一级二级三级| 亚洲一区二区av| 亚洲91av| 男人的天堂不卡一区二区 | 蜜臀av网址| av操操不卡| 欧美日韩岛国大片在线观看| 欧美性爱1080p| 日本Suv精品一区二区| 亚洲污污网站| 搞中出视频在线观看| 校园春色 男人天堂| 国产精品亚洲免费| 免费看A片毛毛片在线播| 立川理惠被中出无码| 91痴汉| 啊啊啊啊啊啊啊啊啊啊在线观看| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 九九Av| 郑州宾馆老熟女露脸啪啪| 午夜性生活av免费在线看| 99精品无码| 欧美色图 人妻| 亚洲男人的天堂AV| 精品成人女人久久| 精品无码久久久久| 国产农村妇女毛片精品久久| 日韩欧美久久婷婷网站| 91色夜| 亚洲色图日韩丝袜制服一区二区五月在线| 任你干在线视频| 黄色不卡视频| 欧美日韩青操| 射丝袜大香蕉| 超碰一区二区| 99re6在线视频精品免费完整版安卓版| 在线黄色污污网站| www.av不卡中文字幕| 2017大香蕉国产精品久久| 亚洲 欧美 另类 综合 偷拍| 国模不卡一本二本三电影| 久久久久9久久久久| 欧美日韩丝袜 | 园内精品自拍视频在线播放| 国产激情视频在线观看| 久久五月婷| 91碰碰| 99热这里是精品| 日本91白丝| 天综合网| 欧美论理片| 吊色| 啊啊啊啊无码| 91在线视频国产网站| 欧美在线啊啊| 操操逼视频| 黑人白女精品一区| 免费伦费视频在线观看| 国产曰批免费观看久久久| 一本一道波多野毛片中文在线| 精品中文字幕第一页| 波多野42部无码喷潮在线观看| 亚洲伊人a线观看视频| 国产91啪| 人妻少妇久久久| 久久久久久性爱视频| 精品二999| 91无码人妻精品一区二区三区蜜桃 | 国产版a级片直播在线| 大香蕉婷婷| AND人妻系列| 91超碰人人| 澳门成人网站久国产日韩| 91伊人大香蕉| 亚洲国产日韩精品久久久| 97免费在线观看| 欧美v亚洲v综合v国产v妖精| 欧美刺激色黄片免费看| 白丝AV网站| 日本中文字幕熟妇| 亚洲情色 欧美| 国产亚洲色停停久久99精品91| 一牛影视成人片免费| 日本午夜久久电影| 一区二区精品更新提醒| 在线天堂资源亚洲| 亚洲AV无线| 麻豆天美国美国产| 亚洲图片欧美偷拍| 天天日B夜夜干B时时操B| 偷拍欧美激情| 精久久久| 少妇3P性爱自拍| 欧美美女自慰一区二区三区| 丝袜视频网国产90| 黄色片,com| 日本精品一区三区| 97色欧洲| 一级性爱aaaa| 欧美后入式| 操逼国产免费| 99热免费精品| 74成人在线| 天天干天天干天天| 激情综合 婷婷五月 红杏| 2018天天干在线视频| 东京热91| 智利AV在线网| 日韩亚洲精品一区二区| 国产成人亚洲精品自产在线| 99热日| 欧美极品美女aaaaaa级黄片| 五月天婷婷成人网| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 夜夜免费视频| 全球成人中文在线| 91成人社区| 日本性感人妻91| 婷婷中文字幕| 九九热av| 欧美日韩操逼嗦吊| 涩亚洲欧洲| 久久久亚洲Av| 91高跟美女在线播放| 国产色产精品在线观看| 久7色| 熟妇色99| 美女露胸露奶头| 国产蜜臀在线| 天天爱天天操| 国产免费黄色一级大片| 欧美aⅴ99久久黑人专区| 国产精品午夜AV完会免费| 男人的天堂2019AV| 99久久久久久亚洲精品不卡| 884t在线| 国产成人欧美一区二区三区的国产| 精品久久久无码| 国产精品午夜AV完会免费| 亚洲色图在线视频| 国产成人亚洲精品无码古代早漏男| 成人精品一区二区三区| 久久精品店| 亚洲欧美国产精品久久久久久久| 5月婷婷6月六月丁香| 中日韩久久久免费看| av中文在线| 福利视频香蕉免费一区二区在线| 1区2区3区中文字幕日韩| 伊人网免费视频| 99热亚洲天堂| 免费簧片在线观看| 青草精品视频一日本久久久久网站| 99热免费| 欧美性爱精品七区| 东京热91| 激情欧美日韩女同久久| 影音先锋国产精品| 91亚州| 久久久78| 久久熟女久| 玖玖人人爱| 国产亚州高清国产拍精| 日韩黄色片子| 东北熟女91| 玖玖爱综合网| 午夜毛片高清免费不卡| 丁香五月婷婷基地| 日韩在线观看字幕精品| 性爱Av免费| 久久精品国产Aⅴ| 丝袜视频网国产90| 欧美72网页| 色妺妺在线视频| 99熟女| 婷婷色中文字幕| 免费av大片| 女同女同恋久久级三级| 日日摸夜夜夜夜爽| 国产操逼逼网| 中国女人内射6XXXXX| 青青草国产欧美非洲黑人| 久久久偷拍| 欧美亚洲天天| 丝袜 中出 制服 人妻 美腿 中文字幕| 九九自拍伦理| 国产97在线播放| 嗯嗯啊啊啊好爽| 久久精品熟妇丰满人妻99| 亚洲宗合网| 黄色免费网页无码| 可以免费看黄片的视频| 久久精品国产亚洲AV嘿嘿| 综合欧美激情网| 亚洲无码久久久久久久| 日韩中文字幕二区| 亚洲欧美激情另类色图| 亚洲免费看片| 少妇一区二区三区在线观看| 青青草日韩免费观看高清在线| 男人的天堂三级| 撸无码不卡免费视频| 欧美色图第一页| 超清福利精品视频在线| 大香蕉伊然在亚洲91| 97亚洲自在精品在线观看| 9色国产精品一区粉嫩| 亚洲系列第一页| 9九九九九视频在线观看| 国产精品午夜成人福利| 午夜啊啊| 大黄片做爱的大的| 激情综合网激情五月天| 欧美一区二区成人一卡| 97爱综合| 日本天天操| 97久久久精品| 91国产操逼视频| 日本色婷婷| 日日妻色网| 国产精品国产亚洲区艳妇糸列| 国产欧美日韩精品中文| 国产精品天美传媒| 91高清日| 欧美日韩性爱电影在线| 91超级碰| 三及片网站| 囯产乱伦一区二区三女 | 五月婷婷无码| 91综合天天看| 欧美亚洲日本激情在线| 一级黄碟| 国产三区免费在线观看| 久久久性爱视频| 秋霞Av理论一级在线| 欧美拳交在线播放| 女欧美一区二三区| 国产精品天美传媒| 亚洲天天更新| 欧美性暴力猛交XXXX | 九九九精品色乱九九九| 欧亚性爱视频免费看| 久久久噜噜噜久久人妻| 无码精品一区二区三区潘金莲| 亚洲精品国产av天美传媒| 综合av社区| 岛国小电影| 欧美一级久久久久久久大片动画 | 97在线观看视频| 色丁香久久| 人人操人人色网| 欧美97日韩| 中文字幕一区二区免费在线| 成人精品一区二区三区| 成人午夜高潮av猛片| 欧美色图亚洲色图成人在在线| 精精品人妻一区二区三区| 五月婷婷爱六月丁香色| 九九热九九| 狠色婷婷久久一区二区三区_| 亚洲日韩视频二区| 久久大香蕉97| 四虎免费看黄| 日本国产欧美高清在线| 国产h小视频在线观看免费| 亚洲诱惑| 超碰碰激情97+久| 天天日夜夜爽| 国产少妇肉丝在线观看| 国产福利精品最新在线| 操逼逼福利视频| 91精品无码久久久久久久| 欧美性暴力| 久久欧美激情| 色欲久久99国产精品久久久久久| 中文字幕在线第二页| 亚洲第91页 | 免费αV在线视频| 91久久| 五月天亚洲色图| 欧综合网| 91精品国产91综合久久蜜臀| 插入逼91| 中文字幕第9页萱萱影音先锋| 乱欲视频| 国产v片在线免费观看| 自拍偷拍 日韩欧美| 伊人操你| 韩国一级做A片免费的| 久久香蕉综合一本到3atv| 国产一区二区三区导航| 国内精品伊人久久久久影院会| 三级三久久线久久99久目本WW| 国产懂色精品国产av| 亚洲熟女中文字幕在线| 五月香婷婷| 91在线免费观看处女| 青青国产在线拍揄自揄拍| 人人爽人人精品乱人伦AV| 亚洲91综合| 丝袜综合网| 久久久久亚洲av综合波多野制衣| 天天视频综合在线观看视频| 亚洲精品视频二区| 精品久久9| 亚洲美女av无码| 黄色一区二区秘书性感| 操逼日韩无码 | 色色综合网站| 神马久久久久久久久久久久| 超碰导航97| 国产在线综合福利网站| 操人无码| 无码久| 高清孕妇孕交 交| 大香蕉强奸乱伦| 日韩伦理久 久久 清纯| 中文字幕精品三级久久久| 粉嫩av在线| 婷色五月| 天堂亚洲精品久久老牛| 日韩性爱小视频| 天天肏夜夜肏| 人妻少妇无码 | 四虎免费看黄| 热思思免费视频| 青青草密桃在线播放| 美性中文综合网| 午夜国产成人精品视频 | 日韩熟女精一区二区三区不卡| 婷婷中文网| 久久99精品国产| 黄色香蕉视频网站一区| 日韩精品人妻系列无码天堂| 国产成人亚洲精品无码最新在线| 欧洲综合视频| A级片一区| 欧美第38页| 天天综合官网| AV老汉| 亚洲欧美在线观看免费| 婷婷探花久久精品一区| 夜夜爽77777| 超碰精品国产无码| 91精品免费| 91精品丝袜在线观看| 不卡视频一区蜜桃视频| 国产一级久久久| 岛国在线免费视频| 人妻蜜桃臀| 四虎永久在线精品免费网址| 免费观看国产小粉嫩喷水精品午| 操死我了啊啊啊| 久久綜合很很很| 色就色综合| 婷婷综合激情| 国产美女在线精品免费看| 日日夜夜青青草母狗| 全球成人中文在线| 偷拍偷窥与盗摄视频专区| 日欧毛片久久| 婷婷五月天基地| 免费精品中文字幕| 999综合网| 天天干夜夜肏| 欧美色图中文字幕| 婷婷五月天补不补| 亚洲欧美国产日本一区二区三区| 极品综合| 亚洲人成网站7777| 人妻丝袜一区二区三区在线| 国产AB视频| 又黄又粗又硬又长又大| 国产玖玖| 久久久成人国产精品无码| 26uuu久久| 久久在肏| 日日骚网站| 伊人午夜福利视频| 97超碰巨乳| 亚洲国产一区二区三区在线 | 激情婷婷五月天| 精品成人亚洲午夜电影| yw尤物av无码点击进入麻豆| 色香综合| 97爱综合| 国产400孕妇孕交群| 一区二区不卡免费| 九草九九九| 超碰69| 狠插 制服 自拍| WWW4虎| 日韩性色b| 天美传媒av 在线| 屌逼传媒| 超碰爽人妻熟女Av| 久操视频免费在线观看| 久9久| 色狠狠综合噜一二三区| 综精品久久久aaaa| 人人摸人人干| 色大香蕉97N| 蜜桃色院一区久久| 超碰久久精品| 久久激情视频| 欧美色性情| 久久久夜夜夜| 91精品国产91久久青草| 少妇厨房愉情理伦片bd在线观看 | 操淫穴亚洲五月丁香| 精品无码人妻一区二区免费蜜桃| 久久一二三四五六七八九区区| 国精综合一二三区影视| 色偷偷男人的天堂麻豆| 97日韩欧美亚洲| 不卡二三区人妻少妇| 综合久久2017| 国产精品午夜福利亚洲综合网| 国产成人拍国产亚洲精品| 亚瑟国产精品久久无码| a级成人毛片免费视频高清| 国产九九九九九九九九| 久久久久人妻| 91艹逼精品| 久久是精品| 人人妻人人澡人人爽久久av| 日本精品一级二级三级| 久久五月天婷婷丁香中文字幕| 18禁的网站在线| 久久久com| 超AV色女| 加勒比综合a∨| 神马麻豆福利院| 亚洲无码国产探花在线观看| 婷婷视频在线免费观看| 又大又白奶子| 欧美熟妇亚洲版| 婷婷20月天青娱乐| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲最新Av| 无码精品久久久天天影视| 免费看日产一区二区三区| 操狠狠| 日欧毛片久久| 男人精品区| 欧美日韩不卡a片| 色一情一乱一乱一区91Av| 激情图片亚洲色图| 天天综合~91| 亚洲无线码欧洲精品区别| 精品性爱一区二区| 中美日韩毛片| 久久久精品,3| 亚欧成人综合影院| 精品久久在线区一区| 日韩国产九九精品一区二区三区毛片| 久久精品国产亚洲AV先锋| www.91理论| 欧洲无码一区二区| 天天色综合影视网| 国产精品美女在线一区| 91精品电影18| 五月天婷婷社区| 国产精品久久久无码AV网站| 青青草视频爽一爽| 欧美色图91| 亚洲砖码砖专无区2023| 人妻人人澡人人爽人人| 日少妇视频| 国内自拍 日韩激情 99| 亚洲精品国产av天美传媒| 精品午夜福利| 五月婷婷六月丁香| 97超碰影音| 日韩卡一卡二卡三在线| 蜜臀人妻少妇久久在线观看| 美女久久久久久久久久久| 韩国一级做A片免费的| 亚洲限制级| 国产精品白丝在线播放 | 福利操逼| 国产十八禁视频| 天天日天天操天天射河南省| 精品视频久久久久九九九九9999| 天天综合网视频91| 爱媛媛久久国产福利| 欧美 熟女 日韩| 欧美性爱18观看| 亚洲丝袜天堂| 人人操 欧美| 人妻在线臀日韩| 97精| 91女人的网站| 女性喷水高潮在线观看| 精品福利视频| 影音先锋每日最新资源在线观看| 久久久久日本视| 污色区网站| 国产美脚女优尤物在线观看| 久久双插| 1二区9| 免费一级特黄特色大片在线观看看| 双插在线| 国内毛片婷婷六月色| 亚洲和欧美裸体美女双飞视频| 欧美伊人久久综合网| 怡春苑东京热| 在线观看色视频| 熟女久久| 伊人网av| 欧美精品精品一区二区| 中文在线久久字幕| 亚洲五码一区二区三区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 粉嫩国产精品久久久| 操人人| 中文一区二区| 激情99| 人妻色偷色噜| 亚洲熟女乱综合一区二区三区| 日本色色的视频| 99re黄 | www.婷婷五月天| 超碰91在线| 免费久久9999| 国产免费一区在线观看| 亚洲精品99999| 成人A片男人的天堂| 久久久亚洲欧美综合| 农村少妇久久久久久久| 九九九网页| 美女午夜福利免费视频| 亚洲天堂另类| 粉嫩国产精品久久久| 秋霞蝌科网日本一区| 久久女人| 青青草久草AV| 老鸭窝亚洲毛片| 淫荡少妇免费| 亚洲视频精选| 97精品久久久久中文字幕| 可以看的av| 欧亚性爱在线视频| www欧美91| 97色色,97综合| 92福利社视频| 亚洲最大成人a毛毛片| 天天日夜干| 亚洲网污污污污| 日韩国语字幕| 亚洲熟女中文字幕在线| 思思视频免费看网站| 国产91丝袜 在线播放| 高跟伊人julia ann| 亚洲激情网一二三四区| 色哟哟511老熟女| 欧美一区二区男人天堂| 97 国产精品| 超碰99热中文字幕| 日韩人妻少妇中文字幕| 免费看欧美美女黄色大片| 蜜乳AV免费观看| 青草一区二区| 亚洲天堂少妇| 在线亚洲丝袜视频网站| 旡码电影特区| 天天干一干| 欧美熟女操屄| 操逼国产免费| 激情五月综合开心五月| 91狠狠综合网| 青青青在线高清视频在线一二三四区| 岛国不卡超碰护士AV在线播放| 日日干日日操五月天伦理视频| 丁香五月天啪啪| 国产呦精品一区二区三区下载| 一区二区三区黄色片a| 亚洲啪啪综合?v一区综合精品区| 亚洲久9| 怡红院久久老司机| 久啪视频| av天堂加勒比| nuu12国产麻豆精品| 麻豆人妻偷人精品无码视频| 中国熟女网站| 中文在线久久字幕| 久久深夜无码| 久久久久9999妇女| 国产成自自拍在线观看| 日韩一级二级在线| 香一区二区三区| 精品人妻一区二区三区-国产| 亚洲欧美激情另类色图| 五月婷婷综合在线| 操91| 午夜精品一区二区三区三上悠亚| 天天干天天插| 午夜精品久久久久久久男人的天堂 | 天天综合官网| 一起草在线视频| 神马九九| 激情熟女12P| 综合av社区| 午夜视频好爽啊| 欧美aa一级片| 亚州AV无码国产精品| 人、人、摸,人、人、草| 国产偷拍自拍在线视频| 久久老子无码午夜伦不卡| 亚洲精品美女久久久久久久久| 色色色色网站| 青青草丝袜在线视频| 郑州宾馆老熟女露脸啪啪| blacked精品一区国产| 美女被艹尤物视频| 91 刺激在线| 久九九九九九九热| 欧美乱妇狂野欧美在线视频| 天天日美女的B| 日日爽熟女| 啪啪综合网| 男人天堂黄片| 大香蕉手机视频| 男人的天堂2018.| 亚洲精品一卡二卡三卡福利视频网站| 久久久久久久综合,国产| 超碰97伊人| 精品无码欧美三级| 探花熟女,姿勢到位,體驗感也到位| 男人的天堂一区三区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲 欧美 手机在线观看| 香蕉婷婷| 午夜啊啊啊| 97伊人超碰| 色综合av综合久久| 国产AV毛片| 久久女人一区二区三区| 人妻大相焦在线| 欧美日综合| 大香蕉免费3| 色狠狠综合| www.高清无码诱惑一区.com | 羞涩视频| 欧美麻豆成人同性GⅤ在线| 又大又白奶子| 污电影在线观看| 男插女青青影院| 国产热RE99久久6国产精品首 | · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 婷婷亚洲中文字幕在线| 久久人妻少妇| 亚洲最新Av| AV九九| 东京热熟女亚洲视频网站| v91av| 91人妻素女| 麻豆久久久久久久久丝袜| 99精品无码| 午夜AV人气不卡| 18一区二区三区| 精品久操| 老司机老司机午夜影院| 中美日韩毛片| 无码78| 欧美成va视频网站| 日本九九久久99| 久久久新亚洲AV| 91操人| 久久机热| ..日韩av毛片精品久久久| 国产日韩精品一区二区三区| 欲香欲色综合天天伊人| 欧美日本国产日韩激情视频| 欧美熟妇乱码在线一区| 亚洲色交| 婷婷久久五月| 黑人干亚洲| 国产传媒操逼视频| 亚洲色性情三级| 国产精品九九九| 天天日日夜夜| 大香蕉视频啪啪啪啪| 人人看人人摸人人色| 欲色啪| 亚洲精品第一| 久久草视频污视频| 26uuu偷拍亚洲欧洲综合| 亚91亚洲网| 欧美操人视频| 一区中文字幕二区日韩| 国产精品白领在线观看 | 麻豆国产免费影片| 97久久久久久久久久| 国产精品色片一区二区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 日本高清电影欧美色图| 蜜桃久久一区二区| 天天综合AV| 日本人妻最新在线中| 大香蕉伊人亚洲| 亚洲国产另类在线中文| 日韩影片中文字幕一区二区三区| 国产精品久久久吖| 亚洲情色一区三区| 伊人专区一区二区三区| 啊啊啊啊啊啊啊好爽不要| 伊人一区二区在线播放| 91网站18在线| 丰满人妻一区二区三区四区| 国产妇女精品视频青青草| 不卡一区二区日本视频| www.av不卡中文字幕| 激情接吻视频久久久久久| 国产诱惑| www.色操逼| 啊啊啊啊啊啊在线| 无码一区二区三区四区五区六区七区八区九区十区视频 | 啊啊啊啊啊啊好湿好爽视频| 亚洲国产91精品一区二区久久| 亚洲视频二区| 久久99网站| 在线观看中文字幕| 日韩情色AV| 亚洲黄网在哪免费看| 日本道人妻久久久在线不卡色视频| 99热综合| 乱抡国产91| 狠狠做深爱婷婷久久二区| 99久久久久| 一级一性爱免费视频| 加勒比海成人视频网| 亚洲欧美日韩综合在线尤物| 亚洲高清视频在线免费观看| 久久草视频污视频| 九九黄色网| 国产成久久综合片| 后入式五六区| 国产精品白虎| 亚洲一本大道中文字幕无码在线| 天天做天天爱| 囯产精品强| 欧美在线官网| 日本熟妇人妻中出视频| 91色综合| 久久久少妇诱惑精品视频| 欧美久久九九| 老司机射| 欧美精品精品一区二区| 色原狠狠天天天| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产91美女视频| 国产丝袜美腿美女麻豆| 操操啪| 欧美成人A天堂片在线观看| 2020中文字幕在线观看| 成人精品欧洲亚洲| 欧美九九爱| 国产又爽又黄| 国产精品免费日韩| 玖草在线视频| 日本一卡二区在线| 亚州综合色图| 九九九九九九九九九九九免费国产| 粉嫩绯色AV一区二区在线| 欧美gv在线观看| 91欧美色| 色综合 加勒比| 91久久久视| 啊啊啊啊啊在线观看网址| 91GD.COM| 操逼片中文| 亚洲国产精品9999在线观看| 日韩少妇无码| 怡春院久久| 91色综合色| 北条麻妃性愛视频| 欧美 亚洲 大香| 啊…啊…操我用力操我| 91粉嫩萝控精品福利网站_精品影音先锋国 | av天堂天堂av日韩| 国产主播福利| 亚洲欧美电影| 久久免费9| 日韩内| 美女十八禁| 亚洲一二三四区在线免费看视频| 2000亚洲男人天堂| 欧美亚洲国产自久久| 久久麻豆一区二区| 狠狠狠狠狠干| 五月丁香影院| 日本欧美成人片AAAA| 国产日韩欧美三级片| 黄片不用下载在线观看| 午夜久久无码1000合集| 亚洲系列第一页| 26uuu性物| 久草视频在线视频在线视频在线观看 | 啊啊在线| 怡春院久久| 天天综合网在线91| 精品久9| 97在线看| 国产肏逼网站| 久久日韩精品一区二区| 成人一道本免费视频| 亚洲欧美精品国产一区二区| 肏逼福利网站| 韩国手机不卡无码三级视频| 吖在线不卡一区二区国产剧情| 午夜.DJ高清在线观看免费7| 亚洲图片婷婷五月天| 日韩一性一交一A片俄罗斯| 日本成人电影资源网| 操逼操网| 五月丁香啪啪| 久久久久久夜夜夜夜夜| 美女淫穴| 精品久久艹| 色97欧美| 2020久久免费视频| 中文字幕人成乱码熟女香港| 性爱免费视频成人| 国产亚洲精品第一最新| 九九色综合| 7月婷婷综合| 中文字幕精品久久久久人妻红杏ⅰ| 嗯嗯嗯啊啊啊干死我吧| 日日骚av| 麻豆天美传媒毛片| 一区二区三区黄色片a| 国产精品午夜高潮呻吟久久av| av九九| 亚洲宗合电影| 国产又长又大又粗的视频| 色欲久久99国产精品久久久久久| 91美女视频| 中国zzijzzijzzwww精品| 国产精品青草综合久久| 奸色色 男人天堂 天天射| 久久久久久波多野吉衣高潮| 激情文学小说一区二区 | 青青青青青手机视频| av网站国产主播在线| 亚洲第2页| 天天综合网~69| 97一本大道亚洲一区| 亚洲色图A| 久热在线精品免费观看| 美女自卫慰黄网站免费| 亭亭丁香激情| 蜜桃AV天堂| 日韩精品资源专区二区| 亚洲最大网站av| 艾草av| 欧美精品系列| 天天躁日日躁成人字幕aⅴ| 国产AV高清AV无码| 色婷婷蜜臀av| 青青五月天| 天天干人人干天天日97| 人妻啊啊人妻啊啊| 国产精品久久久久久夜夜夜夜| 中文字幕制服诱惑| 亚洲一本色道中文无码aV天美| 国产suv精品一区二区四| 夜夜嗨免费视频| 日本黄色精品专区网站| 丁香六月婷婷久久综合| 丝袜狠狠草尤物 91| 国产精品白领在线观看| 大香蕉五月天| 色偷综合| 国产丝袜欧美在线视频| 久久久久久午夜男人的天堂| 97热视频在线观看| 日韩欧洲操屄视频| 色九九久九九| 岛国毛片手机在线观看| 一道本东京热加勒比一区二区三区| 日本ZZ高免费A级视频| 天天操天天射天天日| 欧美日韩人人精品| 欧洲亚洲人妻无码高清久久三区四区| 国产曰批免费观看久久久| 欧美亚男人的天堂| 九九九网站| 婷婷在线精品| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | www.久久制服糖| 日本 成 人 小说 电影 一区二区| 少妇蹲下买菜露大唇0| 四虎影视永久在线免费| 91精品人妻一区二区三区蜜桃臀| 欧洲精品一级二级精品综合视频综合 | 亚洲人妻在线精品| 五月天婷婷久久| 好湿好紧视频| 国产超碰| 一本色道久久综合亚洲二区三区| 2019天天干天天操| 午夜后入| 五月丁香拍拍激情综合三级| 亚洲欧美setu| 国产在线观看91精品一区| 中文字幕亚洲欧美在线不卡| av黄图片在线观看| 欧美专区第一页| 1769成人国产精品视频| 欧美日韩情色一区二区| 激情五月天中文字幕色| 熟女丰满人妻一区| 亚洲激情综合另类| 国产精品老熟女一区二区| 国产精品天堂| 日韩丝袜人妻AV| 精品欧美不卡在线播放| 欧美性,亚州色| 岛国片在线播放| 亚洲污污网站| 婷婷中文网| 欧洲色综合| 狠狠久久亚洲欧美专区| 九九碰九九爱97超碰| 国产专区路线| 国产乱色国产精品免费视| 粉嫩小泬久久久一区二区| 秋霞久久亚洲精品成人| 欧美天天在线| 色人久久| 操国产高清| 久久久性爱视频| 日韩一性一交一A片俄罗斯| 亚洲精品国产熟女久久久| 操人91| 蜜臀一区二区三区在线| 二对二中文字幕。| 三级网色| 欧洲综合色| 香蕉一区二区三区在线视频| 一区二区三区高清天码| 国产AB视频| 国产成人亚洲精品自产在线| 日本成人免费一区二区三区| 超碰1997| 五月天综合网| 日本人妻伦在线中文字幕| 中文字幕AV片| 日本色婷婷| 岛国1区2区3区在线观看| 黄久在线| 蜜臀av在线播放一区二区三区| 国产美女口爆吞精视频| 久久是精品| 偷拍欧美激情| 啪一啪免费视频| 91国模| 男人把坤坤插入女人的下体| 五月天色色网站| 国产黄色视频久久| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 国产67194| 免费国产电影一区二区| 性感美女啊啊啊在线| 人妻夜夜爽天天爽麻豆三区网站 | 人妻精品一区二区在线| 蜜桃狠狠色伊人亚洲综合网站| 精品久久大胆人体| 国产av尤物| 成人三一级一片aaa| 天天亚洲| 亚洲。天堂。日本在线观看| 天天欧美色| 国产呦精品一区二区三区下载| 免费观看日本操逼视频| 中出在线视频| 97色色国产视频| 欧美天天插| 日本精品一区二区中文字幕| 国产精品高潮呻吟av久久4虎| 熟女熟妇一区二区三区视频| 国产熟女一区二区丰满| 丁香五月影院| 久久久麻豆精品| 超碰97人人cao| 91n欧美| 亚州色图欧美色图| 亚洲一区亚洲天堂| 日韩AV色图| 国产女人高潮视频| 99热这里只有精品地址| 亚洲国产ⅴ高清在线观看| 夜夜骑夜夜操| 久久一区二区蜜桃| 不卡六六在线91| 麻豆伊人网| 3028国产精品| 精品国模无码| 91丝袜| 亚洲欧美激情小说| 国模不卡一本二本三电影| 乱伦日本中文自拍| 日韩天堂av电影在线观看| 草草草视频在线免费看| 亚洲欧美性生活| 天天色天天干天天爱| 日韩精品系列| 99色视频| Sekablack无码一区| 伊人视频| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 少妇无码999| 91夜夜蜜桃臀1区2区3区| 蜜乳性色无码专日粉嫩骚逼AV| 大粗鳼巴久久久久| 青青草视频在线观看一区二区| 天天做日日做天天欢。| 99re视频在线播放青草| 亚洲色9| 欧美日韩成人在线| 国产精品直播在线观看直播| 青青草无码视频| #NAME?| 91麻豆天美国产欧美| 国产成人无码网站在线视频| 国产69精品久久久久99尤物| www国产天美久久久| 韩国成人精品久久久免费看| 乱伦图av| 免费看日产一区二区三区| 久久XX| 深夜啪啪啪视频免费| av大香蕉网站| 九区国产| 一本色道久久综合精品婷婷| 东京热天堂网| 欧美日韩日产免费网站看| 欧美性爱系列| 精品超碰中文在线| 亚洲永久永久永久永久一级一级一级精品| 欧美国产成人在线| 久久超碰av在线| 久久久97| 中文字幕亚洲热播人妻| 亚洲第一精品在线视频| 秋霞一级A片黄色视频| PMv在线观看| 日韩一级欧美一级国产一级台湾| 中文字幕三四区| 亚洲人成网站7777| 亚洲日韩精品久久久久一区壹牛| 久久性爱视频99| www.黄色在线| 日本福利二区视频| 99色综合| 亚洲五区熟女| 亚洲天堂久| 国产精品久久久久婷婷二区次| 亚洲?V高清一区二区三区尤物| 日韩精品字幕| 日韩一区二区高清在线观看的| 操我无码| 日韩人妻精品久久久久| 欧美丝袜激情| 麻豆区久久久久亚| 久久久久久久人妻丝袜| 中文字幕一区二区三区字幕| 欧美一级黄片视频在线| 国模吧 一区二区三区| 无码逼| 久久免费99精品久久久久久| 女优免费一区二区永久| 欧美淫乱视频|