• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    FreeMarker文檔生成技術(shù)在畢業(yè)設(shè)計(jì)管理系統(tǒng)中的應(yīng)用

    2017-01-21 15:47:38周建鋒
    軟件導(dǎo)刊 2016年12期

    摘 要:FreeMarker是一種使用Java語(yǔ)言編寫的模板引擎框架技術(shù)。使用該技術(shù)構(gòu)建了一種模板樣式與模型數(shù)據(jù)相互分離的Word文檔動(dòng)態(tài)生成方案。該方案應(yīng)用于畢業(yè)設(shè)計(jì)管理信息系統(tǒng),可以在線生成選題審批表、任務(wù)書(shū)、開(kāi)題報(bào)告、中英文摘要、論文扉頁(yè)等具有固定結(jié)構(gòu)的Word文檔。實(shí)踐證明,該方案代碼量少,文檔內(nèi)容及樣式控制方便,保證了畢業(yè)設(shè)計(jì)相關(guān)文檔格式的高度一致性。

    關(guān)鍵詞:FreeMarker;模板技術(shù);Word自動(dòng)生成;畢業(yè)設(shè)計(jì)管理

    DOIDOI:10.11907/rjdk.162232

    中圖分類號(hào):TP319

    文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2016)012-0109-04

    0 引言

    隨著教育信息化的發(fā)展,眾多高校將計(jì)算機(jī)技術(shù)應(yīng)用于日常教學(xué)管理中[1]。畢業(yè)設(shè)計(jì)(論文)是高校實(shí)現(xiàn)人才培養(yǎng)目標(biāo)的重要實(shí)踐教學(xué)環(huán)節(jié),應(yīng)充分利用先進(jìn)的信息技術(shù)提高管理效率,從而提高畢業(yè)設(shè)計(jì)質(zhì)量。筆者為天津理工大學(xué)中環(huán)信息學(xué)院設(shè)計(jì)開(kāi)發(fā)了一個(gè)基于B/S架構(gòu)的畢業(yè)設(shè)計(jì)管理信息系統(tǒng)[2],系統(tǒng)使用Java Web技術(shù)實(shí)現(xiàn),采用基于組件式開(kāi)發(fā)的MVC(Model View Controller)設(shè)計(jì)模式[3],高效實(shí)現(xiàn)了畢業(yè)設(shè)計(jì)信息化、規(guī)范化管理。系統(tǒng)中涉及的所有基礎(chǔ)性數(shù)據(jù)(如學(xué)生信息、指導(dǎo)教師信息、題目信息等)以及畢業(yè)設(shè)計(jì)過(guò)程中師生在線填寫的各類文檔都持久化存儲(chǔ)在對(duì)應(yīng)的MySQL數(shù)據(jù)庫(kù)表中。但是,諸如選題審批表、任務(wù)書(shū)、開(kāi)題報(bào)告、提交審核表等文檔仍需要打印紙質(zhì)版后由學(xué)生或指導(dǎo)教師簽字,這些紙質(zhì)版文檔或者要求院系存檔,或者需要裝訂在畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文)中。如何將MySQL中的相關(guān)數(shù)據(jù)導(dǎo)出并生成符合格式規(guī)范要求的Word文檔,成為畢業(yè)設(shè)計(jì)管理信息系統(tǒng)必須實(shí)現(xiàn)的一項(xiàng)功能。本文選用基于FreeMarker模板引擎技術(shù)構(gòu)建了一種模板樣式與模型數(shù)據(jù)相互分離的Word文檔動(dòng)態(tài)生成方案,通過(guò)較少的代碼量就可以滿足畢業(yè)設(shè)計(jì)管理信息系統(tǒng)中的文檔導(dǎo)出需求。

    1 相關(guān)技術(shù)介紹

    1.1 FreeMarker

    FreeMarker是使用純Java編寫的一款模板引擎,即一種基于模板、用于生成輸出文本(HTML、XML、RTF、Java源代碼等)的通用工具[4]。FreeMarker不是面向最終用戶的,而是一個(gè)Java類庫(kù),適合作為嵌入其它開(kāi)發(fā)產(chǎn)品中的一個(gè)組件,其最初設(shè)計(jì)被用來(lái)在MVC模式的Web開(kāi)發(fā)框架中生成HTML頁(yè)面,但它不依賴于 Servlet、HTML或Web環(huán)境,僅僅專注于展示數(shù)據(jù),與具體的程序邏輯相分離。它的核心原理是模板+數(shù)據(jù)模型=輸出。首先,F(xiàn)reeMarker擁有功能強(qiáng)大的模板語(yǔ)言(FreeMarker Template Language,簡(jiǎn)稱FTL),包含了諸如include、if/elseif/else、循環(huán)結(jié)構(gòu)等常用指令,在模板中創(chuàng)建和改變變量,并且能夠在任何地方使用復(fù)雜表達(dá)式來(lái)指定值。其次,F(xiàn)reeMarker具有通用的數(shù)據(jù)模型,它不是直接反射到Java對(duì)象,而是通過(guò)插件式對(duì)象封裝,以變量方式在模板中顯示Java對(duì)象。

    1.2 Word對(duì)XML的支持

    微軟從Office Word 2003就開(kāi)始針對(duì)XML進(jìn)行了完整設(shè)計(jì),支持稱為Word 標(biāo)記語(yǔ)言的原生XML詞匯,使Word文檔可以和XML文檔相互轉(zhuǎn)換[5]。開(kāi)發(fā)者可建立這種XML和可編程代碼來(lái)增強(qiáng)Word文檔,并幫助用戶建立和修改文檔。

    常見(jiàn)的WordXML格式標(biāo)簽示例如下:表示W(wǎng)ord文檔中的段落,和html中的

    標(biāo)簽類似;表示一個(gè)樣式串,指明它包括的文本顯示樣式,如文本屬性加粗、下劃線等;表示W(wǎng)ord里的字符串,即文字內(nèi)容;Word段落屬性包含在標(biāo)簽中;標(biāo)簽中定義文本格式。

    2 系統(tǒng)數(shù)據(jù)模型

    在畢業(yè)設(shè)計(jì)管理信息系統(tǒng)中,具有固定結(jié)構(gòu)和格式規(guī)范要求的文檔有封皮、扉頁(yè)、選題審批表、任務(wù)書(shū)、開(kāi)題報(bào)告、中期檢查表、中英文摘要、提交審核表和裝訂審批表等。這些文檔結(jié)構(gòu)和格式固定,其中有一部分文檔內(nèi)容由用戶在畢業(yè)設(shè)計(jì)中通過(guò)網(wǎng)絡(luò)在線提交并持久化至系統(tǒng)數(shù)據(jù)庫(kù)。本文簡(jiǎn)要介紹系統(tǒng)數(shù)據(jù)庫(kù),然后以開(kāi)題報(bào)告為例說(shuō)明如何準(zhǔn)備模型數(shù)據(jù)。

    2.1 系統(tǒng)數(shù)據(jù)庫(kù)

    系統(tǒng)使用MySQL數(shù)據(jù)庫(kù),主要涉及的數(shù)據(jù)庫(kù)表有adminuser(管理員表)、teacher(教師表)、stu(學(xué)生表)、syear(學(xué)年表)、dept(部門表)、major(專業(yè)表)、rank(職稱表)、ttask(教師任務(wù)表)、project(題目信息表)等,其中畢業(yè)設(shè)計(jì)相關(guān)文檔數(shù)據(jù)主要來(lái)源于project表,結(jié)構(gòu)如表1所示(限于篇幅,僅列出project表中的部分字段)。

    2.2 準(zhǔn)備模型數(shù)據(jù)

    數(shù)據(jù)模型并不是文本文件,它來(lái)自于Java對(duì)象。圖1為開(kāi)題報(bào)告的一個(gè)Word示例,其中使用矩形方框標(biāo)出的是生成開(kāi)題報(bào)告需要的動(dòng)態(tài)模型數(shù)據(jù)。不難發(fā)現(xiàn),這些數(shù)據(jù)均來(lái)源于project關(guān)系表,系統(tǒng)與project關(guān)系表對(duì)應(yīng)的JavaBean實(shí)體類為project,對(duì)project關(guān)系表進(jìn)行查詢得到的記錄將通過(guò)ORM(對(duì)象關(guān)系映射)轉(zhuǎn)換為一個(gè)project類的對(duì)象實(shí)例,該對(duì)象的成員變量分別對(duì)應(yīng)project表中各字段。

    數(shù)據(jù)模型是樹(shù)形的,可以通過(guò)HashMap類構(gòu)建簡(jiǎn)單的數(shù)據(jù)模型,例如將某個(gè)題目信息對(duì)象project以map映射數(shù)據(jù)("project", project)存入數(shù)據(jù)模型,在flt模板中則可以通過(guò)${project.ptitle}獲取畢業(yè)設(shè)計(jì)(論文)標(biāo)題,通過(guò)${project.sname}獲取學(xué)生姓名,其訪問(wèn)模型數(shù)據(jù)方式類似于EL表達(dá)式。

    3 FreeMarker模板準(zhǔn)備

    在確定了模型數(shù)據(jù)對(duì)象名稱、結(jié)構(gòu)和語(yǔ)義之后,才能準(zhǔn)確無(wú)誤地使用模板語(yǔ)言構(gòu)建動(dòng)態(tài)可變內(nèi)容。下面以創(chuàng)建開(kāi)題報(bào)告模板為例說(shuō)明如何準(zhǔn)備FreeMarker模板。

    3.1 準(zhǔn)備Word模板

    準(zhǔn)備一個(gè)如圖1所示的Word 2003版本開(kāi)題報(bào)告,需要注意的是開(kāi)題報(bào)告內(nèi)容比較多,可能會(huì)跨頁(yè),為保證表格跨頁(yè)正常顯示,需要將開(kāi)題報(bào)告內(nèi)容所在的單元格設(shè)置為允許跨頁(yè)斷行。

    3.2 轉(zhuǎn)換為XML并保存為ftl文件

    將準(zhǔn)備好的開(kāi)題報(bào)告模板另存為Word 2003 XML文檔,然后將其后綴名修改為flt即可。

    3.3 修改ftl文件,完成數(shù)據(jù)填充

    修改flt文件,將如圖1所示的需要?jiǎng)討B(tài)填充的零散數(shù)據(jù)替換為ftl語(yǔ)言表達(dá)式。文獻(xiàn)[6-8]中通過(guò)類似${project.sname}方式取出模型數(shù)據(jù),完成對(duì)模板的填充,但在實(shí)際應(yīng)用中有可能產(chǎn)生兩個(gè)問(wèn)題:①當(dāng)模型數(shù)據(jù)對(duì)象為NULL或者不存在的情況下會(huì)拋掉異常;②當(dāng)模型數(shù)據(jù)中含有“<”、“>”、“&”、單引號(hào)、雙引號(hào)這些XML本身的標(biāo)記符號(hào)時(shí),可能造成XML文件解析錯(cuò)誤,使最終生成的Word文檔打不開(kāi)。為保證程序的健壯性,在應(yīng)用實(shí)踐中采用如下方法解決這兩個(gè)問(wèn)題:

    (1)針對(duì)問(wèn)題①,對(duì)可能為NULL的模型數(shù)據(jù)在引用前先使用ftl語(yǔ)言條件表達(dá)式“<#if>”進(jìn)行判斷。

    (2)針對(duì)問(wèn)題②,將所有對(duì)模型數(shù)據(jù)的引用置于CDATA區(qū)段,由“<![CDATA[”開(kāi)始,“]] >”結(jié)束,因?yàn)樘幵贑DATA 區(qū)段中的文本不會(huì)被XML解析器解析。

    以畢業(yè)設(shè)計(jì)(論文)題目為例,題目不可能為NULL,但子標(biāo)題可能為NULL。另外,題目和子標(biāo)題中可能存在XML本身使用的標(biāo)記符號(hào),在模板中對(duì)畢業(yè)設(shè)計(jì)(論文)題目可按照以下ftl語(yǔ)言表達(dá)式進(jìn)行替換:<![CDATA[${project.ptitle}]] ><#if project.psubtitle??> <![CDATA[——${project.psubtitle}]] >。

    3.4 對(duì)多個(gè)段落內(nèi)容的特殊處理

    以開(kāi)題報(bào)告內(nèi)容為例說(shuō)明。開(kāi)題報(bào)告內(nèi)容由許多段落組成,由學(xué)生在頁(yè)面中通過(guò)textarea文本域填寫并提交。學(xué)生在填寫開(kāi)題報(bào)告內(nèi)容時(shí)通過(guò)回車換行進(jìn)行分段,可能會(huì)在換行后輸入多個(gè)空格來(lái)實(shí)現(xiàn)類似Word段落首行縮進(jìn)的效果。最終開(kāi)題報(bào)告內(nèi)容被提交并存儲(chǔ)至數(shù)據(jù)庫(kù)project表ktbgnr字段中,其中的回車換行被保存為不可見(jiàn)字符“\\r\\n”(或者“\\n”,或者“\\r”,由不同的操作系統(tǒng)而定)。如果按照前述方法使用<![CDATA[${project.ktbgnr}]] >進(jìn)行數(shù)據(jù)填充,只能生成一個(gè)段落。為保證能夠生成多個(gè)格式統(tǒng)一段落,可按下述方法分析符合指定格式要求的段落在XML中如何表示。

    在一個(gè)空白的Word文檔中按照論文段落格式要求(宋體、小四號(hào)、多倍行距1.25、段落首行縮進(jìn)2字符)編寫一段內(nèi)容,然后將其另存為Word 2003 XML格式文檔,打開(kāi)該文檔并找到對(duì)應(yīng)段落的XML代碼,如圖2所示。為敘述方便,將圖2中陰影部分對(duì)應(yīng)的XML字符串簡(jiǎn)記為,矩形方框內(nèi)對(duì)應(yīng)的XML字符串簡(jiǎn)記為,那么在ftl模板文件中對(duì)應(yīng)一個(gè)指定格式要求的完整段落就由+段落內(nèi)容+組成。 根據(jù)多個(gè)段落內(nèi)容存儲(chǔ)特點(diǎn)以及固定格式Word段落的xml結(jié)構(gòu),設(shè)計(jì)對(duì)多個(gè)段落內(nèi)容的特殊處理方案:

    (1)將回車換行符(“\\r\\n”、 “\\n”或“\\r”)替換為統(tǒng)一的分隔字符串,生成一個(gè)uuid作為分隔字符串,保證分隔字符串在開(kāi)題報(bào)告內(nèi)容中不會(huì)出現(xiàn),否則會(huì)產(chǎn)生錯(cuò)誤的分段信息。

    (2)去除分隔字符串前后所有連續(xù)的空白字符。

    (3)多段內(nèi)容替換填充,采用如下兩種策略:①按照分隔字符串將多個(gè)段落內(nèi)容分隔為一個(gè)字符串?dāng)?shù)組,數(shù)組元素表示一個(gè)個(gè)段落,按照?qǐng)D2所示格式使用ftl循環(huán)指令依次輸出每個(gè)段落,段落內(nèi)容置于CDATA 區(qū)段中;②將分隔字符串替換為“]] ><![CDATA[”,替換后的內(nèi)容以map映射數(shù)據(jù)("ktbknr", ktbknr)存入數(shù)據(jù)模型,然后按圖2所示代碼格式在ftl模板中完成數(shù)據(jù)填充:<![CDATA[${ktbknr}]] >。該方法利用了CDATA區(qū)段不被解析特性以及ftl模板中的段落組成方式,將開(kāi)題報(bào)告內(nèi)容中的多個(gè)段落巧妙地拼接構(gòu)造出來(lái),最終生成格式一致的多段內(nèi)容。

    4 程序?qū)崿F(xiàn)

    4.1 創(chuàng)建工具類并初始化FreeMarker配置實(shí)例

    首先導(dǎo)入版本號(hào)為2.3.24的freemarker.jar包,并在com.bs.util包下創(chuàng)建WordUtil.java工具類。使用FreeMarker的第一步是創(chuàng)建配置實(shí)例,由于FreeMarker的configuration配置對(duì)象全局只需要維護(hù)一個(gè),因此在WordUtil.java類中將configuration定義為靜態(tài)變量并通過(guò)靜態(tài)代碼初始化:

    private static Configuration configuration;

    static {

    configuration = new Configuration(Configuration.getVersion());

    configuration.setDefaultEncoding("UTF-8");

    }

    接著在該類中封裝對(duì)多個(gè)段落進(jìn)行預(yù)處理的stringFilter()方法和生成Word文檔的creatWord()方法,下面分別對(duì)這兩個(gè)方法進(jìn)行介紹。

    4.2 對(duì)多個(gè)段落內(nèi)容的預(yù)處理

    對(duì)多個(gè)段落內(nèi)容的處理采用前述的替換填充策略。在生成選題理由、開(kāi)題報(bào)告內(nèi)容等包含多個(gè)段落內(nèi)容文檔時(shí),需要使用該方法對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,代碼如下:

    public static String stringFilte(String source) {

    String uuid = UUID.randomUUID().toString();

    return source.replaceAll("\\r\\n", uuid) //

    .replaceAll("\\r|\\n", uuid) //

    .replaceAll("\\s*"+uuid+"\\s*", uuid) //

    .replace(uuid, "]] ><![CDATA[");

    }

    4.3 生成Word文檔方法

    生成Word的方法封裝如下,其中省略了try…catch語(yǔ)句塊。

    public static void createWord(ServletContext servletContext, Map dataMap, String templateName, String filePath, String fileName){

    configuration.setServletContextForTemplateLoading(servletContext, "/templates/");

    Template template = configuration.getTemplate(templateName);

    File outFile = new File(filePath + fileName);

    if (!outFile.getParentFile().exists()) {

    outFile.getParentFile().mkdirs();

    }

    Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

    template.process(dataMap, out);

    out.flush();

    out.close();

    }

    需要說(shuō)明的是,ftl模板文件設(shè)置為統(tǒng)一存放在站點(diǎn)根目錄的“/templates/”路徑下,方法調(diào)用時(shí)需要提供參數(shù)為:當(dāng)前的servletContext上下文、模型數(shù)據(jù)Map、使用的模板名稱、生成Word文檔的存放目錄以及Word文檔名稱。若指定的Word文檔存放目錄不存在,程序會(huì)自動(dòng)創(chuàng)建該目錄。

    4.4 應(yīng)用示例

    畢業(yè)設(shè)計(jì)各類文檔內(nèi)容提交時(shí)間不同,生成對(duì)應(yīng)Word文檔的時(shí)機(jī)也不同。以生成開(kāi)題報(bào)告Word為例,按照系統(tǒng)設(shè)計(jì),學(xué)生提交開(kāi)題報(bào)告內(nèi)容后,由指導(dǎo)教師填寫審批意見(jiàn),當(dāng)提交審批意見(jiàn)成功后自動(dòng)生成開(kāi)題報(bào)告Word,此后只有指導(dǎo)教師可以修改開(kāi)題報(bào)告相關(guān)內(nèi)容。指導(dǎo)教師在線修改開(kāi)題報(bào)告內(nèi)容并提交成功后自動(dòng)重新生成開(kāi)題報(bào)告Word。生成開(kāi)題報(bào)告Word文檔的核心代碼如下:

    String basepath = this.getServletContext().getRealPath("/");

    dataMap.put("project", project);

    dataMap.put("ktbgnr", WordUtil.stringFilte(project.getKtbgnr()));

    dataMap.put("ktbgyj", WordUtil.stringFilte(project.getKtbgyj()));

    WordUtil.createWord(this.getServletContext(), dataMap, "ktbg.ftl", basepath + stu.getFpath(), stu.getSno() + "_KaiTiBaoGao.doc");

    代碼說(shuō)明:①當(dāng)前題目project對(duì)象和對(duì)應(yīng)學(xué)生stu對(duì)象已經(jīng)通過(guò)查詢得到;②開(kāi)題報(bào)告內(nèi)容(ktbgnr字段)和開(kāi)題報(bào)告意見(jiàn)(ktbgyj字段)包含多個(gè)段落內(nèi)容,需要進(jìn)行預(yù)處理;③系統(tǒng)最初導(dǎo)入學(xué)生信息時(shí),會(huì)根據(jù)一定的規(guī)則自動(dòng)生成一個(gè)唯一的服務(wù)器相對(duì)路徑并保存在fpath字段,此路徑下對(duì)應(yīng)存儲(chǔ)該學(xué)生的所有相關(guān)文檔,因此生成的Word文檔路徑由服務(wù)器絕對(duì)路徑basepath + stu.getFpath()指定。

    5 結(jié)語(yǔ)

    本文基于FreeMarker模板引擎構(gòu)建了Word文檔動(dòng)態(tài)生成方案,不僅代碼量非常少,而且解決了零散數(shù)據(jù)填充時(shí)容易被忽略的兩個(gè)問(wèn)題,增強(qiáng)了程序的健壯性。與此同時(shí),對(duì)應(yīng)用中可能出現(xiàn)的多個(gè)段落內(nèi)容數(shù)據(jù)填充問(wèn)題提出了有效的解決方案。在畢業(yè)設(shè)計(jì)管理信息系統(tǒng)的應(yīng)用實(shí)踐中,實(shí)現(xiàn)了數(shù)據(jù)導(dǎo)出并生成完全符合特定格式要求的Word文檔功能,滿足了具有統(tǒng)一格式規(guī)范的各類文檔導(dǎo)出需求。

    參考文獻(xiàn):

    [1] 夏松竹.基于B/S結(jié)構(gòu)的本科畢業(yè)設(shè)計(jì)管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)和信息化教育,2016(1):82-86.

    [2] 周建鋒,付延友.畢業(yè)設(shè)計(jì)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊, 2016(8):96-98.

    [3] ROD JOHNSON.J2EE設(shè)計(jì)開(kāi)發(fā)編程指南[M].魏海萍,于曉菲,毛選,譯.北京:電子工業(yè)出版社,2003.

    [4] 劉全飛,周相兵.基于FreeMarker的站群系統(tǒng)模板設(shè)計(jì)實(shí)現(xiàn)[J].信息技術(shù), 2015(7):36-39.

    [5] 肖斌,李超,汪敏.基于C#快速生成Word報(bào)告[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(7):232-235.

    [6] 王慶喜,李源.基于freemarker和XML技術(shù)的Word生成方案[J].電腦與信息技術(shù),2012,20(2):31-33.

    [7] 曾玉林.FreeMarker在JSP項(xiàng)目中Word報(bào)表應(yīng)用研究[J].電腦開(kāi)發(fā)與應(yīng)用,2013,26(12):59-61.

    [8] 王正敏,張?zhí)t,李永可,等.FreeMarker模板引擎在線動(dòng)態(tài)生成Excel和Word文檔技術(shù)[J].計(jì)算機(jī)與現(xiàn)代化, 2016(4):109-113.

    (責(zé)任編輯:杜能鋼)

    а√天堂www在线а√下载| 男人操女人黄网站| 亚洲九九香蕉| a级毛片在线看网站| 丝袜人妻中文字幕| 日韩有码中文字幕| 亚洲人成伊人成综合网2020| 女人精品久久久久毛片| 国产麻豆69| 99香蕉大伊视频| 女性生殖器流出的白浆| 老汉色av国产亚洲站长工具| av有码第一页| 国产伦人伦偷精品视频| 日韩欧美免费精品| 亚洲精品久久国产高清桃花| 国产精品爽爽va在线观看网站 | 国产区一区二久久| 国产成人影院久久av| 国产午夜精品久久久久久| 国产又色又爽无遮挡免费看| 12—13女人毛片做爰片一| 国产亚洲精品一区二区www| 久久热在线av| 国产精品 欧美亚洲| 欧美丝袜亚洲另类 | www.999成人在线观看| 午夜免费观看网址| 亚洲成人久久性| 色播在线永久视频| 人妻久久中文字幕网| 午夜福利成人在线免费观看| 人妻久久中文字幕网| 最近最新中文字幕大全电影3 | 免费在线观看完整版高清| 成人av一区二区三区在线看| 在线观看舔阴道视频| 日本撒尿小便嘘嘘汇集6| 热99re8久久精品国产| 亚洲国产精品久久男人天堂| 啦啦啦韩国在线观看视频| 首页视频小说图片口味搜索| 啪啪无遮挡十八禁网站| 19禁男女啪啪无遮挡网站| 亚洲自拍偷在线| 亚洲中文字幕日韩| 国产成人精品久久二区二区免费| 日本vs欧美在线观看视频| 久久久精品欧美日韩精品| 日本 av在线| 亚洲国产欧美日韩在线播放| 99久久99久久久精品蜜桃| 日本在线视频免费播放| 国产精品美女特级片免费视频播放器 | 色播在线永久视频| 法律面前人人平等表现在哪些方面| 在线观看午夜福利视频| 嫩草影院精品99| 亚洲人成电影观看| 免费久久久久久久精品成人欧美视频| 又大又爽又粗| 国产成人精品在线电影| 国产又爽黄色视频| 亚洲五月色婷婷综合| 怎么达到女性高潮| 亚洲av电影不卡..在线观看| 香蕉国产在线看| 免费高清在线观看日韩| 男人舔女人下体高潮全视频| 12—13女人毛片做爰片一| 亚洲一区中文字幕在线| 日日夜夜操网爽| 国产激情久久老熟女| 禁无遮挡网站| а√天堂www在线а√下载| 亚洲熟妇熟女久久| 亚洲国产看品久久| 欧美日韩黄片免| 国产精品乱码一区二三区的特点 | 亚洲国产毛片av蜜桃av| 久热爱精品视频在线9| 韩国av一区二区三区四区| 国产精品一区二区免费欧美| 婷婷丁香在线五月| 18禁黄网站禁片午夜丰满| 老鸭窝网址在线观看| 久久久久久国产a免费观看| 黄色女人牲交| 久久人人精品亚洲av| 在线观看www视频免费| 精品久久久精品久久久| 精品国产乱子伦一区二区三区| 久久久国产成人精品二区| 久9热在线精品视频| 久久亚洲真实| 叶爱在线成人免费视频播放| 欧美黄色片欧美黄色片| 国产真人三级小视频在线观看| 亚洲精品国产区一区二| 一边摸一边抽搐一进一出视频| 精品国产乱子伦一区二区三区| www国产在线视频色| 欧美日韩福利视频一区二区| 久久天躁狠狠躁夜夜2o2o| 制服丝袜大香蕉在线| 女生性感内裤真人,穿戴方法视频| 国产xxxxx性猛交| ponron亚洲| 久久精品91蜜桃| 激情在线观看视频在线高清| 亚洲国产日韩欧美精品在线观看 | 男人舔女人下体高潮全视频| 婷婷精品国产亚洲av在线| 欧美亚洲日本最大视频资源| 天天一区二区日本电影三级 | 免费av毛片视频| 97人妻精品一区二区三区麻豆 | 九色国产91popny在线| 精品欧美一区二区三区在线| 黄色片一级片一级黄色片| 国内精品久久久久精免费| 午夜福利成人在线免费观看| 免费不卡黄色视频| 国产色视频综合| 电影成人av| 国产亚洲精品久久久久5区| 久久久国产精品麻豆| 日韩欧美一区二区三区在线观看| 波多野结衣高清无吗| 老司机靠b影院| 国产亚洲av高清不卡| 777久久人妻少妇嫩草av网站| 啦啦啦韩国在线观看视频| 欧美久久黑人一区二区| 成人18禁在线播放| 校园春色视频在线观看| 女人被狂操c到高潮| 极品人妻少妇av视频| 在线观看免费日韩欧美大片| 51午夜福利影视在线观看| 国产av精品麻豆| 1024香蕉在线观看| 男女做爰动态图高潮gif福利片 | 免费高清视频大片| 国产高清激情床上av| 国产又色又爽无遮挡免费看| 日韩成人在线观看一区二区三区| 日韩免费av在线播放| 亚洲国产欧美日韩在线播放| 精品少妇一区二区三区视频日本电影| 国产免费男女视频| 香蕉久久夜色| 在线观看舔阴道视频| 9191精品国产免费久久| 亚洲欧美日韩高清在线视频| 91大片在线观看| 制服人妻中文乱码| 老司机福利观看| 人妻久久中文字幕网| 色av中文字幕| 欧美日韩亚洲国产一区二区在线观看| 日韩一卡2卡3卡4卡2021年| 精品熟女少妇八av免费久了| 99香蕉大伊视频| 成人三级做爰电影| 看片在线看免费视频| 12—13女人毛片做爰片一| 欧美黑人精品巨大| 色综合站精品国产| 中文字幕人妻熟女乱码| 午夜久久久在线观看| 亚洲第一电影网av| 亚洲最大成人中文| 亚洲成人免费电影在线观看| 麻豆成人av在线观看| 777久久人妻少妇嫩草av网站| 国产亚洲精品一区二区www| 午夜福利影视在线免费观看| 精品高清国产在线一区| 欧美成人午夜精品| 久久国产精品男人的天堂亚洲| 亚洲专区中文字幕在线| 天天躁夜夜躁狠狠躁躁| 国产99白浆流出| 亚洲成人久久性| 91字幕亚洲| av天堂在线播放| 亚洲欧美日韩无卡精品| 啦啦啦免费观看视频1| 男女下面进入的视频免费午夜 | 一区二区三区激情视频| 在线观看免费视频网站a站| 午夜影院日韩av| 中文字幕人成人乱码亚洲影| 欧美在线黄色| 国产精品久久久人人做人人爽| 国产高清激情床上av| 国产一卡二卡三卡精品| 欧美黑人欧美精品刺激| 国产欧美日韩精品亚洲av| 国产亚洲欧美在线一区二区| 天天添夜夜摸| 欧美激情高清一区二区三区| 黄频高清免费视频| 电影成人av| 国产精华一区二区三区| 亚洲一卡2卡3卡4卡5卡精品中文| 后天国语完整版免费观看| 日本一区二区免费在线视频| 操美女的视频在线观看| 高潮久久久久久久久久久不卡| 激情在线观看视频在线高清| 黄色 视频免费看| 国产av在哪里看| 在线天堂中文资源库| 两个人视频免费观看高清| 人妻久久中文字幕网| 精品久久久精品久久久| 午夜激情av网站| 欧美成人午夜精品| 成年人黄色毛片网站| 亚洲五月婷婷丁香| 女警被强在线播放| 国产97色在线日韩免费| 亚洲avbb在线观看| 国产在线精品亚洲第一网站| 国产成人免费无遮挡视频| 欧美日本视频| 激情在线观看视频在线高清| 日韩中文字幕欧美一区二区| 18禁观看日本| 男女午夜视频在线观看| avwww免费| av视频免费观看在线观看| av视频免费观看在线观看| 国产私拍福利视频在线观看| 嫩草影视91久久| 乱人伦中国视频| 欧美日韩瑟瑟在线播放| 国产视频一区二区在线看| 精品电影一区二区在线| 色在线成人网| 国产欧美日韩一区二区三| 国产午夜精品久久久久久| 久久性视频一级片| 国产av一区在线观看免费| 精品少妇一区二区三区视频日本电影| 午夜视频精品福利| 国产精品,欧美在线| 老鸭窝网址在线观看| 久久精品国产99精品国产亚洲性色 | 成人欧美大片| 波多野结衣高清无吗| 一夜夜www| 国产成人影院久久av| 老司机午夜十八禁免费视频| 我的亚洲天堂| 亚洲一区二区三区不卡视频| 少妇 在线观看| 欧美+亚洲+日韩+国产| avwww免费| 国产午夜精品久久久久久| av视频在线观看入口| 国产色视频综合| 在线av久久热| 中文字幕最新亚洲高清| 在线国产一区二区在线| 一二三四在线观看免费中文在| 妹子高潮喷水视频| 伊人久久大香线蕉亚洲五| 久久亚洲精品不卡| 国产精品日韩av在线免费观看 | 国产成人精品久久二区二区免费| 一本大道久久a久久精品| 亚洲国产高清在线一区二区三 | 啦啦啦韩国在线观看视频| 曰老女人黄片| 久久婷婷成人综合色麻豆| 国产真人三级小视频在线观看| 国产91精品成人一区二区三区| 亚洲精品粉嫩美女一区| 免费人成视频x8x8入口观看| 操出白浆在线播放| √禁漫天堂资源中文www| 日日夜夜操网爽| 欧美日韩精品网址| 欧美+亚洲+日韩+国产| 国产精品,欧美在线| 久久久久国内视频| 亚洲免费av在线视频| 欧美一级a爱片免费观看看 | 91av网站免费观看| 欧美色视频一区免费| 亚洲欧洲精品一区二区精品久久久| 国产亚洲精品综合一区在线观看 | 青草久久国产| 美女扒开内裤让男人捅视频| 99久久99久久久精品蜜桃| 每晚都被弄得嗷嗷叫到高潮| 1024香蕉在线观看| 国产精品久久久久久人妻精品电影| 亚洲色图 男人天堂 中文字幕| 久久久久精品国产欧美久久久| 亚洲欧美精品综合一区二区三区| 人人妻人人澡欧美一区二区 | 欧美久久黑人一区二区| 久久人人97超碰香蕉20202| 99国产精品一区二区蜜桃av| 国产片内射在线| 夜夜看夜夜爽夜夜摸| 长腿黑丝高跟| 三级毛片av免费| 精品一区二区三区av网在线观看| 精品久久久精品久久久| 999精品在线视频| 亚洲国产看品久久| 久久香蕉国产精品| 18禁裸乳无遮挡免费网站照片 | 日韩三级视频一区二区三区| 99国产精品一区二区蜜桃av| 无人区码免费观看不卡| 久久人妻av系列| 一边摸一边抽搐一进一出视频| 99久久久亚洲精品蜜臀av| 免费av毛片视频| 99国产精品一区二区蜜桃av| aaaaa片日本免费| 欧美一级a爱片免费观看看 | 国产一区二区三区综合在线观看| 高清黄色对白视频在线免费看| 欧美人与性动交α欧美精品济南到| 人妻久久中文字幕网| 在线观看舔阴道视频| 一进一出抽搐gif免费好疼| 亚洲视频免费观看视频| 满18在线观看网站| 可以在线观看的亚洲视频| 两个人看的免费小视频| 色婷婷久久久亚洲欧美| 婷婷精品国产亚洲av在线| 黄色视频不卡| 午夜精品在线福利| 国产高清videossex| 国产精品乱码一区二三区的特点 | 黄片大片在线免费观看| 久久青草综合色| 日韩免费av在线播放| 午夜福利在线观看吧| 两性午夜刺激爽爽歪歪视频在线观看 | 午夜精品在线福利| 国产激情欧美一区二区| 欧美日韩黄片免| 亚洲久久久国产精品| www.www免费av| 久久午夜综合久久蜜桃| 国产精品98久久久久久宅男小说| 婷婷精品国产亚洲av在线| 国产91精品成人一区二区三区| 黄色视频,在线免费观看| 两性夫妻黄色片| 成人18禁高潮啪啪吃奶动态图| 国产成+人综合+亚洲专区| 亚洲成人久久性| 88av欧美| 操美女的视频在线观看| 中文字幕高清在线视频| 亚洲一区二区三区色噜噜| 久热这里只有精品99| 一夜夜www| 女人被狂操c到高潮| 丝袜美足系列| 国产午夜福利久久久久久| 91麻豆精品激情在线观看国产| 国产伦人伦偷精品视频| 欧美色欧美亚洲另类二区 | 美女大奶头视频| 51午夜福利影视在线观看| 午夜福利成人在线免费观看| 亚洲成人久久性| 黄频高清免费视频| 9色porny在线观看| 少妇粗大呻吟视频| 久久久久久国产a免费观看| 国产区一区二久久| 免费无遮挡裸体视频| 免费av毛片视频| 老司机午夜十八禁免费视频| 色哟哟哟哟哟哟| 久久人妻熟女aⅴ| 国产精品亚洲av一区麻豆| 搞女人的毛片| 亚洲片人在线观看| 国产成人影院久久av| 亚洲欧美日韩高清在线视频| 国产精品综合久久久久久久免费 | 国产成人av教育| 亚洲一区二区三区色噜噜| 这个男人来自地球电影免费观看| 在线观看舔阴道视频| 天堂√8在线中文| 91大片在线观看| 欧美在线黄色| 亚洲人成电影免费在线| 亚洲午夜精品一区,二区,三区| 18禁国产床啪视频网站| 黄片大片在线免费观看| netflix在线观看网站| 日韩欧美一区视频在线观看| 青草久久国产| 丁香六月欧美| 午夜福利高清视频| 琪琪午夜伦伦电影理论片6080| 精品一区二区三区四区五区乱码| 不卡av一区二区三区| 欧美黑人精品巨大| 久久香蕉激情| 国产日韩一区二区三区精品不卡| 九色亚洲精品在线播放| 在线天堂中文资源库| 又大又爽又粗| 脱女人内裤的视频| 嫩草影视91久久| 国产成人精品久久二区二区91| 可以在线观看毛片的网站| 国产高清视频在线播放一区| 久久久国产精品麻豆| 亚洲欧洲精品一区二区精品久久久| 国产欧美日韩一区二区三区在线| 国产精品九九99| 99久久综合精品五月天人人| 亚洲最大成人中文| 欧美日韩中文字幕国产精品一区二区三区 | av网站免费在线观看视频| 国内精品久久久久精免费| 自线自在国产av| 国内毛片毛片毛片毛片毛片| 国产精品美女特级片免费视频播放器 | 一卡2卡三卡四卡精品乱码亚洲| 亚洲欧美日韩另类电影网站| 亚洲熟妇中文字幕五十中出| 久久久国产成人精品二区| 亚洲欧美精品综合一区二区三区| 国产私拍福利视频在线观看| 亚洲第一欧美日韩一区二区三区| 又黄又爽又免费观看的视频| 亚洲精品久久成人aⅴ小说| 夜夜爽天天搞| 亚洲精品国产一区二区精华液| 久久久久久久久中文| 午夜影院日韩av| 日韩三级视频一区二区三区| 成人三级做爰电影| 午夜福利18| 一级,二级,三级黄色视频| 国产亚洲精品一区二区www| 美女 人体艺术 gogo| 中文字幕色久视频| 免费在线观看影片大全网站| 精品免费久久久久久久清纯| 好看av亚洲va欧美ⅴa在| 亚洲av日韩精品久久久久久密| 高清在线国产一区| 国产av一区二区精品久久| 欧美成人一区二区免费高清观看 | 亚洲午夜理论影院| 国产欧美日韩精品亚洲av| 久久人妻av系列| 亚洲精品一区av在线观看| av福利片在线| 日本黄色视频三级网站网址| 亚洲黑人精品在线| 国产成+人综合+亚洲专区| 亚洲精品国产精品久久久不卡| 色综合欧美亚洲国产小说| 波多野结衣高清无吗| 久久九九热精品免费| 国产精品亚洲一级av第二区| 99在线人妻在线中文字幕| 性欧美人与动物交配| 久久国产精品影院| 久久久久久久午夜电影| 成人亚洲精品av一区二区| 久久婷婷成人综合色麻豆| 国产亚洲精品久久久久5区| 日本在线视频免费播放| 成人av一区二区三区在线看| 国产精品av久久久久免费| 黄色丝袜av网址大全| 亚洲中文字幕一区二区三区有码在线看 | 90打野战视频偷拍视频| 人妻丰满熟妇av一区二区三区| 国产私拍福利视频在线观看| 国产精品一区二区在线不卡| 久久精品国产亚洲av香蕉五月| 三级毛片av免费| 欧美日韩瑟瑟在线播放| 88av欧美| 国内久久婷婷六月综合欲色啪| 身体一侧抽搐| 叶爱在线成人免费视频播放| 一卡2卡三卡四卡精品乱码亚洲| 亚洲一区中文字幕在线| 18禁国产床啪视频网站| 国产精品久久久久久人妻精品电影| 国产精品 欧美亚洲| 亚洲成人免费电影在线观看| 国产精品 国内视频| 一边摸一边抽搐一进一出视频| 99国产精品一区二区蜜桃av| 国产乱人伦免费视频| 中亚洲国语对白在线视频| 黄色成人免费大全| 桃红色精品国产亚洲av| 一二三四在线观看免费中文在| 国产亚洲精品久久久久5区| 在线国产一区二区在线| 19禁男女啪啪无遮挡网站| 人人澡人人妻人| 国产主播在线观看一区二区| 国产精品美女特级片免费视频播放器 | 国产单亲对白刺激| 9热在线视频观看99| 啦啦啦 在线观看视频| 国产在线精品亚洲第一网站| 一二三四社区在线视频社区8| 久久人妻av系列| 免费高清视频大片| 国产成人免费无遮挡视频| 免费高清在线观看日韩| 国产亚洲精品综合一区在线观看 | 精品电影一区二区在线| 很黄的视频免费| 亚洲欧美日韩无卡精品| 欧美另类亚洲清纯唯美| 精品国产一区二区三区四区第35| 欧美色欧美亚洲另类二区 | 欧美日韩亚洲综合一区二区三区_| 国产精品久久电影中文字幕| 无遮挡黄片免费观看| 精品国产一区二区久久| 精品福利观看| 免费女性裸体啪啪无遮挡网站| 夜夜躁狠狠躁天天躁| 国产蜜桃级精品一区二区三区| 国产精品秋霞免费鲁丝片| 久久婷婷成人综合色麻豆| 日本 欧美在线| 搡老熟女国产l中国老女人| 欧美激情极品国产一区二区三区| 狂野欧美激情性xxxx| 亚洲精品国产区一区二| 又大又爽又粗| 一本综合久久免费| 99国产精品一区二区蜜桃av| 亚洲国产高清在线一区二区三 | 日日干狠狠操夜夜爽| 一级黄色大片毛片| 别揉我奶头~嗯~啊~动态视频| 久久久久久免费高清国产稀缺| 中亚洲国语对白在线视频| 亚洲电影在线观看av| 一进一出抽搐动态| 亚洲自拍偷在线| 国产成人欧美在线观看| 国产真人三级小视频在线观看| 亚洲成国产人片在线观看| 国产av在哪里看| 欧美中文日本在线观看视频| 人人妻人人澡欧美一区二区 | www日本在线高清视频| 女生性感内裤真人,穿戴方法视频| 久久国产精品人妻蜜桃| 国产精品免费一区二区三区在线| 欧美中文综合在线视频| av欧美777| 免费久久久久久久精品成人欧美视频| 婷婷精品国产亚洲av在线| 久久香蕉激情| 老汉色∧v一级毛片| 亚洲欧美激情综合另类| 中文字幕人成人乱码亚洲影| 91大片在线观看| 欧美日韩中文字幕国产精品一区二区三区 | 无限看片的www在线观看| 日本 欧美在线| 午夜视频精品福利| 国产单亲对白刺激| 亚洲视频免费观看视频| 看片在线看免费视频| 最近最新中文字幕大全免费视频| 又黄又爽又免费观看的视频| 免费人成视频x8x8入口观看| 亚洲色图av天堂| av超薄肉色丝袜交足视频| 亚洲欧美日韩另类电影网站| 人成视频在线观看免费观看| 熟妇人妻久久中文字幕3abv| 高清黄色对白视频在线免费看| 91精品国产国语对白视频| 女生性感内裤真人,穿戴方法视频| 亚洲 欧美一区二区三区| 亚洲第一青青草原| 国产欧美日韩一区二区三区在线| 久久性视频一级片| 午夜福利高清视频| 无人区码免费观看不卡| 亚洲成人精品中文字幕电影| 精品日产1卡2卡| 亚洲视频免费观看视频| 亚洲情色 制服丝袜| 88av欧美| 精品久久久久久久人妻蜜臀av | 三级毛片av免费| 成人三级黄色视频| 久久热在线av|