久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

struts2+Hibernet實(shí)現(xiàn)分頁(yè)

好久沒(méi)寫(xiě)過(guò)什么東西了,最近自己在學(xué)習(xí)Java WEB方面的東西,自己想用JSP和 Struts2 HIBERNATE來(lái)寫(xiě)一個(gè)自己工作室的網(wǎng)站練練手,稍微有些收獲今天寫(xiě)出來(lái),與大家一起分享一下:STRUTS2+HIBERNATE實(shí)現(xiàn)分頁(yè)是 JAVA WEB最常用的東西了,我在網(wǎng)站上找了很多東西結(jié)果都沒(méi)有很理想的。由于本人是新手所以寫(xiě)出來(lái)的代碼質(zhì)量有限。希望與大家一起進(jìn)步,但是我從沒(méi)有放棄過(guò)!我接觸JAVA WEB不到一個(gè)月的時(shí)間,希望大家見(jiàn)諒寫(xiě)出來(lái)的東西部是很理想。望高手多多指教。

第一步:建立一個(gè)SQL數(shù)據(jù)庫(kù)Tb_soft ,數(shù)據(jù)庫(kù)表,software(字段:Tsoftware,fSoftname,fListImage,fVar,fFeilname,fUsedSystem,fUpdateTime,fInf,fClassID,fDownTimes  字段

類型并不重要自己隨便設(shè)置然后直接通過(guò)SQL企業(yè)管理器直接在表里輸入內(nèi)容方便測(cè)試就是了)

第二步:建立一個(gè)名為productlist JAVA的WEB項(xiàng)目(我用的是NetBeans IDE 6.9,所以在新建項(xiàng)目的時(shí)候選擇了Struts2 HIBERNATE框架,新建后會(huì)自動(dòng)生成 hibernate.cfg.xml的配置文件

)。

第三步:配置hibernate.cfg.xml文件,主要是對(duì)數(shù)據(jù)庫(kù)的鏈接設(shè)置以及數(shù)據(jù)表映射文件的設(shè)置

1、文件名:hibernate.cfg.xml文件代碼:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC “-//Hibernate/Hibernate Configuration DTD 3.0//EN” “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
  <session-factory>
    <property name=”hibernate.dialect”>org.hibernate.dialect.SQLServerDialect</property>
    <property name=”hibernate.connection.driver_class”>com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name=”hibernate.connection.url”>jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Tb_soft </property>
    <property name=”hibernate.connection.username”>sa</property>
    <property name=”hibernate.connection.password”>123456</property>
    <mapping resource=”soft.hbm.xml”/>
  </session-factory>
</hibernate-configuration>

注: <mapping resource=”soft.hbm.xml”/> 元素對(duì)數(shù)據(jù)庫(kù)表software 配置文件soft.hbm.xml的映射配置,注意soft.hbm.xml文件的路徑如果和hibernate.cfg.xml文件沒(méi)在同一個(gè)目錄必須

加上路徑例如 <mapping resource=”DatatableXML/soft.hbm.xml”/>

2、新建 名為:soft.hbm.xml 的映射文件,該文件主要是對(duì)數(shù)據(jù)庫(kù)表software的映射配置全部代碼如下:

<?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>
    <class name= “com.bean.soft” table=”Tsoftware”>
        <id name=”id” column=”id” type=”int”>
            <generator class=”native”/>
        </id>
        <property name=”fSoftname” type=”string” length=”20″>
            <column name=”fSoftname”/>
        </property>
        <property name=”fListImage” type=”string”  length=”20″>
            <column name=”fListImage”/>
        </property>
        <property name=”fVar” type=”string” length=”10″>
            <column name=”fVar”/>
        </property>
        <property name=”fFeilname” type=”string”  length=”30″>
            <column name=”fFeilname”/>
        </property>
        <property name=”fUsedSystem” type=”string”  length=”30″>
            <column name=”fUsedSystem”/>
        </property>
        <property name=”fUpdateTime” type=”string”  length=”30″>
            <column name=”fUpdateTime”/>
        </property>
        <property name=”fInf” type=”string”  length=”2000″>
            <column name=”fInf”/>
        </property>
        <property name=”fDownTimes” type=”string” length=”10″>
            <column name=”fDownTimes”/>
        </property>
    </class>
</hibernate-mapping>

注: <class name= “com.bean.soft” table=”Tsoftware”>設(shè)置了soft屬于一個(gè)javabean,關(guān)于javabean我就不解釋了。關(guān)于這個(gè)文件的代碼后面再貼出來(lái)。class name=javabean包

+javabean構(gòu)成, table=”Tsoftware”,其中Tsoftware就是SQL數(shù)據(jù)庫(kù)表。有關(guān)property 元素我這里簡(jiǎn)單的說(shuō)一下 例如下:

       <property name=”fDownTimes” type=”string” length=”10″>
            <column name=”fDownTimes”/>
        </property>
 name,映射文件構(gòu)成表的的字段名,這里的name必須與com.bean.soft 中的熟悉對(duì)應(yīng),千萬(wàn)記住要設(shè)置好type ,這里的type好比SQL的字段類型,具體類型對(duì)應(yīng)關(guān)系請(qǐng)查相關(guān)資料我就不詳細(xì)解

釋了。

第四步:在包c(diǎn)om.bean 建立JAVAbean soft 代碼如下:

package com.bean;

/**
 *
 * @author Even
 */
public class soft {
    private String fSoftname;
    private int id;
    private String fListImage;
    private String fVar;
    private String fFeilname;
    private String fUsedSystem;
    private String fUpdateTime;
    private String fInf;
    private String fDownTimes;

    /**
     * @return the fSoftname
     */
    public String getfSoftname() {
        return fSoftname;
    }

    /**
     * @param fSoftname the fSoftname to set
     */
    public void setfSoftname(String fSoftname) {
        this.fSoftname = fSoftname;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the fListImage
     */
    public String getfListImage() {
        return fListImage;
    }

    /**
     * @param fListImage the fListImage to set
     */
    public void setfListImage(String fListImage) {
        this.fListImage = fListImage;
    }

    /**
     * @return the fVar
     */
    public String getfVar() {
        return fVar;
    }

    /**
     * @param fVar the fVar to set
     */
    public void setfVar(String fVar) {
        this.fVar = fVar;
    }

    /**
     * @return the fFeilname
     */
    public String getfFeilname() {
        return fFeilname;
    }

    /**
     * @param fFeilname the fFeilname to set
     */
    public void setfFeilname(String fFeilname) {
        this.fFeilname = fFeilname;
    }

    /**
     * @return the fUsedSystem
     */
    public String getfUsedSystem() {
        return fUsedSystem;
    }

    /**
     * @param fUsedSystem the fUsedSystem to set
     */
    public void setfUsedSystem(String fUsedSystem) {
        this.fUsedSystem = fUsedSystem;
    }

    /**
     * @return the fUpdateTime
     */
    public String getfUpdateTime() {
        return fUpdateTime;
    }

    /**
     * @param fUpdateTime the fUpdateTime to set
     */
    public void setfUpdateTime(String fUpdateTime) {
        this.fUpdateTime = fUpdateTime;
    }

    /**
     * @return the fInf
     */
    public String getfInf() {
        return fInf;
    }

    /**
     * @param fInf the fInf to set
     */
    public void setfInf(String fInf) {
        this.fInf = fInf;
    }

    /**
     * @return the fDownTimes
     */
    public String getfDownTimes() {
        return fDownTimes;
    }

    /**
     * @param fDownTimes the fDownTimes to set
     */
    public void setfDownTimes(String fDownTimes) {
        this.fDownTimes = fDownTimes;
    }
}
關(guān)于JAVAbean就不解釋了。

第五步:在com.Hibernate包建立Hibernate的sessionFactory(文件名:NewHibernateUtil.java)用于獲取Session

NewHibernateUtil.java 代碼:

package com.Hibernate;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author Even
 */
public class NewHibernateUtil {

    private static SessionFactory sessionFactory = null;
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

    static {
        try {
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception.
            System.err.println(“對(duì)不起數(shù)據(jù)工廠構(gòu)建失敗.” + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static Session getsession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        if (session == null || !session.isOpen()) {
            if (sessionFactory == null) {
                rebuildsessionFactory();
            }
            session = (sessionFactory != null) ? sessionFactory.openSession() : null;
            threadLocal.set(session);
        }
        return session;
    }

    private static void rebuildsessionFactory() {
        try {
            Configuration cfg = new Configuration().configure();
            sessionFactory = cfg.buildSessionFactory();
        } catch (Exception e) {
            System.out.print(“創(chuàng)建工廠會(huì)話失?。?#8221;);
            e.printStackTrace();
        }
    }

    public static SessionFactory getsessionFactory() {
        return sessionFactory;
    }

    public static void closesessicon() {
        Session session = (Session) threadLocal.get();
        if (session != null) {
            session.close();
        }
    }
}

這里注意session的關(guān)閉。

第六步:在包c(diǎn)om.dao包建立整個(gè)程序的do層;文件名為:softDao.java

代碼如下:

package com.dao;

/**
 *
 * @author Even
 */
import com.Hibernate.NewHibernateUtil;
import com.bean.soft;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public class softDao {
    public List<soft> queryByPage(int pageSize, int pageNow, String HQL) {
        Session session = null;
        List sftlist = new ArrayList();
        try {
            session = NewHibernateUtil.getsession();// 獲得session對(duì)象
            //String hql = “from Employee emp”;// 查詢HQL語(yǔ)句
            HQL = “from soft sft”;// 條件查詢HQL語(yǔ)句
            Query q = session.createQuery(HQL);// 執(zhí)行查詢操作
            q.setFirstResult(pageSize * (pageNow – 1));
            q.setMaxResults(pageSize);
            sftlist = q.list();
        } catch (HibernateException e) {
            e.printStackTrace();
            System.out.println(“查詢失敗”);
        } finally {
            NewHibernateUtil.closesessicon();// 關(guān)閉session
        }
        return sftlist;
    }
    //獲得總頁(yè)數(shù)的方法有時(shí)間可能會(huì)單獨(dú)使用該工程所以將獲得session的過(guò)程也單獨(dú)寫(xiě)出來(lái)
    public int getpageCount(int pagesize, String HQL) {
        int pageCount;
        int Datacount = 0;
        Session session = null;
        try {
            session = NewHibernateUtil.getsession();// 獲得session對(duì)象
            HQL = “from soft sft”;//條件查詢HQL語(yǔ)句,這里注意使用的實(shí)例查詢方式,soft是我們建立的javabean
            Query q = session.createQuery(HQL);// 執(zhí)行查詢操作
            Datacount = q.list().size();//獲得記錄總數(shù)
        } catch (HibernateException e) {
            e.printStackTrace();
            System.out.println(“查詢失敗”);
        } finally {
            NewHibernateUtil.closesessicon();// 關(guān)閉session
        }
        if (Datacount % pagesize == 0) {
            pageCount = Datacount / pagesize;
        } else {
            pageCount = Datacount / pagesize + 1;
        }
    
        return pageCount;

    }
}

時(shí)間有點(diǎn)晚了所以這里就不多解釋了。

第七步:在包c(diǎn)om.action 建立分頁(yè)的Action文件名為:softlistAction.java

代碼如下:

package com.action;

import com.bean.leavetalk;
import com.bean.soft;
import com.dao.Dao;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;

public class softlistAction extends ActionSupport {

    private List<soft> softs;//用于數(shù)據(jù)集合對(duì)象并非只是軟件
    private List<soft> downcountlist;//用于顯示下載列表的集合。
    private List<leavetalk> leavatalks;//用于顯示用戶留言列表的集合。
    private int pageNow = 1; //初始化為1,默認(rèn)從第一頁(yè)開(kāi)始顯示
    private int pageSize = 4; //每頁(yè)顯示5條記錄
    private int pageCount;//總頁(yè)數(shù)
    private String doing;//標(biāo)記Action返回的值
    private Dao pageDAO = new Dao();
    private Dao leivetalkdao = new Dao();
    private int id;
    private String fbadcount;
    private String fgoodcount;

    public List<soft> getSofts() {
        return softs;
    }

    public void setSofts(List<soft> softwares) {
        this.softs = softs;
    }

    public int getPageNow() {
        return pageNow;
    }

    public void setPageNow(int pageNow) {
        this.pageNow = pageNow;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageCount() {
        Dao sa = new Dao();
        sa.getpageCount(pageSize, “”);
        this.pageCount = sa.getpageCount(pageSize, “”);
        return sa.getpageCount(pageSize, “”);
    }

    /**
     * @param pageCount the pageCount to set
     */
    public void setPageCount() {
        Dao sa = new Dao();
        sa.getpageCount(pageSize, “”);
        this.pageCount = sa.getpageCount(pageSize, “”);
    }

    /**
     * @return the doing
     */
    public String getDoing() {
        return doing;
    }

    /**
     * @param doing the doing to set
     */
    public void setDoing(String doing) {
        this.doing = doing;
    }

    //主方法
    public String execute() throws Exception {
        String returnstr = “erro”;
        String HQLstr = “”;
        // softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
        if (doing.equals(“productlist”)) {
            returnstr = “productlist”;
            HQLstr = “from soft sft”;
            this.setPageSize(4);
            this.leavatalks = leivetalkdao.getleavetalks(“from leavetalk lt order by lt.id desc”);
            this.softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);

        } else if (doing.equals(“productshow”)) {
            returnstr = “productshow”;
            HQLstr = “from soft sft where sft.id='” + getId() + “‘ order by sft.id asc”;
            downcountlist = pageDAO.queryByPage(10, pageNow, “from soft sft order by sft.fDownTimes desc”);

        } else if (doing.equals(“index”)) {
            returnstr = “index”;
            HQLstr = ” from soft sft where sft.ftype=’T’order by sft.id asc”;
            this.setPageSize(5);
        } else if (doing.equals(“web”)) {
            returnstr = “web”;
            HQLstr = ” from soft sft where sft.ftype=’T’order by sft.id asc”;
            this.setPageSize(5);
        } else if (doing.equals(“service”)) {
            returnstr = “service”;
            //HQLstr = ” from service sr where order by sr.id asc”;
            // this.setPageSize(1);
        } else if (doing.equals(“Updatefgood”)) {
            returnstr = “Updatefgood”;
            HQLstr = “from soft sft where sft.id='” + getId() + “‘ order by sft.id asc”;
            downcountlist = pageDAO.queryByPage(10, pageNow, “from soft sft order by sft.fDownTimes desc”);
            pageDAO.UpdatefgoodAndfbad(getId(), “updategood”, fgoodcount);
        } else if (doing.equals(“Updatefbad”)) {
            returnstr = “Updatefgood”;
            HQLstr = “from soft sft where sft.id='” + getId() + “‘ order by sft.id asc”;
            downcountlist = pageDAO.queryByPage(10, pageNow, “from soft sft order by sft.fDownTimes desc”);
            pageDAO.UpdatefgoodAndfbad(getId(), “updatebad”, fbadcount);
        } else {
            returnstr = “erro”;
        }
        softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
      
        System.out.println(softs.size());
         return returnstr;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the downcountlist
     */
    public List<soft> getDowncountlist() {
        return downcountlist;
    }

    /**
     * @param downcountlist the downcountlist to set
     */
    public void setDowncountlist(List<soft> downcountlist) {
        this.downcountlist = downcountlist;
    }

    /**
     * @return the fbadcount
     */
    public String getFbadcount() {
        return fbadcount;
    }

    /**
     * @param fbadcount the fbadcount to set
     */
    public void setFbadcount(String fbadcount) {
        Integer b = Integer.valueOf(fbadcount) + 1;
        this.fbadcount = b.toString();

    }

    /**
     * @return the fgoodcount
     */
    public String getFgoodcount() {
        return fgoodcount;
    }

    /**
     * @param fgoodcount the fgoodcount to set
     */
    public void setFgoodcount(String fgoodcount) {
        Integer b = Integer.valueOf(fgoodcount) + 1;
        this.fgoodcount = b.toString();
    }

    /**
     * @return the leavatalks
     */
    public List<leavetalk> getLeavatalks() {
        return leavatalks;
    }

    /**
     * @param leavatalks the leavatalks to set
     */
    public void setLeavatalks(List<leavetalk> leavatalks) {
        this.leavatalks = leavatalks;
    }
}

第八步:配置ACTION 文件STRUTS.xml的代碼如下:

<!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>

<struts>
    <include file=”example.xml”/>
    <!– Configuration for the default package. –>
    <package name=”default” extends=”struts-default”>
        <action name=”softlist” class=”com.action.softlistAction”>
            <result name=”SUCCESS”>test.jsp</result>
            <result name=”error”>error.jsp</result>
        </action>
    </package>
</struts>

第九步:建立JSP文件 來(lái)享受結(jié)果了

test.jsp代碼如下:
< import=”java.sql.ResultSet”%>
< import=”java.util.List”%>
< contentType=”text/html”%>
< import=”org.apache.struts2.ServletActionContext”%>
<%@ page language=”java” pageEncoding=”UTF-8″%>
<%@ taglib uri=”/struts-tags” prefix=”s”%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
   “http://www.w3.org/TR/html4/loose.dtd”>
<script language=”javascript” type=”text/javascript”>
        <%
                    String PageNow = request.getAttribute(“pageNow”).toString();
                    String pageCount = request.getAttribute(“pageCount”).toString();
        %>
          
    </script>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=GBK”>
        <title>分頁(yè)測(cè)試</title>
    </head>

    <table style=” border: 2px”>
        <s:iterator value=”softs”>
            <td><s:property value=”fSoftname”/></td>
            <td><s:property value=”fUsedSystem”/></td>
            <td><s:property value=”fUpdateTime”/></td>
        </s:iterator>
    </table>
    <div>
                        <ul><li><a href=’softlist.action?pageNow=1′>首頁(yè)</a></li>
                            <li><a href=’softlist.action?pageNow=<s:property value=”%{PageNow-1}”/>’> 上一頁(yè)</a></li>
                            <li><a href=’softlist.action?pageNow=<s:property value=”%{PageNow+1}”/>’>下一頁(yè)</a></li>
                            <li><a href=’softlist.action?pageNow=<%=pageCount%>’>末頁(yè)</a></li>
                            <li><span class=”pageinfo”>第<strong><s:property value=”#request.pageNow”/></strong>頁(yè)</span></li>
                            <li><span class=”pageinfo”>共<strong><s:property value=”#request.pageCount”/></strong>頁(yè)</span></li>
                        </ul></div>
    <body>
     
    </body>
</html>
第十步:建立link.jsp
代碼如下:
<%–
    Document   : link
    Created on : 2011-1-24, 18:42:14
    Author     : Even
–%>

< contentType=”text/html” pageEncoding=”GBK”%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
   “http://www.w3.org/TR/html4/loose.dtd”>

<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=GBK”>
        <title>JSP Page</title>
    </head>
    <body>
        <h1><a href=”softlist.action”>單擊瀏覽效果</a></h1>
    </body>
</html>

注意:后面的演示我是重新制作的頁(yè)面不是我的網(wǎng)站頁(yè)面效果所以只是完成了一個(gè)原理而已,請(qǐng)高人高抬貴手 本人剛?cè)腴T不到一個(gè)月的時(shí)間,利用這篇文章來(lái)回顧我自己學(xué)的東西同事也分享給大家,網(wǎng)上很多 STRUTS2的分頁(yè)文章沒(méi)有一個(gè)完整的。這里面的分頁(yè)原理用的是 session里面的記錄集查詢中的 setFirstResult和setMaxResults,關(guān)于算法大家自己去揣摩就是了很簡(jiǎn)單。我正在寫(xiě)一個(gè)工作室的網(wǎng)站雖然用asp.net來(lái)寫(xiě)很快但是我覺(jué)得用熟悉JAVA的話會(huì)更快,呵呵。以后我會(huì)多寫(xiě)一些東西的。

 

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
久久国产日韩| 精品欧美视频| 中文字幕色婷婷在线视频| 国产精品1区在线| 国产精品超碰| 久久99青青| 国产一区二区三区久久久久久久久| 久久av资源| 精品免费av| 91亚洲一区| 日韩av免费| 99久久99久久精品国产片果冰| 99久久久久| 亚洲精品电影| 热久久久久久久| 日日夜夜免费精品| 91p九色成人| 国产乱码精品| 久久精品网址| 鲁鲁在线中文| 一本一道久久a久久精品蜜桃| 中文精品视频| 亚洲男人在线| 国产精品香蕉| 在线中文字幕播放| 激情久久五月| 视频在线在亚洲| 香蕉久久一区| 欧美国产不卡| 99久久夜色精品国产亚洲狼| 日韩午夜在线| 日韩精品亚洲专区| 欧美亚洲tv| 国产传媒在线观看| 免费毛片在线不卡| 日韩精品一区二区三区免费视频| 久久福利在线| 久久久久久久久丰满| 黑丝一区二区三区| 欧美日韩精品一区二区三区视频 | 欧美日韩视频免费观看| 欧美女激情福利| 91精品日本| 国产精品久久久久久久久久10秀| 精品一区毛片| 欧美久久香蕉| 国产主播一区| 日韩国产精品久久久久久亚洲| 欧美a级一区二区| 不卡在线一区二区| 国产精品一区二区免费福利视频| 欧美不卡高清一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 欧美啪啪一区| 精品欧美一区二区三区在线观看| 亚洲天堂免费| 黑森林国产精品av| 日韩高清电影免费| 999国产精品视频| 国产精品啊v在线| 亚洲一区成人| 国产精品久久久久久久免费观看| 在线国产精品一区| 国产亚洲一区二区手机在线观看| 97久久亚洲| 欧美成人综合| 久久久久伊人| 色综合视频一区二区三区日韩 | 国产乱码精品一区二区三区四区 | 国产精品毛片在线看| 欧美国产专区| 国产精品呻吟| 欧美亚洲免费| 欧美一区=区| 色婷婷狠狠五月综合天色拍| 国产精品一在线观看| 国产亚洲在线| 人人精品亚洲| 精品中文字幕一区二区三区| 亚洲永久精品唐人导航网址| 久久人人97超碰国产公开结果| 国产精品传媒麻豆hd| 老鸭窝毛片一区二区三区| 国产 日韩 欧美 综合 一区| 日韩一区二区三区免费视频| 欧美中文一区二区| 麻豆国产精品视频| 午夜一级在线看亚洲| 日韩欧美字幕| 欧美激情麻豆| 欧美一级一区| 喷白浆一区二区| 亚洲一级黄色| 日韩欧美精品| 精品亚洲成人| 国产麻豆精品| 日韩激情综合| 亚洲综合中文| 视频一区在线视频| 日韩欧美国产精品综合嫩v| 国产精品免费大片| 蜜桃久久久久久| 日韩高清不卡| 91亚洲国产高清| 欧美经典一区| 国产麻豆一区二区三区| 亚洲97av| 亚洲精一区二区三区| 制服诱惑一区二区| 亚洲午夜在线| 久久国产电影| 精品免费av在线| 日韩大片在线观看| 波多野结衣久久精品| 精品久久久中文字幕| 久久三级中文| 欧美激情日韩| 国产午夜一区| 欧美亚洲人成在线| 天堂av一区| 色8久久久久| 中文字幕一区二区三区四区久久 | 亚洲福利一区| 欧美日韩精品免费观看视欧美高清免费大片 | 尤物tv在线精品| 久久亚洲专区| 999视频精品| 亚洲一级影院| 宅男噜噜噜66国产日韩在线观看| 国产精品人人爽人人做我的可爱| 女人天堂亚洲aⅴ在线观看| 久久精品欧美一区| 婷婷色综合网| 91久久视频| 亚洲一二av| 97精品国产99久久久久久免费| 日韩一区精品| 久久国产人妖系列| 精品美女视频| 日韩超碰人人爽人人做人人添| 美女日韩在线中文字幕| 午夜电影亚洲| 亚洲欧美日本日韩| 免费日韩av片| 日韩精品免费视频人成| 婷婷成人av| 国产极品模特精品一二| 麻豆精品久久久| 日韩欧美一区二区三区免费观看| 米奇777超碰欧美日韩亚洲| 尹人成人综合网| 视频在线观看一区| 欧美亚洲三级| 久久久久久色| 国产精选久久| 成人精品久久| 欧美日韩国产高清| 日韩欧美中文字幕电影 | 久久激情av| 国产精品99久久精品| 久久久天天操| 亚洲乱亚洲高清| 国产高清亚洲| 激情久久五月| 日韩精品一区二区三区中文字幕| 国产精品第十页| 日本韩国欧美超级黄在线观看| 国产一区二区三区自拍| 亚洲伊人影院| 国产福利资源一区| 色88888久久久久久影院| 野花国产精品入口| 日韩高清在线观看一区二区| 国产精品99精品一区二区三区∴ | 日本黄色精品| 婷婷综合网站| 日韩av不卡在线观看| 国产毛片精品| 久久五月天小说| 欧美日韩黄网站| 日本综合字幕| 日韩一区二区三区免费视频| 精品视频在线一区二区在线| 欧美日一区二区| 国产欧美亚洲一区| 日韩国产欧美一区二区| 久久亚洲国产精品一区二区| 欧美韩一区二区| 红桃视频国产精品| 日韩精品一级| 日韩在线高清| 亚洲精品护士| 在线视频日韩| 麻豆精品视频在线| 亚洲免费一区二区| 精品亚洲成人| 婷婷五月色综合香五月| 日韩一区二区三区在线免费观看| 亚洲精品一级二级三级| 9999国产精品|