精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談對(duì)Struts2上傳文件的理解

開發(fā) 后端
本文將為大家談?wù)剬?duì)Struts2上傳文件的理解,并結(jié)合實(shí)際工作中出現(xiàn)的異常,進(jìn)行講解。

孫鑫的書《Struts2 深入詳解》509頁是關(guān)于限制Struts2上傳文件的***長(zhǎng)度的內(nèi)容。 其中談到fileUpload攔截器只是當(dāng)文件上傳到服務(wù)器上之后,才進(jìn)行的文件類型和大小判斷。Struts2框架底層默認(rèn)用的是apache的commons-fileupload組件對(duì)上傳文件進(jìn)行接受處理。

通過struts.multipart.maxSize屬性來對(duì)文件大小進(jìn)行限定時(shí),將直接影響到commons-fileupload組件的文件大小設(shè)定,默認(rèn)是2M。當(dāng)上傳文件超過了這個(gè)尺寸時(shí),將從commons-fileupload組件中拋出SizeLimitExceededException異常。Struts2上傳文件攔截器捕獲到這個(gè)異常后,將直接把該異常信息設(shè)置為Action級(jí)別的錯(cuò)誤信息。

經(jīng)過我的測(cè)試和對(duì)源代碼的Debug,發(fā)現(xiàn)確實(shí)如孫鑫書中所言,如果上傳文件大于2M時(shí),在頁面上就出現(xiàn)了一堆英文的錯(cuò)誤信息,大致是:the request was rejected because its size....exceeds the configured maximum...并且在fieUpload中將來自MultiPartRequestWrapper型request對(duì)象的錯(cuò)誤信息給加到了Action的錯(cuò)誤中。

這時(shí)候,你在ApplicationResources.properties中自定義的上傳文件過大的錯(cuò)誤信息根本不起作用。原因就如書上所言,在底層commons-fileupload組件中就把異常給拋出來了文件根本沒被上傳,所以到了fileUpload攔截器時(shí),根據(jù)取不到文件,當(dāng)然也就沒法對(duì)文件的類型和大小進(jìn)行判斷了。

然而,這個(gè)異常直接帶來兩個(gè)問題:

1、在頁面上顯示了英文的錯(cuò)誤信息。這樣的信息顯然不是我們想要的。

2、由于錯(cuò)誤的產(chǎn)生,原來頁面上輸入的其他文本內(nèi)容也都不見了,也就是說params注入失敗。

帶著這兩個(gè)問題,我們來探尋一下Struts2對(duì)于請(qǐng)求的處理過程。

注:這并不是一篇關(guān)于Struts2請(qǐng)求過程的介紹,主要是為了解決以上兩個(gè)問題,才引起的簡(jiǎn)單分析。

首先當(dāng)然我們要拿FilterDispatcher開刀。

在doFilter方法中調(diào)用了prepareDispatcherAndWrapRequest方法,為了包裝出Struts2自己的request對(duì)象,在prepareDispatcherAndWrapRequest方法中調(diào)用Dispatcher類的wrapRequest方法,在這個(gè)方法里,會(huì)根據(jù)請(qǐng)求內(nèi)容的類型(提交的是文本的,還是multipart/form-data格式),決定是使用tomcat的HttpServletRequestWrapper類分離出請(qǐng)求中的數(shù)據(jù),還是使用Struts2的MultiPartRequestWrapper來分離請(qǐng)求中的數(shù)據(jù)。

注:向服務(wù)器請(qǐng)求時(shí),數(shù)據(jù)是以流的形式向服務(wù)器提交,內(nèi)容是一些有規(guī)則東東,我們平時(shí)在jsp中用request內(nèi)置對(duì)象取parameter時(shí),實(shí)際上是由tomcat的HttpServletRequestWrapper類分解好了的,無需我們?cè)俜纸膺@些東西了。

當(dāng)然,在這里,我們研究的是上傳文件的情況,所以,由于form中設(shè)定的提交內(nèi)容是媒體格式的,所以,Dispatcher類的wrapRequest方法會(huì)將請(qǐng)求交由MultiPartRequestWrapper類來處理。

MultiPartRequestWrapper這個(gè)類是Struts2的類,并且繼承了tomcat的HttpServletRequestWrapper類,也是我們將用來代替HttpServletRequest這個(gè)類的類,看名字也知道,是對(duì)多媒體請(qǐng)求的包裝類。

Struts2本身當(dāng)然不會(huì)再造個(gè)輪子,來解析請(qǐng)求,而是交由Apache的commons-fileupload組件來解析了。

在MultiPartRequestWrapper的構(gòu)造方法中,會(huì)調(diào)用MultiPartRequest(默認(rèn)為JakartaMultiPartRequest類)的parse方法來解析請(qǐng)求。

在Struts2的JakartaMultiPartRequest類的parse方法中才會(huì)真正來調(diào)用commons-fileupload組件的ServletFileUpload類對(duì)請(qǐng)求進(jìn)行解析,至此,Struts2已經(jīng)實(shí)現(xiàn)了將請(qǐng)求轉(zhuǎn)交commons-fileupload組件對(duì)請(qǐng)求解析的全過程。剩下的就是等commons-fileupload組件對(duì)請(qǐng)求解析完畢后,拿到分解后的數(shù)據(jù),根據(jù)field名,依次將分解后的field名和值放到params(HashMap類型)里,同時(shí)JakartaMultiPartRequest類重置了HttpServletRequest的好多方法,比如熟知的getParameter、getParameterNames、getParameterValues,實(shí)際上都是從解析后得到的那個(gè)params對(duì)象里拿數(shù)據(jù),在這個(gè)過程,commons-fileupload組件也乖乖的把上傳的文件分析好了,JakartaMultiPartRequest也毫不客氣的把分解后的文件一個(gè)一個(gè)的放到了files(HashMap類型)中,實(shí)際上此時(shí),commons-fileupload組件已經(jīng)所有要上傳的文件上傳完了。

至此,Struts2實(shí)現(xiàn)了對(duì)HttpServletRequest類的包裝,當(dāng)回到MultiPartRequestWrapper類后,再取一下上述解析過程中發(fā)生的錯(cuò)誤,然后把錯(cuò)誤加到了自己的errors列表中了。同樣我們會(huì)發(fā)現(xiàn)在MultiPartRequestWrapper類中,也把HttpServletRequest類的好多方法重載了,畢竟是個(gè)包裝類嘛,實(shí)際上對(duì)于上傳文件的請(qǐng)求,在Struts2后期的處理中用到的request都是MultiPartRequestWrapper類對(duì)象,比如我們調(diào)用getParameter時(shí),直接調(diào)用的是MultiPartRequestWrapper的getParameter方法,間接調(diào)的是JakartaMultiPartRequest類對(duì)象的getParameter方法。

注:從這里,我們就可以看出,JakartaMultiPartRequest是完全設(shè)計(jì)成可以替換的類了。

然后繼續(xù)向回返,到了Dispatcher類的wrapRequest方法,直接把MultiPartRequestWrapper對(duì)象返回了,我們就終于回到了FilterDispatcher類的prepareDispatcherAndWrapRequest方法,此時(shí),我們拿到了完全解析好了的request對(duì)象(MultiPartRequestWrapper類),該對(duì)象又進(jìn)一步被返回到了FilterDispatcher類的doFilter方法,也就是回到了出發(fā)點(diǎn),至此,doFilter中拿到的request對(duì)象就是一個(gè)將請(qǐng)求中的數(shù)據(jù)分解好的了HttpServletRequest對(duì)象,我們完全可以用getParameter方法取其中的數(shù)據(jù)了,同時(shí),我們也可以用getFiles得到文件數(shù)組了。

doFilter方法中,會(huì)進(jìn)一步調(diào)用actionMapper的getMapping方法對(duì)url進(jìn)行解析,找出命名空間和action名等,以備后面根據(jù)配置文件調(diào)用相應(yīng)的攔截器和action使用。

關(guān)于doFilter方法中下一步對(duì)Dispatcher類的serviceAction方法的調(diào)用,不再描述,總之在action被調(diào)用之前,會(huì)首先走到fileUpload攔截器(對(duì)應(yīng)的是FileUploadInterceptor類),在這個(gè)攔截器中,會(huì)先看一下request是不是 MultiPartRequestWrapper,如果不是,就說明不是上傳文件用的request,fildUpload攔截器會(huì)直接將控制權(quán)交給下一個(gè)攔截器;如果是,就會(huì)把request對(duì)象強(qiáng)轉(zhuǎn)為MultiPartRequestWrapper對(duì)象,然后調(diào)用hasErrors方法,看看有沒有上傳時(shí)候產(chǎn)生的錯(cuò)誤,有的話,就直接加到了Action的錯(cuò)誤(Action級(jí)別的)中了。

另外,在fileUpload攔截器中會(huì)將MultiPartRequestWrapper對(duì)象中放置的文件全取出來,把文件、文件名、文件類型取出來,放到request的parameters中,這樣到了params攔截器時(shí),就可以輕松的將這些內(nèi)容注入到Action中了,這也就是為什么fileUpload攔截器需要放在params攔截器前面的理由。在文件都放到request的parameters對(duì)象里之后,fileUpload攔截器會(huì)繼續(xù)調(diào)用其他攔截器直到Action等執(zhí)行完畢,他還要做一個(gè)掃尾的工作:把臨時(shí)文件夾中的文件刪除(這些文件是由commons-fileupload組件上傳的,供你在自己的Action中將文件copy到指定的目錄下,當(dāng)action執(zhí)行完了后,這些臨時(shí)文件當(dāng)然就沒用了)。

你好,你還在看嗎?呵呵,是不是太多了,也太亂了,沒辦法,Struts2就是這樣的調(diào)用的。也不知道Struts2有沒有公開其Sequence圖,我是想畫一個(gè),不過,太懶,還是看著代碼說說吧。

如果上面看煩了,也完全可以不看了,直接看下面的。

在上面一番分析之后,文件上傳的全過程就結(jié)束了。
我們回到我們的問題上來。

先看***個(gè):

1、在頁面上顯示了英文的錯(cuò)誤信息。這顯然不是我們想要的。

沒辦法了,commons-fileupload組件沒想到國際化,在FileUploadInterceptor攔載器中,也沒想著國際化,直接放到Action的錯(cuò)誤中了,就沒他事了,三種做法:

(1)在錯(cuò)誤顯示之前,把這條錯(cuò)誤給換掉,應(yīng)該難度不大,我沒做留給你做了。

(2)或者重寫一下JakartaMultiPartRequest這個(gè)類,把捕捉到的異常信息換成自己的,然后,通過Struts2的配置文件,把我們重寫的這個(gè)parser換上去用。

(3)直接改commons-fileupload組件的類,換成中文的。

我具體說一下第(3)種做法:找到FileUploadBase類,把902行~908行改一下。
FileUploadException ex =
    new SizeLimitExceededException(
        "the request was rejected because"
        + " its size (" + pCount
        + ") exceeds the configured maximum"
        + " (" + pSizeMax + ")",
        pCount, pSizeMax);
=>
FileUploadException ex = new SizeLimitExceededException(
"服務(wù)器拒絕了您的請(qǐng)求,原因可能是向服務(wù)器提交的數(shù)據(jù)發(fā)生了丟失。", pCount, pSizeMax);

把914行~918行改一下。
throw new SizeLimitExceededException(
        "the request was rejected because its size ("
        + requestSize
        + ") exceeds the configured maximum ("
        + sizeMax + ")",
=>
throw new SizeLimitExceededException("服務(wù)器拒絕了您的請(qǐng)求,原因是提交數(shù)據(jù)量過大(通常是由于上傳文件過大),請(qǐng)返回上頁重試。"
+ " (***字節(jié)數(shù):" + sizeMax / 1024
+ "K)", requestSize, sizeMax);


再看一下第二個(gè)問題。

2、由于錯(cuò)誤的產(chǎn)生,原來頁面上輸入的內(nèi)容也全部不見了,也就是說params注入失敗。
關(guān)于這個(gè)問題我在javaeye上搜索到一篇文章(使用的commons-fileupload組件的jar包似乎比較老)。
http://www.javaeye.com/topic/197345

雖然按照此文,當(dāng)上傳失敗時(shí),能夠?qū)⑵渌斎雰?nèi)容顯示出來,但是這樣做的結(jié)果是全部的文件肯定會(huì)上傳到服務(wù)器上,也就是說,雖然是頁面上報(bào)了文件因?yàn)樘螅?qǐng)求被拒絕的錯(cuò),但是文件依然會(huì)被上傳到服務(wù)器上,commons-fileupload組件根本沒會(huì)去攔文件的上傳。

在這里要說明一下,如果你不拋出這個(gè)異常,請(qǐng)求的流會(huì)繼續(xù)向服務(wù)器上傳,只有當(dāng)整個(gè)流上傳完了之后,commons-fileupload組件才能正確的分析出文件部分、文本部分。所以,在這里拋出異常是不得已的作法,如果不拋異常,后果是雖然頁面報(bào)錯(cuò),但文件還是會(huì)被傳到服務(wù)器的上,這一步根本沒擋住輸入流的上傳,如果沒擋住的話,大家想想會(huì)有什么后果?

所以,綜上所述,對(duì)于第二個(gè)問題,如果出現(xiàn)了這個(gè)異常,我們根本無法讓原來輸入的內(nèi)容還顯示出來的,因?yàn)閏ommons-fileupload組件并沒有解析全部的輸入內(nèi)容,直接給出異常了,到了params攔截器中,request里就是空的,根本取不到parameter,所以也就無法注入到Action中了。這種情況下,只能顯示一個(gè)告知用戶由于提交數(shù)據(jù)量過大,服務(wù)器拒絕了請(qǐng)求的錯(cuò)誤信息,比較好的方法是,直接跳到一個(gè)專門的頁面,提示用戶,然后讓用戶點(diǎn)返回來再次輸入,否則用戶會(huì)感覺上傳文件大就大吧,怎么連我輸入的其他一些內(nèi)容也沒給保存住。當(dāng)然,如果能用Ajax來上傳文件,對(duì)客戶的操作體驗(yàn)可能是***的,但是,這樣可能會(huì)導(dǎo)致服務(wù)器上有些掛空的文件(上傳后從來沒被用過),需要想法清除的。

整個(gè)分析下來,我們說第二個(gè)問題基本上是無法避免的。

 【編輯推薦】

  1. 在Eclipse中開發(fā)struts應(yīng)用程序
  2. 手把手教你在Eclipse中配置開發(fā)Struts
  3. Eclipse下開發(fā)struts完整解決亂碼問題
  4. Struts相關(guān)背景介紹
  5. 使用Easy Struts for Eclipse開發(fā)Struts
責(zé)任編輯:張燕妮 來源: blogjava
相關(guān)推薦

2009-06-08 16:44:00

Struts2文件上傳

2009-06-25 15:50:03

Struts2教程上傳任意多個(gè)文件

2009-07-14 17:10:44

struts2webwork

2009-06-04 08:45:01

Struts2下載

2009-02-04 14:00:59

2009-06-05 09:58:20

struts2驗(yàn)證用戶注冊(cè)

2009-06-08 16:44:00

struts2 ogn

2009-06-04 08:34:24

Struts2配置struts.xml

2009-06-04 08:01:25

Struts2攔截器原理

2009-07-29 09:54:34

struts2和str

2011-06-28 09:14:23

Struts 2WebWork

2009-06-08 16:44:00

2011-05-05 10:16:06

struts2

2009-06-25 15:11:28

Struts2教程Struts2程序

2009-02-04 10:51:07

2009-06-04 09:20:19

struts2 if標(biāo)使用

2012-05-10 14:00:06

StrutsjsonJava

2009-06-05 10:52:45

struts2深入詳解配置文件

2009-07-03 09:35:57

Struts2 JSP

2009-06-05 10:05:50

struts menustruts2
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久成人免费视频| 欧美性猛交xxxx乱大交3| 91九色视频在线观看| 国产一级片免费| 亚洲制服一区| 欧美一三区三区四区免费在线看| 久久av综合网| 97视频精彩视频在线观看| 国产一区二区伦理片| 97在线日本国产| 欧美视频一区二区在线| 国产无遮挡裸体免费久久| 欧美中文字幕一二三区视频| 水蜜桃在线免费观看| 欧美日韩在线中文字幕| 国产伦精品一区二区三区免费迷| 欧美有码在线观看视频| 日本妇女毛茸茸| 欧洲杯足球赛直播| 亚洲黄色在线观看| 91精品国产三级| 日韩pacopacomama| 香蕉乱码成人久久天堂爱免费| 亚洲精品一区二区三区av| 欧美特黄一级视频| 国产一区二区三区综合| 国产精品日日做人人爱| av大全在线观看| 欧美精品偷拍| 日日狠狠久久偷偷四色综合免费 | 精品在线观看免费| 国产99视频精品免视看7| 久久精品国产亚洲AV无码麻豆 | 成人午夜免费剧场| 在线观看麻豆蜜桃| 久久亚区不卡日本| 国产私拍一区| 亚洲第一色视频| 国产在线国偷精品免费看| 国产精品日韩在线| 免费av中文字幕| 99精品国产福利在线观看免费| 欧美高清视频免费观看| 欧美 日韩 国产 一区二区三区| av影片在线一区| 亚洲欧美日韩一区二区在线| 风间由美一二三区av片| 欧美天堂社区| 亚洲国产精品久久| caopor在线| 亚洲精品国产九九九| 91精品国产手机| 两性午夜免费视频| 天堂va在线高清一区| 欧美一区二区免费视频| 欧美激情第一区| 国产午夜精品一区在线观看 | 久久免费观看视频| 免看一级a毛片一片成人不卡| 成人午夜av| 中文字幕无线精品亚洲乱码一区| 久久久免费看片| 四季av在线一区二区三区| 中文字幕日韩欧美在线 | 亚洲电影激情视频网站| www.av蜜桃| 日韩欧美一中文字暮专区| 国产区在线视频| 国产精品亚洲午夜一区二区三区 | 国产91精品入| 日韩精品中文字幕视频在线| 人妻精品久久久久中文字幕| 亚洲三级网址| 色妞色视频一区二区三区四区| 日本成人精品视频| 午夜精品偷拍| 91wwwcom在线观看| 国产乱码在线观看| 国产一区二区三区香蕉| 国产精品永久入口久久久| 四虎成人免费在线| 国产精品第五页| 大荫蒂性生交片| xxxxx性欧美特大| 欧美亚洲动漫精品| 熟妇女人妻丰满少妇中文字幕| 国产精品久久久网站| 亚洲欧洲在线视频| 国产精品视频一区二区三| 亚洲精一区二区三区| 国产精品久久久久久久久久99| 国产乱码久久久久| k8久久久一区二区三区 | 国产日韩一区在线| 亚洲国产精品久久久久久6q| 26uuu精品一区二区| 做爰高潮hd色即是空| 高清在线视频不卡| 7777女厕盗摄久久久| 中文精品在线观看| 亚洲国产精品成人| 国产91在线播放精品91| 亚洲国产精品18久久久久久| 欧美国产综合一区二区| 天堂8在线天堂资源bt| av在线一区不卡| 精品免费99久久| 成年人视频软件| 亚洲毛片播放| 91中文字幕在线| 激情小视频在线| 亚洲伊人伊色伊影伊综合网| 成人亚洲精品777777大片| 成人涩涩网站| 久久视频在线观看免费| 五月婷婷激情视频| 福利91精品一区二区三区| 色综合视频二区偷拍在线| a'aaa级片在线观看| 欧美精品精品一区| 99av国产精品欲麻豆| 欧美无砖砖区免费| 亚洲视频 中文字幕| 欧美一级淫片| 欧美亚洲另类视频| 午夜精品在线播放| 一区免费观看视频| 色七七在线观看| 牲欧美videos精品| 欧美二区乱c黑人| 亚洲天堂网视频| 久久久久久久久久电影| 日韩在线一级片| 动漫视频在线一区| 久久久久久久国产| www.久久成人| 亚洲免费电影在线| 黄色一级片免费的| 日韩久久精品| 国产精品免费久久久| 欧美男男激情freegay| 欧美视频13p| 三级黄色片网站| 亚洲国产综合在线看不卡| 成人av播放| 天堂av资源在线观看| 日韩一级黄色大片| 加勒比av在线播放| 国产成人在线免费观看| youjizz.com在线观看| 最新精品在线| 午夜精品久久久久久久白皮肤| 亚洲精品国产精| 亚洲国产精品久久人人爱| 美女扒开腿免费视频| 在线精品亚洲| 精品国产免费一区二区三区 | 高清一区二区三区四区五区| 亚洲第一天堂影院| 无吗不卡中文字幕| 欧美一区二区三区成人精品| 久久久久国产精品午夜一区| 西游记1978| 日韩精品中文字幕一区二区 | 亚洲精品一品区二品区三品区| jizz亚洲女人高潮大叫| 日韩在线视频国产| 国产欧美一区二区三区视频在线观看| 亚洲人妖av一区二区| 欧美性受xxxxxx黑人xyx性爽| 午夜av一区| 成人国产一区二区| 色在线中文字幕| 中文字幕v亚洲ⅴv天堂| 国产av无码专区亚洲av| 午夜视频在线观看一区| 精品欧美一区二区久久久| 久久66热偷产精品| 久久精品国产sm调教网站演员| 婷婷激情久久| 成人午夜高潮视频| 蜜桃视频www网站在线观看| 国产亚洲人成网站在线观看| 国产超碰人人模人人爽人人添| 五月综合激情网| 在线观看免费小视频| 国产米奇在线777精品观看| 男女超爽视频免费播放| 日本不卡二三区| 电影午夜精品一区二区三区| 超碰aⅴ人人做人人爽欧美| 色伦专区97中文字幕| 色丁香婷婷综合久久| 欧美性猛交xxxx黑人交| 男女免费视频网站| 国产日韩精品一区二区三区 | 337p粉嫩大胆噜噜噜噜噜91av | 一区二区在线免费视频| 国产农村老头老太视频| 欧美午夜精品久久久久久人妖| 性欧美疯狂猛交69hd| 久久综合久久综合久久| 亚洲欧美日韩网站| 麻豆精品网站| 欧美国产视频一区| 色琪琪久久se色| 久久综合福利| 高清一区二区三区| 91亚洲精品久久久久久久久久久久| 亚洲涩涩在线| 久久久久久免费精品| 丝袜美腿美女被狂躁在线观看| 亚洲第一中文字幕| 国产a级免费视频| 欧美日本一区二区| 中文字幕免费高清网站| 午夜av区久久| 福利一区二区三区四区| 18成人在线观看| 丁香六月激情综合| 久久午夜免费电影| 日本一卡二卡在线| 成人在线视频首页| 亚洲一级片免费观看| 久久电影国产免费久久电影 | 免费一级黄色大片| 自拍偷拍国产精品| av片在线免费看| 国产精品丝袜91| 亚洲国产av一区| 91免费看视频| 中文乱码人妻一区二区三区视频| 国产精品原创巨作av| 日本中文字幕影院| 久久av老司机精品网站导航| 亚洲视频在线观看一区二区三区| 亚洲欧美日韩国产一区| 日韩在线视频在线观看| 亚洲国产二区| 1024av视频| 国产精品资源| 欧美性大战久久久久xxx| 国产精品日本| 日韩avxxx| 亚欧美中日韩视频| 免费在线观看的毛片| 日韩精品视频网| 99视频在线视频| 久久国产成人午夜av影院| 国内外成人免费在线视频| 久久精品免费观看| 中文字幕一区二区三区四| 国产一区二区三区四区在线观看| 美女被艹视频网站| 懂色av中文一区二区三区| 久草免费资源站| 波多野结衣精品在线| 第四色在线视频| 久久精品亚洲乱码伦伦中文| 韩国三级hd中文字幕| 国产精品天干天干在线综合| 亚洲欧美综合7777色婷婷| 亚洲日本电影在线| 日韩精品成人在线| 欧美午夜视频一区二区| 欧美一级黄视频| 欧美精品黑人性xxxx| 成人久久精品人妻一区二区三区| 亚洲精品一区二区三区福利| 日本大片在线观看| 日韩一级黄色av| 超免费在线视频| 欧美最猛性xxxxx亚洲精品| 97欧美成人| www.成人av| 亚洲男人都懂第一日本| 中文字幕精品—区二区日日骚| 亚洲破处大片| 国产a级一级片| 狠狠网亚洲精品| 日韩av无码一区二区三区不卡| 久久久亚洲欧洲日产国码αv| 激情五月激情综合| 午夜激情综合网| 在线不卡免费视频| 亚洲国产私拍精品国模在线观看| 国产视频第一页在线观看| 欧美国产第一页| 日韩三区免费| 国产一区二区不卡视频在线观看| 精品无人区麻豆乱码久久久| 熟妇熟女乱妇乱女网站| 久久国产高清| 午夜激情视频网| 国产清纯在线一区二区www| 国产在线视频在线观看| 欧美日韩国产一级片| 日本黄色三级视频| 久久精品视频免费播放| 永久免费毛片在线播放| 92看片淫黄大片看国产片| 亚洲影院天堂中文av色| 日本aa在线观看| 男女男精品视频网| 毛茸茸多毛bbb毛多视频| 亚洲你懂的在线视频| 国产成人av免费| 亚洲精品国产精品久久清纯直播| 91在线不卡| 欧美在线视频网站| jizz性欧美2| 国产精品美女在线播放| 久久人人超碰| 日批在线观看视频| 一卡二卡欧美日韩| 国产熟女精品视频| 亚洲最新av在线| 超碰一区二区| 久久久久久久久久码影片| 午夜国产精品视频| 欧美性受xxxxxx黑人xyx性爽| 久久免费视频一区| 免费观看一区二区三区毛片| 日韩美女一区二区三区四区| 人人干在线视频| 国产欧美精品一区二区三区介绍 | 国产成人免费在线视频| 少妇人妻丰满做爰xxx| 欧美日韩你懂得| avtt亚洲| 国产精品伦子伦免费视频| 国产成人影院| 大肉大捧一进一出好爽动态图| av中文字幕不卡| 韩国av免费观看| 大色综合视频网站在线播放| 少妇免费毛片久久久久久久久| 亚洲欧美日韩在线观看a三区| 黄色av网址在线观看| 午夜亚洲福利老司机| 午夜视频福利在线| 欧美性在线观看| 校园春色另类视频| 能在线观看的av| 久久久精品免费观看| 日本熟女毛茸茸| 国产亚洲精品一区二555| 日韩精品99| 日韩欧美一区二区在线观看| 日韩电影一区二区三区| 五月激情四射婷婷| 欧美嫩在线观看| 亚洲区欧洲区| 风间由美一区二区三区| 亚洲经典视频在线观看| 欧美无人区码suv| 欧美性色xo影院| 电影在线高清| 成人两性免费视频| 欧美视频一区| 朝桐光av一区二区三区| 欧美专区日韩专区| 国产黄色小视频在线| 成人黄色片视频网站| 国产精品尤物| 少妇的滋味中文字幕bd| 日韩欧美在线观看一区二区三区| 欧美激情成人动漫| 国内视频一区二区| 日日骚欧美日韩| 丝袜美腿小色网| 亚洲成人a**站| 老鸭窝一区二区| 香港成人在线视频| 国外av在线| 91精品网站| 久久xxxx| 日本a级片视频| 国产视频亚洲精品| 亚洲三级在线| 成品人视频ww入口| 亚洲国产成人在线| 精品人妻少妇AV无码专区| 国产91精品黑色丝袜高跟鞋| 日韩伦理一区| 性欧美18—19sex性高清| 欧美主播一区二区三区| 日韩特级毛片| 日韩视频在线播放| 粉嫩av亚洲一区二区图片| 精人妻无码一区二区三区| 久久777国产线看观看精品| 一区二区三区日本久久久| 一区二区三区四区毛片| 午夜精品久久久久久久99水蜜桃 | 91在线丨porny丨国产| 亚洲一卡二卡在线观看| 性欧美在线看片a免费观看| 欧美好骚综合网| 性久久久久久久久久|