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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

spring+springMvc+struts的SSH框架整合

發(fā)布時間:2023/12/9 c/c++ 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring+springMvc+struts的SSH框架整合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.建立一個web項目

2.導(dǎo)入SSH框架所需jar包

?

3.配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>SSHDemo</display-name><!--直接訪問項目時,依次查找下面的jsp進(jìn)行顯示 --><welcome-file-list><welcome-file>login.jsp</welcome-file><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!--上下文配置名字和路徑配置--><context-param><!-- 上下文參數(shù)名字 --><param-name>contextConfigLocation</param-name><!--上下文全局配置文件的位置,以根路徑作為開始找 --><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 定義監(jiān)聽事件 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 定義過濾的名字及其所在的地方 --><filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><!--定義需要攔截的后綴,只要滿足.action就會去查找對應(yīng)過濾器名字的攔截器實現(xiàn)類--><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><!--定義struts的過濾器名字和實現(xiàn)類--><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><!--定義struts滿足路徑/*條件,就進(jìn)入到filter-name為struts2的filter-class進(jìn)行實現(xiàn) --><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 定義會話超時時間 --><session-config><session-timeout>25</session-timeout></session-config></web-app>

4.配置applicationContext.xml文件

<?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:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.1.xsd"><!-- 加載Hibernate配置 --><!-- <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property></bean> --><!-- 定義dbcp數(shù)據(jù)源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><!-- 指定JDBC驅(qū)動類 --><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><!-- 提供連接數(shù)據(jù)庫的URL地址 --><property name="url" value="jdbc:mysql://localhost/spring?useSSL=false&amp;serverTimezone=UTC"></property><!-- 提供連接數(shù)據(jù)庫的用戶名和密碼 --><property name="username" value="root"></property><property name="password" value="root"></property></bean><!-- 定義SessionFactory Bean --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 為LocalSessionFactoryBean注入定義好的數(shù)據(jù)源 --><property name="dataSource"><ref bean="dataSource" /></property><!-- 添加Hibernate配置參數(shù) --><property name="hibernateProperties"><props><!-- 定義方言 --><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><!-- 定義運行時,是否在控制臺進(jìn)行將sql輸出 --><prop key="hibernate.show_sql">true</prop><!-- 定義運行時,是否在控制臺輸出的sql語句進(jìn)行格式化 --><prop key="hibernate.format_sql">true</prop></props></property><!-- 添加對象關(guān)系映射文件 --><property name="mappingDirectoryLocations"><list><value>classpath:com/sshdemo/entity/</value></list></property></bean><!-- 配置DAO --><bean id="employeeDao" class="com.sshdemo.dao.hibimpl.EmployeeDaoHibImpl"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 配置業(yè)務(wù)層 --><bean id="employeeService" class="com.sshdemo.service.impl.EmployeeServiceImpl"><property name="employeeDao" ref="employeeDao"></property></bean><!-- 定義事務(wù)管理器 --><bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><!-- read-only是表示調(diào)用這個方法時是否是子讀狀態(tài),一般只用于查詢,涉及更改時不要使用否則操作數(shù)據(jù)庫時會拋出異常并且不能對數(shù)據(jù)更改 --><tx:method name="find*" read-only="true" /><tx:method name="search*" read-only="true" /><tx:method name="query*" read-only="true" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="do*" propagation="REQUIRED" /><tx:method name="register*" propagation="REQUIRED" /><tx:method name="*" propagation="REQUIRED" read-only="true" /></tx:attributes></tx:advice><aop:config><!-- 定義切入點,表示當(dāng)執(zhí)行com.sshdemo.service包下面所有的類的所有方法及其各種參數(shù)的方法時切入事務(wù)管理 --><aop:pointcut id="serviceMethod"expression="execution(* com.sshdemo.service.*.*(..))" /><!-- 將事務(wù)通知與切入點組合 --><aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" /></aop:config><tx:annotation-driven transaction-manager="txManager"/><!-- 控制層 (id為struts.xml中的class) 以下每個bean必須都要增加scope="prototype"屬性 --><bean id="userAction" class="com.sshdemo.action.UserAction"scope="prototype"><property name="employeeService" ref="employeeService"></property></bean></beans>

5.建立實體類及其對應(yīng)的xml文件

package com.sshdemo.entity;/*** 員工 實體類。 */ public class Employee implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = 5106663630382037556L;private String sn;private Position position;private Department department;private String password;private String name;private String status;// Constructors/** default constructor */public Employee() {}/** full constructor */public Employee(Position position, Department department, String password,String name, String status) {this.position = position;this.department = department;this.password = password;this.name = name;this.status = status;}// Property accessors/*** @return 工號*/public String getSn() {return this.sn;}public void setSn(String sn) {this.sn = sn;}/*** @return 職務(wù)*/public Position getPosition() {return this.position;}public void setPosition(Position position) {this.position = position;}/*** @return 部門*/public Department getDepartment() {return this.department;}public void setDepartment(Department department) {this.department = department;}/*** @return 密碼*/public String getPassword() {return this.password;}public void setPassword(String password) {this.password = password;}/*** @return 姓名*/public String getName() {return this.name;}public void setName(String name) {this.name = name;}/*** @return 狀態(tài)*/public String getStatus() {return this.status;}public void setStatus(String status) {this.status = status;} }

創(chuàng)建employee對應(yīng)的xml文件:Employee.hbm.xml

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.sshdemo.entity"><class name="Employee" table="sys_employee"><id name="sn" type="string"><column length="20" name="sn" /><generator class="assigned" /></id><many-to-one class="Position" fetch="select" name="position"><column name="position_id" not-null="false"><comment>職務(wù)編號</comment></column></many-to-one><many-to-one class="Department" fetch="select" name="department"><column name="department_id" not-null="false"><comment>部門</comment></column></many-to-one><property lazy="false" name="password"type="string"><column length="45" name="password" not-null="true"><comment>密碼</comment></column></property><property lazy="false" name="name" type="string"><column length="45" name="name" not-null="true"><comment>姓名</comment></column></property><property lazy="false" name="status" type="string"><column length="20" name="status" not-null="true"><comment>狀態(tài)</comment></column></property></class> </hibernate-mapping>

創(chuàng)建部門的實體表和xml文件

package com.sshdemo.entity;/*** 部門 實體類。 */ public class Department implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = 5073258499319872911L;private Integer id;private Employee manager;private String name;// Constructors/** default constructor */public Department() {}/** minimal constructor */public Department(String name) {this.name = name;}/** full constructor */public Department(Employee manager, String name) {this.manager = manager;this.name = name;}// Property accessors/*** @return 部門編號*/public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}/*** @return 部門經(jīng)理*/public Employee getManager() {return this.manager;}public void setManager(Employee manager) {this.manager = manager;}/*** @return 部門名稱*/public String getName() {return this.name;}public void setName(String name) {this.name = name;} } <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--package指定的是映射的實體類的位置路徑 --> <hibernate-mapping package="com.sshdemo.entity"><!-- name指定實體類的名字,table定義數(shù)據(jù)庫中建立的表的名字 --><class name="Department" table="sys_department"><id name="id" type="integer"><!-- 這個地方定義的是數(shù)據(jù)庫中對應(yīng)實體類的列名,可以不定義,它的生成就會和實體類一樣 --><column name="id" /><!-- 主鍵的增長方式,native表示自增長 --><generator class="native" /></id><many-to-one name="manager" class="Employee" fetch="select"><column name="manager_sn" length="20"><comment>部門經(jīng)理</comment></column></many-to-one><property name="name" type="string"><column name="name" length="45" not-null="true"><comment>部門名稱</comment></column></property></class> </hibernate-mapping>

創(chuàng)建Dictionary

package com.sshdemo.entity;/*** 數(shù)據(jù)字典 實體類。 */ public class Dictionary implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = -3482598030856972288L;private long id;private String type;private String item;private String value;// Constructors/** default constructor */public Dictionary() {}/** full constructor */public Dictionary(String type, String item, String value) {this.type = type;this.item = item;this.value = value;}// Property accessors/*** @return 編號*/public long getId() {return this.id;}public void setId(long id) {this.id = id;}/*** @return 類型*/public String getType() {return this.type;}public void setType(String type) {this.type = type;}/*** @return 條目*/public String getItem() {return this.item;}public void setItem(String item) {this.item = item;}/*** @return*/public String getValue() {return this.value;}public void setValue(String value) {this.value = value;}} <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.sshdemo.entity"><class name="Dictionary" table="sys_dictionary"><id name="id" type="long"><column name="id" /><generator class="native" /></id><property name="type" type="string"><column name="type" length="20" not-null="true" /></property><property name="item" type="string"><column name="item" length="20" not-null="true" /></property><property name="value" type="string"><column name="value" length="20" not-null="true" /></property></class> </hibernate-mapping>

創(chuàng)建positon類和xml

package com.sshdemo.entity;/*** 職務(wù) 實體類。 */ public class Position implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = 4107962667586915867L;private Integer id;private String nameCn;private String nameEn;// Constructors/** default constructor */public Position() {}/** minimal constructor */public Position(String nameCn, String nameEn) {this.nameCn = nameCn;this.nameEn = nameEn;}// Property accessors/*** @return 職務(wù)編號*/public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}/*** @return 職務(wù)名稱(中文)*/public String getNameCn() {return this.nameCn;}public void setNameCn(String nameCn) {this.nameCn = nameCn;}/*** @return 職務(wù)名稱(英文)*/public String getNameEn() {return this.nameEn;}public void setNameEn(String nameEn) {this.nameEn = nameEn;}} <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.sshdemo.entity"><class name="Position" table="sys_position"><id name="id" type="integer"><column name="id" /><generator class="native" /></id><property name="nameCn" type="string"><column name="name_cn" length="45" not-null="true"><comment>職務(wù)名稱(中文)</comment></column></property><property name="nameEn" type="string"><column name="name_en" length="45" not-null="true"><comment>職務(wù)名稱(英文)</comment></column></property></class> </hibernate-mapping>

創(chuàng)建CheckResult類和xml文件

package com.sshdemo.entity;import java.util.Date;/*** 審核結(jié)果 實體類。 */ public class CheckResult implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = 8366759716422180617L;private long id;private String sheetType;private long sheetId;private Date checkTime;private String type;private Employee checker;private String result;private String comment;// Constructors/** default constructor */public CheckResult() {}/** minimal constructor */public CheckResult(String sheetType, long sheetId, Date checkTime,String type, Employee checker, String result) {this.sheetType = sheetType;this.sheetId = sheetId;this.checkTime = checkTime;this.type = type;this.checker = checker;this.result = result;}/** full constructor */public CheckResult(String sheetType, long sheetId, Date checkTime,String type, Employee checker, String result, String comment) {this.sheetType = sheetType;this.sheetId = sheetId;this.checkTime = checkTime;this.type = type;this.checker = checker;this.result = result;this.comment = comment;}// Property accessors/*** @return 編號*/public long getId() {return this.id;}public void setId(long id) {this.id = id;}/*** @return 單據(jù)類型*/public String getSheetType() {return this.sheetType;}public void setSheetType(String sheetType) {this.sheetType = sheetType;}/*** @return 單據(jù)編號*/public long getSheetId() {return this.sheetId;}public void setSheetId(long sheetId) {this.sheetId = sheetId;}/*** @return 審核時間*/public Date getCheckTime() {return this.checkTime;}public void setCheckTime(Date checkTime) {this.checkTime = checkTime;}/*** @return 審核類別*/public String getType() {return this.type;}public void setType(String type) {this.type = type;}/*** @return 審核人*/public Employee getChecker() {return this.checker;}public void setChecker(Employee checker) {this.checker = checker;}/*** @return 審核結(jié)果*/public String getResult() {return this.result;}public void setResult(String result) {this.result = result;}/*** @return 審核意見*/public String getComment() {return this.comment;}public void setComment(String comment) {this.comment = comment;}} <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.sshdemo.entity"><class name="CheckResult" table="biz_check_result"><id name="id" type="long"><column name="id" /><generator class="native" /></id><property name="sheetType" type="string"><column name="sheet_type" length="20" not-null="true"><comment>單據(jù)類型</comment></column></property><property name="sheetId" type="long"><column name="sheet_id" not-null="true"><comment>單據(jù)編號</comment></column></property><property name="checkTime" type="date"><column name="check_time" length="19" not-null="true"><comment>審核時間</comment></column></property><property name="type" type="string"><column name="type" length="20" not-null="true"><comment>審核類型</comment></column></property><many-to-one name="checker" class="Employee" fetch="select"><column name="checker_sn" length="20" not-null="true"><comment>審核人</comment></column></many-to-one><property name="result" type="string"><column name="result" length="20" not-null="true"><comment>審核結(jié)果</comment></column></property><property name="comment" type="string"><column name="comment"><comment>審核意見</comment></column></property></class> </hibernate-mapping>

創(chuàng)建ClaimVoucher類

package com.sshdemo.entity;import java.util.Date; import java.util.HashSet; import java.util.Set;/*** 報銷申請單 實體類。 */ public class ClaimVoucher implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = -1763618295413371212L;private long id;private Employee nextDealBy;private Employee creator;private Date createTime;private String event;private double totalAccount;private String status;private Set<ClaimVoucherDetail> details = new HashSet<ClaimVoucherDetail>(0);// Constructors /** default constructor */public ClaimVoucher() {}/** minimal constructor */public ClaimVoucher(Employee employeeByCreateSn, Date createTime,String event, double totalAccount, String status) {this.creator = employeeByCreateSn;this.createTime = createTime;this.event = event;this.totalAccount = totalAccount;this.status = status;}/** full constructor */public ClaimVoucher(Employee employeeByNextDealSn,Employee employeeByCreateSn, Date createTime, String event,double totalAccount, String status, Set<ClaimVoucherDetail> claimVoucherDetails) {this.nextDealBy = employeeByNextDealSn;this.creator = employeeByCreateSn;this.createTime = createTime;this.event = event;this.totalAccount = totalAccount;this.status = status;this.details = claimVoucherDetails;}// Property accessors/*** @return 編號*/public long getId() {return this.id;}public void setId(long id) {this.id = id;}/*** @return 待處理人*/public Employee getNextDealBy() {return this.nextDealBy;}public void setNextDealBy(Employee employeeByNextDealSn) {this.nextDealBy = employeeByNextDealSn;}/*** @return 填報人*/public Employee getCreator() {return this.creator;}public void setCreator(Employee employeeByCreateSn) {this.creator = employeeByCreateSn;}/*** @return 填寫時間*/public Date getCreateTime() {return this.createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}/*** @return 事由*/public String getEvent() {return this.event;}public void setEvent(String event) {this.event = event;}/*** @return 總金額*/public double getTotalAccount() {return this.totalAccount;}public void setTotalAccount(double totalAccount) {this.totalAccount = totalAccount;}/*** @return 狀態(tài)*/public String getStatus() {return this.status;}public void setStatus(String status) {this.status = status;}/*** @return 明細(xì)*/public Set<ClaimVoucherDetail> getDetails() {return this.details;}public void setDetails(Set<ClaimVoucherDetail> claimVoucherDetails) {this.details = claimVoucherDetails;}} <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.sshdemo.entity"><class name="ClaimVoucher" table="biz_claim_voucher"><id name="id" type="long"><column name="id" /><generator class="native" /></id><many-to-one name="nextDealBy" class="Employee" fetch="select"><column name="next_deal_sn" length="20"><comment>待處理人</comment></column></many-to-one><many-to-one name="creator" class="Employee" fetch="select"><column name="create_sn" length="20" not-null="true"><comment>填報人</comment></column></many-to-one><property name="createTime" type="date"><column name="create_time" length="19" not-null="true"><comment>填寫時間</comment></column></property><property name="event" type="string"><column name="event" not-null="true"><comment>事由</comment></column></property><property name="totalAccount" type="double"><column name="total_account" precision="10" not-null="true"><comment>總金額</comment></column></property><property name="status" type="string"><column name="status" length="20" not-null="true"><comment>狀態(tài)</comment></column></property><set name="details" inverse="true"><key><column name="main_id" not-null="true"><comment>明細(xì)</comment></column></key><one-to-many class="ClaimVoucherDetail" /></set></class> </hibernate-mapping>

創(chuàng)建ClaimVoucherDetail類和xml

package com.sshdemo.entity;/*** 報銷申請單明細(xì) 實體類。 */ public class ClaimVoucherDetail implements java.io.Serializable {// Fieldsprivate static final long serialVersionUID = -5640087904678377183L;private long id;private ClaimVoucher master;private String item;private double account;private String desc;// Constructors/** default constructor */public ClaimVoucherDetail() {}/** full constructor */public ClaimVoucherDetail(ClaimVoucher claimVoucher, String item,double account, String desc) {this.master = claimVoucher;this.item = item;this.account = account;this.desc = desc;}// Property accessors/*** @return 編號*/public long getId() {return this.id;}public void setId(long id) {this.id = id;}/*** @return 主單*/public ClaimVoucher getMaster() {return this.master;}public void setMaster(ClaimVoucher claimVoucher) {this.master = claimVoucher;}/*** @return 項目*/public String getItem() {return this.item;}public void setItem(String item) {this.item = item;}/*** @return 金額*/public double getAccount() {return this.account;}public void setAccount(double account) {this.account = account;}/*** @return 費用說明*/public String getDesc() {return this.desc;}public void setDesc(String desc) {this.desc = desc;}} <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.sshdemo.entity"><class name="ClaimVoucherDetail" table="biz_claim_voucher_detail"><id name="id" type="long"><column name="id" /><generator class="native" /></id><many-to-one name="master" class="ClaimVoucher" fetch="select"><column name="main_id" not-null="true"><comment>報銷單(主單)編號</comment></column></many-to-one><property name="item" type="string"><column name="item" length="20" not-null="true"><comment>項目</comment></column></property><property name="account" type="double"><column name="account" precision="10" not-null="true"><comment>金額</comment></column></property><property name="desc" type="string"><column name="desc" length="200" not-null="true"><comment>費用說明</comment></column></property></class> </hibernate-mapping>

6.創(chuàng)建com.sshdemo.dao的employeeDao接口

package com.sshdemo.dao;import java.io.Serializable; import java.util.List;import com.sshdemo.entity.Employee;/*** DAO接口。* */ public interface EmployeeDao {/*** 添加用戶* * @param employee 用戶*/void add(Employee employee);/*** 根據(jù)用戶Id刪除對象* @param id主鍵*/void deleteById(Serializable id);/*** 修改用戶* * @param employee用戶*/void update(Employee employee);/*** 根據(jù)用戶id加載對象* @param id主鍵* @return 返回用戶對象*/Employee get(Serializable id);/*** 根據(jù)查詢條件查詢用戶數(shù)據(jù)。* @param condition查詢條件* @return 如果condition為null,返回所有用戶數(shù)據(jù),否則,使用用戶名和密碼查詢用戶數(shù)據(jù)*/List<Employee> find(Employee condition); }

7.創(chuàng)建對應(yīng)的實現(xiàn)類

package com.sshdemo.dao.hibimpl;import java.io.Serializable; import java.util.List;import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.transaction.annotation.Transactional;import com.sshdemo.dao.EmployeeDao; import com.sshdemo.entity.Employee;/*** 這個是員工類的dao層,繼承HibernateDaoSupport,可以按ctrl+F3* 可以看到這個類中包含一個getHibernateTemplate()和setHibernateTemplate()方法* 我們通過上下文配置時就已經(jīng)將template用spring進(jìn)行了注入,此時我們就通過* teaplate可以獲取到相應(yīng)的數(shù)據(jù)源,使用template進(jìn)行調(diào)用對應(yīng)的增刪改查* */ public class EmployeeDaoHibImpl extends HibernateDaoSupport implementsEmployeeDao {/** (non-Javadoc)* * @see com.sshdemo.dao.EmployeeDao#add(com.sshdemo.entity.Employee)*/@Transactionalpublic void add(Employee employee) {HibernateTemplate hibTemp = getHibernateTemplate();// hibTemp.setFlushMode(HibernateTemplate.FLUSH_AUTO); hibTemp.save(employee);}/** (non-Javadoc)* * @see com.sshdemo.dao.EmployeeDao#deleteById(java.io.Serializable)*/public void deleteById(Serializable id) {super.getHibernateTemplate().delete(this.get(id));}/** (non-Javadoc)* * @see com.sshdemo.dao.EmployeeDao#update(com.sshdemo.entity.Employee)*/public void update(Employee employee) {super.getHibernateTemplate().update(employee);}/** (non-Javadoc)* * @see com.sshdemo.dao.EmployeeDao#get(java.io.Serializable)*/public Employee get(Serializable id) {return (Employee) super.getHibernateTemplate().get(Employee.class, id);}/** (non-Javadoc)* * @see com.sshdemo.dao.EmployeeDao#find(com.sshdemo.entity.Employee)*/@SuppressWarnings("unchecked")public List<Employee> find(Employee condition) {return getHibernateTemplate().find("from Employee e where e.name=? and e.password=?",new Object[] { condition.getName(), condition.getPassword() });} }

8.在com.sshdemo.utils下定義一個MD5加密算法的類

package com.sshdemo.utils;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.security.MessageDigest;public class MD5 {private String inStr;//輸入java.security.MessageDigest下面的一個類private MessageDigest md5;/*** 以下是一個帶參數(shù)的構(gòu)造函數(shù),創(chuàng)建對象時就將* inStr和MessageDigest賦值* @param 楊超*/public MD5(String inStr) {this.inStr = inStr;try {this.md5 = MessageDigest.getInstance("MD5");} catch (Exception e) {System.out.println(e.toString());e.printStackTrace();}}/* 下面是關(guān)鍵的md5算法 */public String compute() {//將創(chuàng)建對象時的字符串轉(zhuǎn)換成字符數(shù)組char[] charArray = this.inStr.toCharArray();//根據(jù)字符數(shù)組的長度初始化一個Byte數(shù)組byte[] byteArray = new byte[charArray.length];//將字符數(shù)組轉(zhuǎn)換成byte數(shù)組for (int i = 0; i < charArray.length; i++)byteArray[i] = (byte) charArray[i];//將字節(jié)數(shù)組通過digest 計算存儲在byte數(shù)組中byte[] md5Bytes = this.md5.digest(byteArray);//用它來保證線程安全StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++) {//將每個md5Bytes進(jìn)行一個或的位運算符計算,最終將其轉(zhuǎn)換成二進(jìn)制數(shù)字int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val));}//返回一個字符串return hexValue.toString();}/* 下面是主函數(shù)調(diào)用 */public static void main(String[] args) {String A = null;try {System.out.println("請輸入你要加密的數(shù)據(jù):");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));A = br.readLine();} catch (IOException e) {};MD5 md5 = new MD5(A);String postString = md5.compute();System.out.println("加密后的數(shù)據(jù):" + postString);} }

?

9.創(chuàng)建MVC設(shè)計模式的C層

package com.sshdemo.action;import java.util.Map;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sshdemo.entity.Employee; import com.sshdemo.service.EmployeeService; import com.sshdemo.utils.MD5;/*** 用戶登錄action。* */ public class UserAction extends ActionSupport {private static final long serialVersionUID = -6095372451084071851L;private Employee employee = null;private EmployeeService employeeService = null;/*** 用戶登錄。* * @return* @throws Exception*/public String login() throws Exception {Employee newEmployee = null;try {// 對登錄密碼進(jìn)行MD5加密employee.setPassword(new MD5(employee.getPassword()).compute());newEmployee = employeeService.login(employee);} catch (Exception e) {this.addActionMessage(e.getMessage());}String ret = INPUT;if (newEmployee == null) {ret = INPUT;} else {Map<String, Object> session = ActionContext.getContext().getSession();session.put("employee", newEmployee);String nameCn = newEmployee.getPosition().getNameCn();if ("普通員工".equals(nameCn)) {ret = "staff";} else if ("部門經(jīng)理".equals(nameCn)) {ret = "deptManager";} else if ("總經(jīng)理".equals(nameCn)) {ret = "manager";} else if ("財務(wù)".equals(nameCn)) {ret = "cashier";}}return ret;}/*** 用戶退出。* * @return* @throws Exception*/public String logout() throws Exception {ActionContext ac = ActionContext.getContext();ac.getSession().remove("employee");return SUCCESS;}public String register() throws Exception{String ret = "registerfail";try {// 對登錄密碼進(jìn)行MD5加密employee.setPassword(new MD5(employee.getPassword()).compute());employeeService.register(employee);ret = "registerok";} catch (Exception e) {this.addActionMessage(e.getMessage());}return ret;}public void setEmployee(Employee employee) {this.employee = employee;}public void setEmployeeService(EmployeeService employeeService) {this.employeeService = employeeService;}public Employee getEmployee() {return employee;}public EmployeeService getEmployeeService() {return employeeService;} }

10.創(chuàng)建一個ExportDb創(chuàng)建在各實體類中定義好的xml對應(yīng)的數(shù)據(jù)庫表格

package com.sshdemo.utils;import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;; /*** 將hbm生成ddl* @author BCH**/ public class ExportDb {public static void main(String[] args) {//默認(rèn)讀取hibernate.cfg.xml文件Configuration cfr = new Configuration().configure();SchemaExport export = new SchemaExport(cfr);export.create(true, true);} }

11.創(chuàng)建對應(yīng)的jsp

login.jsp

<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>登錄</title></head><body><h1>登錄</h1><s:actionmessage /><s:form action="login"><s:textfield name="employee.name" label="用戶名" /><s:password name="employee.password" label="密碼" /><s:submit value="登錄"></s:submit></s:form></body> </html> <%@ taglib prefix="s" uri="/struts-tags"%>,這里引入了一個jsp腳本的指令,定義了一個s前綴
注意:這里對應(yīng)的name=employee.name;這里對應(yīng)的是實體類中name和password屬性
register.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>注冊</title></head><body><h1>注冊</h1><s:actionmessage /><s:form action="register"><s:textfield name="employee.sn" label="序號" /><s:textfield name="employee.name" label="用戶名" /><s:password name="employee.password" label="密碼" /><s:textfield name="employee.status" label="狀態(tài)" /><s:submit value="注冊"></s:submit></s:form></body> </html>

manager,jsp

?

<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>總經(jīng)理待審核頁</title></head><body><h1>總經(jīng)理待審核頁</h1><%if (request.getSession().getAttribute("employee") != null){%><h1>${sessionScope.employee.name } 登錄成功</h1><%} else {%><h1>你還沒登錄,請您先登錄。</h1><%}%><br><a href="login.jsp">繼續(xù)操作</a></body> </html>

staff.jsp

<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>添加報銷單頁面</title></head><body><h1>添加報銷單頁面</h1><%if (request.getSession().getAttribute("employee") != null){%><h1>${sessionScope.employee.name } 登錄成功</h1><%} else {%><h1>你還沒登錄,請您先登錄。</h1><%}%><br><a href="login.jsp">繼續(xù)操作</a></body> </html>

cashier.jsp

<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>財務(wù)處理頁</title></head><body><h1>財務(wù)處理頁</h1><%if (request.getSession().getAttribute("employee") != null){%><h1>${sessionScope.employee.name } 登錄成功</h1><%} else {%><h1>你還沒登錄,請您先登錄。</h1><%}%><br><a href="login.jsp">繼續(xù)操作</a></body> </html>

deptManager.jsp

<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>部門經(jīng)理待審核頁</title></head><body><h1>部門經(jīng)理待審核頁</h1><%if (request.getSession().getAttribute("employee") != null){%><h1>${sessionScope.employee.name } 登錄成功</h1><%} else {%><h1>你還沒登錄,請您先登錄。</h1><%}%><br><a href="login.jsp">繼續(xù)操作</a></body> </html>

運行原理以login.jsp為例:

直接在eclipse上運行即可:點擊登錄后—后將表單提交到action后面對應(yīng)的login去—此時會去struts.xml文件里面找到name=login的action,然后就會根據(jù)class找到對應(yīng)業(yè)務(wù)處理的類的位置及其對應(yīng)的Method方法

—由于在jsp定義了對應(yīng)的name=employee.XX它就會去找實體類對應(yīng)的屬性,此時它對employee就已經(jīng)做了一個封裝,將前端傳回的參數(shù)new 成了一個對象,我們拿到對象之后,就可以對它進(jìn)行一系列的操作

并返回不同的結(jié)果—此時結(jié)果又會回到struts.xml中的<result name="input">/login.jsp</result>,它會根據(jù)不同的結(jié)果判斷顯示出不同的結(jié)果

?

其它注冊等原理一樣,不再贅述

?

總結(jié):對應(yīng)SSH各部分所起到的作用:spring起一個鏈接的作用,使得代碼之間的耦合性降低,如數(shù)據(jù)源的配置sqlSessionFactory、對應(yīng)的template的注入等

  struts取代了servlet,通過jsp上的指令映射到struts配置文件,然后再映射到對應(yīng)業(yè)務(wù)邏輯處理所在的位置,根據(jù)返回結(jié)果,顯示出不同的視圖

  Hibernate它起到的作用不用去管JDBC實現(xiàn),直接對對象進(jìn)行操作,最終會根據(jù)它的HQL語句對數(shù)據(jù)庫實現(xiàn)增刪改查

?

轉(zhuǎn)載于:https://www.cnblogs.com/fly-boy/p/7508035.html

總結(jié)

以上是生活随笔為你收集整理的spring+springMvc+struts的SSH框架整合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

日韩av不卡在线播放 | 亚洲最快最全在线视频 | 久久99精品国产麻豆宅宅 | 天天综合久久 | 国产免费观看久久 | 国产亚洲精品精品精品 | 免费观看福利视频 | 在线精品一区二区 | 午夜国产影院 | 成人香蕉视频 | 最新黄色av网址 | 国产成人香蕉 | 精品视频在线视频 | 在线中文字幕网站 | 久久久久亚洲精品国产 | 色婷婷福利视频 | 91av免费观看 | 精品国产一区二区三区av性色 | 国产精品自拍av | 国产99久久| 在线看国产一区 | 久久久亚洲影院 | 国产精彩视频一区 | 91香蕉视频720p | 成年人免费在线观看网站 | 在线观看国产高清视频 | 久久精品99国产精品酒店日本 | 福利一区二区在线 | 日韩天天干 | 欧美小视频在线 | 久久亚洲欧美 | 日韩激情视频在线 | 在线观看你懂的网址 | 在线观看韩日电影免费 | 中文字幕在线影院 | 国内精品视频免费 | 久久一久久 | 久草视频中文在线 | 色av资源网 | 日韩一级成人av | 欧洲精品视频一区 | 2019中文字幕第一页 | 久青草影院 | 色噜噜色噜噜 | 免费福利在线观看 | 久久午夜影视 | 天天干婷婷 | 成人wwwxxx视频 | 日日摸日日添日日躁av | 成人a在线 | 欧美视频日韩视频 | 婷婷丁香久久五月婷婷 | 久久尤物电影视频在线观看 | 日本公乱妇视频 | 中文字幕一区二区在线播放 | 夜色成人av | 色综合久久天天 | 日韩激情三级 | 久久免费视频5 | 五月天婷婷在线视频 | av三区在线 | 久久久国产精品人人片99精片欧美一 | 狠狠精品 | 亚洲免费精品一区二区 | 国产成人精品一区在线 | 亚洲免费永久精品国产 | 香蕉视频网址 | 婷婷精品视频 | 精品久久久久亚洲 | 狠狠躁夜夜躁人人爽视频 | 日日干综合 | 成人久久影院 | 狠狠色丁香久久婷婷综合_中 | 狠狠色丁香久久婷婷综合五月 | 免费激情网 | 国产高清久久久 | 91在线视频在线 | 亚洲女人天堂成人av在线 | 日韩剧情 | 成人aⅴ视频| 五月婷婷色 | 在线观看免费黄色 | 欧美日韩国产精品一区二区亚洲 | 黄污视频网站 | 久久久久久蜜桃一区二区 | www.久热| 久久午夜国产 | 亚洲黄色三级 | 亚洲资源网 | 亚洲国产精品第一区二区 | 香蕉视频一级 | 日韩一区二区三区高清免费看看 | 国产免码va在线观看免费 | 日本一区二区三区免费看 | www.五月激情.com | 麻豆视频在线免费 | 亚洲一区二区视频在线播放 | 日本中文字幕高清 | 日韩精品一区二区三区视频播放 | 久热av在线 | 婷婷久久丁香 | 六月色婷 | 在线观看一级视频 | 久久久久高清毛片一级 | av免费看av| 日韩欧美成| 天天操天天摸天天爽 | 99久久久久久 | 亚洲精品 在线视频 | 蜜臀久久99静品久久久久久 | 精精国产xxxx视频在线播放 | 美女网站视频色 | 91亚洲精品国偷拍自产在线观看 | 久草电影免费在线观看 | 激情综合网在线观看 | 免费观看完整版无人区 | 亚洲精品 在线视频 | 97天天干| 福利二区视频 | 黄色在线看网站 | 午夜av免费观看 | 国产理论片在线观看 | 日韩久久久久久久久 | 色综合久久综合网 | 国产精品一区二区美女视频免费看 | 亚洲电影一区二区 | 国产伦精品一区二区三区免费 | 国产精品99久久久久人中文网介绍 | 91成人在线观看高潮 | 毛片基地黄久久久久久天堂 | 欧美a级一区二区 | 国产精品69av | 久久精品视频国产 | 久久成人一区二区 | 99综合电影在线视频 | 日韩中文字幕网站 | 人人插人人爱 | 日日夜夜操操操操 | 福利视频导航网址 | 免费在线国产黄色 | 久久久精品国产一区二区三区 | 蜜桃麻豆www久久囤产精品 | 麻豆视频在线观看免费 | 波多野结衣亚洲一区二区 | 国产69精品久久app免费版 | 人人插人人射 | 国产精品久久久久免费观看 | 日韩av在线免费播放 | 欧美日韩精品二区第二页 | 69精品视频在线观看 | 日本中文字幕久久 | 亚洲视频1| 97日日 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 麻豆传媒视频在线 | 久久女同性恋中文字幕 | 在线精品在线 | 黄色在线成人 | 久操中文字幕在线观看 | 久草青青在线观看 | 亚洲久草网 | 国产午夜三级一区二区三 | 久久激情电影 | 日韩精品中文字幕在线不卡尤物 | 91亚洲精品久久久蜜桃 | www亚洲视频 | 国产一级片免费视频 | 久久国产一二区 | 少妇搡bbbb搡bbb搡忠贞 | 精品亚洲免费视频 | 国产一区二区在线免费播放 | 中文字幕免费国产精品 | 一级黄色免费 | 久久免费在线观看视频 | 特级黄色一级 | 日本黄色免费网站 | 在线 高清 中文字幕 | 丁香综合五月 | 91在线免费看片 | 国产精品久久久久久久久久三级 | 国产一在线精品一区在线观看 | 国产精品一区二区av日韩在线 | 中文字幕久久精品一区 | 亚洲在线视频播放 | 九色91在线 | 日日夜夜天天人人 | 久久久91精品国产一区二区精品 | 国产三级精品三级在线观看 | 91成人在线观看高潮 | 成人a免费看 | 天天操夜操视频 | 日韩黄色免费电影 | 免费日韩电影 | 免费能看的黄色片 | 久久久国产精品亚洲一区 | 999视频在线播放 | 天天草综合网 | 日韩啪视频 | 精品国产1区2区3区 国产欧美精品在线观看 | 久久久久久久久影院 | 久保带人 | 99视频这里有精品 | 九九亚洲精品 | 日韩电影一区二区在线观看 | 国产国语在线 | 亚洲人人网 | 国产一区欧美在线 | 亚洲视频网站在线观看 | 人人干人人模 | 成人动漫精品一区二区 | 免费视频黄色 | 美女黄久久 | 天天夜夜亚洲 | 色偷偷88888欧美精品久久久 | 97超碰福利久久精品 | 国产精品久久久免费 | 亚洲精品女| 日本大片免费观看在线 | 亚洲aⅴ一区二区三区 | 亚洲激情视频在线观看 | 999国内精品永久免费视频 | 日本中文字幕网站 | 免费福利在线播放 | 91福利视频免费 | 在线观看av黄色 | 99精品偷拍视频一区二区三区 | 日本aaaa级毛片在线看 | 久久精品一区二区三区四区 | 日韩国产精品一区 | www麻豆视频 | 成人在线视频在线观看 | 日韩va在线观看 | 中文字幕av免费观看 | 亚洲欧美国内爽妇网 | 亚洲电影一区二区 | 国产精品自产拍在线观看 | 久久精品一区八戒影视 | 免费在线一区二区 | 天天久久夜夜 | 99免费在线视频观看 | 国产一区二区观看 | 激情欧美一区二区免费视频 | 99色资源| 最近能播放的中文字幕 | 久久成人高清视频 | 中文字幕视频免费观看 | 九九久久久久久久久激情 | 高清一区二区 | 天天干天天做天天爱 | 91久久精品一区二区二区 | 久久国产精品成人免费浪潮 | 涩涩成人在线 | 国产成人1区 | 超碰在线最新地址 | 成人va在线观看 | 久久国产精品区 | 中文字幕在线观看完整版电影 | 国产精品免费在线视频 | 欧美日韩成人一区 | 草久在线 | 国产精品自产拍在线观看桃花 | 国产最新91| 日韩欧美在线视频一区二区 | 免费影视大全推荐 | 国产伦理精品一区二区 | 伊人成人激情 | 日韩免费在线播放 | 日韩美女一级片 | 久久国产欧美日韩 | av成人动漫 | 在线观看国产永久免费视频 | 久久人人97超碰com | 国产黄色免费电影 | 国产福利91精品一区 | 国产二级视频 | 狠狠色丁香久久婷婷综合五月 | 久操中文字幕在线观看 | 黄色在线观看网站 | 97超视频 | 99热这里| 国产精品一区二区三区免费看 | 色婷婷狠狠五月综合天色拍 | 国内久久久久久 | 免费观看国产精品视频 | 精品国产一区二区三区不卡 | 99产精品成人啪免费网站 | a黄色片在线观看 | 国产精品久久在线观看 | 欧美一区二区三区在线视频观看 | 免费午夜av | 一区二区中文字幕在线观看 | 久久久免费视频播放 | 亚洲成a人片在线观看网站口工 | 狠狠色丁香久久婷婷综合五月 | av黄网站| 精品视频9999| 9在线观看免费高清完整版 玖玖爱免费视频 | 日日摸日日 | 欧美另类交人妖 | 91视频大全 | 久久av在线 | av888av.com| 成人av在线电影 | 成年人免费在线播放 | 人人澡人人模 | 日韩精品你懂的 | 午夜精品福利一区二区三区蜜桃 | 91中文在线观看 | 免费视频久久久久久久 | 爱干视频| 在线看岛国av | 97超碰成人| 色综合久久久久综合体 | 四虎永久免费 | 能在线看的av | 最新国产视频 | 在线婷婷| 亚洲国产精品电影在线观看 | 日本天天操 | 日韩精品一区二区三区在线播放 | 国产精品一区二区吃奶在线观看 | 国产午夜三级一区二区三桃花影视 | 一本—道久久a久久精品蜜桃 | 最新极品jizzhd欧美 | 色综合a| 亚洲人人精品 | 国产精品久久久久久久久软件 | 亚洲第一区精品 | 美女性爽视频国产免费app | 精品一区二区6 | 欧美黄污视频 | 久插视频 | 2019中文字幕网站 | 成人三级黄色 | 久久久亚洲麻豆日韩精品一区三区 | 天天爽天天爽夜夜爽 | 毛片基地黄久久久久久天堂 | 欧美91视频 | 日本性视频 | 精品国产成人在线 | 久久久国产精品久久久 | 国产精品黑丝在线观看 | 一区二区三区四区精品视频 | 狠狠色噜噜狠狠狠合久 | 久久人人爽人人片av | 亚洲精品欧美精品 | www.99在线观看 | 天天干天天草 | 天天爱天天干天天爽 | 成人影片在线播放 | 久久免费视频1 | 国产一区二区中文字幕 | 欧美资源在线观看 | 久久免费视频这里只有精品 | 欧美激情在线网站 | 国产精品一区欧美 | 欧美有色 | 黄污视频大全 | 亚洲第一久久久 | 日韩videos| 精品福利在线视频 | 狠狠色丁香久久婷婷综合_中 | 亚洲国产精品久久 | 六月丁香综合 | 精品视频免费久久久看 | 国产在线精品国自产拍影院 | 日本精品久久久久久 | 日韩一区二区免费在线观看 | 在线观看视频你懂得 | 久久精品电影 | 亚洲aⅴ久久精品 | 色av资源网| 天天操天天操天天操天天 | 日韩在线免费播放 | 日本中文乱码卡一卡二新区 | 日韩av资源在线观看 | 日韩欧美在线观看一区 | 伊人久久电影网 | 欧美日韩国语 | 久久超| 国产精品欧美日韩 | 久久综合99| 亚洲一区二区三区四区精品 | 激情视频91| 91精品国产成人 | 欧美日韩三级在线观看 | 亚洲码国产日韩欧美高潮在线播放 | 久久综合国产伦精品免费 | 亚州精品天堂中文字幕 | 欧美一级久久久 | 日韩欧美69 | 国产精品 欧美 日韩 | 国产黄色观看 | 免费涩涩网站 | 91热爆视频| 视频二区 | 日韩欧美一区二区在线 | 狠狠撸电影| 69av在线视频 | 在线小视频你懂得 | 欧美a性| 黄色大全免费网站 | 探花视频在线观看+在线播放 | 国产精品mm | 国产伦精品一区二区三区无广告 | 日韩精品一区二区在线 | 蜜臀久久99精品久久久酒店新书 | 国产一区精品在线 | 在线91精品 | 大型av综合网站 | 日韩成人精品一区二区三区 | 少妇bbb| 日本精品在线 | 人人澡人人添人人爽一区二区 | 91久久一区二区 | 91九色成人蝌蚪首页 | 97精品国产97久久久久久粉红 | 成人免费视频观看 | 玖玖玖精品 | 亚洲伦理电影在线 | 日韩网站免费观看 | 国产一区二区三区久久久 | 欧美国产日韩中文 | 夜夜爽88888免费视频4848 | 99产精品成人啪免费网站 | 国产成人久久av977小说 | 国产精品18久久久久久首页狼 | 99精品欧美一区二区蜜桃免费 | 免费网站看v片在线a | 成年人视频在线免费播放 | 97成人精品| 国产精品久久久久久久久久不蜜月 | 日韩高清二区 | 黄色一级性片 | 97成人精品区在线播放 | 麻豆91精品 | 在线电影 你懂得 | 国产成人亚洲在线电影 | 五月天com| 国产精品毛片一区二区在线 | 97天天综合网 | 日韩最新av在线 | 国内外激情视频 | 亚洲免费在线观看视频 | 成人国产电影在线观看 | 国产明星视频三级a三级点| 免费观看福利视频 | 国产高清不卡 | 国产又粗又猛又黄视频 | h视频在线看| 久久综合五月天 | 国产艹b视频 | 亚洲网站在线看 | 久久久黄视频 | 国产精品黄网站在线观看 | 免费在线91 | 天天操天天舔天天干 | 97超碰在线久草超碰在线观看 | 国产色一区 | 亚洲精品国产精品国自产观看 | 日日夜夜天天久久 | 91精品国产高清自在线观看 | 天天超碰 | 久久精品欧美日韩精品 | 91视频在线自拍 | 日韩在线观| 美女黄频视频大全 | 亚洲精品综合久久 | 国产精品久久久久久久久久久久久 | 亚洲理论在线 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 欧美国产日韩一区二区 | 精品国产免费人成在线观看 | 黄色大全在线观看 | 日日草av | 欧美aaa大片 | 久久国产成人午夜av影院宅 | 四虎成人av | 不卡的av在线 | 久久久久久久看片 | 成人四虎影院 | av免费片 | 在线国产视频观看 | 亚洲国产精品激情在线观看 | 又粗又长又大又爽又黄少妇毛片 | 在线观看国产区 | 久久精品亚洲综合专区 | 国产乱码精品一区二区蜜臀 | 亚洲激情网站免费观看 | 91九色在线观看 | 婷婷色在线 | 中文字幕免费高清 | 国产成人精品日本亚洲999 | 五月婷婷影视 | 中文在线免费视频 | 国产高清免费在线播放 | 一区二区三区在线免费播放 | 国产又粗又硬又爽的视频 | 日韩在线欧美在线 | 欧美精品中文字幕亚洲专区 | 天天色棕合合合合合合 | 国产美女视频免费观看的网站 | 国产不卡在线 | 久久久精品国产免费观看一区二区 | 狠狠天天| 91网址在线观看 | av高清在线 | 日韩中文字幕亚洲一区二区va在线 | 免费网站黄| 手机成人av在线 | 久久国产综合视频 | 亚洲91中文字幕无线码三区 | 日韩亚洲在线视频 | 天天操夜夜看 | 在线影院 国内精品 | 丁香婷五月 | 亚洲六月丁香色婷婷综合久久 | 精品亚洲视频在线观看 | 午夜在线观看一区 | 日本高清免费中文字幕 | 成人免费在线网 | 欧美性极品xxxx娇小 | 夜添久久精品亚洲国产精品 | 欧美一级电影片 | 97人人超碰在线 | 中文字幕av免费观看 | 国产中文字幕视频在线观看 | 91视频xxxx| 亚洲午夜激情网 | 少妇bbw搡bbbb搡bbb | 日日夜夜亚洲 | 欧美日韩免费在线观看视频 | 日韩国产欧美在线视频 | 国产精品久久久久久久久久99 | 丁香九月激情 | 日本中文字幕在线播放 | 国产精品久久久久影视 | 国产成人一区二区在线观看 | 久久免费高清视频 | 中文字幕成人网 | 国产日韩欧美在线播放 | 欧美精品久久久久久久久老牛影院 | 久久综合九色综合网站 | 在线视频18在线视频4k | 奇米先锋 | 狠狠婷婷 | 久久久久成人免费 | 精品美女久久久久久免费 | 欧美国产日韩一区二区 | 免费看一级黄色 | 91丨九色丨国产女 | 97香蕉久久国产在线观看 | 日日夜夜干 | 蜜臀av夜夜澡人人爽人人 | 欧美一区二视频在线免费观看 | 日本久久免费视频 | 国产一区二区在线精品 | 国产精品久久一区二区无卡 | 欧美日韩精 | 欧美激情综合色综合啪啪五月 | 精品国产伦一区二区三区免费 | 狠狠狠综合| 欧美国产不卡 | 国内精品久久久久久久影视简单 | 深爱激情五月婷婷 | 免费黄色网址大全 | 日本一区二区免费在线观看 | 国产一区免费观看 | 亚洲免费观看视频 | 99久久毛片 | 久久精品视频播放 | 亚洲激情网站免费观看 | 免费av网站在线 | 4p变态网欧美系列 | 中文字幕在线观看视频免费 | 精品国产网址 | 国产中文字幕在线视频 | 97精品免费视频 | 国产日韩精品一区二区在线观看播放 | 亚洲色图激情文学 | 人人超碰免费 | 五月综合激情婷婷 | 天天射天天射天天 | 国产成人三级在线 | www.亚洲精品 | 国产亚洲综合在线 | 一区二区视频在线免费观看 | 国产视频精品视频 | 手机av观看| 亚洲 欧美 91 | 亚洲国内精品在线 | 伊人婷婷色 | 天天操天天干天天玩 | 天天插伊人 | 香蕉色综合 | 天天操天天干天天玩 | 精品亚洲欧美无人区乱码 | 欧美日韩精品在线一区二区 | 丁香六月婷婷综合 | 国产一级精品绿帽视频 | 国产精品成人一区二区 | 97综合在线 | 久久网站最新地址 | 免费在线观看av | 欧美色插 | 日韩在线观看视频中文字幕 | 五月婷婷丁香网 | 在线观看视频黄 | 97视频免费观看2区 亚洲视屏 | 国产在线观看高清视频 | 国内精品久久久久影院男同志 | 久久电影日韩 | 欧美激情另类文学 | 1024手机基地在线观看 | 国产一在线精品一区在线观看 | 国产伦精品一区二区三区四区视频 | 久久综合影音 | 欧美日韩国产成人 | 国产免费三级在线观看 | 久久精品欧美 | 波多野结衣小视频 | 欧美成人播放 | 国产3p视频| a黄色 | 国产视频二| 黄色a在线观看 | 人成免费网站 | 久热免费在线 | 免费成人av| 在线日本看片免费人成视久网 | 五月导航 | 精品9999| 天天操天天添天天吹 | 久久老司机精品视频 | 免费a级观看 | 国产精品一区二区麻豆 | 欧美精品久久久久久久久久丰满 | 97久久久免费福利网址 | 欧美激情视频一区二区三区 | 三级黄免费看 | 激情五月色播五月 | 黄色三级免费 | 在线亚洲成人 | 国产精品一区二区久久国产 | 日本中文字幕在线看 | 欧美日韩国产一区二区三区 | 国产区精品在线 | 亚洲性xxxx| 亚洲精品字幕 | 欧美成人va| 在线视频手机国产 | 狠狠狠色丁香综合久久天下网 | 中文字幕在线观看完整版电影 | 青草视频免费观看 | 亚洲黄色网络 | 久久久久国产成人精品亚洲午夜 | 国产自在线观看 | 91精品麻豆| 最新国产精品亚洲 | 香蕉网址 | 亚洲免费国产视频 | 国产精品色视频 | 日韩免费在线观看网站 | 久99久精品视频免费观看 | 99久久精品国产欧美主题曲 | 亚洲一级免费电影 | 天堂av在线免费观看 | 在线观看视频一区二区三区 | 91av视频在线观看 | 最近最新mv字幕免费观看 | 国产精品第一页在线 | 亚洲国产精品推荐 | 亚洲精品一区二区18漫画 | 日韩av资源站 | 视频在线观看99 | 中文字幕黄网 | 亚洲一级二级 | 天天干天天操天天 | 91在线日本| a视频免费看 | 又黄又刺激视频 | 久久久久久久久久免费视频 | 天天干天天操天天 | 国产高清中文字幕 | 国产视频九色蝌蚪 | 天天爱天天草 | 999久久久国产精品 高清av免费观看 | 中文字幕第一 | 国产精品久久久久久69 | 国产中文字幕视频在线 | 色99网| 日本精品久久久久 | 欧美一级大片在线观看 | 色午夜影院 | 国产99在线播放 | 欧美日韩不卡一区二区 | 欧美激情视频一区二区三区免费 | 国产真实精品久久二三区 | 久久亚洲国产精品 | 成人在线播放av | 日韩免费看视频 | 国产高清在线一区 | 日韩成人不卡 | 亚洲国产精品资源 | 欧美精品在线观看免费 | 91麻豆精品国产午夜天堂 | 久久精品视频网 | a在线观看国产 | 亚洲第一香蕉视频 | www.99热精品 | 免费av网址在线观看 | 亚洲国产精久久久久久久 | 一区二区三区国产欧美 | 色干干 | 国产精品久久久久久久免费观看 | 国产精品午夜免费福利视频 | 久久国产精品一区二区 | 手机av电影在线观看 | 美女视频黄是免费的 | 亚洲天堂网站视频 | 综合网在线视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产做爰视频 | 三日本三级少妇三级99 | 国产在线精品国自产拍影院 | 天天色天天干天天色 | 久久国产精品久久精品国产演员表 | 97成人在线免费视频 | 久一在线 | 91激情视频在线观看 | 国产成本人视频在线观看 | 久久看片网 | 极品中文字幕 | 久久天 | 久久艹99| 亚洲精品高清在线观看 | 91精彩视频 | 韩国三级av在线 | 一区二区三区免费在线 | 美女网站视频久久 | www.久久久.cum | 97超碰人人澡人人爱 | 免费视频三区 | 欧美成人va| 粉嫩av一区二区三区四区在线观看 | 在线国产不卡 | 国产婷婷在线观看 | 六月丁香激情综合色啪小说 | 亚洲一区日韩精品 | 五月综合 | av不卡中文字幕 | 91丨九色丨勾搭 | av福利超碰网站 | 久久国产精品99精国产 | 在线亚洲欧美视频 | 亚洲天堂网在线播放 | 久久99久久99免费视频 | 国产精品手机在线 | 日日骑| 亚洲国产理论片 | 九九热有精品 | 91av视频免费观看 | 精品九九九九 | 中文在线 | 色婷婷精品大在线视频 | 亚洲精品网址在线观看 | 日韩精品视频在线观看网址 | 日韩在线观看小视频 | www免费在线观看 | 93久久精品日日躁夜夜躁欧美 | 日本黄色免费在线观看 | 免费av网址在线观看 | 久久久www成人免费精品张筱雨 | 日韩精品三区四区 | h网站免费在线观看 | 国产精品porn | 美女黄网站视频免费 | 国产日韩欧美精品在线观看 | 成人毛片一区 | av黄色一级片| 国产成人91 | 日韩综合视频在线观看 | 日日夜夜天天 | 亚洲激情av | 亚洲九九 | 国产不卡片 | 成年人黄色免费网站 | 亚洲精品日韩一区二区电影 | 色婷婷国产精品 | 国产精品久久久久久久久久尿 | 在线观看不卡视频 | 91网址在线观看 | 欧美一区二区免费在线观看 | 一级性视频| 亚洲成色777777在线观看影院 | 97超视频 | 亚洲五月婷婷 | 欧美伦理电影一区二区 | 久久久精品在线观看 | 草免费视频 | 国产成人黄色片 | 中文字幕一区二区三区在线观看 | 99热国产在线观看 | 99久免费精品视频在线观看 | 日韩美视频 | 国产99精品| 夜夜看av| 黄色小视频在线观看免费 | 国产高清亚洲 | 99精品视频一区 | 五月天天在线 | 在线免费视频 你懂得 | 黄色aa久久| 99精彩视频 | 国产五月色婷婷六月丁香视频 | 国产破处在线播放 | 国产精品日韩在线观看 | 亚洲精品激情 | 中文字幕国产视频 | 国产精品自产拍在线观看 | 久久久久二区 | 亚洲va天堂va欧美ⅴa在线 | 爱色av.com| 久久久免费精品视频 | av在线电影免费观看 | 不卡av在线免费观看 | 97人人艹| 在线观看中文字幕亚洲 | 国产热re99久久6国产精品 | 久久久91精品国产一区二区三区 | 国产精品久久久久国产精品日日 | 国产三级在线播放 | 中文字幕在线免费观看 | 日韩视频免费观看高清完整版在线 | 96视频在线 | 麻豆一二 | 免费a现在观看 | 黄视频网站大全 | 久久人人爽人人爽人人片av免费 | 成人国产一区二区 | 99精品久久久| 日本精品久久久久中文字幕 | 国产视频精品在线 | 天天操操| 国产三级精品在线 | 久久成人精品电影 | 日本久久片 | 久99精品| 日韩精品视频免费在线观看 | 午夜精品视频一区 | 99久久精品久久亚洲精品 | 97超碰免费在线观看 | 国产在线观看你懂得 | 国产精品高潮久久av | 欧美一区二视频在线免费观看 | 国产精品v欧美精品v日韩 | 国产不卡精品 | 欧美先锋影音 | 亚洲一区二区精品视频 | 在线日本v二区不卡 | 国产精品入口麻豆www | 中文字幕在线播放第一页 | 免费黄色av片 | 国产精品不卡一区 | 久久久黄视频 | 91丨九色丨蝌蚪丨对白 | 国产精品色婷婷 | 日韩在线第一 | 成人av一级片| 成人在线播放网站 | 久久er99热精品一区二区三区 | 欧美日韩精品在线视频 | 精品国产自在精品国产精野外直播 | 精品999久久久 | 丰满少妇久久久 | 亚洲高清在线视频 | 久草电影免费在线观看 | 欧美大jb | 狠狠的干 | 国产精品一区二区吃奶在线观看 | 国产精彩视频一区 | 91视频免费看片 | 亚洲精品合集 | 国产真实精品久久二三区 | 黄色精品免费 | 成人h电影在线观看 | 麻豆视频免费在线播放 | 亚洲天天综合网 | 伊人天天综合 | 99re亚洲国产精品 | 亚洲精品美女久久久久 | 亚洲资源在线网 | 福利一区在线 | 日本精品视频在线 | 99久久精品国产一区二区成人 | 成人小视频在线观看免费 | 亚洲第二色| 91精品国产欧美一区二区成人 | 91日韩精品视频 | 久久精品这里热有精品 | 欧美一级性视频 | 国产淫a| 91精品老司机久久一区啪 | 久久精品一二三区白丝高潮 | 亚洲专区免费观看 | 色综合网 | 在线观看国产亚洲 | 在线播放视频一区 | 中文字幕在线看视频 | 国产剧情一区二区 | 91久久精品一区二区三区 | 国产九九九精品视频 | 国产精品久久久久毛片大屁完整版 | 久久高清视频免费 | 久久久www免费电影网 | 依人成人综合网 | av在线播放网址 | 亚洲涩涩一区 | 欧美 日韩 久久 | 久久国产精品99久久久久久丝袜 | 欧美精品一区二区性色 | 亚洲精品免费在线观看视频 | 国产精品黄色 | 成人羞羞免费 | 国产性xxxx | 日韩专区视频 | 亚洲国产精彩中文乱码av | 午夜神马福利 | 97视频亚洲 | 免费成人看片 | 一区二区三区日韩在线观看 | 午夜国产在线 | 激情综合五月天 | 麻豆久久 | 99色在线视频 | 六月色| 日韩精品播放 | 五月婷婷在线观看 | 亚洲电影免费 | 久久成年人网站 | 免费观看成年人视频 | 久久香蕉国产精品麻豆粉嫩av | 免费观看一区二区 | 精品美女在线视频 | 亚洲精品免费在线 | 99精品国产免费久久久久久下载 | 久久久2o19精品 | 黄色tv视频 | 亚州av一区| 亚洲精品中文在线 | www亚洲精品| 日本在线观看中文字幕无线观看 | 亚洲国产小视频在线观看 | 久久中文精品视频 | 日韩av中文在线观看 | 黄色高清视频在线观看 | 四虎成人精品在永久免费 | 色网站免费在线观看 | 婷婷5月色 | 九九热免费在线视频 | 91新人在线观看 | 激情网站五月天 | 免费高清看电视网站 | 成人av在线网 | 午夜久久电影网 | 久久久久久久国产精品视频 | 国产中文伊人 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产一线在线 | 三级在线国产 | 97国产精品久久 | 超级碰99 | 最新中文在线视频 | 91女子私密保健养生少妇 | 欧美亚洲另类在线视频 | 午夜精品久久久久久久久久 | 日一日操一操 | 欧洲视频一区 | 国产一区免费在线 | 久久8精品 | 日韩精品第1页 | 亚洲综合狠狠干 | 九九久久国产精品 | av网址aaa | 亚洲最新av在线网址 | 婷婷色 亚洲 | 色婷婷激情电影 | 久久久久久免费 | 中文字幕一区在线 | 久久爱导航 | 超碰在线日韩 | 色综合天天色 | 天天干天天操天天爱 | 国产午夜三级一区二区三 | 免费a一级 | www.亚洲精品视频 | 婷婷六月天在线 | 精品久久综合 |