日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JAVAweb之SSH框架

發(fā)布時(shí)間:2023/12/31 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVAweb之SSH框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SSH框架( struts+spring+hibernate)

開發(fā)環(huán)境 myeclipes2015 sqlserver2012 Java

簡(jiǎn)述

SSH是 struts+spring+hibernate的一個(gè)集成框架,是06年之前較為流行的一種Web應(yīng)用程序開源框架.。集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用程序。其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對(duì)持久層提供支持,Spring做管理,管理struts和hibernate。


SSH框架優(yōu)點(diǎn)
優(yōu)秀的解耦性,很少有軟件產(chǎn)品的需求從一開始就完全是固定的??蛻魧?duì)軟件需求,是隨著軟件開發(fā)過(guò)程的深入,不斷明晰起來(lái)的。因此,常常遇到軟件開發(fā)到一定程度時(shí),由于客戶對(duì)軟件需求發(fā)生了變化,使得軟件的實(shí)現(xiàn)不得不隨之改變。ssh三層構(gòu)架,控制層依賴于業(yè)務(wù)邏輯層,但絕不與任何具體的業(yè)務(wù)邏輯組件耦合,只與接口耦合;同樣,業(yè)務(wù)邏輯層依賴于DAO層,也不會(huì)與任何具體的DAO組件耦合,而是面向接口編程。采用這種方式的軟件實(shí)現(xiàn),即使軟件的部分發(fā)生改變,其他部分也不會(huì)改變。

框架解析

Struts

(一般開發(fā)選用的是Struts2【Struts的升級(jí)版】})
Struts2是一個(gè)基于MVC設(shè)計(jì)模式的Web應(yīng)用框架,它本質(zhì)上相當(dāng)于一個(gè)servlet,在MVC設(shè)計(jì)模式中,Struts2作為控制器(Controller)來(lái)建立模型與視圖的數(shù)據(jù)交互。Struts 2是Struts的下一代產(chǎn)品,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來(lái)處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。

spring

Spring就像是整個(gè)項(xiàng)目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實(shí)體類的構(gòu)造方法來(lái)實(shí)例化對(duì)象。Spring,使用基本的實(shí)體JavaBean來(lái)完成以前只能用EJB完成的事情。而其核心則是控制反轉(zhuǎn)(IOC)和面向切面編程(AOP)。使用Spring,意味著一個(gè)對(duì)象的創(chuàng)建再也不是自己new出來(lái)的,而是全權(quán)交給了IOC容器去實(shí)例化。與此同時(shí),Spring通過(guò)采用依賴注入(DI)的方式,通過(guò)屬性的Setter和Getter方法來(lái)注入這個(gè)對(duì)象的屬性,這樣的好處就是不完全依賴于容器的API,且查詢依賴與代碼實(shí)現(xiàn)了解耦。而AOP,則是將應(yīng)用的業(yè)務(wù)邏輯和系統(tǒng)級(jí)服務(wù)(例如事務(wù))分離開來(lái),進(jìn)行內(nèi)聚性的開發(fā),應(yīng)用對(duì)象只負(fù)責(zé)完成業(yè)務(wù)邏輯而不關(guān)心日志或者事務(wù)的處理。
spring優(yōu)勢(shì)
spring提高了一種對(duì)象管理方法,有效的組織系統(tǒng)中間層對(duì)象。是框架的完美“粘合劑”。有利于面向接口編程習(xí)慣的養(yǎng)成,使代碼結(jié)構(gòu)清晰。

hibernate

Hibernate,是負(fù)責(zé)了跟數(shù)據(jù)庫(kù)的交接。通過(guò)持久化數(shù)據(jù)對(duì)象,進(jìn)行對(duì)象關(guān)系的映射,并以對(duì)象的角度來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。通過(guò)封裝JDBC,使得開發(fā)人員可以以面向?qū)ο缶幊痰乃枷雭?lái)操控?cái)?shù)據(jù)庫(kù),從而擺脫了以往使用JDBC編程時(shí)的“死板”操作。通過(guò)hibernate.cfg.xml文件來(lái)取代以往的JDBC連接數(shù)據(jù)庫(kù)的一大串代碼,通過(guò)XXX(實(shí)體Bean的類名).hbm.xml文件來(lái)與數(shù)據(jù)庫(kù)的具體表進(jìn)行映射。并且Hibernate有自己的HQL語(yǔ)句,與數(shù)據(jù)庫(kù)的SQL語(yǔ)句相似,但不同的是HQL語(yǔ)句在面向?qū)ο缶幊痰慕嵌壬?#xff0c;通過(guò)Session的createQuery方法創(chuàng)建戶一個(gè)query對(duì)象,由這個(gè)對(duì)象來(lái)完成對(duì)數(shù)據(jù)庫(kù)的增刪改查等操作。通過(guò)Struts2中Action的返回值,來(lái)調(diào)用Dao層中的業(yè)務(wù)處理。
hibernate優(yōu)勢(shì)
hibernate是JDBC輕量級(jí)的封裝,占用內(nèi)存較少,性能比較高。與JDBC相比,如果開發(fā)JDBC的人員技術(shù)能力非常強(qiáng),hibernate執(zhí)行效率會(huì)比JDBC弱一些,但是大部分情況是程序員在使用JDBC時(shí)是不可能做到最高效率,hibernate可以幫大部分開發(fā)人員提高運(yùn)行效率??梢砸氲谌蕉?jí)緩存,提高系統(tǒng)查詢效率,減少系統(tǒng)里存在大量單例類(singleton),大量的單例類,會(huì)降低系統(tǒng)的可測(cè)試性和面向?qū)ο蟪潭取ibernate兼容JDBC。理論上可以應(yīng)用在任何使用JDBC的場(chǎng)景。
可以逆向工程,簡(jiǎn)化了手寫model實(shí)體類的繁瑣。

整體設(shè)計(jì)

表示層(jsp頁(yè)面)用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。login.jsp等layUI前端框架。
業(yè)務(wù)邏輯層(Iplm,DAO,接口及接口實(shí)現(xiàn),action,Servlet包)業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì),對(duì)于數(shù)據(jù)訪問(wèn)層而言,它是調(diào)用者;對(duì)于表示層而言,它卻是被調(diào)用者。UserDAO.java/ UserDAOImpl.java,AddcardAction.java/ FileUploadServlet.java
模塊層(hibernate逆向工程)實(shí)體層model包),以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用程序。TUser.java/TUser.hbm.xml
數(shù)據(jù)持久層(SQL server,基類實(shí)現(xiàn),hql)主要是負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問(wèn),可以訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)、二進(jìn)制文件、文本文檔或是XML文檔。iHibBaseDAOImpl.java/ iHibBaseDAO.java

DAO接口模式為了減少業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)邏輯之間的耦合,當(dāng)一個(gè)持久層框架被應(yīng)用時(shí),該模式將會(huì)減少業(yè)務(wù)對(duì)象和該框架之間的耦合,這樣我們可以不修改業(yè)務(wù)對(duì)象而選擇不同的持久層框架的實(shí)現(xiàn)。
業(yè)務(wù)邏輯層:包含了系統(tǒng)所需要的所有功能上的算法和計(jì)算過(guò)程,并與數(shù)據(jù)訪問(wèn)層和表現(xiàn)層交互。服務(wù)端返回?cái)?shù)據(jù)的處理以及相應(yīng)頁(yè)面的改變。

設(shè)計(jì)原則:
業(yè)務(wù)層接口的設(shè)計(jì)原則:一個(gè)實(shí)體類一個(gè)接口,一次提交一個(gè)業(yè)務(wù)方法。業(yè)務(wù)方法的參數(shù)來(lái)自表現(xiàn)層。
持久層接口的設(shè)計(jì)原則:一個(gè)實(shí)體類一個(gè)接口,一次數(shù)據(jù)庫(kù)操作一個(gè)持久方法。

實(shí)例手把手教學(xué)搭建

開發(fā)工具:myeclipes2015 sqlserver2012

  • 新建一個(gè)SSHtest的web project項(xiàng)目


    輸入項(xiàng)目名稱,根據(jù)需要選擇各項(xiàng)版本(一般默認(rèn)即可),點(diǎn)擊下一步

    點(diǎn)擊下一步

    勾選后點(diǎn)擊下一步

    點(diǎn)擊Finish,項(xiàng)目就建好了。

  • 搭建框架

  • ●創(chuàng)建hibernate


    為了更好的與spring匹配我們這里選擇3.3版本的hibernate,選好后點(diǎn)擊下一步

    根據(jù)上圖操作就建立好了hibernate的session工廠。
    接下來(lái)我們看一下建好的hibernate配置文件
    在hibernate配置文件里配置與數(shù)據(jù)庫(kù)的連接,獲得數(shù)據(jù)持久化(相關(guān)配置會(huì)在后面步驟中介紹)

    ●創(chuàng)建spring
    Spring整合Hibernate(一般先建hibernate再建spring,因?yàn)楹蠼╯pring的話,就會(huì)自動(dòng)把一些相關(guān)配置整合到spring里,減少了手動(dòng)操作的麻煩)


    spring一般選4.1版本,切合hibernate3.3,(記得選擇版本的時(shí)候,兩個(gè)版本要相對(duì)應(yīng),否則會(huì)因?yàn)槿笔鄳?yīng)的架包而報(bào)錯(cuò))點(diǎn)擊下一步

    你不用管,直接下一步

    到此步,點(diǎn)擊Finish,現(xiàn)在spring就創(chuàng)建好了
    接下來(lái)我們來(lái)看創(chuàng)建好的spring配置文件

    ●創(chuàng)建Struts2


    選擇2.1版本,點(diǎn)擊下一步


    到此步點(diǎn)擊Finish,Struts2就創(chuàng)建好。
    接下來(lái)我們來(lái)看Struts2的配置文件

    現(xiàn)在我們已經(jīng)完成了基本SSH框架的搭建。
    我們的框架布局基本就搭建完成了,我們先來(lái)運(yùn)行測(cè)試一下(一般運(yùn)行沒(méi)錯(cuò),就說(shuō)明搭建沒(méi)問(wèn)題)
    將項(xiàng)目部署到Tomcat上:

    運(yùn)行

    因?yàn)橐B接數(shù)據(jù)庫(kù),所以我們要新建一個(gè)數(shù)據(jù)庫(kù)
    ●以sqlserver2012為例,新建一個(gè)名為SSHtest的數(shù)據(jù)庫(kù)

    創(chuàng)建數(shù)據(jù)庫(kù)

    點(diǎn)擊確定,數(shù)據(jù)庫(kù)就創(chuàng)好了。
    我們?cè)谶@了以用戶登錄為例,建一張用戶表T_User

    填寫數(shù)據(jù)

    3. 創(chuàng)建所需包
    4 . 配置框架
    ●hibernate連接數(shù)據(jù)庫(kù),獲得持久化數(shù)據(jù)
    新建數(shù)據(jù)池database


    操作完以上點(diǎn)擊下一步

    點(diǎn)擊Finish,數(shù)據(jù)庫(kù)連接池就做好了

    hibernate配置

    操作完以上記得ctrl+s保存,這樣hibernate就配置好了。
    接下來(lái)我們看一下hibernate的配置文件

    hibernate逆向工程(獲得model實(shí)體類)



    點(diǎn)擊ok,

    下一步

    直接下一步

    點(diǎn)擊后會(huì)出現(xiàn)如下

    選擇yes

    到此步逆向工程就完成了。

    接下來(lái)可以寫一些類
    business.basic包(放置基類及幫助類)

    business.dao包(放置業(yè)務(wù)接口供給調(diào)用)
    創(chuàng)建一個(gè)用戶業(yè)務(wù)接口


    選擇interface,下一步

    點(diǎn)擊finish,接口類就創(chuàng)建好了。

    UserDAO代碼如下(一般書寫登錄及增刪查改接口)

    package business.dao; import java.util.List; import model.TUser;public interface UserDAO {/*** 用戶登錄業(yè)務(wù)方法* @param userid 用戶登錄名* @param password 登錄密碼* @return TUser 當(dāng)前登錄的用戶對(duì)象*/public TUser login(String userid,String password);/*** 普通用戶的注冊(cè)方法* @param userid 用戶注冊(cè)的用戶名* @param password 用戶注冊(cè)錄密碼的的* @param username 用戶注冊(cè)的姓名* @return boolean 注冊(cè)成功返回true 失敗返回false*/public boolean addNormalUser(String userid,String password,String username);/*** 修改普通用戶信息* @param userid 要修改的用戶的用戶名* @param password 修改后的密碼* @param username 修改后的用戶網(wǎng)站昵稱* @return 修改成功返回true 失敗返回false*/public boolean modifyNormalUser(String userid,String password,String username); /*** 根據(jù)用戶輸入的用戶名返回對(duì)應(yīng)的TUser對(duì)象* @param userid 用戶名* @return TUser對(duì)象*/public TUser getTUserById(String userid);/*** 判斷注冊(cè)用戶名是否可用* @param userid* @return 用戶名可用返回true, 否則返回false*/public boolean isValidateUserid(String userid);}

    business.impl包(放置接口實(shí)現(xiàn)類)
    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-XTSG4bfP-1574340786841)(https://img-blog.c sdnimg.cn/20191121192641243.png)]




    代碼如下

    package business.impl;import java.util.List; import model.TUser; import business.basic.iHibBaseDAO; import business.basic.iHibBaseDAOImpl; import business.dao.UserDAO;public class UserDAOImpl implements UserDAO {private iHibBaseDAO bdao = null;public void setBdao(iHibBaseDAO bdao) {this.bdao = bdao;}public UserDAOImpl(){bdao = new iHibBaseDAOImpl();}@Overridepublic TUser login(String userid, String password) {String hql="from TUser where userid = ? and password = ?";Object[] para = {userid,password};List<TUser> list = bdao.select(hql, para);if(list.size()>0){return (TUser)list.get(0);}else {return null;}}@Overridepublic boolean addNormalUser(String userid, String password, String username) {TUser user = new TUser();user.setUserid(userid);user.setPassword(password);user.setUsername(username); Object obj = bdao.insert(user);if(obj != null){return true;}else {return false;}}@Overridepublic boolean modifyNormalUser(String userid, String password,String username) {TUser user = (TUser)bdao.findById(TUser.class, userid);user.setPassword(password);user.setUsername(username);return bdao.update(user);}@Overridepublic TUser getTUserById(String userid) {return (TUser)bdao.findById(TUser.class, userid);}@Overridepublic boolean isValidateUserid(String userid) {TUser user = (TUser)bdao.findById(TUser.class, userid);if(user!=null && !user.getUserid().equals("")){return false;}else {return true;}}}

    business.factory包(放置工廠類)

    工廠里整合了接口和接口實(shí)現(xiàn)類,在action里直接調(diào)用工廠類,就不用再分開調(diào)用接口和接口實(shí)現(xiàn),不用再下實(shí)例化對(duì)象在調(diào)用。
    代碼如下
    動(dòng)態(tài)工廠

    package business.factory; import business.dao.UserDAO; import business.impl.UserDAOImpl;/** 動(dòng)態(tài)工廠*/ public class DAOFactory {/*** 返回一個(gè)用于對(duì)用戶信息操作的UserDAO對(duì)象* @return UserDAO*/public UserDAO getUserDAO(){return new UserDAOImpl();}}

    動(dòng)態(tài)工廠

    package business.factory; import business.dao.UserDAO; import business.impl.UserDAOImpl; public class StaticDAOFactory {/*** (靜態(tài)方法)返回一個(gè)用于對(duì)用戶信息操作的UserDAO對(duì)象* @return UserDAO*/public static UserDAO getUserDAO(){return new UserDAOImpl();}}

    一般選用動(dòng)態(tài)。

    spring配置
    可創(chuàng)建bean來(lái)管理接口及接口實(shí)現(xiàn)(將接口及接口實(shí)現(xiàn)、工廠注冊(cè)給bean,配置好后交給spring統(tǒng)一管理)也可直接在session工廠利配置
    平常的java開發(fā)中,程序員在某個(gè)類中需要依賴其它類的方法,則通常是new一個(gè)依賴類再調(diào)用類實(shí)例的方法,這種開發(fā)存在的問(wèn)題是new的類實(shí)例不好統(tǒng)一管理,spring提出了依賴注入的思想,即依賴類不由程序員實(shí)例化,而是通過(guò)spring容器幫我們new指定實(shí)例并且將實(shí)例注入到需要該對(duì)象的類中。依賴注入的另一種說(shuō)法是“控制反轉(zhuǎn)”,通俗的理解是:平常我們new一個(gè)實(shí)例,這個(gè)實(shí)例的控制權(quán)是我們程序員,而控制反轉(zhuǎn)是指new實(shí)例工作不由我們程序員來(lái)做而是交給spring容器來(lái)做。
    創(chuàng)建一個(gè)新springbean來(lái)注冊(cè)管理,我們命名為bean1

    選擇other

    下一步

    選擇sping鏈接(根據(jù)所需配置加載)


    勾選如上復(fù)選框,點(diǎn)擊Finish,springbean就創(chuàng)建好了。
    接下來(lái)配置bean
    這里講一下靜態(tài)工廠的方法注入
    靜態(tài)工廠顧名思義,就是通過(guò)調(diào)用靜態(tài)工廠的方法來(lái)獲取自己需要的對(duì)象,為了讓spring管理所有對(duì)象,我們不能直接通過(guò)"工程類.靜態(tài)方法()"來(lái)獲取對(duì)象,而是依然通過(guò)spring注入的形式獲取:

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:c="http://www.springframework.org/schema/c"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"><!-- 掃描器 掃描包中的類,將相關(guān)類注冊(cè)成bean --><context:annotation-config /><context:component-scan base-package="business" /><!--注入action,service,dao --><!-- 靜態(tài) --><bean id="login" class="business.action.LoginAction" scope="prototype"></bean><bean id="userDAO" name="userdao" class="business.factory.StaticDAOFactory"factory-method="getUserDAO" abstract="false" lazy-init="default"autowire="default"></bean> <bean id="bdao" class="business.basic.iHibBaseDAOImpl"></bean><!-- 實(shí)現(xiàn)基于上iHibBaseDAOImpl --><bean id="userdaoimpl" name="userdaoimpl" class="business.impl.UserDAOImpl"><property name="bdao" ref="bdao"></property></bean></beans>

    工程項(xiàng)目下的web.xml的配置

    到此步springbean就配置成功了。

    struts.xml配置

    為了更好的進(jìn)行配置,我們選擇視圖界面配置

    建好后的視圖界面

    首先我們先創(chuàng)建如下幾個(gè)jsp和css文件

    接下來(lái)添加action


    配置失敗返回參數(shù)

    如果跳轉(zhuǎn)到網(wǎng)頁(yè)可以使用dispatcher,頁(yè)面跟共用響應(yīng)對(duì)象
    redirect簡(jiǎn)單的重定位,不共用響應(yīng)對(duì)象
    redirectAction action跳轉(zhuǎn)action,不共用響應(yīng)對(duì)象

    建立好的包視圖

    看看他的配置文件
    它的參數(shù)要在action里定義才會(huì)生效

    接下來(lái)就可以書寫action了
    打開新建好的LoginAction類

    公共封裝方法命名為BaseAction如下

    package business.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport {protected HttpServletRequest request;protected HttpServletResponse response;protected HttpSession session;protected ServletContext application;public BaseAction() {super();request = ServletActionContext.getRequest();response = ServletActionContext.getResponse();session = request.getSession();application = ServletActionContext.getServletContext();} }

    當(dāng)struts接受這個(gè)action請(qǐng)求時(shí),struts調(diào)用 username的get方法把前臺(tái)的值傳到action中的username,當(dāng)action處理完成,要返回到頁(yè)面時(shí)。在生成jsp的過(guò)程中,你可以在頁(yè)面中使用EL表達(dá)式,${username}進(jìn)行綁值,這時(shí)調(diào)用username的set方法。
     在jsp頁(yè)面頂部導(dǎo)入el表達(dá)式標(biāo)簽連接

     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


     LoginAction類

    package business.action;import model.TUser; import business.dao.UserDAO; import business.factory.DAOFactory;public class LoginAction extends BaseAction {//獲取jsp頁(yè)面?zhèn)鬟^(guò)來(lái)的userid和passwordprivate String userid; private String password;//利用get set方法將值獲取上public String getUserid() {return userid;}public String getPassword() {return password;}public void setUserid(String userid) {this.userid = userid;}public void setPassword(String password) {this.password = password;}public void setErrorsText(String errorsText) {this.errorsText = errorsText;}public void setBackurl(String backurl) {this.backurl = backurl;}private String errorsText;//設(shè)置錯(cuò)誤提示文字private String backurl; //返回地址public String getErrorsText() {return errorsText;}public String getBackurl() {return backurl;}private String requesturl;public String getRequesturl() {return requesturl;}public void setRequesturl(String requesturl) {this.requesturl = requesturl;}/*** @return*/public String execute() {System.out.println("獲取:用戶名"+userid+"密碼:"+password);backurl="login.jsp";//判斷輸入框是否為空if(userid==null ||userid.trim().equals("")){errorsText = "用戶賬號(hào)不能為空";return ERROR;}else if(password==null ||password.trim().equals("")){errorsText = "密碼不能為空";return ERROR;}//以數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行對(duì)比UserDAO udao = new DAOFactory().getUserDAO();TUser loginUser = udao.login(userid, password);if(loginUser!=null && loginUser.getUsername()!=null){//判斷登陸成功,將用戶名存在session里供后續(xù)操作調(diào)用session.setAttribute("loginuser", loginUser);//記錄當(dāng)前地址requesturl = (String)session.getAttribute("requesturl");return SUCCESS;}else{//失敗則跳轉(zhuǎn) fial.jsperrorsText = "登錄失敗";return ERROR;}} }

    success.jsp代碼

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"><title>SSH</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="SSH"></head><body> <h2>當(dāng)前的登錄用戶為:<span style="color:yellow; font:bold">${loginuser.username} </span></h2>添加user,如果姓名沒(méi)有沖突,那么就添加到數(shù)據(jù)庫(kù),如果姓名沖突了就不能添加,返回失敗頁(yè)面<form action="add.action" method="get">UserName:<input type="text" name="user.username"><br />UserPassword:<input type="password" name="user.userpassword"><br />UserMessage:<input type="text" name="user.usermessage"><br /><input type="submit" value="提交"> <input type="reset"value="重置"></form>根據(jù)姓名查詢,若不輸入,則查詢?nèi)?lt;form action="query.action" method="post">UserName: <input type="text" name="queryText" value="${searchText }" /><input type="submit" value="查詢" /></form><table width="70%" border="1px" align="center" cellpadding="0"cellspacing="0"><thead><tr bgcolor="#ff0"><th width="25%">編號(hào)</th><th width="25%">姓名</th><th width="25%">信息</th><th width="25%">操作</th></tr></thead><tbody><c:forEach var="user" items="${users }"><tr><td>${user.id}</td><td>${user.username}</td><td>${user.usermessage}</td><td><a href="edit.action?param=0&id=${user.id}">編輯</a> <ahref="delete.action?id=${user.id}">刪除</a></td></tr></c:forEach></tbody></table></body> </html>

    fail.jsp代碼

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"><title>fail</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="fail"></head><body><div style="color:red;">fail</div><br/><center><p><h2>${errorsText}</h2></p></center><div id = "foot"><a href="${backurl}">返回上一頁(yè)面</a></div><!-- <a href="query.action?queryText=">返回主頁(yè)</a> --> </body> </html>

    建立好如上,運(yùn)行測(cè)試
    輸入為空測(cè)試

    輸入賬號(hào)密碼測(cè)試

    輸入后會(huì)報(bào)如上錯(cuò)誤
    經(jīng)過(guò)一番上網(wǎng)查詢測(cè)試,發(fā)現(xiàn):
    主要 是里面的Structs 1.3 (structs 2)和Hibernate 3.2(或更高版本)中的JAR包里antlr2.7.2 與 antlr2.7.6 沖突,只要?jiǎng)h除Structs 1.3中的低版本的antlr2.7.2就可以了。具體操作如下:在MyEclipse 下,windows–>preferences–>在文本框中搜索struts2–>選擇 antlr2.7.2–>remove

    現(xiàn)在重啟Tomcat再次測(cè)試:

    現(xiàn)在登陸成功了,并且獲取到了用戶名。
    在測(cè)試查詢時(shí),利用<c:forEach items>查詢多條記錄可以正常使用,但存在的單條記錄會(huì)報(bào)錯(cuò)。如下

    經(jīng)過(guò)小編多放查證,終于發(fā)現(xiàn):
    在訪問(wèn)某個(gè)頁(yè)面出現(xiàn)了上標(biāo)題所示的異常。一開始我也不知道什么原因,因?yàn)楹笈_(tái)已經(jīng)返回了數(shù)據(jù),而且前端的el/jstl表達(dá)式都寫的沒(méi)毛病。
    后來(lái)無(wú)意中想到,我這個(gè)數(shù)據(jù)是確定的只有一條,但是我還是用的<c:forEach>來(lái)寫。然后我把數(shù)據(jù)包裝了一下,雖然只有一條數(shù)據(jù),但是我返回的還是一個(gè)list集合就沒(méi)問(wèn)題啦(重新寫了一個(gè)接口)

    改變后的action

    測(cè)試通過(guò)

    項(xiàng)目完整演示:

    注意

    本項(xiàng)目的SSH框架中spring是以單spring框架搭建(單純的整合hibernate數(shù)據(jù)庫(kù)連接,其間的接口及其注入配置貌似沒(méi)有什么作用,其實(shí)實(shí)配置不配置程序都能運(yùn)行。)而在實(shí)際項(xiàng)目開發(fā)中多是spring與其他技術(shù)架構(gòu)結(jié)合的,比如springMVC、springBoot等等。這些項(xiàng)目框架會(huì)在后續(xù)博文中給大家呈現(xiàn)。

    項(xiàng)目中有什么錯(cuò)誤之處,希望有心之人在評(píng)論中指出或私發(fā)消息討論。

    此項(xiàng)目用SSH框架搭建,實(shí)現(xiàn)了用戶的登錄、查詢、刪除、添加。
    項(xiàng)目(源碼+數(shù)據(jù)庫(kù))我已上傳至gitee碼云上,有需要的可以進(jìn)行下載:
    GITEE碼云地址:https://gitee.com/zhangyant/SSHtest
    記得更改hibernate數(shù)據(jù)庫(kù)連接(導(dǎo)入sql文件夾中sql語(yǔ)句)。



    另一種ssh架構(gòu)可參考:https://www.cnblogs.com/acm-bingzi/p/ssh.html
    本人覺(jué)得此方法有點(diǎn)難以理解(–^^–)。

    總結(jié)

    以上是生活随笔為你收集整理的JAVAweb之SSH框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    免费在线观看av片 | 日韩精品一区二区电影 | 国产伦理久久精品久久久久_ | 日韩在线观看第一页 | 国产日产精品久久久久快鸭 | 亚洲第一中文字幕 | 黄色在线视频网址 | 色吊丝在线永久观看最新版本 | 久久免费视频99 | 国产又黄又硬又爽 | 国产色拍拍拍拍在线精品 | 在线视频国产区 | 一区av在线播放 | 亚洲精品自在在线观看 | 免费高清无人区完整版 | 最近中文字幕大全中文字幕免费 | 天天操综 | 美女视频免费精品 | 国产日韩欧美综合在线 | 99免费在线观看视频 | 久久综合久久鬼 | 欧美日韩国产一区 | 久久高清精品 | 伊人亚洲综合网 | 久久99精品久久久久久 | 亚洲精品成人在线 | 蜜臀久久99精品久久久久久网站 | 久久人网 | 欧美激情综合五月色丁香 | 久久综合成人网 | 91热视频在线观看 | 精品欧美一区二区在线观看 | 97国产大学生情侣白嫩酒店 | 国产精品永久在线观看 | 亚洲特级片 | 久久久精品一区二区 | jizz18欧美18 | 安徽妇搡bbbb搡bbbb | 午夜色场 | 久久久久久久久久久免费av | 成人av中文字幕 | 啪啪肉肉污av国网站 | 国产中文字幕视频在线观看 | 欧美日韩精品在线观看视频 | 国产玖玖视频 | 欧美在线视频一区二区三区 | 久久激情电影 | 黄色小说在线观看视频 | 国产伦理久久精品久久久久_ | 国产综合福利在线 | 国产一区免费视频 | 少妇bbbb揉bbbb日本 | 国产特级毛片 | www免费视频com━ | 三级在线国产 | 色99久久| 十八岁以下禁止观看的1000个网站 | 成人作爱视频 | 五月婷婷丁香 | 国产在线播放一区二区 | 天天干天天做 | 日韩一区二区三区视频在线 | 国产资源在线观看 | 成人小视频在线观看免费 | 国产精品久久久久久久久久了 | 天天干一干 | 93久久精品日日躁夜夜躁欧美 | 亚洲人人精品 | 日韩在线观看视频在线 | 综合铜03| 欧美怡红院视频 | 在线视频1卡二卡三卡 | 丝袜制服天堂 | 欧美福利精品 | 中文字幕精品一区二区精品 | 亚洲免费国产视频 | 在线国产一区二区 | 亚洲网站在线看 | 一级性视频 | 特级西西444www大精品视频免费看 | 99久久精品国产系列 | 日p视频在线观看 | 国产在线中文字幕 | 免费久久网站 | 99 久久久久 | 国产福利免费看 | 97超碰在线资源 | 在线视频一二三 | 国产91全国探花系列在线播放 | 91精品视频免费看 | 91系列在线 | 91丨九色丨蝌蚪丨老版 | 91麻豆精品国产91久久久久 | 视频一区二区视频 | 丁香视频免费观看 | 国产精品久久嫩一区二区免费 | 超碰com| 国产精品国产三级国产专区53 | 四虎永久免费在线观看 | 国产综合精品一区二区三区 | 亚洲国产wwwccc36天堂 | 国产精品久久久久久久久久 | 福利一区二区在线 | 9999激情| 免费观看不卡av | 国产成人av网 | 欧美成人播放 | 欧美一区二区在线免费观看 | 国产乱码精品一区二区三区介绍 | 色婷婷www | 狠狠色免费 | 免费成人黄色片 | 99精品网站 | 99r国产精品 | 免费看一级黄色 | 久久精品成人热国产成 | 国产精品免费久久久久久久久久中文 | 日韩最新理论电影 | 亚洲四虎在线 | 亚洲精品激情 | 免费亚洲黄色 | 国产亚洲一区二区在线观看 | www.久久久.com | 黄色网在线免费观看 | 在线观看日韩精品 | 亚洲精品视频在线观看免费视频 | 亚洲国产综合在线 | 国产精品久久一区二区无卡 | 国产精品综合久久久 | 国产精品入口传媒 | 亚洲在线视频网站 | 免费福利片2019潦草影视午夜 | 欧美亚洲一区二区在线 | 国产破处在线视频 | 天天爽天天爽 | 日韩av中文字幕在线 | 免费av网址在线观看 | 日韩欧美大片免费观看 | 国产精品久久久久久久久免费 | 免费视频一区 | 色视频成人在线观看免 | 亚洲午夜激情网 | 欧美色图30p| 96超碰在线 | 综合网av| 久久免费在线视频 | 91视频网址入口 | 丁香六月欧美 | 中文字幕中文字幕在线中文字幕三区 | 成人黄色大片网站 | 91精品一区国产高清在线gif | 欧美日韩在线视频观看 | 久久av影院 | 在线观看视频黄 | 亚洲精品久久久蜜臀下载官网 | 99久热在线精品视频观看 | 国产成人三级三级三级97 | 韩国av三级| 成人一区二区在线观看 | 在线影院 国内精品 | 欧美日韩中文字幕视频 | 97超碰人人澡| 久久久婷 | 狠狠色丁香 | av再线观看 | 麻豆国产精品一区二区三区 | 999久久久 | 天天激情在线 | 国产一级视频在线 | 国产91国语对白在线 | 午夜色站 | 麻豆91精品91久久久 | 免费福利小视频 | а天堂中文最新一区二区三区 | 狠狠色丁香久久婷婷综合_中 | 欧美午夜性| 久草在线官网 | 狠狠色丁香久久婷婷综合五月 | 亚洲乱码国产乱码精品天美传媒 | 日韩在线观看你懂得 | 国产精品自拍在线 | 国产精品ssss在线亚洲 | 99精品免费视频 | 久久久久久久久网站 | 在线观看中文字幕一区 | 午夜三级影院 | 久久久2o19精品 | www视频在线观看 | 国产亚洲欧美精品久久久久久 | 久久久免费看片 | 日韩在线播放视频 | 国产一区二区三区黄 | 欧美一级在线 | 97在线免费观看 | 国产精品ⅴa有声小说 | 亚洲精品视频免费看 | 成人午夜精品福利免费 | 亚洲精品456在线播放第一页 | 精品字幕| 精品久久1 | 久久精品99久久 | 狠狠躁天天躁 | 亚洲精品色视频 | 91视频在线免费 | 亚洲欧美日韩一二三区 | 日韩视频一区二区三区在线播放免费观看 | 亚欧日韩av| 欧美巨乳网 | 91精品资源 | 国产精品伦一区二区三区视频 | 国产三级久久久 | 久久国色夜色精品国产 | 国产一区观看 | 九九热只有这里有精品 | 日韩av福利在线 | 黄色亚洲精品 | 91中文在线 | 日韩精品一区在线播放 | 在线观看深夜福利 | 521色香蕉网站在线观看 | 成人a在线观看高清电影 | 婷婷色在线视频 | 中日韩欧美精彩视频 | 色午夜 | 九九精品毛片 | 中文字幕资源网在线观看 | 欧美一级片在线免费观看 | 最近中文字幕完整高清 | 久久成人人人人精品欧 | 天天曰天天 | 婷婷爱五月天 | 欧美久久久一区二区三区 | 欧美亚洲精品在线观看 | 爱情影院aqdy鲁丝片二区 | 国产 日韩 在线 亚洲 字幕 中文 | 一区二区三区高清 | a久久久久久 | 免费一级片久久 | a极黄色片| 亚洲va男人天堂 | 综合久久久久 | 亚洲另类视频在线 | 人人爽人人| 日韩高清一二区 | 久久精品亚洲一区二区三区观看模式 | 99精品视频99 | 免费黄色a网站 | 韩国三级av在线 | 公开超碰在线 | 丁香婷婷综合色啪 | 六月激情网 | 一区二区丝袜 | 又湿又紧又大又爽a视频国产 | 国产精品久久久久久久久久东京 | 久久超级碰视频 | 国产又粗又猛又色 | 欧美在线视频免费 | 国产 日韩 在线 亚洲 字幕 中文 | 国产精品成人国产乱 | 色综合久久悠悠 | 午夜性生活 | 成人9ⅰ免费影视网站 | 日韩理论片中文字幕 | 中文有码在线 | 十八岁以下禁止观看的1000个网站 | 在线观看资源 | 中文字幕日韩免费视频 | 五月婷香蕉久色在线看 | 成人在线视频观看 | 天天摸天天弄 | 激情欧美国产 | 最新高清无码专区 | a视频免费 | 在线观看中文字幕av | 91精品少妇偷拍99 | 成人在线播放免费观看 | 中文字幕在线看片 | 亚洲国产精品电影 | 7777精品伊人久久久大香线蕉 | 亚洲国产免费 | 成人a免费| 欧美精品乱码久久久久久按摩 | 免费国产在线精品 | 91九色蝌蚪国产 | 五月激情久久 | 二区三区在线观看 | 最新久久免费视频 | 久久视频在线观看中文字幕 | 亚洲高清不卡av | 永久免费的啪啪网站免费观看浪潮 | 久久伊人综合 | 国产一区福利在线 | 视频一区亚洲 | 草久在线播放 | 三级动态视频在线观看 | 国产一级电影 | 一区二区三区中文字幕在线观看 | 中文字幕日本在线观看 | 国产免费叼嘿网站免费 | 9999在线视频 | 中文字幕日韩电影 | 久久国产午夜精品理论片最新版本 | 国产一级二级三级在线观看 | 国产一区二区影院 | 国产亚洲一区二区三区 | 福利一区二区在线 | 日韩免费一区 | 91正在播放| 国产精品一级在线 | 国产传媒中文字幕 | 97超碰超碰久久福利超碰 | 91香蕉视频好色先生 | 久久这里只有精品首页 | 大型av综合网站 | 久久精品久久精品久久精品 | 黄色av一级片 | 人人超碰97| 日韩精品免费一区 | 国产视频在线观看一区二区 | 97精品超碰一区二区三区 | 日韩精品免费一线在线观看 | 天天干天天操天天 | 国色天香第二季 | 免费看国产曰批40分钟 | 国产高清av在线播放 | 久精品视频免费观看2 | 97香蕉超级碰碰久久免费软件 | 免费福利片2019潦草影视午夜 | 日本资源中文字幕在线 | 婷婷亚洲综合五月天小说 | 亚洲狠狠婷婷综合久久久 | 欧美做受69 | 91精品国产成人 | 久久成人国产精品一区二区 | 91久久精品日日躁夜夜躁国产 | 成人中文字幕在线观看 | 黄色aa久久 | 精品国产一区二区三区久久久久久 | 欧洲亚洲精品 | 九九视频精品在线 | 激情五月婷婷综合网 | 在线视频一二三 | 国产尤物在线 | 又湿又紧又大又爽a视频国产 | 97人人视频 | 91麻豆精品国产91久久久无限制版 | 色在线网站 | 九九热免费视频在线观看 | 成人久久久精品国产乱码一区二区 | 久久久96 | 免费色视频在线 | 色综合久久99 | 狠狠干狠狠插 | 免费成人在线电影 | 日韩免费二区 | 91大神电影 | 日韩精品五月天 | 精品99在线视频 | 在线播放 一区 | 99精品国产免费久久久久久下载 | 欧美色图亚洲图片 | 在线看小早川怜子av | 中文av在线免费观看 | 亚洲精品视频偷拍 | 日日夜夜精品 | 久久免费黄色大片 | 一区二区视频在线看 | 亚洲区视频在线 | 欧美视频在线观看免费网址 | 久久久久久久av麻豆果冻 | 在线a视频免费观看 | www178ccom视频在线 | 中文字幕在线观看不卡 | 欧洲精品在线视频 | 最新动作电影 | www视频在线免费观看 | 国产精久久久久久妇女av | 久久九九网站 | 国内久久精品视频 | 99久久精品无码一区二区毛片 | 69精品久久 | 91精品少妇偷拍99 | 国产在线a视频 | 免费看片网址 | 精品在线免费视频 | 在线午夜电影神马影院 | 操综合 | 欧美日韩一区二区三区免费视频 | 亚洲三级国产 | 成人午夜免费福利 | 亚洲dvd| 在线免费观看视频 | 色综合久久88色综合天天人守婷 | 婷婷开心久久网 | 国产精品一区二区久久精品 | 欧美一区三区四区 | 99精品系列 | 日韩高清不卡一区二区三区 | 韩国三级一区 | 一级成人免费视频 | 国产成人精品一区在线 | 97视频精品 | 国产日本在线 | 91av在线免费播放 | 色综合久久久久综合体 | 激情久久伊人 | 久久99国产精品久久 | 久久99国产视频 | 欧美日韩在线网站 | 久久国产精品免费 | 中文字幕在线视频免费播放 | 涩涩爱夜夜爱 | 亚洲视频精选 | 久久久精品久久 | 国产亚洲日 | 欧美一级片在线免费观看 | 九九在线高清精品视频 | 福利视频一二区 | 亚洲最新av在线 | 人人要人人澡人人爽人人dvd | 国产精品嫩草影视久久久 | 天天操天天透 | 久久爽久久爽久久av东京爽 | 久草在线播放视频 | 五月婷婷黄色 | 国产手机在线视频 | 日韩久久精品一区二区三区下载 | 国产中文字幕视频 | 2019av在线视频 | 久久99国产精品 | 精品国产精品国产偷麻豆 | 亚洲国产中文在线 | 福利视频导航网址 | 成人在线视频网 | 99精品欧美一区二区蜜桃免费 | 国产分类视频 | 精品在线观看一区二区 | 中文在线字幕免 | 福利视频一二区 | 久久夜视频| 一区二区 精品 | 毛片黄色一级 | 日本公乱妇视频 | 高潮久久久久久久久 | 91爱爱网址 | 久久国产精品视频 | 日本99热 | 久久久久久国产精品 | 在线电影中文字幕 | 九九热中文字幕 | 在线观看中文字幕一区 | 久艹在线观看视频 | 少妇按摩av| 一区二区三区精品在线视频 | 男女靠逼app| 91传媒在线 | 福利网址在线观看 | 97久久精品午夜一区二区 | 久久精品五月 | 国产精品午夜久久久久久99热 | 午夜性色| 久久久伊人网 | 福利在线看片 | 在线观看的av网站 | 久久一二区 | 久色小说 | 在线观看av片 | 国内精品久久久久久 | 久久超 | 日韩av影视在线观看 | 日韩在线中文字幕视频 | 就操操久久 | 五月开心六月伊人色婷婷 | 美女视频永久黄网站免费观看国产 | 欧美精品午夜 | 在线观看视频在线观看 | 深爱激情五月综合 | 国产精品爽爽久久久久久蜜臀 | 欧美精品一区二区三区一线天视频 | 国产精品午夜8888 | 久久综合久久伊人 | 国产精品乱码一区二三区 | 久久国产精品免费视频 | 国产一区欧美日韩 | 亚洲va男人天堂 | 正在播放国产一区二区 | 五月天久久久 | 东方av在线免费观看 | 91av影视 | 日日躁夜夜躁xxxxaaaa | 91在线亚洲 | 91亚洲影院| 中文字幕高清有码 | 国产亚洲久一区二区 | 久久精品国产亚洲精品 | 欧美精品在线一区二区 | 丁香花在线观看免费完整版视频 | 国产精品男女啪啪 | 丁香婷婷综合激情五月色 | 手机在线中文字幕 | 亚州精品天堂中文字幕 | 在线免费黄网站 | 日韩精品免费在线视频 | 久久精品精品 | 亚洲视频一 | 国产69久久久 | 日韩国产欧美在线视频 | 日韩一区二区三区视频在线 | 中文字幕在线播放一区 | www.久久色 | 欧美综合色| 超碰97在线看 | 国产精品完整版 | 黄色片软件网站 | 粉嫩一区二区三区粉嫩91 | av短片在线观看 | 久久久首页 | 麻豆精品国产传媒 | 欧美午夜久久久 | 日韩av资源站 | 91精品影视 | 免费亚洲精品 | 国产精品久久久久久av | 97成人在线免费视频 | 久久久网页 | 久久免费视频网 | 亚洲国产中文字幕在线视频综合 | 夜夜操天天摸 | 午夜精品久久久99热福利 | 国产成人综合精品 | 精品国产乱码久久久久久浪潮 | 天天拍天天操 | 国产精品久久久久婷婷二区次 | 深爱激情亚洲 | 激情深爱.com | 国产精品久久久久久久久费观看 | 日本免费一二三区 | 久久久久久久久久网 | 伊人狠狠 | 黄色三级网站在线观看 | 六月激情久久 | 日产乱码一二三区别免费 | 久久高视频 | 成人黄色毛片 | 久久久久区 | 97视频在线免费播放 | 4hu视频 | 国产丝袜| 国产精品99久久久久久宅男 | 国产精品成人品 | 免费亚洲成人 | 911精品视频 | 色干综合 | 天天操天天能 | av大全在线观看 | 成年人视频在线免费观看 | 国产麻豆视频网站 | 日韩高清免费无专码区 | 日韩精品一区二区久久 | 在线久草视频 | 最新亚洲视频 | 91在线观看视频网站 | 欧美精品在线视频观看 | 久久色在线播放 | 亚洲三级性片 | 久久av影视 | 国产玖玖精品视频 | 日韩电影中文,亚洲精品乱码 | 免费网站在线观看人 | 91大神在线看 | 91视频麻豆视频 | 亚洲精品视频免费 | 久久视频精品在线观看 | 91免费网 | 亚洲综合成人在线 | 亚洲黄色高清 | 正在播放国产一区二区 | 日韩av电影中文字幕 | 日韩欧美一区二区三区黑寡妇 | 97色涩| 久久免费国产精品1 | 久久久久久久久久久久久久av | 国产麻豆精品在线观看 | 亚洲国产中文字幕在线观看 | 国产第一页福利影院 | 亚洲激精日韩激精欧美精品 | 人人插人人舔 | 91爱爱免费观看 | 欧美成人a在线 | 在线观看亚洲精品视频 | 日韩理论片中文字幕 | 欧美亚洲精品一区 | 亚洲欧美一区二区三区孕妇写真 | 在线91精品 | 久久免费公开视频 | 久久色视频 | 亚洲精品啊啊啊 | 96亚洲精品久久久蜜桃 | 亚洲欧美精品在线 | 成人在线观看日韩 | 黄色成人毛片 | 偷拍精品一区二区三区 | 免费看三片 | 国产九九精品视频 | 天天综合久久 | 国产精品一区二区免费在线观看 | 国内精品视频免费 | 精品国产1区2区3区 国产欧美精品在线观看 | 成人永久在线 | 天堂av在线中文在线 | 水蜜桃亚洲一二三四在线 | 精品国产伦一区二区三区观看体验 | 婷婷综合五月 | 欧美电影黄色 | 国产视频精选 | av成人在线电影 | 欧美美女激情18p | 久久久91精品国产一区二区精品 | 国产精品不卡在线 | 国产一级做a爱片久久毛片a | 国产探花视频在线播放 | 成人在线黄色 | 久久在线免费观看 | 欧美久久精品 | 97视频人人免费看 | 久久视频精品在线观看 | 超碰在线9 | 天天人人| 日韩最新中文字幕 | 久久线视频 | 中文区中文字幕免费看 | 亚洲永久国产精品 | 亚洲黄色成人 | 免费观看国产精品 | 久久99国产综合精品 | 国产一区国产二区在线观看 | 视频在线一区二区三区 | 91精选在线观看 | 高清av免费观看 | 在线观看黄色大片 | 中文在线a天堂 | 婷婷综合网 | 国内精品久久久久久久久久久久 | 国内精品亚洲 | 国产在线色站 | 五月激情站 | 免费a网站 | www.亚洲精品在线 | 91视频88av | 欧美在线观看视频免费 | www.国产在线 | 韩国三级一区 | 色综合小说 | 国产精品一区二区久久久 | 97视频播放 | 亚洲欧洲精品一区二区 | 成人精品一区二区三区中文字幕 | 日韩中文字幕在线观看 | 日韩在线免费视频 | 在线观看av片 | 日韩av午夜在线观看 | 免费网站观看www在线观看 | 黄色三级免费观看 | 国产黄色电影 | 91mv.cool在线观看 | 午夜免费久久看 | 国产综合在线观看视频 | 免费中文字幕在线观看 | 欧美91精品 | 狠狠色丁香久久婷婷综合五月 | 六月丁香社区 | 免费毛片一区二区三区久久久 | 国产精品美女999 | 日韩在线欧美在线 | 国产精品每日更新 | 成人黄色毛片 | 一区二区三区四区在线 | 亚洲国产精品成人av | 日本三级吹潮在线 | 久久久麻豆视频 | 亚洲理论在线 | 国产正在播放 | 欧美日韩性视频 | 美州a亚洲一视本频v色道 | 亚洲午夜精品久久久久久久久久久久 | 亚洲精品理论 | 九九导航 | 五月婷婷开心 | 欧美另类xxxxx | 国产99免费视频 | 国产在线视频一区二区 | 最新中文在线视频 | 91插插视频 | 91 中文字幕 | 狠色在线 | 麻豆视频免费入口 | 91福利区一区二区三区 | 精品视频免费久久久看 | 日韩精品亚洲专区在线观看 | 成年人黄色在线观看 | 国产视频久久久 | 日本三级在线观看中文字 | 天天草天天干天天 | 国产精品久久久久一区二区三区 | 欧美成人精品欧美一级乱 | 久草在线观看资源 | 精品国产成人在线影院 | 欧美午夜寂寞影院 | 亚洲最新av | 黄色软件在线观看 | 成人aaa毛片 | 不卡精品 | 久久精品a | 亚洲精品视频免费在线观看 | 超碰在线人 | 超碰97中文 | 久久理伦片 | 成年人在线视频观看 | 国产精品久久久久久五月尺 | 中文字幕av播放 | 黄色大片av| 黄色一级免费网站 | 亚洲欧洲日韩 | 免费看片网站91 | 97国产大学生情侣酒店的特点 | 国产精品久久久久久一二三四五 | 国产va精品免费观看 | www.黄色片.com | 精品久久久久久久久中文字幕 | h动漫中文字幕 | 日韩中文在线视频 | 国产原创av在线 | 伊人视频 | 午夜精品福利一区二区三区蜜桃 | 综合伊人久久 | 国产精品毛片久久久久久 | 国产亚洲精品久久19p | 亚洲另类人人澡 | 国产码电影 | 五月婷婷狠狠 | 91亚洲精品国偷拍自产在线观看 | 亚洲精品在线网站 | 国产精品免费大片视频 | 日韩精品不卡在线观看 | 亚洲成人av电影在线 | 日韩在线免费高清视频 | 韩国精品在线 | 久久理论电影网 | 天天天天色射综合 | 日韩在线观看电影 | 免费看毛片网站 | 日韩a在线| 99久久99久久| 特级西西444www高清大视频 | 亚洲人久久久 | 久视频在线| 草久草久 | 九九热99视频 | 国产日韩精品在线 | 91尤物国产尤物福利在线播放 | 日韩精品一区二区在线观看 | 亚洲砖区区免费 | 在线观看免费福利 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 欧美另类一二三四区 | 四虎在线观看 | 麻豆国产视频 | 久久久一本精品99久久精品 | 欧美激情视频三区 | 九热精品 | 91chinesexxx| 深爱激情久久 | 亚洲成年人免费网站 | 黄色av一级| 久久国产精品免费观看 | 国语精品久久 | 午夜影院日本 | 国产精品理论在线观看 | 久久久美女 | av片中文字幕 | 色网av| 99色亚洲 | 91精品国产综合久久福利不卡 | 2019精品手机国产品在线 | www五月婷婷 | 色网站国产精品 | 一级a性色生活片久久毛片波多野 | 色香蕉网 | 91视频国产高清 | 免费看污的网站 | www.色国产| 日韩va欧美va亚洲va久久 | 亚洲六月丁香色婷婷综合久久 | 国产高清亚洲 | 97精品国产91久久久久久久 | 国产美女精品久久久 | 日韩亚洲在线观看 | 欧美在线91 | 高清免费av在线 | 国产久视频 | 婷婷六月天丁香 | 深爱激情五月婷婷 | 国产在线不卡一区 | 伊人www22综合色 | 久久精品国产成人 | 久久久国产成人 | 五月综合激情网 | 在线亚洲欧美视频 | 欧美午夜一区二区福利视频 | 深爱激情五月婷婷 | 日韩v在线91成人自拍 | www亚洲视频 | 亚州精品在线视频 | 91社区国产高清 | 99国产高清 | 五月激情六月丁香 | 91完整版在线观看 | 激情五月在线视频 | 天天操夜夜操国产精品 | 一区二区电影网 | 日本激情中文字幕 | 91免费版在线观看 | 亚洲国内精品在线 | 在线看片成人 | 正在播放国产一区二区 | 亚洲少妇影院 | 欧美另类巨大 | www久久久久 | 欧美日韩国产免费视频 | 黄色成人小视频 | 久久96国产精品久久99软件 | 99视频在线看 | 国产成人一区二区三区影院在线 | 999久久久久久 | 成 人 黄 色 免费播放 | 国产精品久久久久久久午夜片 | 成片免费 | 国产精品丝袜久久久久久久不卡 | 免费看国产视频 | 午夜精品视频一区二区三区在线看 | 人人插人人看 | 色老板在线 | 另类老妇性bbwbbw高清 | 天天综合网在线 | 69久久久| 国外成人在线视频网站 | 婷婷丁香狠狠爱 | 五月婷综合| 精品麻豆| 日本精品视频免费 | 久草在线观看资源 | 毛片网站在线观看 | 亚洲伊人第一页 | 国产精选在线观看 | 在线观看一区二区精品 | 97在线观视频免费观看 | 国产精品久久久久婷婷 | 青青草国产成人99久久 | 国产小视频免费在线网址 | 超碰97免费观看 | 玖玖视频 | 欧美日韩国产一区二区三区 | 亚洲高清在线视频 | 午夜精品视频一区 | 国内外成人免费在线视频 | 91中文字幕在线视频 | 天天爱综合 | 91在线观看欧美日韩 | 日操操| 亚洲人成人99网站 | 91在线视频免费91 | 成人手机在线视频 | 在线视频麻豆 | 精品久久1 | 欧美性做爰猛烈叫床潮 | 天天天综合网 | 激情欧美一区二区三区 | 亚洲视频 视频在线 | 91黄视频在线 | 亚洲国产色一区 | 久久久久久久久久亚洲精品 | 日韩欧美视频在线免费观看 | 久久,天天综合 | 婷婷六月丁香激情 | 天天射综合网站 | 亚洲精品视频在线观看视频 | av高清一区二区三区 | av免费网| 久久黄色免费 | 日韩黄色网络 | 91精品欧美| 色噜噜日韩精品一区二区三区视频 | 久久久男人的天堂 | 精品嫩模福利一区二区蜜臀 | 91精品推荐 | 99久久国产免费,99久久国产免费大片 | 视频高清 | 免费欧美精品 | 日韩在线视频免费播放 | www.天天综合| 亚洲手机av| 国产成人一区三区 | 99免费观看视频 | 九九九九精品 | 夜夜视频资源 | 亚洲免费成人 | 亚洲无吗av | 亚洲一区二区天堂 | 狠狠干网站 | 精品国产成人av在线免 | 国产精品美女久久久久久久久 | 午夜精品久久久久久99热明星 | 久久久午夜影院 | 亚洲国产成人高清精品 | 狠狠色丁香婷婷综合欧美 | 久久综合狠狠综合久久激情 | 国产精品黄色av | www好男人| 久草在线综合 | 久草久草视频 | 天天干天天干天天射 | 久久久久久久久久毛片 | 婷婷网五月天 | 亚洲成人黄色 | 色天天中文 | 国产韩国日本高清视频 | 国产精品免费人成网站 | www.夜夜操 | 伊人狠狠色丁香婷婷综合 | 日韩国产在线观看 | 日韩高清免费在线观看 | 91成人网在线播放 | www久久com| 性色av免费看 | 视频一区二区三区视频 | 久久久精选 | 久久久高清一区二区三区 | 1000部国产精品成人观看 | 亚洲精品免费在线播放 | 91免费视频国产 | 国产a国产a国产a | 亚洲成a人片在线www | 日韩字幕在线 | 18女毛片| 日韩在线短视频 | 国产成人黄色片 | 2019中文字幕网站 | 国产成人免费网站 | 精品亚洲免a | 69久久久久久久 | 五月婷婷丁香网 | 99热官网| 97精品一区二区三区 | 色香天天| 九九九九免费视频 | 在线观看久 | 久久国产欧美日韩 | 日韩在线免费 | 在线不卡中文字幕播放 | 成年人免费看 | 999在线视频 | 精品国产自在精品国产精野外直播 | 国产五月 | 日韩美视频 | 亚洲一区网| 一级成人网 | 亚洲日本黄色 | 免费在线黄 | 成人在线观看资源 | 国产黄色电影 | 欧美激情视频在线免费观看 | 成人免费视频网址 | 成人永久免费 | 亚洲精品乱码久久久久v最新版 | 国产在线91精品 | 久久久久久久精 | 久久综合久久综合这里只有精品 | 99久久爱| 婷婷av综合 | 午夜精品久久久久久中宇69 | 91成熟丰满女人少妇 | 韩国av一区二区三区在线观看 | 天天做天天干 | 久久久国产一区二区 | 中文字幕视频观看 | 狠狠色丁香久久婷婷综 | 国内丰满少妇猛烈精品播 | 欧美日本不卡视频 | 午夜久久久久久久久久影院 | 一级黄网| 日本久久久久久久久久 | 婷婷伊人五月 | 久久久国产精品久久久 | 中文字幕一二 | 免费毛片一区二区三区久久久 | 久久久久亚洲精品男人的天堂 | 欧美国产不卡 | 欧美乱码精品一区 |