日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

运行startup.bat的启动过程

發布時間:2024/4/15 编程问答 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运行startup.bat的启动过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

一般啟動tomcat都是找到bin目錄下的startup.bat(windows)下或者startup.sh(linux下),所以要研究tomcat的啟動,startup腳本是避不開的。那么下面就來看一看windows下面的startup.bat。

二、bat文件

要看懂startup.bat,首先得對bat文件有個基本的了解。

bat文件是dos下的批處理文件。批處理文件是無格式的文本文件,這個文件的每一行都是一條DOS命令。它的文件擴展名為 .bat 或 .cmd。在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統就會調用cmd.exe按照該文件中各個命令出現的順序來逐個運行它們。使用批處理文件(也被稱為批處理程序或腳本),可以簡化日常或重復性任務。

批處理簡單語法:

rem: 該命令用于注釋,rem起始的行不會作為代碼執行
pause: 該命令用于暫停正在執行的批處理文件,并且提示用戶按鍵,然后程序繼續執行
echo: 該命令用于在dos控制臺顯示一段文本,相當于print,如果想要顯示環境變量需要在環境變量前后加上%,例如顯示操作系統 echo %OS%
echo off: 該命令可以防止將批處理文件中的具體命令打印出來,而只會輸出執行結果。
@echo off:該命令與echo off相同,唯一的區別在于 @echo off不僅會隱藏具體命令還會連'echo off'這個自身命令也隱藏起來。
set: 設置環境變量,例如 set A = 100 設置A變量為100
label: 使用 ':'(冒號)來設置一個標簽,供給goto命令使用,例如":init"代表一個init標簽。
goto: 該命令使正在執行的命令強制跳轉到他指定的標簽。例如我需要跳轉指定A標簽下的命令,如下:goto A
not: 該命令用來取反,相當于邏輯非。
if: 該命令表示判斷
exist: 該命令通常用來測試文件是否存在,一般和if一起使用
shift: 該命令用來將參數后移一位即將%2%賦值給%1%,%3%賦值給%2%,也可以理解為參數列表左移即刪除現有參數列表的第一位。
call: 該命令用來調用另外一條命令。
setLocal: 該命令表示該批處理文件中修改的環境變量只在本文件中起作用,或者直到endLocal命令出現,被修改的環境變量才恢復原狀。
start: 重新開啟一個dos窗口。

可以參考一下這篇博文:

Bat命令學習

三、startup.bat

用編輯器打開startup.bat文件,內容如下:

1 @echo off 2 rem Licensed to the Apache Software Foundation (ASF) under one or more 3 rem contributor license agreements. See the NOTICE file distributed with 4 rem this work for additional information regarding copyright ownership. 5 rem The ASF licenses this file to You under the Apache License, Version 2.0 6 rem (the "License"); you may not use this file except in compliance with 7 rem the License. You may obtain a copy of the License at 8 rem 9 rem http://www.apache.org/licenses/LICENSE-2.0 10 rem 11 rem Unless required by applicable law or agreed to in writing, software 12 rem distributed under the License is distributed on an "AS IS" BASIS, 13 rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 rem See the License for the specific language governing permissions and 15 rem limitations under the License. 16 17 rem --------------------------------------------------------------------------- 18 rem Start script for the CATALINA Server 19 rem --------------------------------------------------------------------------- 20 21 setlocal 22 23 rem Guess CATALINA_HOME if not defined 24 set "CURRENT_DIR=%cd%" 25 if not "%CATALINA_HOME%" == "" goto gotHome 26 set "CATALINA_HOME=%CURRENT_DIR%" 27 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 28 cd .. 29 set "CATALINA_HOME=%cd%" 30 cd "%CURRENT_DIR%" 31 :gotHome 32 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 33 echo The CATALINA_HOME environment variable is not defined correctly 34 echo This environment variable is needed to run this program 35 goto end 36 :okHome 37 38 set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat" 39 40 rem Check that target executable exists 41 if exist "%EXECUTABLE%" goto okExec 42 echo Cannot find "%EXECUTABLE%" 43 echo This file is needed to run this program 44 goto end 45 :okExec 46 47 rem Get remaining unshifted command line arguments and save them in the 48 set CMD_LINE_ARGS= 49 :setArgs 50 if ""%1""=="""" goto doneSetArgs 51 set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 52 shift 53 goto setArgs 54 :doneSetArgs 55 56 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 57 58 :end

@echo off,此語句常用于開頭,表示不顯示所有的命令行信息,包括此句。

然后是一大段rem后面的內容,是注釋,對軟件的License做了說明,英文不太好,就不翻譯了。

setlocal,啟動批處理文件中環境變量的本地化,本地化將持續到出現匹配的endlocal命令或者到達批處理文件結尾為止。

下面將批處理文件拆成幾段看:

第一段:判斷CATALINA_HOME是否定義

1 setlocal 2 3 rem Guess CATALINA_HOME if not defined 4 set "CURRENT_DIR=%cd%" 5 if not "%CATALINA_HOME%" == "" goto gotHome 6 set "CATALINA_HOME=%CURRENT_DIR%" 7 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 8 cd .. 9 set "CATALINA_HOME=%cd%" 10 cd "%CURRENT_DIR%"
  • 設置變量CURRENT_DIR為當前目錄,一般打開的就是tomcat的bin目錄,./apache-tomcat-x.x.xx/bin;

  • 判斷系統變量CATALINA_HOME是不是空串(一般安裝tomcat時,我們都會配置CATALINA_HOME環境變量,不知有沒有印象呢),如果是就跳轉到gotHome標簽執行,假設CATALINA_HOME環境變量沒有定義,就繼續往下;

  • 設置CATALINA_HOME為CURRENT_DIR指向的目錄,也就是bin目錄(./apache-tomcat-x.x.xx/bin);

  • 判斷CATALINA_HOME\bin\catalina.bat文件是否存在,也就是 ./apache-tomcat-x.x.xx/bin/bin/catalina.bat,如果存在就轉向okHome標簽,顯然是不存在的,所以不會跳轉到okHome,繼續往下;

  • 不存在的話,CATALINA_HOME取上級目錄的值,也就是(./apache-tomcat-x.x.xx/);

  • 設置CATALINA_HOME指向當前目錄,也就是Tomcat的根目錄;

  • 進入 CURRENT_DIR(./apache-tomcat-x.x.xx/bin);

  • 第二段:執行gotHome標簽

    1 :gotHome 2 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 3 echo The CATALINA_HOME environment variable is not defined correctly 4 echo This environment variable is needed to run this program 5 goto end

    通過上面的設置,CATALINA_HOME的值已經是: ./apache-tomcat-x.x.xx/,這時判斷./apache-tomcat-x.x.xx/catalina.bat 腳本是否存在,如果不存在,則輸出一些信息結束,一般這時是可以找到的,所以跳轉到okHome標簽處;

    第三段:執行okHome標簽

    1 :okHome 2 3 set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

    設置EXECUTABLE變量指向為catalina.bat腳本;

    第四段:再次檢查catalina.bat是否存在

    1 rem Check that target executable exists 2 if exist "%EXECUTABLE%" goto okExec 3 echo Cannot find "%EXECUTABLE%" 4 echo This file is needed to run this program 5 goto end

    雙重保險繼續判斷下EXECUTABLE指向的catalina.bat文件是否存在,不存在就輸出提示信息并且結束,存在就跳轉到okExec標簽處:

    第五段:

    1 :okExec 2 3 rem Get remaining unshifted command line arguments and save them in the 4 set CMD_LINE_ARGS= 5 :setArgs 6 if ""%1""=="""" goto doneSetArgs 7 set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 8 shift 9 goto setArgs 10 :doneSetArgs 11 12 call "%EXECUTABLE%" start %CMD_LINE_ARGS%
  • set CMD_LINE_ARGS=表示清空變量CMD_LINE_ARGS;
  • 執行setArgs標簽;
  • 第一個變量(%1%)為空字符串,那么就跳轉到doneSetArgs標簽,一般情況下,直接運行startup.bat,是沒有傳遞任何參數,所以是跳轉到doneSetArgs標簽,由此也可以猜想出,如果不是使用雙擊執行的話,使用命令行啟動startup.bat那么是可以傳遞參數的;
  • 跳轉到doneSetArgs,調用EXECUTABLE指向的文件,也就是catalina.bat文件,同時傳遞start參數,因為CMD_LINE_ARGS為空,所以只傳遞了一個start參數
  • **最后:**end標簽

    1 :end

    判斷失敗跳轉的標簽,是參數不正確的時候的結束標志。

    四、catalina.bat

    如果startup.bat執行正確,就等同于運行catalina.bat start,進入了catalina.bat腳本中,將腳本前面的一大段注釋刪掉了,如下:

    1 setlocal 2 3 rem Suppress Terminate batch job on CTRL+C 4 if not ""%1"" == ""run"" goto mainEntry 5 if "%TEMP%" == "" goto mainEntry 6 if exist "%TEMP%\%~nx0.run" goto mainEntry 7 echo Y>"%TEMP%\%~nx0.run" 8 if not exist "%TEMP%\%~nx0.run" goto mainEntry 9 echo Y>"%TEMP%\%~nx0.Y" 10 call "%~f0" %* <"%TEMP%\%~nx0.Y" 11 rem Use provided errorlevel 12 set RETVAL=%ERRORLEVEL% 13 del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1 14 exit /B %RETVAL% 15 :mainEntry 16 del /Q "%TEMP%\%~nx0.run" >NUL 2>&1 17 18 rem Guess CATALINA_HOME if not defined 19 set "CURRENT_DIR=%cd%" 20 if not "%CATALINA_HOME%" == "" goto gotHome 21 set "CATALINA_HOME=%CURRENT_DIR%" 22 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 23 cd .. 24 set "CATALINA_HOME=%cd%" 25 cd "%CURRENT_DIR%" 26 :gotHome 27 28 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 29 echo The CATALINA_HOME environment variable is not defined correctly 30 echo This environment variable is needed to run this program 31 goto end 32 :okHome 33 34 rem Copy CATALINA_BASE from CATALINA_HOME if not defined 35 if not "%CATALINA_BASE%" == "" goto gotBase 36 set "CATALINA_BASE=%CATALINA_HOME%" 37 :gotBase 38 39 rem Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a semi-colon 40 rem as this is used as the separator in the classpath and Java provides no 41 rem mechanism for escaping if the same character appears in the path. Check this 42 rem by replacing all occurrences of ';' with '' and checking that neither 43 rem CATALINA_HOME nor CATALINA_BASE have changed 44 if "%CATALINA_HOME%" == "%CATALINA_HOME:;=%" goto homeNoSemicolon 45 echo Using CATALINA_HOME: "%CATALINA_HOME%" 46 echo Unable to start as CATALINA_HOME contains a semicolon (;) character 47 goto end 48 :homeNoSemicolon 49 50 if "%CATALINA_BASE%" == "%CATALINA_BASE:;=%" goto baseNoSemicolon 51 echo Using CATALINA_BASE: "%CATALINA_BASE%" 52 echo Unable to start as CATALINA_BASE contains a semicolon (;) character 53 goto end 54 :baseNoSemicolon 55 56 rem Ensure that any user defined CLASSPATH variables are not used on startup, 57 rem but allow them to be specified in setenv.bat, in rare case when it is needed. 58 set CLASSPATH= 59 60 rem Get standard environment variables 61 if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome 62 call "%CATALINA_BASE%\bin\setenv.bat" 63 goto setenvDone 64 :checkSetenvHome 65 if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" 66 :setenvDone 67 68 rem Get standard Java environment variables 69 if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath 70 echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat" 71 echo This file is needed to run this program 72 goto end 73 :okSetclasspath 74 call "%CATALINA_HOME%\bin\setclasspath.bat" %1 75 if errorlevel 1 goto end 76 77 rem Add on extra jar file to CLASSPATH 78 rem Note that there are no quotes as we do not want to introduce random 79 rem quotes into the CLASSPATH 80 if "%CLASSPATH%" == "" goto emptyClasspath 81 set "CLASSPATH=%CLASSPATH%;" 82 :emptyClasspath 83 set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar" 84 85 if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir 86 set "CATALINA_TMPDIR=%CATALINA_BASE%\temp" 87 :gotTmpdir 88 89 rem Add tomcat-juli.jar to classpath 90 rem tomcat-juli.jar can be over-ridden per instance 91 if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome 92 set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar" 93 goto juliClasspathDone 94 :juliClasspathHome 95 set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar" 96 :juliClasspathDone 97 98 if not "%JSSE_OPTS%" == "" goto gotJsseOpts 99 set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048" 100 :gotJsseOpts 101 set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" 102 103 rem Register custom URL handlers 104 rem Do this here so custom URL handles (specifically 'war:...') can be used in the security policy 105 set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources" 106 107 if not "%LOGGING_CONFIG%" == "" goto noJuliConfig 108 set LOGGING_CONFIG=-Dnop 109 if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig 110 set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" 111 :noJuliConfig 112 113 if not "%LOGGING_MANAGER%" == "" goto noJuliManager 114 set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 115 :noJuliManager 116 117 rem Configure JAVA 9 specific start-up parameters 118 set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.lang=ALL-UNNAMED" 119 set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.io=ALL-UNNAMED" 120 set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" 121 122 rem Java 9 no longer supports the java.endorsed.dirs 123 rem system property. Only try to use it if 124 rem JAVA_ENDORSED_DIRS was explicitly set 125 rem or CATALINA_HOME/endorsed exists. 126 set ENDORSED_PROP=ignore.endorsed.dirs 127 if "%JAVA_ENDORSED_DIRS%" == "" goto noEndorsedVar 128 set ENDORSED_PROP=java.endorsed.dirs 129 goto doneEndorsed 130 :noEndorsedVar 131 if not exist "%CATALINA_HOME%\endorsed" goto doneEndorsed 132 set ENDORSED_PROP=java.endorsed.dirs 133 :doneEndorsed 134 135 rem ----- Execute The Requested Command --------------------------------------- 136 137 echo Using CATALINA_BASE: "%CATALINA_BASE%" 138 echo Using CATALINA_HOME: "%CATALINA_HOME%" 139 echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%" 140 if ""%1"" == ""debug"" goto use_jdk 141 echo Using JRE_HOME: "%JRE_HOME%" 142 goto java_dir_displayed 143 :use_jdk 144 echo Using JAVA_HOME: "%JAVA_HOME%" 145 :java_dir_displayed 146 echo Using CLASSPATH: "%CLASSPATH%" 147 148 set _EXECJAVA=%_RUNJAVA% 149 set MAINCLASS=org.apache.catalina.startup.Bootstrap 150 set ACTION=start 151 set SECURITY_POLICY_FILE= 152 set DEBUG_OPTS= 153 set JPDA= 154 155 if not ""%1"" == ""jpda"" goto noJpda 156 set JPDA=jpda 157 if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport 158 set JPDA_TRANSPORT=dt_socket 159 :gotJpdaTransport 160 if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress 161 set JPDA_ADDRESS=localhost:8000 162 :gotJpdaAddress 163 if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend 164 set JPDA_SUSPEND=n 165 :gotJpdaSuspend 166 if not "%JPDA_OPTS%" == "" goto gotJpdaOpts 167 set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% 168 :gotJpdaOpts 169 shift 170 :noJpda 171 172 if ""%1"" == ""debug"" goto doDebug 173 if ""%1"" == ""run"" goto doRun 174 if ""%1"" == ""start"" goto doStart 175 if ""%1"" == ""stop"" goto doStop 176 if ""%1"" == ""configtest"" goto doConfigTest 177 if ""%1"" == ""version"" goto doVersion 178 179 echo Usage: catalina ( commands ... ) 180 echo commands: 181 echo debug Start Catalina in a debugger 182 echo debug -security Debug Catalina with a security manager 183 echo jpda start Start Catalina under JPDA debugger 184 echo run Start Catalina in the current window 185 echo run -security Start in the current window with security manager 186 echo start Start Catalina in a separate window 187 echo start -security Start in a separate window with security manager 188 echo stop Stop Catalina 189 echo configtest Run a basic syntax check on server.xml 190 echo version What version of tomcat are you running? 191 goto end 192 193 :doDebug 194 shift 195 set _EXECJAVA=%_RUNJDB% 196 set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java" 197 if not ""%1"" == ""-security"" goto execCmd 198 shift 199 echo Using Security Manager 200 set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" 201 goto execCmd 202 203 :doRun 204 shift 205 if not ""%1"" == ""-security"" goto execCmd 206 shift 207 echo Using Security Manager 208 set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" 209 goto execCmd 210 211 :doStart 212 shift 213 if "%TITLE%" == "" set TITLE=Tomcat 214 set _EXECJAVA=start "%TITLE%" %_RUNJAVA% 215 if not ""%1"" == ""-security"" goto execCmd 216 shift 217 echo Using Security Manager 218 set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" 219 goto execCmd 220 221 :doStop 222 shift 223 set ACTION=stop 224 set CATALINA_OPTS= 225 goto execCmd 226 227 :doConfigTest 228 shift 229 set ACTION=configtest 230 set CATALINA_OPTS= 231 goto execCmd 232 233 :doVersion 234 %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo 235 goto end 236 237 238 :execCmd 239 rem Get remaining unshifted command line arguments and save them in the 240 set CMD_LINE_ARGS= 241 :setArgs 242 if ""%1""=="""" goto doneSetArgs 243 set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 244 shift 245 goto setArgs 246 :doneSetArgs 247 248 rem Execute Java with the applicable properties 249 if not "%JPDA%" == "" goto doJpda 250 if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity 251 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 252 goto end 253 :doSecurity 254 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 255 goto end 256 :doJpda 257 if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda 258 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 259 goto end 260 :doSecurityJpda 261 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 262 goto end 263 264 :end

    第一段:

    1 rem Suppress Terminate batch job on CTRL+C 2 if not ""%1"" == ""run"" goto mainEntry 3 if "%TEMP%" == "" goto mainEntry 4 if exist "%TEMP%\%~nx0.run" goto mainEntry 5 echo Y>"%TEMP%\%~nx0.run" 6 if not exist "%TEMP%\%~nx0.run" goto mainEntry 7 echo Y>"%TEMP%\%~nx0.Y" 8 call "%~f0" %* <"%TEMP%\%~nx0.Y" 9 rem Use provided errorlevel 10 set RETVAL=%ERRORLEVEL% 11 del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1 12 exit /B %RETVAL% 13 :mainEntry 14 del /Q "%TEMP%\%~nx0.run" >NUL 2>&1
  • 首先注釋是說,禁止使用 CTRL+C 來終止批處理任務;

  • if not ""%1"" == ""run"" goto mainEntry,第一個參數不是run,就轉向mainEntry標簽,通過調用startup.bat啟動的第一個參數應該是start;

  • if "%TEMP%" == "" goto mainEntry,%TEMP%是系統的環境變量值,通常裝完windows系統的話, 系統會自動配置上這個環境變量,一般是C:\Users\用戶名\AppData\Local\Temp(AppData是一個隱藏文件夾)。這句是說,如果%TEMP%是空串,就轉向mainEntry標簽;

  • if exist "%TEMP%\%~nx0.run" goto mainEntry, 在批處理中,%1 表示的是程序之后的第一個參數,%0表示這個可執行程序的名稱, %~nx0 的話就是程序的名稱+擴展名,在這里就是catalina.bat(可以寫一個腳本測試下);

  • echo Y>"%TEMP%\%~nx0.run",寫入字符Y到%TEMP%\catalina.bat.run 文件中;

  • if not exist "%TEMP%\%~nx0.run" goto mainEntry,又判斷了一下 %TEMP%\catalina.bat.run 文件是否存在;

  • echo Y>"%TEMP%\%~nx0.Y",寫入Y到%TEMP%\catalina.bat.Y,如果文件不存在, 則新建一個;

  • call "%~f0" %* <"%TEMP%\%~nx0.Y",- “%~f0” : 簡單說就是表示當前命令的絕對路徑。- “%” : %1表示第一個參數,%2表示第二個,%代表所有參數。<”%TEMP%\%~nx0.Y”是讀取 %TEMP%\catalina.bat.Y文件中的內容,之后又通過call進行調用;

  • set RETVAL=%ERRORLEVEL%,Windows中和linux一樣,命令執行完之后都有自己的退出碼,%ERRORLEVEL%就是取的上面的call 命令的退出碼,賦值給一個變量RETVAL;

  • del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1,del 命令,很容易聯想到delete, 那么/Q是什么意思呢?靜默刪除,不會給出任何提示,就比如Linux中的rm -f 一樣。這里是刪除%TEMP%\catalina.bat.Y這個文件。后面的 >NUL 2>&1又是什么意思呢? >NUL : 表示將輸出重定向到 NUL 中,你什么也看不到;2>&1 : 2:錯誤輸出,&1: 標準輸出, 意思就是將錯誤消息輸出到標準輸出中;>NUL 2>&1 : 就是先將錯誤消息輸出到標準輸出中,然后再輸出到 NUL 中;

  • exit /B %RETVAL%,退出當前批處理, /B 指定退出時的編號, 把 RETVAL 作為 退出碼, 也就是 call 執行的命令的退出碼;

  • :mainEntry del /Q “%TEMP%\%~nx0.run” >NUL 2>&1,定義一個 mainEntry 標簽,然后刪除臨時目錄中的 catalina.bat.run 文件。

  • ?這段代碼的作用就是調用本身,判斷臨時目錄中的文件是否存在來避免二次回調自己

    第二段:

    1 rem Guess CATALINA_HOME if not defined 2 set "CURRENT_DIR=%cd%" 3 if not "%CATALINA_HOME%" == "" goto gotHome 4 set "CATALINA_HOME=%CURRENT_DIR%" 5 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 6 cd .. 7 set "CATALINA_HOME=%cd%" 8 cd "%CURRENT_DIR%" 9 :gotHome 10 11 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome 12 echo The CATALINA_HOME environment variable is not defined correctly 13 echo This environment variable is needed to run this program 14 goto end 15 :okHome 16 17 rem Copy CATALINA_BASE from CATALINA_HOME if not defined 18 if not "%CATALINA_BASE%" == "" goto gotBase 19 set "CATALINA_BASE=%CATALINA_HOME%" 20 :gotBase
  • set "CURRENT_DIR=%cd%",設置CURRENT_DIR為當前目錄bin(假如你是在bin目錄中啟動);

  • if not "%CATALINA_HOME%" == "" goto gotHome,CATALINA_HOME不是空就轉向gotHome;

  • set "CATALINA_HOME=%CURRENT_DIR%",設置CATALINA_HOME指向CURRENT_DIR的目錄,也就是bin目錄;

  • if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome,如果存在%CATALINA_HOME%\bin\catalina.bat,那么就轉向okHome,否則退出到父目錄,(顯然不存在bin\bin\catalina.bat);

  • set "CATALINA_HOME=%cd%",設置CATALINA_HOME為當前目錄(也就是Tomcat的根目錄);

  • cd "%CURRENT_DIR%",進入CURRENT_HOME指向的目錄,也就是bin目錄,執行gotHome標簽;

  • if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome,gotHome標簽下,如果存在%CATALINA_HOME%\bin\catalina.bat,就轉向okHome,因為CATALINA_HOME現在指向的目錄是Tomcat的安裝目錄,所以\bin\catalina.bat文件是存在的,所以轉向okHome標簽;

  • if not "%CATALINA_BASE%" == "" goto gotBase,如果CATALINA_BASE變量不是空,就轉向gotBase標簽(顯然為空);

  • set "CATALINA_BASE=%CATALINA_HOME%",設置CATALINA_BASE的值等同與CATALINA_HOME的值(現在CATALINA_BASE也指向的Tomcat的根目錄了)。

  • 這段主要是設置了兩個環境變量 CATALINA_HOME 和 CATALINA_BASE。如果沒有配置 CATALINA_BASE 環境變量的話, 直接引用 CATALINA_HOME 的值。

    第三段:

    1 rem Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a semi-colon 2 rem as this is used as the separator in the classpath and Java provides no 3 rem mechanism for escaping if the same character appears in the path. Check this 4 rem by replacing all occurrences of ';' with '' and checking that neither 5 rem CATALINA_HOME nor CATALINA_BASE have changed 6 if "%CATALINA_HOME%" == "%CATALINA_HOME:;=%" goto homeNoSemicolon 7 echo Using CATALINA_HOME: "%CATALINA_HOME%" 8 echo Unable to start as CATALINA_HOME contains a semicolon (;) character 9 goto end 10 :homeNoSemicolon 11 12 if "%CATALINA_BASE%" == "%CATALINA_BASE:;=%" goto baseNoSemicolon 13 echo Using CATALINA_BASE: "%CATALINA_BASE%" 14 echo Unable to start as CATALINA_BASE contains a semicolon (;) character 15 goto end 16 :baseNoSemicolon

    這里主要是判斷 CATALINA_HOME 環境變量的值 和 CATALINA_BASE 環境變量的值是否以分號為結尾,如果以分號為結尾的話,就報錯退出。

    第四段:

    1 rem Ensure that any user defined CLASSPATH variables are not used on startup, 2 rem but allow them to be specified in setenv.bat, in rare case when it is needed. 3 set CLASSPATH= 4 5 rem Get standard environment variables 6 if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome 7 call "%CATALINA_BASE%\bin\setenv.bat" 8 goto setenvDone 9 :checkSetenvHome 10 if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" 11 :setenvDone 12 13 rem Get standard Java environment variables 14 if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath 15 echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat" 16 echo This file is needed to run this program 17 goto end 18 :okSetclasspath 19 call "%CATALINA_HOME%\bin\setclasspath.bat" %1 20 if errorlevel 1 goto end

    主要是說,如果Tomcat的bin目錄下面存在setenv.bat腳本的話(setenv.bat是干什么的?上面的注釋說是用戶自定義的環境變量,但并不是啟動時必須的定義在setenv.bat中),就執行它,通常情況下是沒有的,繼而又判斷setclasspath.bat腳本是否存在,如果不存在的話, 直接報錯,停止啟動 Tomcat。如果存在的話,就去調用它,并把 第一個參數傳進去。

    可以進入setclasspath.bat腳本看下,主要設置了以下幾個環境變量:

    • JAVA_HOME
    • JRE_HOME
    • JAVA_ENDORSED_DIRS = %CATALINA_HOME%\endorsed
    • _RUNJAVA = %JRE_HOME%\bin\java.exe
    • _RUNJDB = %JAVA_HOME%\bin\jdb.exe

    所以這段是設置一個臨時環境變量: CLASSPATH。

    第五段:

    1 rem Add on extra jar file to CLASSPATH 2 rem Note that there are no quotes as we do not want to introduce random 3 rem quotes into the CLASSPATH 4 if "%CLASSPATH%" == "" goto emptyClasspath 5 set "CLASSPATH=%CLASSPATH%;" 6 :emptyClasspath 7 set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar" 8 9 if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir 10 set "CATALINA_TMPDIR=%CATALINA_BASE%\temp" 11 :gotTmpdir 12 13 rem Add tomcat-juli.jar to classpath 14 rem tomcat-juli.jar can be over-ridden per instance 15 if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome 16 set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar" 17 goto juliClasspathDone 18 :juliClasspathHome 19 set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar" 20 :juliClasspathDone

    這段代碼主要做了三件事:

    • 把 Tomcat bin 目錄下的 bootstrap.jar 加入到環境變量中;
    • 設置 CATALINA_TMPDIR 環境變量的值為 Tomcat 目錄下的 temp 目錄;
    • 把 Tomcat bin 目錄下的 tomcat-juli.jar 加入到環境變量中;

    第六段:

    1 if not "%JSSE_OPTS%" == "" goto gotJsseOpts 2 set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048" 3 :gotJsseOpts 4 set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" 5 6 rem Register custom URL handlers 7 rem Do this here so custom URL handles (specifically 'war:...') can be used in the security policy 8 set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources" 9 10 if not "%LOGGING_CONFIG%" == "" goto noJuliConfig 11 set LOGGING_CONFIG=-Dnop 12 if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig 13 set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" 14 :noJuliConfig 15 16 if not "%LOGGING_MANAGER%" == "" goto noJuliManager 17 set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 18 :noJuliManager 19 20 rem Configure JAVA 9 specific start-up parameters 21 set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.lang=ALL-UNNAMED" 22 set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.base/java.io=ALL-UNNAMED" 23 set "JDK_JAVA_OPTIONS=%JDK_JAVA_OPTIONS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"

    主要是追加一系列的啟動參數到 JAVA_OPTS 這個環境變量中。

    ?

    1 rem Java 9 no longer supports the java.endorsed.dirs 2 rem system property. Only try to use it if 3 rem JAVA_ENDORSED_DIRS was explicitly set 4 rem or CATALINA_HOME/endorsed exists. 5 set ENDORSED_PROP=ignore.endorsed.dirs 6 if "%JAVA_ENDORSED_DIRS%" == "" goto noEndorsedVar 7 set ENDORSED_PROP=java.endorsed.dirs 8 goto doneEndorsed 9 :noEndorsedVar 10 if not exist "%CATALINA_HOME%\endorsed" goto doneEndorsed 11 set ENDORSED_PROP=java.endorsed.dirs 12 :doneEndorsed

    ?

    第七段:

    1 echo Using CATALINA_BASE: "%CATALINA_BASE%" 2 echo Using CATALINA_HOME: "%CATALINA_HOME%" 3 echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%" 4 if ""%1"" == ""debug"" goto use_jdk 5 echo Using JRE_HOME: "%JRE_HOME%" 6 goto java_dir_displayed 7 :use_jdk 8 echo Using JAVA_HOME: "%JAVA_HOME%" 9 :java_dir_displayed 10 echo Using CLASSPATH: "%CLASSPATH%"

    打印相關的環境變量信息。

    第八段:

    1 set _EXECJAVA=%_RUNJAVA% 2 set MAINCLASS=org.apache.catalina.startup.Bootstrap 3 set ACTION=start 4 set SECURITY_POLICY_FILE= 5 set DEBUG_OPTS= 6 set JPDA=

    設置一些環境變量:

  • _RUNJAVA : %JRE_HOME%\bin\java.exe;

  • MAINCLASS : 指定了 Tomcat 的啟動類;

  • ACTION : 動作, 就是啟動;

  • SECURITY_POLICY_FILE : 安全策略文件,如果啟動的時候加上了 -security 參數的話,下面會對這個參數指定到 Tomcat 的 conf 目錄下的 catalina.policy 文件;

  • JPDA : 還不清楚 。

  • 第九段:

    1 if not ""%1"" == ""jpda"" goto noJpda 2 set JPDA=jpda 3 if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport 4 set JPDA_TRANSPORT=dt_socket 5 :gotJpdaTransport 6 if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress 7 set JPDA_ADDRESS=localhost:8000 8 :gotJpdaAddress 9 if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend 10 set JPDA_SUSPEND=n 11 :gotJpdaSuspend 12 if not "%JPDA_OPTS%" == "" goto gotJpdaOpts 13 set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% 14 :gotJpdaOpts 15 shift 16 :noJpda

    好像直接從第一行跳到了最后一行,一般啟動的時候沒有加 jpda 參數的話, 這里會直接跳過,里面的腳本是關于 JPDA 的設置等。

    第十段:

    1 if ""%1"" == ""debug"" goto doDebug 2 if ""%1"" == ""run"" goto doRun 3 if ""%1"" == ""start"" goto doStart 4 if ""%1"" == ""stop"" goto doStop 5 if ""%1"" == ""configtest"" goto doConfigTest 6 if ""%1"" == ""version"" goto doVersion 7 8 echo Usage: catalina ( commands ... ) 9 echo commands: 10 echo debug Start Catalina in a debugger 11 echo debug -security Debug Catalina with a security manager 12 echo jpda start Start Catalina under JPDA debugger 13 echo run Start Catalina in the current window 14 echo run -security Start in the current window with security manager 15 echo start Start Catalina in a separate window 16 echo start -security Start in a separate window with security manager 17 echo stop Stop Catalina 18 echo configtest Run a basic syntax check on server.xml 19 echo version What version of tomcat are you running? 20 goto end

    如果用 startup.bat 啟動 Tomcat 的話, 這里的 “%1” 的值是 start;?
    如果通過 catalina.bat run 啟動 Tomcat 的話,這里的 “%1” 的值是 run;

    第十一段:

    1 :doDebug 2 shift 3 set _EXECJAVA=%_RUNJDB% 4 set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java" 5 if not ""%1"" == ""-security"" goto execCmd 6 shift 7 echo Using Security Manager 8 set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" 9 goto execCmd 10 11 :doRun 12 shift 13 if not ""%1"" == ""-security"" goto execCmd 14 shift 15 echo Using Security Manager 16 set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" 17 goto execCmd 18 19 :doStart 20 shift 21 if "%TITLE%" == "" set TITLE=Tomcat 22 set _EXECJAVA=start "%TITLE%" %_RUNJAVA% 23 if not ""%1"" == ""-security"" goto execCmd 24 shift 25 echo Using Security Manager 26 set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" 27 goto execCmd 28 29 :doStop 30 shift 31 set ACTION=stop 32 set CATALINA_OPTS= 33 goto execCmd 34 35 :doConfigTest 36 shift 37 set ACTION=configtest 38 set CATALINA_OPTS= 39 goto execCmd 40 41 :doVersion 42 %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo 43 goto end

    分別對應前面的標簽,啟動主要涉及doRun和doStart。

    第一個 shift 是把 start 或者 run 參數移除,然后下面 還是利用 “%1” 來取參數, 這時候, 取出來的就是參數列表中的第二個;
    第二個 shift 是把第二個參數移除掉。

    我們再來比較一下 start 和 run 的啟動區別.

    如果是 startup.bat 腳本啟動的話, 會啟動一個新的 cmd 窗口, 并且把 cmd 的 title 設置為 Tomcat。
    如果是 catalina.bat run 啟動的話, 不會新建 cmd 窗口, 也不會設置 cmd 的 title。

    最后都跳到了 execCmd 標簽處。

    第十二段:

    1 :execCmd 2 rem Get remaining unshifted command line arguments and save them in the 3 set CMD_LINE_ARGS= 4 :setArgs 5 if ""%1""=="""" goto doneSetArgs 6 set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 7 shift 8 goto setArgs 9 :doneSetArgs

    這里還是利用 “%1” 來取出啟動命令之后的參數, 如果存在, 追加到 CMD_LINE_ARGS 環境變量上,并把這個參數移除。通常情況下,這里是不會有什么參數。

    最后一段:

    1 rem Execute Java with the applicable properties 2 if not "%JPDA%" == "" goto doJpda 3 if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity 4 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 5 goto end 6 :doSecurity 7 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 8 goto end 9 :doJpda 10 if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda 11 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 12 goto end 13 :doSecurityJpda 14 %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 15 goto end 16 17 :end

    正常啟動,不會有jdpa,也不會有security,所以這大段代碼主要是加一些環境變量,然后帶上參數去啟動org.apache.catalina.startup.Bootstrap的main方法。

    五、總結

    啟動tomcat可以雙擊startup.bat,也可以在命令行直接catalina.bat run,大致的流程是這樣:

  • 首先判斷一下用戶直接使用 catalina.bat run 來啟動 Tocmat;

  • 設置 CATALINA_HOME 和 CATALINA_BASE 環境變量值;

  • 驗證 CATALINA_HOME 和 CATALINA_BASE 環境變量值的正確性;

  • 調用 setnv.bat 腳本;

  • 調用 setclasspath.bat 腳本;

  • 添加 bootstrap.jar 和 tomcat-juli.jar 到 CLASSPATH 中;

  • 設置 CATALINA_TMPDIR 臨時目錄的值為 Tomcat 目錄下的 temp;

  • 追加一系列的參數到 JAVA_OPTS 中;

  • 整合相關的啟動信息,參數;

  • 啟動 Tomcat。

  • ?

    轉載于:https://www.cnblogs.com/grasp/p/10029871.html

    總結

    以上是生活随笔為你收集整理的运行startup.bat的启动过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    亚洲欧美日韩在线一区二区 | 91中文字幕在线观看 | 国产欧美在线一区二区三区 | 久久中国精品 | 久久久久久久久久久久国产精品 | www.综合网.com | 麻豆传媒在线免费看 | 波多野结衣在线视频一区 | 韩国av一区二区 | 国产精品一区免费在线观看 | 免费一级日韩欧美性大片 | 91在线一区 | 黄色高清视频在线观看 | 天天色视频 | 午夜国产影院 | 亚洲蜜桃av | 欧美另类重口 | 欧美日韩一区二区久久 | 国产亚洲精品久久久久动 | 波多野结衣动态图 | 开心激情网五月天 | 久久成人综合视频 | 亚洲理论影院 | 人人添人人澡人人澡人人人爽 | 四虎欧美 | 亚洲精品在线观看中文字幕 | 精品二区久久 | 日韩在线第一 | 狠狠干夜夜爱 | 国产精品国内免费一区二区三区 | 色播亚洲婷婷 | 天天色天天射天天操 | 日韩在线网 | 九九综合久久 | 天天操天天干天天操天天干 | 中文字幕在线播放第一页 | 日韩精品一区二区三区三炮视频 | 在线黄色国产电影 | 久久久亚洲网站 | 91在线免费视频 | 国产精品麻豆三级一区视频 | 在线精品视频在线观看高清 | 亚洲精品美女视频 | 六月色| 综合在线观看色 | 在线观看av不卡 | 在线不卡视频 | 91在线精品播放 | 日韩亚洲在线视频 | 超碰av在线播放 | 一本一道久久a久久综合蜜桃 | 亚洲人精品午夜 | 国产高清一级 | 99在线视频精品 | 国产精品久久久久久一二三四五 | 在线观看日本高清mv视频 | 久久高清免费观看 | 日韩av片无码一区二区不卡电影 | 91色吧 | 久久国产精品一区二区三区 | 婷婷视频在线观看 | 一区二区三区 亚洲 | 在线观看一区视频 | 国产精品欧美 | 国产亚洲成av片在线观看 | 久久99精品久久久久久秒播蜜臀 | 国产麻豆视频在线观看 | 天天干夜夜夜操天 | 99成人免费视频 | 久久免费看毛片 | 亚洲成人黄色av | 免费在线国产精品 | 成人av教育 | 精品久久一级片 | 久久久久国产一区二区三区 | 亚洲精品视频在线免费 | 日韩av手机在线看 | 欧美乱淫视频 | 亚洲成人高清在线 | 日韩中文字幕视频在线观看 | 在线观看视频福利 | 日本中文字幕在线电影 | 91精品国产高清 | 日韩精品电影在线播放 | a天堂最新版中文在线地址 久久99久久精品国产 | 在线观看av国产 | 日韩综合第一页 | 精品中文字幕在线观看 | zzijzzij日本成熟少妇 | 深爱婷婷激情 | 国产精品一区二区三区视频免费 | 久久精品国产免费看久久精品 | 超碰免费观看 | 精品国产乱码一区二 | 亚洲最大激情中文字幕 | 在线观看亚洲视频 | 免费一级日韩欧美性大片 | 91色偷偷 | 午夜一级免费电影 | 成人久久影院 | 久久精品五月 | 在线观看免费 | 国产69熟| 99国产情侣在线播放 | 97国产电影 | 日韩av影视在线观看 | 西西4444www大胆无视频 | 国产精品1区2区在线观看 | 激情片av| 综合网天天射 | 国产韩国日本高清视频 | 国产一区视频在线观看免费 | 国产男男gay做爰 | 国产中文字幕免费 | 日韩av播放在线 | 18久久久| 欧洲精品视频一区二区 | 国产福利小视频在线 | 久久久久久久久久久免费av | 中文字幕在线观看视频免费 | www.色就是色 | 天干啦夜天干天干在线线 | 激情黄色一级片 | 这里只有精品视频在线 | 亚洲成人av电影在线 | 狠狠躁日日躁 | 国产玖玖在线 | 深夜免费福利网站 | 色综合久久66 | 国产黄在线 | 国产 日韩 欧美 中文 在线播放 | 国产在线资源 | 亚洲人成影院在线 | 亚洲欧美少妇 | 国产一区国产二区在线观看 | 久久福利国产 | 国产成人三级在线观看 | 午夜免费在线观看 | 99热最新在线 | 美女视频黄是免费的 | 97色免费视频 | 一级性视频 | 成人av手机在线 | 国产精品欧美在线 | 国产成人精品久久久久 | 天天综合狠狠精品 | 欧美成人91 | 国产一级片不卡 | 亚洲人成影院在线 | 久久字幕网 | 人人爽人人澡 | 天堂av在线7 | 久久久久黄 | 中文字幕在线观看免费高清电影 | 成人精品99 | 精品久久久久久国产91 | 午夜精品视频在线 | 91av手机在线| 久久免费福利视频 | 97在线观看 | 欧美一区二区三区免费观看 | 91麻豆精品国产自产在线游戏 | 欧美性久久久 | 99 国产精品| 久久人人精 | 午夜丰满寂寞少妇精品 | 成人三级网站在线观看 | 成人av电影在线观看 | 日本久久电影网 | 少妇bbbb搡bbbb桶 | 在线观看免费日韩 | 色综合天天综合 | 免费看黄20分钟 | 国产精品99久久久久久有的能看 | 欧美成年黄网站色视频 | 99热只有精品在线观看 | 久久久久久美女 | 国产精品久久嫩一区二区免费 | 男女激情麻豆 | 精品久久久久久久久亚洲 | 黄色a大片 | 色播亚洲婷婷 | 天天插天天 | 欧美激情第十页 | 日本女人的性生活视频 | 99精品偷拍视频一区二区三区 | 国产高清在线精品 | 天天操天天操天天操天天操天天操天天操 | 91精品电影 | 亚洲精品裸体 | 亚洲精品成人网 | 国产99re| 欧美一二三专区 | 色婷婷免费 | 欧美日韩久久一区 | 成人av免费在线看 | 亚洲一区二区三区91 | 69av视频在线观看 | 亚洲91精品在线观看 | 久久久综合九色合综国产精品 | 日韩中文字幕免费视频 | 国产字幕在线观看 | 婷婷六月天综合 | 手机在线黄色网址 | 国产女人40精品一区毛片视频 | 国产精品一区二区精品视频免费看 | 中文字幕中文字幕在线一区 | 国产精品九九久久久久久久 | 午夜黄色影院 | 色多多污污在线观看 | 97精品国产97久久久久久春色 | 91精品国产综合久久久久久久 | 97在线免费视频 | av中文天堂 | 91精品视频免费在线观看 | 欧美乱熟臀69xxxxxx | 成人中文字幕+乱码+中文字幕 | 日韩精品中文字幕一区二区 | 国产福利资源 | 免费在线观看黄 | 狠狠干天天 | 欧美日韩免费在线视频 | 亚洲精品国产第一综合99久久 | 玖玖爱在线观看 | 中文字幕免费一区二区 | 国产91精品一区二区绿帽 | 亚洲一级黄色片 | 日韩久久精品一区 | 成人黄大片视频在线观看 | 国产视频一区二区在线观看 | 国产91综合一区在线观看 | 久色小说 | 人人插人人草 | 国产一线二线三线性视频 | 日本免费一二三区 | 久久久精品国产免费观看一区二区 | 国产伦精品一区二区三区高清 | 国模精品在线 | 亚洲香蕉视频 | 激情五月伊人 | 中文字幕一区二区三区四区 | 国产精品video爽爽爽爽 | 久久理论影院 | 国产精品在线看 | 欧美电影在线观看 | 欧洲性视频 | 日日夜夜人人天天 | av免费网站 | 久久免费成人精品视频 | 波多野结衣动态图 | 99精品欧美一区二区三区 | 中文字幕乱码电影 | 欧美久久综合 | 黄色福利视频网站 | 国产特级毛片aaaaaa高清 | 久久成人欧美 | 伊人婷婷 | 中文在线字幕观看电影 | 韩日三级在线 | www.激情五月.com | 国产一级在线看 | 在线中文字幕电影 | 又黄又爽又无遮挡免费的网站 | 福利网址在线观看 | 日韩在线电影观看 | 久久草| 日韩免费成人 | 国产在线欧美在线 | 日本精品久久久一区二区三区 | 婷婷视频在线播放 | 亚洲综合欧美激情 | 91麻豆操| 97碰碰精品嫩模在线播放 | 国产精品成人久久久 | 成人av影视观看 | 亚洲国产精品视频在线观看 | 久久久久久久久久久高潮一区二区 | 粉嫩一区二区三区粉嫩91 | 中文字幕 在线看 | 国产 日韩 在线 亚洲 字幕 中文 | 亚洲精品黄色在线观看 | 最近免费中文字幕大全高清10 | 久久99电影 | 一区二区三区四区五区在线视频 | 51久久成人国产精品麻豆 | 狠狠伊人 | 国产又粗又猛又黄又爽的视频 | 免费看的黄色录像 | 欧美日韩一区二区三区视频 | 久草视频在线免费播放 | 日日插日日干 | 99热999 | 日本性动态图 | 久久av观看 | 久久久久激情视频 | 在线天堂中文www视软件 | 久草在线资源网 | 黄色av网站在线观看 | 日狠狠 | 国产精品久久久 | 91丨九色丨蝌蚪丰满 | 久久91久久久久麻豆精品 | 免费在线观看亚洲视频 | av福利网址导航 | 国产精品一区在线观看你懂的 | 中文字幕日本特黄aa毛片 | 国产成人精品999 | 中文字幕在线观看网站 | 奇米777777 | 久久躁日日躁aaaaxxxx | 亚洲欧美婷婷六月色综合 | 亚洲精品色婷婷 | 久久精品首页 | 国产小视频免费在线观看 | 日本中文字幕在线播放 | 欧美精品一区二区在线观看 | 毛片激情永久免费 | 国产精品 中文字幕 亚洲 欧美 | 免费在线激情电影 | 国产精品久久一 | 永久免费看av | 亚洲专区在线视频 | 91精品久久久久久久久 | 一区二区三区在线观看免费视频 | 91热这里只有精品 | 色婷婷精品大在线视频 | 2020天天干夜夜爽 | 99精品视频在线免费观看 | 三级视频日韩 | 日韩剧 | 欧美成人在线免费观看 | 国产视频首页 | 久久夜夜夜 | 国产亚洲情侣一区二区无 | 国产成年人av | 久久久久久免费毛片精品 | 久久66热这里只有精品 | 亚洲精品久久激情国产片 | 中文字幕 国产视频 | 在线观看电影av | av在线超碰 | 黄色精品久久久 | 国产综合片| av电影免费在线看 | 蜜臀aⅴ国产精品久久久国产 | 久久九九久久精品 | 国产不卡一区二区视频 | 天天爽人人爽 | 国产亚洲精品电影 | 国产精品va在线观看入 | 日韩电影中文,亚洲精品乱码 | 中文字幕频道 | 高潮毛片无遮挡高清免费 | 国产97在线观看 | 夜夜夜夜操 | av中文在线影视 | 日韩在线高清视频 | 亚洲欧美激情精品一区二区 | 天天操比| 欧美色就是色 | 成人黄色电影在线观看 | 三级黄在线 | 国产精品美女久久久 | 精品国产乱码一区二区三区在线 | 亚洲一级特黄 | 91中文字幕一区 | 成人黄色视 | 高清av免费看| 色wwww| 91免费版在线 | 午夜美女视频 | 国产一区二区电影在线观看 | 最近中文国产在线视频 | 久久成人国产精品一区二区 | av网站在线观看免费 | 色婷婷精品大在线视频 | 久草网站在线观看 | 91免费国产在线观看 | 狠狠操欧美 | 国产精品综合在线观看 | 天天摸天天舔 | 91精品色 | 国产伦理一区二区三区 | 亚洲免费av网站 | 中文字幕免费一区 | 国产尤物在线观看 | 精品久久久久久久久久岛国gif | 精品久久一区二区三区 | 香蕉精品视频在线观看 | 久草在线在线精品观看 | 91香蕉国产 | 夜夜爽www| 天天爽天天做 | 婷婷丁香在线观看 | 日韩三级视频在线观看 | 天天射天天拍 | 国产专区日韩专区 | 国产第一福利网 | 午夜精品久久久久久久99 | 国产精品久久久久久久久免费 | 久久久福利 | 久久精品视频播放 | 樱空桃av| 国产亚洲精品久久久久久移动网络 | 超碰人人超 | 99精品在线免费视频 | 在线观看国产永久免费视频 | 欧美另类网站 | av电影一区二区三区 | 久久精品一二区 | 草久在线观看视频 | 久久99九九99精品 | 狠狠色丁香久久综合网 | 激情网第四色 | 日韩 国产 | 久久人人爽人人爽人人片av软件 | 伊色综合久久之综合久久 | 91精品电影 | 久久99久国产精品黄毛片入口 | 国产在线a视频 | 天天综合网国产 | www在线观看视频 | 99热在线这里只有精品 | 一区二区三区 中文字幕 | caobi视频 | 欧美精品成人在线 | 成人一区在线观看 | 日韩成人精品在线观看 | 久久精品99精品国产香蕉 | 久久综合九色综合欧美狠狠 | 日韩和的一区二在线 | 高潮毛片无遮挡高清免费 | 日韩av成人在线 | 色a综合| 国产1区在线观看 | 国产一级二级视频 | 最近高清中文字幕 | 久久视频这里只有精品 | 久久精品一区二区三区视频 | 天天操操操操操 | 久久国产片 | a特级毛片 | 中文资源在线观看 | 日韩av手机在线观看 | 国产免费xvideos视频入口 | 国产一区二区在线免费观看 | 中文字幕日韩精品有码视频 | 久久午夜精品影院一区 | 韩日色视频 | 欧美性色综合 | 久久久亚洲精华液 | 999久久国产 | 韩日精品中文字幕 | 亚洲国产精品999 | 国产精品久久亚洲 | 久久这里只有精品视频99 | 欧美性生活小视频 | 深夜免费福利视频 | 免费av在线网站 | 久久久久久久av | 免费久久99精品国产婷婷六月 | 色欲综合视频天天天 | 精品亚洲一区二区 | 欧美日韩在线视频一区 | 欧美高清视频不卡网 | 成人黄色电影免费观看 | 在线视频 亚洲 | 狠狠色丁香婷婷综合基地 | 天天躁日日 | 日本久久视频 | 国产网站色 | 国产成人精品在线播放 | 欧美日韩在线观看一区二区三区 | 亚洲成av人影片在线观看 | 日本精品视频一区二区 | 中文字幕免费高清在线观看 | 99精品视频在线看 | 色网站中文字幕 | 99久久国产免费免费 | 中国一级片在线播放 | 国产精品成人自产拍在线观看 | 在线观看www91 | 亚洲精品 在线视频 | 99这里有精品 | 国产精品久久99精品毛片三a | 亚洲精品www. | 国产一二三四在线观看视频 | 亚洲国产精品一区二区尤物区 | 2020天天干夜夜爽 | 欧洲精品视频一区 | 久久极品 | 久久精品中文字幕一区二区三区 | 亚洲综合视频在线观看 | 一区二区精品国产 | 欧美在线视频一区二区三区 | 亚洲精品综合在线 | 在线观看精品黄av片免费 | 久久免费国产电影 | 欧美激情综合色综合啪啪五月 | 六月丁香六月婷婷 | 国产午夜精品av一区二区 | 久久视频这里只有精品 | 国产视频一区在线免费观看 | 日韩欧美视频在线播放 | 五月婷婷六月丁香激情 | 久久国产精品一区二区 | 国产一区二区在线免费 | 成人一区二区在线观看 | 人人超碰免费 | 日韩精品一卡 | 国产午夜精品久久 | 日韩深夜在线观看 | 亚洲涩综合 | 欧美日韩国产二区三区 | 日韩在线视频一区 | 在线观看国产区 | 欧美韩国在线 | 天天曰天天曰 | 天天干天天摸 | 一本一本久久a久久精品综合妖精 | 美州a亚洲一视本频v色道 | 欧美a级在线 | 日韩成人高清在线 | 亚洲电影网站 | 99久久超碰中文字幕伊人 | 91完整版观看 | 欧美一区二区三区特黄 | 不卡的av | 国产一区二区午夜 | av免费网站在线观看 | 免费热情视频 | 国产精品毛片一区二区三区 | 久青草视频在线观看 | 日韩在线观看视频网站 | 天天玩天天操天天射 | 夜夜澡人模人人添人人看 | 就色干综合| 亚洲视频免费在线观看 | 天天玩天天干天天操 | 九九九九热精品免费视频点播观看 | 亚洲一级电影视频 | 涩涩网站在线观看 | 国产性xxxx | 国产精品一区二区在线看 | 这里有精品在线视频 | www.狠狠插.com | 西西444www大胆高清图片 | av中文字幕在线播放 | 免费网站色 | 99热999| 亚洲jizzjizz日本少妇 | 九色精品免费永久在线 | 在线观看免费日韩 | 国产精品一区二区免费看 | 成人91在线观看 | 久色伊人 | 波多野结衣在线视频一区 | 欧美日韩视频在线播放 | 精品国产乱码久久久久久1区2匹 | 欧美精品二 | 麻豆视频免费在线播放 | 国产精品手机在线播放 | 久久久久久久久免费视频 | 亚洲国内精品 | www.久久免费视频 | 九色精品免费永久在线 | 少妇性bbb搡bbb爽爽爽欧美 | 日韩在线观看视频免费 | 日日操网 | 蜜臀av一区二区 | 久草在线这里只有精品 | 天天玩天天干天天操 | 国产精品久久久久高潮 | 91大神电影| 国产一区二区精品在线 | 中文字幕免费观看视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲精品国产麻豆 | 99久久激情视频 | 亚洲日本成人网 | av中文在线| 在线看欧美 | 91麻豆精品国产91久久久久久 | 久久久精品视频网站 | 欧美另类交在线观看 | 欧美va电影 | 日韩区欧美久久久无人区 | 91在线91| 天天爱天天舔 | 国产四虎在线 | 91麻豆国产福利在线观看 | 久草在线资源视频 | 7777精品伊人久久久大香线蕉 | 亚洲成熟女人毛片在线 | 麻豆 91 在线 | 在线视频麻豆 | 日日夜夜天天久久 | 欧美精选一区二区三区 | 国产精品久久视频 | 欧美最猛性xxxxx免费 | 亚洲国产精品成人综合 | 国产精品电影在线 | 337p日本大胆噜噜噜噜 | 97视频中文字幕 | 日韩精品无码一区二区三区 | 久久九九影视网 | 国产一区二区手机在线观看 | 最近中文字幕在线播放 | 欧美激情操 | 日韩精品一区电影 | 男女视频国产 | 依人成人综合网 | www.国产在线视频 | 精品国产aⅴ一区二区三区 在线直播av | 在线看黄色的网站 | 日韩电影久久 | 国产一区二区三区在线 | 国产一区播放 | 在线国产中文字幕 | 国模精品一区二区三区 | 国产精品丝袜在线 | 黄色成品视频 | 在线免费日韩 | 91麻豆精品国产91久久久久 | 国产一级片久久 | 日韩毛片精品 | 国产涩涩网站 | 丁香激情综合久久伊人久久 | 亚洲精品色视频 | 最近中文字幕视频完整版 | 91av电影| 99一级片| 久操视频在线观看 | 五月天色婷婷丁香 | 成人午夜精品福利免费 | 特级片免费看 | 夜夜视频| 精品国产网址 | 国产精品99久久久精品免费观看 | 欧美成年黄网站色视频 | 精品1区2区3区 | 九九热在线精品视频 | 精品一区二区在线免费观看 | 欧美激情第一区 | 奇米7777狠狠狠琪琪视频 | 精品一区二区在线免费观看 | 黄色电影网站在线观看 | 波多野结衣在线视频免费观看 | av电影久久 | 国内免费久久久久久久久久久 | av天天干 | 日本一区二区高清不卡 | 久久 国产一区 | 久久精品一区二区 | 亚洲每日更新 | 国产精品入口久久 | 91九色视频国产 | 亚洲精品综合一区二区 | 日韩伦理片hd | 欧美一区二视频在线免费观看 | 99久久精品久久亚洲精品 | 亚洲免费在线播放视频 | www.国产精品 | 九色在线视频 | 这里只有精品视频在线 | 国产精品99久久久久久有的能看 | 久久午夜精品视频 | 日韩在线网 | 久久这里精品视频 | 亚洲jizzjizz日本少妇 | 免费av网址大全 | 亚洲视频免费在线观看 | 99精品视频一区二区 | 免费进去里的视频 | 国产 日韩 欧美 自拍 | 久久国产精品免费看 | 国产丝袜制服在线 | 中文字幕乱码电影 | 亚洲日本韩国一区二区 | 亚洲 精品在线视频 | 超碰日韩 | 91成人免费看片 | 亚洲电影图片小说 | 精品中文字幕在线播放 | 亚洲美女精品区人人人人 | 日韩午夜在线播放 | 亚洲一区欧美激情 | 国产女做a爱免费视频 | 亚洲视频电影在线 | 中文字幕av在线免费 | 亚洲精品视频免费 | 视频二区在线视频 | 在线观看深夜视频 | 91 中文字幕 | 96精品高清视频在线观看软件特色 | 久久国产精品99精国产 | 久草免费资源 | 美女视频黄免费 | 国产成人高清在线 | 日韩午夜av | 日韩精品一区不卡 | 最近最新mv字幕免费观看 | 国产成人免费观看 | 免费男女网站 | 337p日本欧洲亚洲大胆裸体艺术 | 911久久香蕉国产线看观看 | 国产色一区| 国内外成人在线 | 成人h电影在线观看 | 午夜一级免费电影 | 久久天天躁狠狠躁夜夜不卡公司 | .国产精品成人自产拍在线观看6 | 天天操天天干天天干 | 91福利在线导航 | 91九色自拍 | 色综合天天狠天天透天天伊人 | 国产不卡视频在线播放 | 久久九九视频 | 亚洲三级在线 | 日韩毛片在线免费观看 | 亚洲国产精品日韩 | 黄色小视频在线观看免费 | 日韩精品久久久久 | 日韩av免费在线电影 | 亚洲国产日韩一区 | 成人av高清| 日韩欧美视频在线 | 免费观看一区 | 日韩av高清 | 亚州中文av | 日韩在线观看a | 69精品视频在线观看 | 91在线视频免费观看 | av一级久久 | 99久久99久久精品 | 国产精品视频区 | 麻豆视频免费播放 | 国产成人一区二 | 国产一级小视频 | 国产精品女人久久久 | 欧美日韩国产一区 | 婷婷色在线播放 | 不卡视频一区二区三区 | 一区二区三区在线免费播放 | 欧美极品少妇xbxb性爽爽视频 | 久久在线视频在线 | 免费在线看成人av | 狠狠躁日日躁狂躁夜夜躁 | 九九久久久久99精品 | 草莓视频在线观看免费观看 | 国产精品一区二区三区四 | 黄色小说视频网站 | 99视频这里有精品 | 久久国产精品免费 | 欧美一级专区免费大片 | 在线观看久久 | 国产精品久久久久久久久婷婷 | 日本天天色 | 国产午夜激情视频 | 精品国产不卡 | 亚洲热视频| av怡红院| 在线观看国产福利片 | 久久精品观看 | 欧美91精品| 亚洲精品女人 | 欧美在线视频一区二区三区 | 人成免费网站 | 亚洲aaa级 | 国产成人精品一二三区 | 国产一级h | 视频在线观看入口黄最新永久免费国产 | av成人免费网站 | 亚洲欧美日韩一二三区 | 欧美日本高清视频 | 国产一线二线三线性视频 | 天天狠狠干 | 亚洲精品自拍视频在线观看 | 国产99久久久国产精品免费二区 | 欧美午夜理伦三级在线观看 | 99精品国产视频 | 欧美日韩国产精品一区 | 色偷偷中文字幕 | 一级黄色av| 黄色软件在线观看免费 | 四虎在线免费观看视频 | 婷婷成人亚洲综合国产xv88 | 国产精品黄色 | 久久大香线蕉app | 婷五月天激情 | 激情综合啪啪 | 九九在线视频免费观看 | 日韩一区二区三区在线观看 | 丝袜av一区| 九九在线视频 | 天天操狠狠操 | 天天曰视频| 久久综合婷婷国产二区高清 | 日韩乱理 | 丝袜制服天堂 | 久久久午夜精品福利内容 | 福利一区在线视频 | 日日夜夜干| 婷婷激情影院 | 亚洲乱码国产乱码精品天美传媒 | 国产午夜av | 激情综合色图 | 91人人澡人人爽 | 久久久久 | 午夜精品久久久久久久99 | 国产视频在线看 | 国产91全国探花系列在线播放 | 日韩久久精品一区二区三区 | 国产精品一区二区av日韩在线 | 免费看黄网站在线 | 久久av高清 | 99电影456麻豆 | 国产精品久久久久久久av大片 | 国产色爽 | 色网免费观看 | 国产日韩高清在线 | 日本精品小视频 | 黄色a在线观看 | 五月亚洲综合 | 五月婷丁香 | 国产伦精品一区二区三区四区视频 | 亚洲天天在线日亚洲洲精 | 99久久网站| 成人午夜免费剧场 | 国产在线a视频 | 日韩草比| 免费在线观看毛片网站 | 日韩理论电影在线 | 五月婷婷激情五月 | 国产手机视频在线 | 白丝av在线 | av在线小说 | 婷婷五月情 | 久久dvd | 久久午夜剧场 | 午夜视频一区二区 | 三级黄色网址 | 日p视频在线观看 | 在线观看av国产 | 日本久久成人中文字幕电影 | 久久深夜 | 久久视屏网 | 91九色蝌蚪视频在线 | 激情综合色图 | 国产专区在线 | 婷婷在线五月 | 97热在线观看 | av黄色成人 | 亚洲 欧美 另类人妖 | 天天色天天艹 | 精品一二区 | 中文字幕电影高清在线观看 | 亚洲 欧美变态 另类 综合 | 国产天天爽 | 精品国产一区二区三区久久影院 | 欧美一进一出抽搐大尺度视频 | 中文字幕在线视频第一页 | 91视频在线观看大全 | 国产在线观看 | 亚洲精品国产精品久久99 | 欧美黑人性猛交 | av成人在线电影 | 亚洲精选在线观看 | 五月天综合网站 | 精品久久久久久久久久 | 久久久久视 | 国产99黄| 在线观看日本高清mv视频 | www操操 | 久久久18| 天堂黄色片| 最近中文国产在线视频 | 欧美日韩在线第一页 | 久久久久久久久免费 | 中文字幕av免费在线观看 | 在线日本v二区不卡 | 99久久www免费| 亚洲一区二区黄色 | 欧美日韩不卡在线观看 | 黄色精品国产 | 日韩欧美在线高清 | 视频在线观看99 | 亚洲永久精品国产 | 国产精品久久伊人 | 麻豆视传媒官网免费观看 | 日韩不卡高清视频 | 最新国产一区二区三区 | 久草视频免费观 | 亚洲区色 | 成人精品国产免费网站 | 91中文字幕在线播放 | 久久视频免费看 | 久久精品日产第一区二区三区乱码 | 欧美日韩国产精品一区二区三区 | 黄色av网站在线免费观看 | 精品视频免费看 | 91在线产啪 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产成人精品aaa | 激情丁香综合五月 | 欧美在线观看禁18 | 国产黄色a | 日韩免费高清在线观看 | av一区二区三区在线播放 | 国产精品久久久久aaaa | av免费看av| 欧美一区二区三区免费观看 | 中文字幕免费播放 | 久久久久久久久久久电影 | 91成人在线观看高潮 | 午夜视频在线瓜伦 | a色视频| 国产精品专区在线观看 | 欧美日韩成人一区 | 日韩av午夜在线观看 | 探花系列在线 | 中国一级片在线播放 | 国产一区二区三区高清播放 | av观看免费在线 | 成人av免费在线观看 | av丝袜美腿 | 月下香电影 | 69国产精品成人在线播放 | 99精品在线免费视频 | 热精品| 91av视频观看 | 亚洲国产精品免费 | 亚洲国产三级在线观看 | 一区二区免费不卡在线 | 中文字幕一区二区三区在线播放 | 国产一区国产精品 | 久久久久久久久久久高潮一区二区 | 日韩精品中文字幕在线不卡尤物 | 国产精品免费久久久久影院仙踪林 | 99热九九这里只有精品10 | 欧美坐爱视频 | 丁香免费视频 | 97视频免费 | 色婷婷综合久久久中文字幕 | 伊人天天干 | 国产玖玖精品视频 | 成人羞羞免费 | 天天拍天天爽 | av蜜桃在线| 午夜视频在线观看一区 | 午夜a区| 一区二区精品在线 | 色婷在线 | 国产手机av在线 | 激情综合五月婷婷 | 国产伦精品一区二区三区… | 能在线看的av | 香蕉影院在线 | 精品少妇一区二区三区在线 | www178ccom视频在线 | 91久久精品一区 | 亚洲精品久久久久久久不卡四虎 | 国产人成在线观看 | 中文字幕在线免费观看 | 激情 一区二区 | 国产精品日韩在线观看 | 天天操天天操天天 | 成年人视频在线 | 亚洲精品自拍视频在线观看 | 色婷婷激情电影 | 日本精品二区 | 国内小视频在线观看 | 成人一级电影在线观看 | 天天舔夜夜操 | 日韩免费高清 | 欧美a级在线免费观看 | 91精品蜜桃 | 国产成人精品久久二区二区 | 69av国产| 亚洲电影自拍 | 免费观看9x视频网站在线观看 | 黄色激情网址 | 国产精品一区二区在线播放 | 午夜婷婷综合 | 激情深爱 | 夜夜狠狠 | 国产精品综合在线 | 一区二区视频在线播放 | 九九九热精品 | 日韩中文字幕电影 | 免费观看日韩av | 日韩免费视频线观看 | 91久久奴性调教 | 亚洲一区二区三区91 | 国产999视频在线观看 | 国产自产在线视频 | 日韩午夜一级片 | 国产精品原创视频 |