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

站長資訊網
最全最豐富的資訊網站

struts2+Hibernet實現分頁

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

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

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

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

)。

第三步:配置hibernate.cfg.xml文件,主要是對數據庫的鏈接設置以及數據表映射文件的設置

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”/> 元素對數據庫表software 配置文件soft.hbm.xml的映射配置,注意soft.hbm.xml文件的路徑如果和hibernate.cfg.xml文件沒在同一個目錄必須

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

2、新建 名為:soft.hbm.xml 的映射文件,該文件主要是對數據庫表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”>設置了soft屬于一個javabean,關于javabean我就不解釋了。關于這個文件的代碼后面再貼出來。class name=javabean包

+javabean構成, table=”Tsoftware”,其中Tsoftware就是SQL數據庫表。有關property 元素我這里簡單的說一下 例如下:

       <property name=”fDownTimes” type=”string” length=”10″>
            <column name=”fDownTimes”/>
        </property>
 name,映射文件構成表的的字段名,這里的name必須與com.bean.soft 中的熟悉對應,千萬記住要設置好type ,這里的type好比SQL的字段類型,具體類型對應關系請查相關資料我就不詳細解

釋了。

第四步:在包com.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;
    }
}
關于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(“對不起數據工廠構建失敗.” + 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(“創建工廠會話失敗!”);
            e.printStackTrace();
        }
    }

    public static SessionFactory getsessionFactory() {
        return sessionFactory;
    }

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

這里注意session的關閉。

第六步:在包com.dao包建立整個程序的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對象
            //String hql = “from Employee emp”;// 查詢HQL語句
            HQL = “from soft sft”;// 條件查詢HQL語句
            Query q = session.createQuery(HQL);// 執行查詢操作
            q.setFirstResult(pageSize * (pageNow – 1));
            q.setMaxResults(pageSize);
            sftlist = q.list();
        } catch (HibernateException e) {
            e.printStackTrace();
            System.out.println(“查詢失敗”);
        } finally {
            NewHibernateUtil.closesessicon();// 關閉session
        }
        return sftlist;
    }
    //獲得總頁數的方法有時間可能會單獨使用該工程所以將獲得session的過程也單獨寫出來
    public int getpageCount(int pagesize, String HQL) {
        int pageCount;
        int Datacount = 0;
        Session session = null;
        try {
            session = NewHibernateUtil.getsession();// 獲得session對象
            HQL = “from soft sft”;//條件查詢HQL語句,這里注意使用的實例查詢方式,soft是我們建立的javabean
            Query q = session.createQuery(HQL);// 執行查詢操作
            Datacount = q.list().size();//獲得記錄總數
        } catch (HibernateException e) {
            e.printStackTrace();
            System.out.println(“查詢失敗”);
        } finally {
            NewHibernateUtil.closesessicon();// 關閉session
        }
        if (Datacount % pagesize == 0) {
            pageCount = Datacount / pagesize;
        } else {
            pageCount = Datacount / pagesize + 1;
        }
    
        return pageCount;

    }
}

時間有點晚了所以這里就不多解釋了。

第七步:在包com.action 建立分頁的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;//用于數據集合對象并非只是軟件
    private List<soft> downcountlist;//用于顯示下載列表的集合。
    private List<leavetalk> leavatalks;//用于顯示用戶留言列表的集合。
    private int pageNow = 1; //初始化為1,默認從第一頁開始顯示
    private int pageSize = 4; //每頁顯示5條記錄
    private int pageCount;//總頁數
    private String doing;//標記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文件 來享受結果了

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>分頁測試</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′>首頁</a></li>
                            <li><a href=’softlist.action?pageNow=<s:property value=”%{PageNow-1}”/>’> 上一頁</a></li>
                            <li><a href=’softlist.action?pageNow=<s:property value=”%{PageNow+1}”/>’>下一頁</a></li>
                            <li><a href=’softlist.action?pageNow=<%=pageCount%>’>末頁</a></li>
                            <li><span class=”pageinfo”>第<strong><s:property value=”#request.pageNow”/></strong>頁</span></li>
                            <li><span class=”pageinfo”>共<strong><s:property value=”#request.pageCount”/></strong>頁</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>

注意:后面的演示我是重新制作的頁面不是我的網站頁面效果所以只是完成了一個原理而已,請高人高抬貴手 本人剛入門不到一個月的時間,利用這篇文章來回顧我自己學的東西同事也分享給大家,網上很多 STRUTS2的分頁文章沒有一個完整的。這里面的分頁原理用的是 session里面的記錄集查詢中的 setFirstResult和setMaxResults,關于算法大家自己去揣摩就是了很簡單。我正在寫一個工作室的網站雖然用asp.net來寫很快但是我覺得用熟悉JAVA的話會更快,呵呵。以后我會多寫一些東西的。

 

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
9国产精品视频| 国产欧美一区二区三区米奇| 国产私拍福利精品视频二区| 日韩精品久久久久久久软件91| 蜜桃视频第一区免费观看| 亚洲一区二区日韩| 欧美国产日韩电影| 亚洲另类视频| 中文字幕乱码亚洲无线精品一区| 丝袜国产日韩另类美女| 三级在线观看一区二区| 免费在线看一区| 婷婷综合一区| 日韩久久视频| 国产免费成人| 五月精品视频| 日韩毛片网站| 日韩av字幕| 999国产精品永久免费视频app| 国产手机视频一区二区| 亚洲专区在线| sm捆绑调教国产免费网站在线观看| 日韩欧美一区二区三区免费观看| 亚洲一区二区小说| 石原莉奈一区二区三区在线观看| 日韩1区2区3区| 国产黄色精品| 亚洲不卡系列| 免播放器亚洲| 欧美久久一区二区三区| 国产精品自在| 成人午夜精品| 只有精品亚洲| 精品五月天堂| 日本成人在线一区| 日韩精品高清不卡| 久久精品国产网站| 亚洲网站视频| 久久99久久人婷婷精品综合| 精品在线网站观看| 欧美成人久久| 日本麻豆一区二区三区视频| 国产黄色一区| 欧美日韩中文字幕一区二区三区| 国产精品婷婷| 日本不卡在线视频| 在线看片福利| 综合一区二区三区| 国际精品欧美精品| 欧美亚洲三区| av高清不卡| 男女男精品网站| 久久伊人亚洲| 伊人久久婷婷| 久久久久久久久久久9不雅视频| 午夜国产精品视频| 日韩精品欧美大片| av免费不卡国产观看| 一本色道精品久久一区二区三区| 国产欧美激情| 亚洲成人二区| 国产亚洲一区二区三区不卡| 成人片免费看| 亚洲精品日本| 成人羞羞视频在线看网址| 少妇精品在线| 成人午夜国产| 国产美女视频一区二区| 国产99久久| 国产精品成人国产| 免费日韩一区二区| 日韩a一区二区| 免费日韩一区二区三区| 欧美午夜精彩| 国产欧美在线| 黄色成人91| 精品亚洲自拍| 婷婷亚洲成人| 国内精品福利| 久久久精品国产**网站| 一区二区国产在线观看| 免费看av不卡| 国产精品久久久久9999高清| 99国产精品99久久久久久粉嫩| 麻豆国产欧美一区二区三区 | 免费亚洲婷婷| 亚洲一级淫片| 国产综合色产| 91日韩免费| 国产精品一区毛片| 最新国产精品久久久| 欧美精品一区二区久久| 国产精品毛片久久| 免费在线成人| 国产精品一国产精品k频道56| 日韩中文字幕91| 久久久夜精品| 日韩av在线中文字幕| 国产精品久久久久久久免费软件 | 日韩av一级片| 一区二区高清| 亚洲一区中文| 夜鲁夜鲁夜鲁视频在线播放| 精品五月天堂| 久久wwww| 国产精品视频一区二区三区四蜜臂| 丝瓜av网站精品一区二区| 成人精品中文字幕| 欧美freesex黑人又粗又大| 大香伊人久久精品一区二区 | 国产亚洲高清一区| 水野朝阳av一区二区三区| 亚洲国产一区二区三区在线播放| 日韩高清中文字幕一区二区| 在线手机中文字幕| 国产精品久久久久久久久妇女| 国产精品日本一区二区不卡视频| 日日夜夜免费精品| 日本一区二区三区视频在线看 | 国产精品麻豆久久| 岛国av在线播放| 国产在线视频欧美一区| 久久不卡日韩美女| 国产精品亚洲产品| 国产欧美日韩一区二区三区在线| 欧美一区网站| 国产欧美日韩影院| 欧美黄页在线免费观看| 国产精品超碰| 美女视频黄久久| 久久精品资源| 色婷婷色综合| 欧美三区四区| 久久一区二区三区电影| 欧美精选一区二区三区| 一区二区自拍| 一区二区三区国产盗摄| 日韩不卡一区二区三区| 国产午夜久久av| 欧美国产另类| 新版的欧美在线视频| 国产综合欧美| 蜜臀久久99精品久久久久久9| 亚洲久久在线| 国产精品密蕾丝视频下载| 久久99国产精品视频| 日韩久久精品| 一本色道久久精品| 日韩国产91| 久久精品色播| 91精品亚洲| 中文字幕亚洲精品乱码| 91麻豆精品激情在线观看最新| 国产免费播放一区二区| 福利一区视频| 欧美女激情福利| 中文字幕一区二区三区日韩精品| 国产欧美一区二区三区米奇| 国产成人精品福利| 欧美日中文字幕| 蜜桃久久久久久久| 久久99视频| 国产国产精品| 欧美亚洲tv| 蜜桃视频在线网站| 日韩精品一二区| 国产精品探花在线观看| 高潮久久久久久久久久久久久久| 日本精品影院| 四虎在线精品| 激情国产在线| 蜜臀久久99精品久久久久宅男| 国产精品任我爽爆在线播放| 亚洲伦乱视频| 日韩中文av| 国内不卡的一区二区三区中文字幕| 一区二区小说| 欧美一区久久| 久久国产成人午夜av影院宅| 亚洲图片久久| 麻豆理论在线观看| 亚洲乱亚洲高清| av资源中文在线| 亚洲一区成人| 另类综合日韩欧美亚洲| 国产精品普通话对白| 国产精品亚洲四区在线观看| 久久精品av| 国产精品白浆| 99国产精品视频免费观看一公开| 国产精品美女午夜爽爽| 国产一区91| 日本一二区不卡| 在线看片一区| 亚洲成av人片一区二区密柚| 国产日韩三级| 欧美特黄a级高清免费大片a级| 国产精品99久久免费| 五月天久久久| 高清精品久久|