999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于Jsp和MySQL的外賣系統(tǒng)的設(shè)計與實現(xiàn)

2021-07-15 06:48:00侯金彪
安順學(xué)院學(xué)報 2021年3期
關(guān)鍵詞:數(shù)據(jù)庫功能系統(tǒng)

侯金彪

(德州學(xué)院計算機(jī)與信息學(xué)院,山東 德州253023)

當(dāng)今世界是數(shù)據(jù)信息隨處可見的時代,時至今日信息依靠于現(xiàn)代先進(jìn)科技的計算機(jī)網(wǎng)絡(luò)信息技術(shù)早就被看作是人們工作、學(xué)習(xí)中非常重要的一部分?,F(xiàn)在在互聯(lián)網(wǎng)上進(jìn)行信息的管理和分配已經(jīng)成為極其普遍的事情,利用互聯(lián)網(wǎng)技術(shù)來構(gòu)建一個外賣系統(tǒng)也是有一定必要的,通過對傳統(tǒng)訂餐方式的改變,能夠使得用戶就餐得到較大的便利;通過這個系統(tǒng),可以對菜品、訂單、配送的各項情況進(jìn)行電腦化和系統(tǒng)化的管理,能夠持續(xù)不斷地加快系統(tǒng)管理的進(jìn)程,也使得飯菜食物管理所需要的各項數(shù)據(jù)信息能便捷迅速地完成記錄、查詢、刪除和更新等操作,并對相應(yīng)關(guān)鍵數(shù)據(jù)也能夠方便快速地得到統(tǒng)計[1]。本文采用比較流行的Jsp技術(shù),實現(xiàn)了一個功能強大的外賣系統(tǒng)。

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

1.1 Jsp介紹

Jsp具備面向服務(wù)器的特點,正因為如此它支持在在各類瀏覽器軟件上運行。當(dāng)客戶端發(fā)送數(shù)據(jù)請求的時候,該數(shù)據(jù)將通過Jsp服務(wù)器將數(shù)據(jù)傳輸?shù)娇蛻舳耍襃sp可以利用JavaBean或Servlet等不同的組件做出一些適當(dāng)正確的反饋,這個對管理系統(tǒng)設(shè)計的反饋過程可能有對表中內(nèi)容資料的查詢、刪除、更新等多個不一樣的操縱工作,再將所得到的結(jié)果返還回到前臺頁面,并加以顯示,該過程實現(xiàn)了服務(wù)器客戶端的B/S模式。[2]

Jsp第一次接到對其傳遞出來的申請請求時候,與之對應(yīng)的Jsp文件就會借助Jsp引擎轉(zhuǎn)變替換成Servlet。Jsp文件可能會由Jsp引擎轉(zhuǎn)化成Java文件的過程中產(chǎn)生語法錯誤,若語法有誤,轉(zhuǎn)換將會失敗。錯誤信息也會被服務(wù)器和客戶端搜集起來。如果轉(zhuǎn)化完成沒有錯誤的話,這個Java文件將會被Jsp引擎編譯成相應(yīng)的class文件,并且逐漸生產(chǎn)成為Servlet實例,然后借助Servlet實例中的Jsp Service把HTML文件精準(zhǔn)確切地送回到與之相對應(yīng)的客戶端。

1.2 MySQL數(shù)據(jù)庫簡介

MySQL是一個關(guān)系數(shù)據(jù)庫控制系統(tǒng),適用于中小型企業(yè)開發(fā)。MySQL會把數(shù)據(jù)信息存儲在一個個不同名字的表中,而不是將所有數(shù)據(jù)信息都堆放在一個大型的倉庫內(nèi),表與表之間可以獨立也可以相互關(guān)聯(lián),這樣就加快了程序運行速率并且提高了管理工作的靈便性。一般習(xí)慣用的標(biāo)準(zhǔn)化SQL語言就是數(shù)據(jù)庫能夠采用的語言[3]。

MySQL憑借它所占用的體積小、運行速率快、各方面性能優(yōu)越等多個特點優(yōu)點被很多人使用[4]。其基本組成部分流程圖如圖1所示。

圖1 MySQL基本組成部分流程圖

1.3 Struts2介紹

Struts2是一個關(guān)于MVC設(shè)計樣式的Web框架,站在MVC的角度上來看,包含了這幾個部分,分別是模型層、視圖層、控制層。簡單來說大致為:模型層的任務(wù)是承擔(dān)完成事務(wù)功能,包括兩個組成成分:業(yè)務(wù)數(shù)據(jù)跟業(yè)務(wù)操作邏輯。 目標(biāo)對象類、DAO、Service全部存在在模型層中。視圖層的主要任務(wù)就是承擔(dān)顯示頁面跟使用者互相交流并且獲取使用者的資料。存在視圖中的類是沒有涵蓋業(yè)務(wù)邏輯和控制邏輯的Jsp??刂破魇墙覯和視圖層V之間的紐帶,目的是操作管理運行過程[5]。

Struts 2是Struts的更新一代Web開發(fā)框架。Struts 2基于MVC模式在操作申請轉(zhuǎn)發(fā)方面非常方便,通常而言是依據(jù)攔截器的機(jī)制來解決使用者的申請,這樣的設(shè)計也讓業(yè)務(wù)邏輯控制器可以跟Servlet API徹底分開,這樣框架愈來愈方便使用。當(dāng)Jsp經(jīng)由表單遞交數(shù)據(jù)的過程中,Struts 2架包中的過濾器就會攔住[6]。

2 系統(tǒng)需求分析

Internet計算機(jī)技術(shù)逐漸發(fā)展使得外賣系統(tǒng)軟件也得到了更好更快地發(fā)展,外賣市場的潛力巨大,由此也可以確立了以下幾點需求:菜品類別管理、菜品管理、訂單管理、菜品評價、在線下單、菜品瀏覽。

(1)系統(tǒng)需求

依據(jù)JavaEE技術(shù)把B/S系統(tǒng)作為基礎(chǔ),計算機(jī)程序跟數(shù)據(jù)一起存于后臺中。全部系統(tǒng)管理操作都是在瀏覽器的基礎(chǔ)上進(jìn)行的,下載、安裝、運行、維修保護(hù)、更新都非常便利。

(2)功能需求

根據(jù)目前的調(diào)研看,軟件應(yīng)該實現(xiàn)菜品類別管理、菜品管理、訂單管理、菜品評價、在線下單、菜品瀏覽等功能。

(3)性能需求

為了保證系統(tǒng)能夠長期高效、安全穩(wěn)定地運行,系統(tǒng)對菜品和數(shù)據(jù)的管理以及程序開發(fā)語言的編寫很重要,所以這個系統(tǒng)就采用Struts2框架來進(jìn)行開發(fā)。性能上總體要求如下:

a.需要網(wǎng)站提供一定的并發(fā)量,保證用戶可以正常訪問。

b.網(wǎng)站能夠自發(fā)處理一些異常的問題,比如路徑訪問出錯就會出現(xiàn)友好的404錯誤界面等。

c.由于這個軟件設(shè)計到了很多表格與信息的載入,能夠以較快的形式完成數(shù)據(jù)顯示與執(zhí)行。

(4)運行需求

系統(tǒng)要求較低,商場主流配置即可。

(5)其他需求

這個系統(tǒng)可維護(hù)性比較好,安全性比較高,可靠性也比較強。界面很容易讓用戶來操作,同時在后臺方面也要對用戶訂單的管理有好處。并且在開發(fā)時間,經(jīng)費上要嚴(yán)格控制,以最大的限度,合理地利用有限資源,來完成所需要的功能,滿足外賣系統(tǒng)和用戶們的需求。

3 系統(tǒng)設(shè)計

3.1 系統(tǒng)總體設(shè)計

本系統(tǒng)的設(shè)計及開發(fā)利用Jsp來進(jìn)行前臺展示,采用MVC框架(利用Struts2作為框架)來實現(xiàn)對網(wǎng)站的整體設(shè)計,來達(dá)到對業(yè)務(wù)功能的實現(xiàn),在對系統(tǒng)角色進(jìn)行細(xì)分后對不同的菜品信息進(jìn)行展示和管理等。

3.2 數(shù)據(jù)庫模型設(shè)計

數(shù)據(jù)庫設(shè)計是極為重要的,在這個流程中充分考慮到所有表結(jié)構(gòu)之間的數(shù)據(jù)關(guān)聯(lián),同時還應(yīng)該琢磨數(shù)據(jù)表之間的對應(yīng)聯(lián)系。下圖2即為數(shù)據(jù)庫中表的關(guān)系圖。

圖2 數(shù)據(jù)庫關(guān)系圖

3.3 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計

從外賣系統(tǒng)的設(shè)計角度看,對應(yīng)的功能列表下面需要有對應(yīng)的數(shù)據(jù)庫表,依據(jù)上節(jié)數(shù)據(jù)庫關(guān)系圖能夠知道,由于網(wǎng)站設(shè)計的數(shù)據(jù)表有些多,因此接下來羅列一些關(guān)鍵數(shù)據(jù)表的設(shè)計,如下面表1-表9所示:

表1 admin表

表2 dd表

表3 fl表

表4 member表

表5 news表

表6 pl表

表7 prep表

表8 sale表

表9 system表

3.4 系統(tǒng)體系結(jié)構(gòu)設(shè)計

3.4.1 系統(tǒng)結(jié)構(gòu)設(shè)計 MVC就是按照職責(zé)不同將程序劃分為3個組成部分,可以改善程序結(jié)構(gòu),便于日后維護(hù)和擴(kuò)展,其中,Model層實現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,用JavaBean(實體類)來實現(xiàn);View層一般被用來和系統(tǒng)使用者進(jìn)行交流互動,借助Jsp達(dá)到目的;Controller層是Model與View交流的紐帶。

1)M-Model 模型

Model的職責(zé)為承擔(dān)業(yè)務(wù)邏輯工作。

2)V-View 視圖 V View的職責(zé)為承擔(dān)展現(xiàn)頁面與使用者交流互動(獲取使用者資料)。

3)C-Controller 控制器

在Struts2的架構(gòu)中,Struts2的框架部分主要負(fù)責(zé)MVC設(shè)計中的主要用來實現(xiàn)整個系統(tǒng)的流程跳轉(zhuǎn)過程。圖3即為系統(tǒng)執(zhí)行流程圖。

圖3 系統(tǒng)執(zhí)行流程圖

3.4.2 系統(tǒng)功能模塊設(shè)計

外賣系統(tǒng)在開發(fā)中應(yīng)該通過軟件管理功能來分解軟件功能模塊,而且開展完成相應(yīng)模塊。系統(tǒng)功能模塊圖如下圖4所示。

圖4 系統(tǒng)功能模塊圖

4 系統(tǒng)實現(xiàn)

4.1 數(shù)據(jù)庫操作模塊

在諸多Web中應(yīng)該有導(dǎo)入數(shù)據(jù)源的模塊。一般而言,存在兩種數(shù)據(jù)庫的連接情況,一種是通過于Java類寫明數(shù)據(jù)庫驅(qū)動與數(shù)據(jù)庫連接名等信息開展適當(dāng)?shù)倪B接與釋放操作,另一種是通過數(shù)據(jù)庫連接池,這種方式的優(yōu)點在于可以合理的管控數(shù)據(jù)庫的連接。設(shè)計結(jié)合以上兩種的特點,將連接和釋放的操作通過一個統(tǒng)一的類來管理,這個數(shù)據(jù)庫連接類即為Conn.java,在該類中將數(shù)據(jù)庫連接和關(guān)閉寫成靜態(tài)方法,方便適時的關(guān)閉和打開。

通過下面的代碼段來聲明變量,并在該類中的方法內(nèi)做說明。

// 定義MySQL數(shù)據(jù)庫的連接地址

private String url = "jdbc:mysql://localhost:3306/takeaway";

// MySQL數(shù)據(jù)庫的連接用戶名

private String user = "root";

// MySQL數(shù)據(jù)庫的連接密碼 private String password = "123";

借助這幾個變量來實現(xiàn)與之相符的數(shù)據(jù)庫連接,得到手段的代碼。

public Connection getCon() throws Exception {

Class.forName(jdbcName);

Connection con = DriverManager.getConnection(url, user, password);

return con;

}

得到連接之后,也應(yīng)該為數(shù)據(jù)庫展開及時地停止關(guān)掉工作,停止關(guān)掉的工作能夠參考下面方式:

public void closeCon(Connection con) throws Exception {

if(con!=null) {

con.close();

}

}

4.2 登錄模塊

在外賣系統(tǒng)中,普通用戶需要登錄系統(tǒng)之后才能夠下單,管理員對系統(tǒng)進(jìn)行數(shù)據(jù)維護(hù)和處理也需要進(jìn)行登錄操作,因此在平臺的登錄系統(tǒng)需要提供對應(yīng)的接口。

由于系統(tǒng)采用了Struts2的架構(gòu),因此,系統(tǒng)的所有請求都會經(jīng)過一個稱為struts.xml的文件,通過該文件可以知道最后的請求地址,即根據(jù)login的請求做一定的分發(fā)操作,具體的代碼部分如下所示。

從上面的程序片段中可以看出,系統(tǒng)識別到了login對象會通過Action中名為LoginAction的類,該類中做進(jìn)一步的處理,比如用戶在登錄的過程中會觸發(fā)下面的函數(shù)入口。

public String login() throws Exception{

}

在該函數(shù)的入口中,可以看到首先通過下面的方式來判斷用戶名和密碼是否完整,并且是否符合匹配要求。

if(StringUtil.isEmpty(user.getUserName()) || StringUtil.isEmpty(user.getPassword())) {

error = "用戶名或密碼為空!";

return ERROR;

}

if(StringUtil.isEmpty(imageCode)) {

error = "驗證碼為空!";

return ERROR;

}

if(!imageCode.equals(session.getAttribute("sRand"))){

error = "驗證碼錯誤!";

return ERROR;

}

倘若數(shù)據(jù)符合系統(tǒng)條件之后,經(jīng)過數(shù)據(jù)庫練級,接下來繼續(xù)進(jìn)行,如果數(shù)據(jù)庫連接成功之后,到了最終檢索申請傳達(dá)到數(shù)據(jù)庫中實現(xiàn)檢索,辨別有沒有該使用者,同時密碼有沒有和這個使用者的相對應(yīng),倘若完全對應(yīng)就會調(diào)轉(zhuǎn)到Main,即進(jìn)入到軟件的服務(wù)器界面,關(guān)鍵代碼在下面展現(xiàn)。

con=dbUtil.getCon();

User currentUser=userDao.login(con, user);

if(currentUser!=null){

session.setAttribute("currentUser", currentUser);

return "main";

}else{

request.setAttribute("error", "用戶名或密碼錯誤!");

return "login";

}

4.3 注冊模塊

使用者單擊系統(tǒng)運行后所實現(xiàn)界面的注冊鏈接便跳轉(zhuǎn)到注冊界面,在注冊界面上填寫上必填的使用者名字、密碼、確認(rèn)密碼、聯(lián)系人住處的使用者資料。當(dāng)使用者上交時,先由網(wǎng)頁腳本辨別有沒有合乎上交的基礎(chǔ)條件,合乎條件則給后臺上交表單數(shù)據(jù)。倘若輸入不對,就會彈出不對警告框,讓顧客再次輸入。

4.4 購物車模塊

購物車模塊的實現(xiàn)方式主要有三種,一種是將商品信息加入數(shù)據(jù)庫,這樣用戶重新登錄系統(tǒng)后可以查看到用戶的購物車中的商品;另一種是將顧客購物車內(nèi)容放到session中存放在服務(wù)器端,就能夠達(dá)到多個頁面的資源共享。

4.5 類別管理模塊

在設(shè)計的模塊中,菜品類別的管理也是一重要的模塊,因為在該模塊中,管理員可以設(shè)置菜品品類,有利于后面對菜品信息管理;菜品信息更改或刪除完成后,也能夠用另一個頁面進(jìn)行添加菜品。

以菜品類別為例,重點介紹關(guān)于列表數(shù)據(jù)展示的模塊和實現(xiàn)過程,菜品類別信息展開查詢時會一開始借助Struts2的配置文件,并且依據(jù)配置文件完成一個跳轉(zhuǎn),一些主要代碼參考如下。

利用該配置的過程可以實現(xiàn)一次數(shù)據(jù)的跳轉(zhuǎn),即點擊了菜品類別后會進(jìn)入到GoodsTypeAction該類中。

運行代碼的時候,一開始應(yīng)該對數(shù)據(jù)庫構(gòu)成連接,在完成數(shù)據(jù)庫連接后再對數(shù)據(jù)展開處理,重點代碼如下所示。

Connection con = null;

PageBean pageBean = new PageBean(Integer.parseInt(page),Integer.parseInt(rows));

try {

if(goodsType==null){

goodsType = new GoodsType();

}

goodsType.setTypeName(s_typeName);

con = dbUtil.getCon();

JSONObject result = new JSONObject();

JSONArray jsonArray = JsonUtil.formatRsToJsonArray(goodsTypeDao.goodsTypeList(con, pageBean, goodsType));

int total = goodsTypeDao.goodsTypeCount(con, goodsType);

result.put("rows", jsonArray);

result.put("total", total);

ResponseUtil.write(ServletActionContext.getResponse(), result);

}catch(Exception e){

e.printStackTrace();

}finally{

try {

dbUtil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

5 系統(tǒng)測試

系統(tǒng)開發(fā)的時候,常常遇到開發(fā)不對的問題。最大限度地找到系統(tǒng)中的不足,而不是證明系統(tǒng)的優(yōu)點,這是經(jīng)典的一句對測試的解釋。及時察覺錯誤,就可以避免一些不必要的損失。系統(tǒng)測試不僅能確保軟件的正常實現(xiàn),還能證明需求和功能相符合,系統(tǒng)測試包括兩部分:一部分是驗證產(chǎn)品質(zhì)量,它包括檢查軟件的實現(xiàn)在需求分析的一致性、軟件實現(xiàn)速度的快慢跟計算機(jī)系統(tǒng)的擴(kuò)展性等等;另一部分查找軟件中的不對并修改,確保軟件功能的實現(xiàn)。

5.1 測試方法

系統(tǒng)測試對形式上的不同而言可以包括靜態(tài)測試與動態(tài)測試兩個關(guān)鍵部分。

1)靜態(tài)測試方法

靜態(tài)測試法根據(jù)系統(tǒng)功能需求、源代碼跟腳本的察看和考慮,找出系統(tǒng)存在的缺點。

2)動態(tài)分析方法

動態(tài)測試方法根據(jù)查看當(dāng)前代碼與想要達(dá)到的要求之間的直接差距,從性能、用處、可靠性等角度考評軟件。

對測試的內(nèi)部結(jié)構(gòu)與操作的算法上來說,其動態(tài)測試方法又涵蓋白盒測試法和黑盒測試法這兩種方法。

其中黑盒測試法(Black-Box Test)基本上將程序代碼當(dāng)成黑色盒子,不看程序內(nèi)部結(jié)構(gòu)跟算法,而僅著眼于程序代碼的外部特性來測試軟件有沒有達(dá)到要求。

在這個部分測試過程中,往往使用以黑盒測試法的手段來完成計算機(jī)系統(tǒng)查看,這樣能夠有效找出錯誤,檢驗系統(tǒng)能否滿足用戶需要,達(dá)到最佳測試效果。

5.2 功能測試

功能測試是計算機(jī)軟件用處的檢驗,憑借功能測試用例,一個一個察看,查看程序有沒有完成了使用者想要的結(jié)果,各個測試如下:

1)登錄功能的測試

目標(biāo):確保使用者可以根據(jù)對的使用者名字跟密碼進(jìn)入服務(wù)器。

測試方法:

(1)不做輸入直接回車。

(2)輸入空字符串然后回車。

(3)輸入合理的字符數(shù)據(jù)然后回車登錄。

2)菜品類別管理功能的測試

目的:確保用戶可以對菜品類別進(jìn)行管理。

測試方法:

(1)單擊菜的類別,核對是否能夠顯示正確的功能表。

(2)選中對應(yīng)的餐品信息,核對是否可以完成修改與刪除工作。

(3)修改跟刪除信息,核對可不可以實現(xiàn)和得到反饋。

5.3 測試結(jié)論

本模塊各個功能的測試結(jié)果如下:

1)進(jìn)入功能不發(fā)生異常,使用者可以進(jìn)入系統(tǒng)。

2)餐品使用正常,用戶對于餐品資料實現(xiàn)合理的增刪改查此操作。

本次測試結(jié)果與預(yù)計基本一致。通過測試,可得出以下結(jié)論:該模塊滿足外賣系統(tǒng)的功能需求,運行穩(wěn)定,具備實用價值。

6 總結(jié)

隨著社會生活的迅速發(fā)展,互聯(lián)網(wǎng)給予人們的公共服務(wù)也慢慢地變多了,為了滿足廣大的用戶就餐方面的需求,本設(shè)計采用編程語言Jsp,開發(fā)了一個基于B/S架構(gòu)的外賣系統(tǒng),這個外賣系統(tǒng)牽涉到了對多個不同的應(yīng)用領(lǐng)域的相關(guān)認(rèn)知,有效幫助整合相關(guān)知識框架,滿足了社會的需要,有一定的現(xiàn)實意義和社會價值。

猜你喜歡
數(shù)據(jù)庫功能系統(tǒng)
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關(guān)于非首都功能疏解的幾點思考
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 成年看免费观看视频拍拍| 99成人在线观看| a天堂视频在线| 欧美成人在线免费| 五月婷婷亚洲综合| 欧美日本在线播放| 色成人综合| 福利视频久久| 国产亚洲视频播放9000| 国产一区二区精品福利| 中文字幕永久视频| 性视频久久| 亚洲中文字幕在线一区播放| 久久久久亚洲AV成人网站软件| 一级毛片免费高清视频| 国产精品va免费视频| 国产精品成人一区二区不卡| 免费99精品国产自在现线| 曰AV在线无码| 国产激情在线视频| 日本高清有码人妻| 亚洲欧美天堂网| 日本亚洲成高清一区二区三区| 99激情网| 午夜国产理论| 另类专区亚洲| 欧美一级夜夜爽| 亚洲精品无码在线播放网站| 午夜国产在线观看| 丰满人妻一区二区三区视频| 在线观看视频一区二区| 91精品国产丝袜| 欧美成人国产| 亚洲伊人电影| 99久久国产自偷自偷免费一区| 国产素人在线| 欧美成人免费| www.日韩三级| 大香网伊人久久综合网2020| 欧美精品v欧洲精品| 少妇被粗大的猛烈进出免费视频| 好紧太爽了视频免费无码| 91视频免费观看网站| 女人18毛片一级毛片在线| 中文字幕一区二区视频| 久久久久久午夜精品| 免费无遮挡AV| 欧美激情视频一区二区三区免费| 亚洲欧美不卡视频| 精品视频一区在线观看| 午夜老司机永久免费看片| 欧美人与性动交a欧美精品| 国产主播喷水| 四虎永久免费地址| 国产手机在线ΑⅤ片无码观看| 熟女视频91| 久久久久国产一级毛片高清板| 国产成本人片免费a∨短片| 成人国产精品2021| 国产麻豆aⅴ精品无码| 五月婷婷综合网| 干中文字幕| 久久精品人妻中文系列| 四虎成人免费毛片| 久久综合色视频| 欧美成人综合视频| 99热这里只有精品2| a在线亚洲男人的天堂试看| 中文字幕伦视频| 国产精品久久久久婷婷五月| 国产人成在线视频| 国产成人福利在线视老湿机| 国产欧美日韩视频一区二区三区| 日本三级欧美三级| 国产视频一二三区| 亚洲色图欧美一区| 久久这里只精品国产99热8| 久久综合九色综合97网| 亚洲一区二区约美女探花| 99成人在线观看| 高清码无在线看| 午夜毛片福利|