亚洲精品亚洲人成在线观看麻豆,亚洲韩国在线一卡二卡,亚洲一区AV无码少妇电影☆http://m.tkk7.com/kingyaoo/category/31979.html設(shè)計java,設(shè)計人生zh-cnTue, 10 Jun 2008 02:25:45 GMTTue, 10 Jun 2008 02:25:45 GMT60IMVC 核心接口介紹http://m.tkk7.com/kingyaoo/articles/206789.html剎那剎那Mon, 09 Jun 2008 08:50:00 GMThttp://m.tkk7.com/kingyaoo/articles/206789.htmlhttp://m.tkk7.com/kingyaoo/comments/206789.htmlhttp://m.tkk7.com/kingyaoo/articles/206789.html#Feedback0http://m.tkk7.com/kingyaoo/comments/commentRss/206789.htmlhttp://m.tkk7.com/kingyaoo/services/trackbacks/206789.html 1.IAction接口
    action是整個MVC的核心,如果了解struts或者webwork等MVC框架的朋友應(yīng)該知道,action是一個用戶處理模塊,當(dāng)MVC容器接受到一個請求的時候,他會通過一定的方法獲得一個相應(yīng)的action類,然后執(zhí)行action類中相應(yīng)的方法,最后返回一個視圖給客戶端,這就是最普通的mvc框架的流程。和其他框架的action類似,IMVC的action接口也有一個核心方法,如下
public interface IAction {
    
/**
     * 屬性介紹:驗證器,放入Map value 的key
     
*/
    
public static final String MVC_STATIC_validation="__validation";
    
/**
     * 屬性介紹:文件上傳 Map value中的key
     
*/
    
public static final String MVC_STATIC_createUpload="__createUpload";
    
/**
     * 屬性介紹:這是編輯器
     
*/
    
public static final String MVC_STATIC_editor="__editor";
    
/**
     * 方法說明:action的核心方法
     * 
@param object 如果是post方法,object就是該action對應(yīng)的form,如果是get方法并且配置get方法沒有form
     * 那么這里就是null,如果配置get方法也是有form的,這里也是form
     * 
     * 
@param value  一個map,在action中添加內(nèi)容到view都往這里添加
     * 
@return 
     * String
     
*/
    
public View execute(Object object,Value value);
}
前面三個變量這里暫時不說,我們來關(guān)注最后一個方法,execute,任何action都需要實現(xiàn)這個接口,同時也就是說必須在action中有這個方法。這個方法有兩個傳入變量Object和Value,第一個是想要的formBean,如果是get方法并且沒有配置get方法設(shè)置form,那么這個時候就是null,如果是非get方法,而且還傳入了參數(shù),那么IMVC會自動封裝相應(yīng)的form傳入到這個。第二個Value參數(shù),Value也是一個很核心的接口。在IMVC中有ValueImpl類來實現(xiàn)。

Value 接口:
public interface Value {
    
public String getString(String key);
    
public String[] getArray(String key);
    
public void setObject(String key,Object value);
    
public Object getObject(String key);
}

ValueImpl 類:
public final class ValueImpl extends HashMap  implements Map,Value,InstantValue{
    
//InstantValue
    public void setArray(String key ,String[] arr){
        
super.put(key, arr);
    }
    
//user Value
    public String[] getArray(String key) {
        
return (String[])super.get(key);
    }
    
public Object getObject(String key) {
        
return super.get(key);
    }
    
public String getString(String key) {
        Object o
=super.get(key);
        
if(o==null){
            
return null;
        }
        
if(o instanceof String[]){
            
return ((String[])o)[0];
        }
else{
            
return null;
        }
    }
    
public void setObject(String key, Object value) {
        
super.put(key, value);
    }
    
//以下實現(xiàn)clone。。提供性能
    private ValueImpl cloneBase(){
        ValueImpl vimpl
=(ValueImpl) super.clone();
        vimpl.clear();
        
return vimpl;
    }
    
public static ValueImpl valueImpl=new ValueImpl();
    
public static ValueImpl cloneSelf(){
        
return valueImpl.cloneBase();
    }
}
這個類也相當(dāng)簡單,我們看第一句:
public final class ValueImpl extends HashMap  implements Map,Value,InstantValue
說明這個類 繼承了HashMap,實現(xiàn)了Map,Value,InstantValue 三個接口。這三個接口其實就是三個權(quán)限版本,比如Value是用戶操作權(quán)限,我們看到在action中傳入的是Value,但是在IMVC內(nèi)部操作的時候是把ValueImpl類轉(zhuǎn)換為InstantValue借口的

InstantValue 接口:
public interface InstantValue {
    
public void setArray(String key,String[] value);
}
這個幾口只有一個方法,這個方法是不會暴露給用戶的,是提供IMVC內(nèi)部設(shè)值用的。
下面還有一個攔截器接口
IInerceptor 攔截器接口:
public interface IInterceptor {
    
public void execute(HttpServletRequest request,HttpServletResponse response,Value value);
}
這個接口也相當(dāng)簡單,只有一個方法,傳入request和response參數(shù),同時還有一個Value參數(shù),這個Value上面已經(jīng)說過,是一個用戶操作的數(shù)據(jù)接口。

整個IMVC流程圖簡單來說如下:


    首先,請求來了后,IMVC會創(chuàng)建一個ValueImp轉(zhuǎn)換為Value傳給前攔截器(如果沒有設(shè)置就不用),攔截器操作完畢,在把這個ValueImp轉(zhuǎn)換為InstantValue接口傳給IMVC內(nèi)部操作,操作完畢接著把它轉(zhuǎn)化為Value接口供用戶Action操作,最后執(zhí)行后攔截器,執(zhí)行完畢轉(zhuǎn)換為Map借口供模板引擎渲染試圖。
    一個ValueImp要轉(zhuǎn)換為三種權(quán)限接口,所以他的實現(xiàn)就要implements 三個接口。



剎那 2008-06-09 16:50 發(fā)表評論
]]>
Instant MVC 框架 hello world 程序。。。。。http://m.tkk7.com/kingyaoo/articles/206675.html剎那剎那Sun, 08 Jun 2008 06:10:00 GMThttp://m.tkk7.com/kingyaoo/articles/206675.htmlhttp://m.tkk7.com/kingyaoo/comments/206675.htmlhttp://m.tkk7.com/kingyaoo/articles/206675.html#Feedback0http://m.tkk7.com/kingyaoo/comments/commentRss/206675.htmlhttp://m.tkk7.com/kingyaoo/services/trackbacks/206675.html
    首先導(dǎo)入InstantMVC(一下簡稱IMVC)的包,和相應(yīng)的依賴包(主要一些開源的包,比如commons等)    
    然后再eclipse中新建一個web項目。。這個就不用說了吧。
    然后在classPath下創(chuàng)建一個配置文件 mvcConfig.xml(名字任意起),內(nèi)如大概如下:
<baseConfig 
        actionPackageBasePath
="test.action"
        formPackageBasePath
="test.form"
        templateBasePath
="/template"
        resourceBasePath
="/re"
        urlPostfix
=".x"
        webUrl
="yao.com:8282"
    
/>
<optionalConfig
        isOpenActionCache
="false"
        isOpenValidationCache
="false"
        isGetMethodHasForm
="false"
        isOpenAjaxIdentityValidate
="false"
        fileUploadBasePath
="/upload"
        fileUploadMax
="1974592963"
        fileUploadFormat
="pdf,jpg,gif"
        printOutCharacter
="UTF-8"
        templateCharacter
="UTF-8"
        uploadCharacter
="UTF-8"
        isOpenFreemarkerCache
="false"
    
/>
   前面那個 baseConfig是必須設(shè)置,后面optionalConfig是可選,可以不設(shè)置,IMVC有默認設(shè)置。具體的配置如下:
必填:
actionPackageBasePath :基礎(chǔ)action包根目錄
formPackageBasePath:基礎(chǔ)form包根目錄
templateBasePath:基礎(chǔ)模板文件根目錄
resourceBasePath:InstantMVC自帶的資源文件目錄
urlPostfix:action請求后綴
webUrl:網(wǎng)站域名,比如yao.com主要用于ajaxView的權(quán)限檢測

可選:
isOpenActionCache="false" :是否開啟action的緩存,也就是是否設(shè)置action為單例
isOpenValidationCache="false":是否開啟檢驗框架的緩存
isGetMethodHasForm="false":是否為get方法也設(shè)置form填充
isOpenAjaxIdentityValidate="false":是否開啟ajaxView的權(quán)限驗證(不能跨域調(diào)用)
fileUploadBasePath="/upload":文件上傳根目錄,默認是/upload
fileUploadMax="1974592963":上傳文件最大 ,可選,默認1048576=1024×1024 b
fileUploadFormat="pdf,jpg,gif":上傳允許默認的格式,可選,默認為 pdf,jpg,gif,txt
printOutCharacter="UTF-8" : #可選,默認為UTF-8,表示通過action直接打印到客戶端字符的編碼,一般用到ajax發(fā)生 
templateCharacter="UTF-8" :#可選,默認為UTF-8 ,表示通過模板方式顯示到客戶端的編碼,一般用到直接的請求
isOpenFreemarkerCache="false":#是否開啟freemarker模板緩存

最基礎(chǔ)的配置就這些了,后面那個可選其實也可以去掉。

然后我們在項目中新建立一個包
test.action.test
然后在包下新舊一個java類:Hello:
public class Hello implements IAction{

    
public View execute(Object object, Value value) {
        value.setObject(
"hello""hello,歡迎來到InstantMVC的世界。。。");
        
return ViewFactory.getView("/test.html");
    }
    
}
ok,然后我們在 web項目根目錄下創(chuàng)建一個模板文件夾 template
在template下創(chuàng)建一個html文件 :test.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<title>test.html</title>
    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    
<meta http-equiv="description" content="this is my page">
    
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
  
</head>
  
<body>
   ${hello}
<br />
  
</body>
</html>
很簡單的Html,里面只有一個地方需要主意的就是 ${hello}這個東西,還記得上面Hello.java中的value.setObject("hello""hello,歡迎來到InstantMVC的世界。。。");嗎?其實這就是取出hello中的值。好一切配置都完成。額。好像還缺點什么,對,沒有配置web.xml,下面是基本的 配置:

<servlet>
        
<servlet-name>instantMVCController</servlet-name>
        
<servlet-class>yao.instant.mvc.sevlet.InstantFrontController</servlet-class>
        
<init-param>
            
<param-name>mvc_config</param-name>
            
<param-value>/mvcConfig.xml</param-value>
        
</init-param>
        
<init-param>
            
<param-name>single_config</param-name>
            
<param-value>/instant.single</param-value>
        
</init-param>
        
<load-on-startup>0</load-on-startup>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>instantMVCController</servlet-name>
        
<url-pattern>*.x</url-pattern>
    
</servlet-mapping>
   
其中yao.instant.mvc.sevlet.InstantFrontController 是IMVC的前端攔截器,有兩個參數(shù),第一個是剛剛寫的配置文件mvcConfig.xml相對于classPath的路徑,第二個是IMVC內(nèi)建的一個對象管理容器的配置,這里可以先不寫(或則在classPath下新建一個空的文件Instant.single,內(nèi)容不用寫)。下面那個是url映射,把.x的后綴映射到IMVC框架。好了,一切的搞定,下面就運行

啟動tomcat,在瀏覽器中輸入http://localhost:8080/test/hello.x 就會看到一下結(jié)果:

看,一個簡單的helloworld程序就完成了。下面我們回顧一下這個過程是怎么進行的。

   首先,我們先回顧下我們的配置文件中有一個配置選項:
actionPackageBasePath="test.action" 
這個選項表示IMVC將會首先通過這個路徑去尋找相應(yīng)的匹配url的action,比如我們上面的url是:/test/hello.x 那么IMVC會首先尋找 test.action.test包下的Hello類,如果沒有存在,會報異常,如果存在,就執(zhí)行Hello類的execute方法。在execute方法最后返回了一個View,其中一個參數(shù)是模板位置,比如本例中是View("/test.html"),那么這個文件在哪呢?IMVC又是怎么去尋找的呢,再回來看配置文件,其中的一個參數(shù):
templateBasePath="/template"
這個參數(shù)的意識就是吧web目錄下的template作為主要的模板文件的根目錄,此例中/test.html就是尋找的/template/test.html文件,然后渲染模板,會把其中的${hello}參數(shù)渲染為 action中通過value這個對象設(shè)置的值,比如本例中是:value.setObject("hello", "hello,歡迎來到InstantMVC的世界。。。");

    至此,一個簡單的get方法的IMVC流程結(jié)束。

    這里其他的功能沒有說道,比如View中有一種專門的返回ajax的View類型,比如還有攔截器,比如還有form填充和參數(shù)獲取等都沒說,下次再詳細說明。

ps:InstantMVC目前還在內(nèi)部修改完善,還不能提供版本下載。




剎那 2008-06-08 14:10 發(fā)表評論
]]>
InstantMVC開發(fā)筆記(1)http://m.tkk7.com/kingyaoo/articles/206374.html剎那剎那Fri, 06 Jun 2008 09:42:00 GMThttp://m.tkk7.com/kingyaoo/articles/206374.htmlhttp://m.tkk7.com/kingyaoo/comments/206374.htmlhttp://m.tkk7.com/kingyaoo/articles/206374.html#Feedback0http://m.tkk7.com/kingyaoo/comments/commentRss/206374.htmlhttp://m.tkk7.com/kingyaoo/services/trackbacks/206374.html
<?xml version="1.0" encoding="UTF-8"?>
<mvc>
    
<!--baseConfig 必須配置 
        目錄的配置都是用 /xxx 這種格式
        
        基礎(chǔ)action包根目錄
        actionPackageBasePath 
        
        基礎(chǔ)form包根目錄
        formPackageBasePath
        
        基礎(chǔ)模板文件根目錄
        templateBasePath
        
        InstantMVC自帶的資源文件目錄
        resourceBasePath
        
        action請求后綴
        urlPostfix
        
        網(wǎng)站域名,比如yao.com主要用于ajaxView的權(quán)限檢測
        webUrl
    
    
-->
    
<baseConfig 
        
actionPackageBasePath="test.action"
        formPackageBasePath
="test.form"
        templateBasePath
="/template"
        resourceBasePath
="/re"
        urlPostfix
=".x"
        webUrl
="yao.com:8282"
    
/>
    
    
<!--baseConfig 可選配置 
        是否開啟action的緩存,也就是是否設(shè)置action為單例
        isOpenActionCache="false"
        
        是否開啟檢驗框架的緩存
        isOpenValidationCache="false"
        
        是否為get方法也設(shè)置form填充
        isGetMethodHasForm="false"
        
        是否開啟ajaxView的權(quán)限驗證(不能跨域調(diào)用)
        isOpenAjaxIdentityValidate="true"
        
        文件上傳根目錄,默認是/upload
        fileUploadBasePath="/upload"
        
        上傳文件最大 ,可選,默認1048576=1024×1024 b
        fileUploadMax="1974592963"
        
        上傳允許默認的格式,可選,默認為 pdf,jpg,gif,txt
        fileUploadFormat="pdf,jpg,gif"
        
        #可選,默認為UTF-8,表示通過action直接打印到客戶端字符的編碼,一般用到ajax發(fā)生
        printOutCharacter="UTF-8"
        
        #可選,默認為UTF-8 ,表示通過模板方式顯示到客戶端的編碼,一般用到直接的請求
        templateCharacter="UTF-8"
    
    
-->
    
<optionalConfig
        
isOpenActionCache="false"
        isOpenValidationCache
="false"
        isGetMethodHasForm
="false"
        isOpenAjaxIdentityValidate
="true"
        fileUploadBasePath
="/upload"
        fileUploadMax
="1974592963"
        fileUploadFormat
="pdf,jpg,gif"
        printOutCharacter
="UTF-8"
        templateCharacter
="UTF-8"
    
/>
    
    
<!--action前攔截器 -->
    
<frontInterceptor>
        
<interceptor>test.interceptor.BaseFrontInterceptor</interceptor>
    
</frontInterceptor>
    
    
<!--action后攔截器 -->
    
<afterInterceptor>
        
<interceptor>test.interceptor.BaseAfterInterceptor</interceptor>
    
</afterInterceptor>
    
    
<!--特定目錄的 前攔截器,目錄用 /xxx/ 設(shè)置  -->
    
<pathInterceptor tag="front" url="/test/">
        
<interceptor>test.interceptor.MyFrontInterceptor</interceptor>
    
</pathInterceptor>
    
    
<!--特定目錄的 后攔截器 目錄用 /xxx/ 設(shè)置-->
    
<pathInterceptor tag="after" url="/test/">
        
<interceptor>test.interceptor.MyAfterInterceptor</interceptor>
    
</pathInterceptor>
    
    
</mvc>

    整個mvc框架的配置都在這里了,下面這個是以前的配置文件:

#==========必填=======================
#action放的基礎(chǔ)地址(包)
actionPackageBasePath
=test.action

#form放到基礎(chǔ)地址(包)
formPackageBasePath
=test.form

#freemarker模板地址,必須用/開頭,相對于web程序根目錄
templateBasePath
=/template

#instantMVC框架自帶的資源文件存放的地址,必須用/開頭,相對于web程序根目錄
resourceBasePath
=/re

#是否開啟action類的緩存(是否設(shè)置為單例,開發(fā)階段,建議設(shè)置為flase,正式階段,建議為true)
isOpenActionCache
=false

#是否開啟檢驗框架緩存,調(diào)試開發(fā)階段建議關(guān)閉,正式運行時期建議開啟,開啟有助性能提升,但是對于開發(fā)階段可能有些延遲
isOpenValidationCache
=false

#網(wǎng)站請求后綴
urlPostfix
=.x

#
==========以下可選=======================


#前攔截器列表,用逗號分開
frontInterceptor
=test.interceptor.MyInterceptor

#后攔截器列表
afterInterceptor
=

#是否為get方法的請求也自動填充相應(yīng)的form(flase有助提升性能)
,可選,默認為false
isGetMethodHasForm
=false

#網(wǎng)站
webUrl
=yao.com:8282

#是否開啟ajax的身份驗證,如果開啟,則外部網(wǎng)站將不能通過IMVC的ajax接口action訪問
#如果開啟這個選項,必須設(shè)置webUrl選項,默認為開啟
isOpenAjaxIdentityValidate
=true

#上傳文件的基礎(chǔ)地址,必須用/開頭,相對于web程序根目錄
,可選,默認為 /upload,
fileUploadBasePath
=/upload

#上傳文件最大 
,可選,默認1048576=1024×1024 b
fileUploadMax
=1974592963

#上傳允許默認的格式,可選,默認為 pdf
,jpg,gif,txt
fileUploadFormat
=pdf,jpg,gif

#可選,默認為UTF-
8,表示通過action直接打印到客戶端字符的編碼,一般用到ajax發(fā)生
printOutCharacter
=UTF-8

#可選,默認為UTF-
8 ,表示通過模板方式顯示到客戶端的編碼,一般用到直接的請求
templateCharacter
=UTF-8

    雖然我還是比較喜歡 properties的配置方式,但是客觀的說,隨著框架的擴大,xml配置確實比較占優(yōu)勢。

    今天除了把配置文件有properties形式改為了xml形式,添加了目錄攔截器外,還考慮一下文件上傳攔截器,現(xiàn)在的InstantMVC的文件上傳是在action中封裝的,對于一些靈活性方面還不夠,比如我上傳完圖片需要做幾張縮略圖,而每個上次action可能需要的縮略圖大小或者存放文件都不一樣,所以需要考慮在上次文件完畢到返回結(jié)果之間設(shè)計一個攔截器,這個攔截器可以用戶定義,當(dāng)然要實現(xiàn)一個接口,框架上傳完文件后可以通過這個攔截器做進一步處理,這樣更具靈活性,今天沒時間來,明天來完成了吧。



剎那 2008-06-06 17:42 發(fā)表評論
]]>
InstantMVC--輕量級MVC框架介紹http://m.tkk7.com/kingyaoo/articles/206149.html剎那剎那Thu, 05 Jun 2008 12:39:00 GMThttp://m.tkk7.com/kingyaoo/articles/206149.htmlhttp://m.tkk7.com/kingyaoo/comments/206149.htmlhttp://m.tkk7.com/kingyaoo/articles/206149.html#Feedback0http://m.tkk7.com/kingyaoo/comments/commentRss/206149.htmlhttp://m.tkk7.com/kingyaoo/services/trackbacks/206149.html     1.討厭的action配置,無論是strtus還是webwork,都有一大堆的action配置文件,strtus加上bean就更多,如果webwork配合spring,那么一個action就要配置一個spring Bean,一個webwork action映射,隨著項目的擴大,后來實在是讓人有些受不了,再則,隨著項目的擴大,action數(shù)目的增加,每次改動重新啟動服務(wù)器的時間浪費就更大,所以項目越來越大,感覺越來越痛苦,雖然配置型的action,對于項目的移植有一定的好處,但是一般的項目是很少回過頭去修改action映射,就算修改,在java文件中修改也是可以接受的。

    2.關(guān)于驗證,struts和webwork的驗證都是基于xml配置的,就我個人而言,是比較討厭xml配置這個東西的,所以我一直用不慣他們的驗證框架,而且一旦用到驗證框架,必須用到UI組件,在webwork中用freemarker作為模板的時候,UI組件是比較費資源的(可能成為潛在的性能瓶頸),如果有一個不用UI組件而且外面封裝客戶端和服務(wù)器端驗證的MVC框架,我想會比較爽。

    3.關(guān)于view,我比較喜歡springMVC中的那種直接在action中return的形式,webwork和struts的配置方式我也很不喜歡。

    4.應(yīng)該是性能考慮,webwork的action非單利可能導(dǎo)致性能問題(雖然沒有被充分證明),struts2也走了這條路。

    基于這些考慮,我打算開發(fā)自己的MVC框架,而且現(xiàn)在已經(jīng)小有所成,基本功能已經(jīng)完成,下面簡單講下InstantMVC框架的主要特征
    1.零配置,零配置不是說沒有配置,而是說不用配置action和result view,整個mvc框架只有一個整體的配置文件,所有映射關(guān)系都是通過默認規(guī)則來建立的。

    2.類似action/form 形式,這里說是類似,因為InstantMVC可以配置讓get方法是否支持form,也就是get方法可以不用form,直接通過一個Map獲得請求參數(shù),也可以配置get填充form形式,InstantMVC的action可以配置為是單利或者非單利,不過一般在action中不推薦存放非線程安全的變量,所以建議配置為單利。

    3.action中兩個參數(shù)一個是Form的Object,一個是Map,容易單元測試,不需要引入Servlet部件,但是對于一些session等操作可以通過InstantContext獲得HttpSerlvetrequest操作,可以說InstantMVC對于容器無關(guān)性是介于webwork和struts之間的。

    4.最簡單的驗證集成方式,所有驗證代碼寫到action中,在view中不用配置UI組件,支持客戶端和服務(wù)器端雙重驗證,可以單獨開啟一方關(guān)閉一方。

    5.ajax View的集成,這里的集成不像dwr那樣完全集成,而是一種半集成方式,客戶端用到ajax框架還是需要用戶自己選擇,這樣提供了很大的靈活性。InstantMVC的View有好幾種形式,比如挑戰(zhàn)到另一個action的view,直接返回的view,ajax的view等,InstantMVC的ajax是和普通的action一樣的,只不過返回一個ajax的View就成了ajax了。ajax的view可以返回任何對象的json。在客戶端很方便的獲得,這一點有點像dwr的返回結(jié)果,不過dwr需要配置,InstantMVC不用。而且我們可以設(shè)置開啟ajax的安全驗證,開啟后將不允許其他域方法ajax的action。

    6.支持AOP攔截器,模仿webwork那樣,可以自定義攔截器。

    7.集成了上傳組件,和驗證一樣,可以在action中配置。

    大概就是這些特性,這些特性都很讓我著迷。現(xiàn)在這些特性基本上都能工作,不過穩(wěn)定性兼容性方面還有待提升,同時還需要大量的性能方面考慮(雖然現(xiàn)在的性能比其他MVC只會高不會低)。今天剛把blog搬到這里來,以后這里會主要寫關(guān)于我的框架的一些問題等。



剎那 2008-06-05 20:39 發(fā)表評論
]]>
主站蜘蛛池模板: 亚洲av伊人久久综合密臀性色 | 亚洲一区二区三区首页| 四虎影视在线影院在线观看免费视频 | 久久久久久a亚洲欧洲aⅴ| 黄页网站在线看免费| 一本久久免费视频| 亚洲精品午夜在线观看| 又色又污又黄无遮挡的免费视| 免费无码黄网站在线看| 亚洲熟女综合色一区二区三区| 亚洲综合国产精品第一页| 国产91免费在线观看| 一进一出60分钟免费视频| 亚洲码一区二区三区| 亚洲人成人无码网www国产| 国产91色综合久久免费| 九九免费观看全部免费视频| 亚洲精品视频在线观看视频| 亚洲AV无码之日韩精品| 国产在线jyzzjyzz免费麻豆| 中国毛片免费观看| 18禁在线无遮挡免费观看网站| 国产成人精品日本亚洲专一区| 亚洲国产成人一区二区精品区| 国产精品免费一级在线观看| 88av免费观看| 免费毛片在线看不用播放器| 亚洲AV无码一区二区乱子仑| 亚洲男人电影天堂| 亚洲AV综合色区无码一区| 日本中文一区二区三区亚洲| 97在线线免费观看视频在线观看| 精品四虎免费观看国产高清午夜| 黄页网址在线免费观看| 亚洲砖码砖专无区2023| 亚洲色图视频在线观看| 亚洲AV无码码潮喷在线观看 | 亚洲av无码专区青青草原| 亚洲国产一区国产亚洲| 国产偷v国产偷v亚洲高清| 亚洲 小说区 图片区 都市|