亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

水晶報表的jsp實現

2024-09-05 00:20:01
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,

最近為客戶開發一個mis系統,java技術,b/s結構.客戶要求系統的報表采用水晶報表.
怎樣在jsp中實現水晶報表呢?找遍了所有的資料,水晶報表的web實現倒是很多,但都講的是微軟的.net方案.jsp中如何實現水晶報表的動態顯示呢?
經過一段時間的痛苦摸索,現在把我的方案介紹給大家,希望各位大哥批評指正我的問題:
需要動態的顯示水晶報表,并且要根據我傳遞的一個參數(bh)的值動態的顯示數據.并且要可以把水晶報表導出為word,excel,pdf等格式

我的解決方案:
一:下載 crystal reports 10 for  bea weblogic workshop
二:安裝crystal reports 10 for  bea weblogic workshop;
三:如果安裝成功,則在c:/program files/common files/crystal decisions/2.5/bin目錄下,可以找到crdb_javaserver.ini文件.該文件很重要,里面的內容
關系到水晶報表如何訪問數據庫.我的水晶報表采用jdbc的方式訪問oracle數據庫,配置如下:

[common]
path = c:/bea/jdk141_05/bin
classpath = c:/projects/drivers/jdbc/classes12.jar;
c:/projects/drivers/jdbc/msbase.jar;
c:/projects/drivers/jdbc/mssqlserver.jar;
c:/projects/drivers/jdbc/msutil.jar;
c:/projects/drivers/jdbc/common.jar;
c:/projects/drivers/jdbc/db2fs.jar;
c:/projects/drivers/jdbc/db2java.zip;
c:/projects/drivers/jdbc/db2jcc.jar;
c:/projects/drivers/jdbc/weblogic.jar;
d:/progra~1/ibm/websph~1/applic~1/v5.1.1/runtimes/base_v51/lib/naming.jar;
d:/progra~1/ibm/websph~1/applic~1/v5.1.1/runtimes/base_v51/lib/namingclient.jar;
d:/progra~1/ibm/websph~1/applic~1/v5.1.1/runtimes/base_v51/lib/namingserver.jar;
d:/progra~1/ibm/websph~1/applic~1/v5.1.1/runtimes/base_v51/lib/cmimpl.jar;
d:/progra~1/ibm/websph~1/applic~1/v5.1.1/runtimes/base_v51/lib/j2cimpl.jar;
c:/projects/drivers/jdbc/weblogic.jar;
c:/program files/common files/crystal decisions/2.5/bin/crdbjavaserver.jar;
c:/bea/weblogic81/server/lib/ojdbc14.jar

iorfilelocation = ${temp}
javaservertimeout = 1800
jvmmaxheap = 64000000
jvmminheap = 32000000

[crdb_jdbc]
cacherowsetsize = 100
jdbcurl = jdbc:oracle:thin:@192.168.1.99:1521:pwsc
jndiurl =
jdbcusername = testuser
jdbcdrivername = oracle.jdbc.driver.oracledriver
jndiusername = weblogic
jndiconnectionfactory =
jndiinitcontext = /
genericjdbcdriverbehavior = db2

[crdb_xml]
prereadnbyte = 5000
cacherowsetsize = 100
xmllocalurl =
schemalocalurl =
xmlhttpurl =
schemahttpurl =
usetempfile = true

以上是配置文件,需要說明的是:
1:由于我采用的是jdbc的方式訪問數據庫,所以classpath中一定要把c:/bea/weblogic81/server/lib/ojdbc14.jar加進去,它是jdbc的驅動
2:[crdb_jdbc]中的:jdbcurl = jdbc:oracle:thin:@192.168.1.99:1521:pwsc 是我要訪問的數據庫名稱.jdbcusername = testuser是設置用戶名,
  jdbcdrivername = oracle.jdbc.driver.oracledriver是jdbc驅動名稱

四:在水晶報表編輯器中編輯我要用的報表.由于我需要動態的給報表傳遞參數,所以我在報表中設置了一個參數字段,水晶報表根據這個參數字段,就可以顯示相應的
數據,參數字段命名為bh,在公式編輯器中編寫如下代碼:
if {?bh}<>""  then
{gg_bpbj.jlbh}={?bh}
else
{gg_bpbj.jlbh}="1" or {gg_bpbj.jlbh}<>"1"
以上代碼的意思是:如果bh參數不為空,則顯示{gg_bpbj.jlbh}等于參數bh的記錄,否則顯示出所有的記錄
(大家可能覺得{gg_bpbj.jlbh}="1" or {gg_bpbj.jlbh}<>"1"很可笑,是啊,我開始是寫成"true"了,在水晶報表編輯器中可以很好的運行,但方到web上顯示就有
問題,萬般無奈,只有如此了,:( )

五:在weblogic workshop中新建一個web項目,用右鍵選擇該項目文件夾,選擇"新建",選擇"crystal report",則在該web項目根目錄下自動新建了一個
crystalreportviewers10目錄,里面有顯示水晶報表需要的頁面元素系統自動添加了開發水晶報表需要的jar包,共有13個jar文件(位于web_inf/lib目錄下),
并增加了一些水晶報表專用的標簽(在web_inf/src下)

六:需要特別注意的是:在web_inf下的web.xml文件也隨之改動,改動后的web.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.3//en" "http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- the web.xml file is a configuration file used to control the behavior of weblogic server.
in most cases, you will not need to modify this file. for more information on web.xml, please
consult the web.xml deployment descriptor elements chapter of the "developing weblogic server
applications" documentation on edocs.bea.com. -->
<web-app>
  <display-name>workshop application</display-name>
  <context-param>
    <param-name>weblogic.httpd.inputcharset./*</param-name>
    <param-value>gbk</param-value>
  </context-param>
  <context-param>
    <param-name>crystal_image_uri</param-name>
    <param-value>/webmis/crystalreportviewers10</param-value>
  </context-param>
  <filter>
    <filter-name>pageflowjspfilter</filter-name>
    <filter-class>com.bea.wlw.netui.pageflow.pageflowjspfilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>pageflowjspfilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.bea.wlw.runtime.core.servlet.webappcontextlistener</listener-class>
  </listener>
  <!-- standard action servlet configuration (with debugging) -->
  <servlet>
    <servlet-name>messageservlet</servlet-name>
    <servlet-class>com.infoearth.servlets.gettaskservlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>com.bea.wlw.netui.pageflow.dynamicsubappactionservlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/web-inf/jpf-struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>config/-global</param-name>
      <param-value>/web-inf/jpf-struts-config--global.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>drawimage</servlet-name>
    <servlet-class>com.infoearth.drawimage.drawimageservlet</servlet-class>
  </servlet>
   
  <servlet-mapping>
    <servlet-name>drawimage</servlet-name>
    <url-pattern>drawimage</url-pattern>
  </servlet-mapping>

  <!-- struts action servlet mappings -->
  <!-- note that because struts takes the *last* mapping here as the extension to add to
         actions posted from forms, we must have *.do come after *.jpf. -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.jpf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>messageservlet</servlet-name>
    <url-pattern>/messageservlet</url-pattern>
  </servlet-mapping>
  <mime-mapping>
     <extension>doc</extension>
     <mime-type>application/msword</mime-type>
  </mime-mapping>
  <mime-mapping>
     <extension>xls</extension>
     <mime-type>application/msexcel</mime-type>
  </mime-mapping>
  <welcome-file-list>
    <welcome-file>login/logincontroller.jpf</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list> 
  <error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
  </error-page>
  <!-- define the netui tag library tlds -->
  <taglib>
    <taglib-uri>netui-tags-html.tld</taglib-uri>
    <taglib-location>/web-inf/netui-tags-html.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>netui-tags-databinding.tld</taglib-uri>
    <taglib-location>/web-inf/netui-tags-databinding.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>netui-tags-template.tld</taglib-uri>
    <taglib-location>/web-inf/netui-tags-template.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/crystal-tags-reportviewer.tld</taglib-uri>
    <taglib-location>/web-inf/crystal-tags-reportviewer.tld</taglib-location>
  </taglib>
</web-app>


其中:

<context-param>
    <param-name>crystal_image_uri</param-name>
    <param-value>/webmis/crystalreportviewers10</param-value>
 </context-param>
 很關鍵,它設置了水晶報表專用的crystalreportviewers10路徑(第五步中自動建的crystalreportviewers10目錄),如果設置錯誤,將來點擊水晶報表自帶的
 導出和打印按鈕是就會報頁面錯誤,并且水晶報表自己的各種翻頁,導出等圖標也無法正常顯示.

七:把編輯好的水晶報表(后綴命為rpt)放在一個目錄下(我自己建了一個report目錄,專門存放報表文件)

八:可以寫程序了:
1.編寫reportinit類.作用:用于傳遞參數bh.這個類很關鍵,負責把java的參數值傳遞到水晶報表文件.
2.在頁面流中增加showrpt操作:其實就是實例化一個reportinit類.
3.編寫viewer.jsp文件用來動態顯示水晶報表.


后面有我的源代碼,請大家批評指正.

存在的問題:
1:水晶報表導出成pdf文件時有問題:漢字顯示為亂碼,不知何故?此問題困擾我幾個月了,沒法解決
2:無法把打印/導出頁面漢化:在crystalreportviewers10/js目錄下有一系列strings命名的js文件,我猜測是用來國際化頁面的,可是我修改
 strings_zh,js,strings_en.js,沒有什么效果.
3:在瀏覽器中顯示水晶報表后,關閉顯示頁面,該水晶報表依然和數據庫連接,(可由select * from v$session 查看oracle的連接數).如果在
viewer.jsp中加入斷開連接的語句:
viewer.dispose();
rptsource.dispose();
則只能顯示一頁報表.并且打印和導出不能工作.

以上問題困擾我很久,雖然并不影響使用,但心中還是不是很爽.希望高手指點.


源程序:

/*
 * create date: 2004-8-14  11:06
 * create by: 李春雷
 * purpose:設置水晶報表的查詢參數(目前支持7個參數的查詢,有用的參數為編號)
 */


package com.infoearth.report;
import com.crystaldecisions.report.web.viewer.*;
import com.crystaldecisions.sdk.occa.report.data.*;
import com.crystaldecisions.reports.reportengineinterface.jpereportsourcefactory;
import com.crystaldecisions.sdk.occa.report.reportsource.ireportsourcefactory2;
import com.crystaldecisions.sdk.occa.report.reportsource.ireportsource;

public class reportinit
{
    private ireportsource rptsource;
   
    private fields fields;
   
    public reportinit(){
        rptsource = null;
        fields = null;
        }
   
    public ireportsource getrptsource(){
        return rptsource;
        }
       
    public fields getfields(){
        return fields;
        }
       
    public  boolean setreport(string fname,string rptid){
         //獲得查詢條件
        string filename = fname + ".rpt";
        string bh = rptid;
        string path = "report/"+filename; //報表文件路徑        
        try{                       
            ireportsourcefactory2 rsf = new jpereportsourcefactory();
            java.util.locale localetest = java.util.locale.china;
            rptsource = (ireportsource)rsf.createreportsource(path,localetest);
            fields = new fields();
            parameterfield pfield1 = new parameterfield(); //編號
            parameterfield pfield2 = new parameterfield(); //單位
            parameterfield pfield3 = new parameterfield(); //人
            parameterfield pfield5 = new parameterfield(); //field5
            parameterfield pfield6 = new parameterfield(); //field6
            parameterfield pfield4_kssj = new parameterfield(); //開始時間
            parameterfield pfield4_jssj = new parameterfield(); //結束時間

            values vals1 = new values();
            values vals2 = new values();
            values vals3 = new values();
            values vals5 = new values();
            values vals6 = new values();
            values vals4_kssj = new values();
            values vals4_jssj = new values();

            parameterfielddiscretevalue pfielddv1 = new parameterfielddiscretevalue();
            parameterfielddiscretevalue pfielddv2 = new parameterfielddiscretevalue();
            parameterfielddiscretevalue pfielddv3 = new parameterfielddiscretevalue();
            parameterfielddiscretevalue pfielddv5 = new parameterfielddiscretevalue();
            parameterfielddiscretevalue pfielddv6 = new parameterfielddiscretevalue();
            parameterfielddiscretevalue pfielddv4_kssj = new parameterfielddiscretevalue();
            parameterfielddiscretevalue pfielddv4_jssj = new parameterfielddiscretevalue();
            //設置第一個參數:編號
            pfield1.setreportname("");
            pfield1.setname("bh");
            pfielddv1.setvalue(bh);
            pfielddv1.setdescription("編號");
            vals1.add(pfielddv1);
            pfield1.setcurrentvalues(vals1);
            //設置第二個參數:單位部門
            pfield2.setreportname("");
            pfield2.setname("dw");
            pfielddv2.setvalue("");
            pfielddv2.setdescription("發單部門");
            vals2.add(pfielddv2);
            pfield2.setcurrentvalues(vals2);
            //設置第三個參數:人
            pfield3.setreportname("");
            pfield3.setname("ren");
            pfielddv3.setvalue("");
            pfielddv3.setdescription("申請人、下達人、操作人、負責人等"); 
            vals3.add(pfielddv3);
            pfield3.setcurrentvalues(vals3);
            //設置第五個查詢字段
            pfield5.setreportname("");
            pfield5.setname("field5");
            pfielddv5.setvalue("");
            pfielddv5.setdescription("查詢字段5:任務來源線路名稱等"); 
            vals5.add(pfielddv5);
            pfield5.setcurrentvalues(vals5);
            //設置第六個查詢字段
            pfield6.setreportname("");
            pfield6.setname("field6");
            pfielddv6.setvalue("");
            pfielddv6.setdescription("查詢字段6:更改原因、工作內容等"); 
            vals6.add(pfielddv6);
            pfield6.setcurrentvalues(vals6);
            //設置開始時間
            pfield4_kssj.setreportname("");
            pfield4_kssj.setname("kssj");
            pfielddv4_kssj.setvalue("");
            pfielddv4_kssj.setdescription("開始時間"); 
            vals4_kssj.add(pfielddv4_kssj);
            pfield4_kssj.setcurrentvalues(vals4_kssj);
            //設置結束時間
            pfield4_jssj.setreportname("");
            pfield4_jssj.setname("jssj");
            pfielddv4_jssj.setvalue("");
            pfielddv4_jssj.setdescription("結束時間"); 
            vals4_jssj.add(pfielddv4_jssj);
            pfield4_jssj.setcurrentvalues(vals4_jssj);
            //參數字段和報表關聯
            fields.add(pfield1);
            fields.add(pfield2);
            fields.add(pfield3);
            fields.add(pfield5);
            fields.add(pfield6);
            fields.add(pfield4_kssj);
            fields.add(pfield4_jssj);
            return true;
            }
        catch(exception e){               
            system.out.println("class:reportinit錯誤:"+e);
            return false;
            }      
    }       
}

 

//在頁面流中增加如下操作:
    /**
     * @jpf:action
     * @jpf:forward name="false" path="error.jsp"
     * @jpf:forward name="success" path="viewer.jsp"
     */
    protected forward showrpt()
    {
        string rptid = this.getrequest().getparameter("rptid");       
        string rptbh = this.getrequest().getparameter("rptbh");
        string rptname = dbctrl.getrptcnname(rptid);
        if ((rptname!=null) && (rptbh!=null)) {
            reportinit rpt = new reportinit();
            boolean result = rpt.setreport(rptname, rptbh);
            if(result==true) {
                fields fields = rpt.getfields();
                ireportsource rptsource = rpt.getrptsource(); 
                this.getsession().setattribute("fields", fields);
                this.getsession().setattribute("rptsource", rptsource); 
                return new forward("success");
            } else {
                return new forward("false");
            }
        }
        return new forward("false");
    }

 

    //viewer.jsp用來動態顯示水晶報表.viewer.jsp的內容如下:
   
<%@ page language="java" contenttype="text/html;charset=utf-8"%>
<%@ page import= "com.crystaldecisions.report.web.viewer.*,
com.crystaldecisions.sdk.occa.report.data.*,
com.crystaldecisions.reports.reportengineinterface.jpereportsourcefactory,
com.crystaldecisions.sdk.occa.report.reportsource.ireportsourcefactory2,
com.crystaldecisions.sdk.occa.report.reportsource.ireportsource"%>
<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>
<%
//fields  rptsource
//string name = (string)request.getattribute("nametest");
//system.out.println("name="+name);
%>
<!-- ../crystalreportviewers10/css/default.css -->
<link rel="stylesheet" type="text/css" href="../crystalreportviewers10/css/default.css">
<%
ireportsource rptsource = (ireportsource)session.getattribute("rptsource");
fields fields = (fields) session.getattribute("fields");
connectioninfos conninfos = new connectioninfos();
iconnectioninfo conninfo1 = new connectioninfo();
conninfo1.setusername("testuser");
conninfo1.setpassword("test");
conninfos.add(conninfo1);
crystalreportviewer viewer = new crystalreportviewer();
viewer.setreportsource(rptsource);
viewer.setdatabaselogoninfos(conninfos);
viewer.setparameterfields(fields);
viewer.setenableparameterprompt(true);
viewer.setownpage(true);
viewer.setownform(true);
viewer.setprintmode(crprintmode.activex);
viewer.sethasexportbutton(true);
viewer.sethasprintbutton(true);
viewer.sethaslogo(false);
viewer.processhttprequest(request, response,getservletconfig().getservletcontext(), out);
viewer.refresh();
//viewer.dispose();
//rptsource.dispose();
%>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产色综合| 久久精品影视伊人网| 国产精品激情av在线播放| 亚洲国产福利在线| 国内精品久久久久影院 日本资源| 国产精品主播视频| 成人激情视频小说免费下载| 亚洲成年网站在线观看| 亚洲欧美在线看| 亚洲欧美精品一区二区| 欧美日韩国产一区中文午夜| 92福利视频午夜1000合集在线观看| 久久全国免费视频| 日本午夜精品理论片a级appf发布| 91九色视频在线| 久久人人爽人人| 91精品久久久久久久久久另类| 欧美噜噜久久久xxx| 国产精品一区二区女厕厕| 91美女片黄在线观| 97在线观看视频| 日韩视频一区在线| 日韩av色在线| 国产精品96久久久久久又黄又硬| 国产亚洲欧美日韩精品| 亚洲色图日韩av| 日韩理论片久久| 日韩在线免费视频| 亚洲成人av中文字幕| 亚洲乱码国产乱码精品精天堂| 亚洲女人天堂成人av在线| 伦伦影院午夜日韩欧美限制| 欧美性xxxx极品hd欧美风情| 亚洲精品国产精品国产自| 一区二区在线免费视频| yellow中文字幕久久| 深夜成人在线观看| 日韩在线免费视频观看| 国产mv久久久| 色偷偷av一区二区三区| 欧美成人手机在线| 精品色蜜蜜精品视频在线观看| 欧洲成人午夜免费大片| 91网站免费观看| 亚洲欧美资源在线| 国产精品观看在线亚洲人成网| 国产精品成熟老女人| 国产精品精品久久久久久| 国产精品xxx视频| 97久久伊人激情网| 青青精品视频播放| 久久久久国产精品免费网站| 亚洲精品黄网在线观看| 欧美日韩国产二区| 91在线免费网站| 96pao国产成视频永久免费| 亚洲一区久久久| 2019av中文字幕| 亚洲综合中文字幕在线观看| 欧美亚州一区二区三区| 日韩中文字幕在线播放| 中文字幕少妇一区二区三区| 日韩黄色在线免费观看| 欧美黑人xxxⅹ高潮交| 欧美在线视频在线播放完整版免费观看| 国语自产偷拍精品视频偷| 国产精品永久免费在线| 欧美性高潮在线| 欧美性猛交xxxx乱大交极品| 亚洲第一页在线| 精品丝袜一区二区三区| 九九精品在线视频| 国产精品igao视频| 亚洲成年人在线播放| 国产精品久久久久91| 亚洲性69xxxbbb| 久久久国产视频| 日本一区二三区好的精华液| 韩国19禁主播vip福利视频| 日韩中文字幕在线看| 91精品久久久久久久久中文字幕| 久久久精品999| 国产精品都在这里| 国产精品国产福利国产秒拍| 日韩欧美亚洲成人| 国产精品一区二区性色av| 亚洲国产精品一区二区三区| 日韩国产高清污视频在线观看| 亚洲老司机av| 91精品综合视频| 福利微拍一区二区| 成人黄色在线观看| 亚洲网站在线看| 成人a级免费视频| 精品亚洲夜色av98在线观看| 国内外成人免费激情在线视频网站| 欧美日韩中文字幕综合视频| 91极品视频在线| 久久久久久久激情视频| 国产999精品视频| 2025国产精品视频| 亚洲精品国产精品久久清纯直播| 亚洲综合av影视| 欧美二区在线播放| 久久久久国产精品免费| 久久天天躁狠狠躁老女人| 亚洲欧洲午夜一线一品| 亚洲视屏在线播放| 伊人青青综合网站| 亚洲精品成人免费| 狠狠干狠狠久久| 岛国av一区二区| 78m国产成人精品视频| 91精品久久久久久久久不口人| 精品动漫一区二区三区| 欧美大秀在线观看| 欧美成人精品在线观看| 97国产一区二区精品久久呦| 97碰在线观看| 日韩免费观看av| 亚洲欧美国产精品专区久久| 欧美日韩在线视频一区| 成人中心免费视频| 欧美精品在线观看91| 国产亚洲美女久久| 8090成年在线看片午夜| 日韩av中文在线| 欧美风情在线观看| 欧美色图在线视频| 精品视频在线观看日韩| 亚洲男人天堂视频| 欧洲亚洲免费视频| 欧美日韩美女视频| 国产精品嫩草影院久久久| 91成人免费观看网站| 日本中文字幕不卡免费| 日韩中文字幕亚洲| 精品欧美国产一区二区三区| 精品av在线播放| 97在线看免费观看视频在线观看| 黄网动漫久久久| 亚洲福利视频免费观看| 日韩av最新在线| 精品国模在线视频| 亚洲综合社区网| 欧美最猛性xxxxx免费| 理论片在线不卡免费观看| 中文字幕成人在线| 国精产品一区一区三区有限在线| 欧美激情久久久| 国产精品入口日韩视频大尺度| 日韩欧美一区二区三区久久| 人九九综合九九宗合| 亚洲欧美成人在线| 日韩国产精品亚洲а∨天堂免| 亚洲电影免费观看高清完整版在线| 国产精品露脸av在线| 欧美成人自拍视频| 午夜精品一区二区三区在线视| 色婷婷av一区二区三区久久| 日韩高清有码在线| 亚洲在线观看视频网站| 日韩精品在线电影| 欧美黑人性生活视频|