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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

运行startup.bat的启动过程

發布時間:2023/12/4 综合教程 49 生活家
生活随笔 收集整理的這篇文章主要介紹了 运行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%"
  1. 設置變量CURRENT_DIR為當前目錄,一般打開的就是tomcat的bin目錄,./apache-tomcat-x.x.xx/bin;

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

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

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

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

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

  7. 進入 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%
  1. set CMD_LINE_ARGS=表示清空變量CMD_LINE_ARGS;
  2. 執行setArgs標簽;
  3. 第一個變量(%1%)為空字符串,那么就跳轉到doneSetArgs標簽,一般情況下,直接運行startup.bat,是沒有傳遞任何參數,所以是跳轉到doneSetArgs標簽,由此也可以猜想出,如果不是使用雙擊執行的話,使用命令行啟動startup.bat那么是可以傳遞參數的;
  4. 跳轉到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
  1. 首先注釋是說,禁止使用 CTRL+C 來終止批處理任務;

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

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

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

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

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

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

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

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

  10. 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 中;

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

  12. :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
  1. set "CURRENT_DIR=%cd%",設置CURRENT_DIR為當前目錄bin(假如你是在bin目錄中啟動);

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

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

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

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

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

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

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

  9. 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=

設置一些環境變量:

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

  2. MAINCLASS : 指定了 Tomcat 的啟動類;

  3. ACTION : 動作, 就是啟動;

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

  5. 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,大致的流程是這樣:

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

  2. 設置 CATALINA_HOME 和 CATALINA_BASE 環境變量值;

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

  4. 調用 setnv.bat 腳本;

  5. 調用 setclasspath.bat 腳本;

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

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

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

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

  10. 啟動 Tomcat。

?

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

總結

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

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

黄色毛片网站在线观看 | av在线永久免费观看 | 国语自产偷拍精品视频偷 | 亚洲丁香久久久 | 天天干干 | 香蕉网在线播放 | 久久精品视频免费 | 欧美日韩伦理在线 | 91视频麻豆视频 | 狠狠gao| 日本久久片 | 亚洲最新精品 | 精品国产1区 | 成年人免费电影在线观看 | 中文字幕网站视频在线 | 在线国产欧美 | bbb搡bbb爽爽爽 | 色免费在线 | 五月婷婷色综合 | 精品久久久久久久久久岛国gif | 亚洲精品毛片一级91精品 | 一级性生活片 | 亚洲在线视频网站 | 久久精品首页 | 天天躁天天操 | 伊人射 | 91av在线不卡 | 欧美一区二区免费在线观看 | 国产精品 日韩精品 | 91网站免费观看 | 婷婷激情网站 | 五月开心六月伊人色婷婷 | 97成人精品视频在线播放 | 九色视频网站 | 人人干人人做 | 亚洲国产经典视频 | 丁香五月网久久综合 | 国产午夜三级一区二区三 | 国内精品久久影院 | 青青看片 | 中文字幕专区高清在线观看 | 久青草影院 | 天天综合成人 | 在线观看中文字幕 | 日韩狠狠操 | 国产精品高清在线 | 久久人人爽爽 | av成人免费观看 | 成人中心免费视频 | 在线有码中文字幕 | 欧美污污视频 | 九色91在线| 亚洲精品91天天久久人人 | 手机成人在线 | 日韩精品一区二区三区视频播放 | 五月婷在线观看 | 免费在线观看av不卡 | 久久精品一区二区三区国产主播 | 免费能看的黄色片 | 日韩av一区二区三区在线观看 | 日韩在线网址 | 美女视频又黄又免费 | 久久国产精品小视频 | 91精品国产91p65 | 97免费公开视频 | 精品国产伦一区二区三区观看体验 | 亚洲综合色视频 | 97福利 | 又黄又爽免费视频 | 九九日韩| 日韩视频a | 午夜精品一区二区三区免费视频 | 久久久久激情视频 | 在线视频观看成人 | 99精品免费观看 | 99视频精品视频高清免费 | 香蕉视频导航 | 日韩一区二区三区免费电影 | 操操操夜夜操 | 亚洲午夜久久久久久久久 | 日本精品视频在线播放 | 美腿丝袜一区二区三区 | 亚洲精品2区 | 国产免费av一区二区三区 | 中文字幕色网站 | 欧美成人一二区 | 欧美日韩一二三四区 | 免费av的网站 | 99热.com| 视频二区在线视频 | 在线播放视频一区 | 激情综合交 | 欧美黄色免费 | 欧美日韩在线电影 | 天天干天天怕 | 悠悠av资源片 | 99精品视频中文字幕 | 在线精品观看 | 欧美福利视频一区 | 在线观看亚洲免费视频 | av电影免费观看 | 亚洲精品国偷拍自产在线观看 | 欧美亚洲三级 | 美女精品 | 免费观看日韩av | 日韩av一区二区三区 | 欧美天天干 | 日韩一区二区三区免费视频 | 国产精品成人自产拍在线观看 | 99久久精 | 国产高清免费视频 | av成人亚洲 | 国产免费又爽又刺激在线观看 | 中文在线a天堂 | 成人在线观看免费视频 | 99精品国产福利在线观看免费 | 欧美日韩在线免费视频 | 四虎小视频 | 尤物97国产精品久久精品国产 | 天天做日日爱夜夜爽 | 日韩一区视频在线 | 久久久免费高清视频 | 综合网欧美 | 日韩欧美电影 | 在线播放 亚洲 | www.夜夜干.com | 中文字幕久久精品一区 | 久草干 | 最新av网站在线观看 | 久久久精品午夜 | 婷婷色综合网 | 日韩啪啪小视频 | 人人爽人人av | 免费观看国产视频 | 欧美一级看片 | 激情影音 | 久久伦理电影网 | 婷婷激情综合 | 综合久久2023| 性色视频在线 | 欧美日韩久久不卡 | 在线精品观看国产 | 国产在线视频资源 | 伊人婷婷色 | 日本中文字幕在线一区 | 国产福利在线免费 | 在线观看一级片 | 精品国产福利在线 | 成人av电影免费 | 九色最新网址 | 欧美日本在线观看视频 | 日本在线观看中文字幕无线观看 | 亚洲国产精品va在线看 | 亚洲国产成人精品电影在线观看 | 欧美日韩免费视频 | 91高清免费 | 精壮的侍卫呻吟h | 999视频网 | 岛国av在线免费 | 亚洲 欧美 综合 在线 精品 | 日韩精品无码一区二区三区 | 99久久影视| 国产精品久久久久久久久久尿 | 四虎天堂 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 视频在线观看入口黄最新永久免费国产 | 91九色丨porny丨丰满6 | 在线精品视频免费播放 | 国产精品原创av片国产免费 | 成人黄色小说在线观看 | 亚洲国产精品va在线看黑人 | 99久久99久国产黄毛片 | 亚洲人视频在线 | 久久精品亚洲一区二区三区观看模式 | 99久久婷婷国产 | 日韩av一区二区三区四区 | 成人毛片在线观看视频 | 国产在线污 | 韩国精品在线观看 | 日韩精品中文字幕在线观看 | 亚洲国产成人精品在线观看 | 97网| 国产精品成人av电影 | 精品国产伦一区二区三区观看体验 | 国产成人av电影在线观看 | 日韩91av| 国产高清在线永久 | 91人人射 | 在线国产精品视频 | 亚洲第一中文字幕 | 91九色国产 | 欧美精品免费在线 | 国产色综合天天综合网 | 成人影视免费 | 欧美a级一区二区 | 中文字幕在线中文 | 精品久久国产 | 亚洲综合色婷婷 | 91精品推荐 | 亚洲精品视频在线播放 | 久久久鲁| 在线看av网址 | 日本久久久久久科技有限公司 | 91在线网站| 亚洲欧美国产精品va在线观看 | 久久婷婷激情 | 国产在线色站 | 精品影院一区二区久久久 | 亚洲精品国产精品国自产 | 美女免费视频观看网站 | 韩国一区视频 | 狠狠操狠狠操 | 黄色软件视频大全免费下载 | 99视频在线精品免费观看2 | 午夜精品久久久久久99热明星 | 国产精品美女久久久久aⅴ 干干夜夜 | 欧美成年人在线观看 | 亚洲午夜精品电影 | 天天艹天天干天天 | 成人一级黄色片 | 亚洲精品视频偷拍 | 婷婷去俺也去六月色 | 久久久久久久久久电影 | 国产美腿白丝袜足在线av | 天天综合网天天综合色 | 91精品国产欧美一区二区 | 亚洲日韩中文字幕 | 日韩毛片在线免费观看 | 少妇av网 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 日韩a在线看 | 97国产情侣爱久久免费观看 | 久久国产精品一区二区 | 天天干,夜夜操 | 波多野结衣精品视频 | 中中文字幕av在线 | 免费日韩一区二区三区 | 91色在线观看视频 | 久久久官网 | 在线精品播放 | 欧美国产日韩激情 | 久久人人97超碰国产公开结果 | 开心丁香婷婷深爱五月 | 免费看的av片 | 九九热在线观看 | 亚洲午夜久久久综合37日本 | 六月丁香综合 | 丁香婷婷激情国产高清秒播 | 99视频精品 | 欧美在线日韩在线 | 国产精品入口传媒 | 欧美日韩午夜 | 亚洲精品视频播放 | 麻豆视频在线 | 91视频久久久久久 | www好男人| 日韩啪啪小视频 | 国产精品久久久久久久久大全 | 国产丝袜网站 | 国产精品尤物视频 | 麻豆91精品视频 | 97超级碰碰碰碰久久久久 | av中文字幕在线看 | 日批网站免费观看 | 99在线观看视频 | 在线观看中文字幕一区二区 | 国产淫片免费看 | 日韩亚洲国产精品 | 欧美午夜一区二区福利视频 | 日本久久精品视频 | 瑞典xxxx性hd极品 | 国产精品一区二区白浆 | 成人av影院在线观看 | 精品国产一区二区三区噜噜噜 | 亚洲欧美日韩国产一区二区三区 | 国产精品第72页 | 国产精品第10页 | 高清免费在线视频 | 丁香婷婷综合五月 | 91探花国产综合在线精品 | 久久久久久久久电影 | 特黄一级毛片 | 亚洲国产日韩欧美 | 中文字幕三区 | 欧美日韩久久一区 | 日本不卡一区二区 | 深夜激情影院 | 欧美在线aa| 久久电影色 | 香蕉97视频观看在线观看 | 日韩啪啪小视频 | 天天色天天搞 | 91在线视频一区 | 丝袜美腿亚洲 | 国产视频资源在线观看 | 美女黄视频免费看 | 一区二区在线影院 | 色婷婷五| 日韩免费一区二区 | 美女国产在线 | 国产香蕉97碰碰碰视频在线观看 | 欧美日韩精品在线 | 在线婷婷 | 手机av在线免费观看 | 亚洲天堂在线观看完整版 | 狠狠干狠狠艹 | 在线视频 一区二区 | 国产在线最新 | 高清中文字幕 | 91九色蝌蚪视频在线 | 国产一区二区三区免费观看视频 | 五月天视频网站 | 日韩欧美一区二区不卡 | 久久久久久久国产精品视频 | 精品久久久久国产免费第一页 | 免费在线日韩 | 久久精品视频播放 | 国产手机精品视频 | av福利在线导航 | 三级a毛片 | 亚洲国产日韩欧美 | 久久久www成人免费精品 | 99在线精品视频观看 | 日韩手机在线观看 | 婷婷六月久久 | 久久97超碰 | 精品一区电影 | 91视频成人免费 | 国产视频欧美视频 | 天天看天天干天天操 | 一区二区三区精品久久久 | 免费看av在线 | 人人超碰在线 | 国产群p | 97福利在线 | 国产精品久久久区三区天天噜 | 国产精品毛片一区视频 | 亚洲一级黄色片 | 日韩av免费一区二区 | 久久婷亚洲五月一区天天躁 | 亚洲视频免费在线 | 天堂资源在线观看视频 | 91日韩在线专区 | 深爱激情五月网 | 在线观看一级 | 国产精品久久久久久久久久不蜜月 | 国产福利在线免费观看 | 日韩三级在线 | a视频在线看 | 日本在线视频一区二区三区 | 狠狠狠狠狠色综合 | 一本一道久久a久久精品蜜桃 | 国产特级毛片aaaaaa毛片 | 午夜精品一区二区三区在线 | 国产福利免费看 | av亚洲产国偷v产偷v自拍小说 | 日韩精品久久中文字幕 | 精品国内自产拍在线观看视频 | 天天色天天射综合网 | 午夜精品久久久久久久99水蜜桃 | 日韩激情视频 | 久久在线免费 | 久久论理| 91亚洲狠狠婷婷综合久久久 | 91丨九色丨国产丨porny精品 | av看片网址 | 最新日韩在线观看视频 | 91手机视频 | 91成年人视频 | 91成人免费看 | 日韩在线一二三区 | 国产在线观看你懂得 | 永久免费av在线播放 | 日韩av在线资源 | 欧美91视频 | 国产手机av在线 | 久久天天躁 | 91免费观看视频在线 | 免费成人短视频 | 日韩成人精品一区二区 | 日本三级人妇 | 中文字幕在线观看av | 国内成人av | 久久国产精品系列 | 在线观看免费观看在线91 | 成人av一二三区 | 亚洲成人av在线 | 521色香蕉网站在线观看 | 免费a v视频 | va视频在线 | 欧美日韩高清国产 | 婷婷色吧| 日韩av免费一区 | 国产精品一区二区视频 | 久久亚洲免费视频 | 成人丝袜 | 国产欧美日韩视频 | 视频一区二区三区视频 | 九九久久久久久久久激情 | 日韩欧美在线国产 | 韩国av在线播放 | 国产黄色片一级三级 | 国产玖玖精品视频 | 99热这里只有精品1 av中文字幕日韩 | av在线在线| 午夜视频在线观看一区二区三区 | 91在线视频导航 | 久久久久北条麻妃免费看 | 最近中文字幕高清字幕在线视频 | 国产91精品一区二区麻豆网站 | 久久 精品一区 | 不卡国产视频 | 亚洲三级在线 | 亚洲 中文 在线 精品 | 中文字幕精品一区二区精品 | 久久99国产精品免费网站 | 四虎国产精品成人免费影视 | 成人午夜电影网站 | 国产精品久久久久aaaa | 国产97色在线 | 在线视频观看国产 | 亚洲精品国产精品乱码不99热 | 欧美在线日韩在线 | 天天综合狠狠精品 | 久操视频在线观看 | 日本精品在线视频 | 在线91观看| 亚洲五月激情 | 成人一级免费视频 | 亚洲精品88欧美一区二区 | 在线不卡的av | 久久夜夜夜 | 国产成人精品国内自产拍免费看 | 黄色在线免费观看网址 | www.亚洲黄| 色91av| 欧美另类xxxxx | 干干夜夜| 欧美成人xxx | 五月天av在线 | 亚洲美女精品区人人人人 | 久久精品99国产国产精 | 操操操日日 | 中文在线亚洲 | 久久亚洲综合国产精品99麻豆的功能介绍 | 午夜精品三区 | 97在线观看免费 | 亚洲精品美女久久久久网站 | 精品久久久久久久久久久久久久久久久久 | 91免费视频网站在线观看 | 91精品人成在线观看 | 国产亚洲视频在线观看 | 曰韩精品| 特级毛片网站 | 国产精品毛片一区二区在线 | 一级片免费视频 | 美女视频黄色免费 | 91亚洲精品在线观看 | 正在播放 国产精品 | 久久国产女人 | 蜜臀久久99精品久久久无需会员 | 欧美精品一区二区三区四区在线 | 久久久久久久久久福利 | 亚洲精品婷婷 | 国产1区2 | 在线观看黄av | 久草在线精品观看 | 99久热在线精品视频观看 | 丝袜美腿亚洲综合 | 中文字幕黄网 | 欧洲成人免费 | 欧美激情另类 | 手机在线中文字幕 | 香蕉免费 | 黄色美女免费网站 | 五月婷婷久久综合 | 中文字幕黄色网 | 日本精品视频在线观看 | 亚洲v精品| 久久综合久久88 | 久久久久久久久久久综合 | 国产国语在线 | 日韩一区二区三免费高清在线观看 | 黄色av大片 | 99视频在线免费看 | 精品免费久久久久 | 欧美日韩啪啪 | 色婷婷av一区 | 97成人在线 | 四虎国产永久在线精品 | 中文在线免费看视频 | 欧美午夜视频在线 | 97看片网| 99精品视频在线播放免费 | 久久av网 | 天天综合区 | 久草在线一免费新视频 | 国产精品美女免费看 | 久久免费看视频 | 伊人婷婷综合 | 国产一区二区在线播放视频 | 精品国产美女在线 | 99久久婷婷 | 在线天堂v | 精品久久久久久久久久国产 | 国产视频久久久 | 国产精品粉嫩 | 97人人超碰在线 | 黄色av影视 | 免费一级黄色 | 在线看片成人 | 欧美激情综合五月色丁香 | 男女视频久久久 | 亚洲成人av片在线观看 | 日韩电影一区二区三区 | 天天综合色网 | 在线观看小视频 | 成人一区二区在线 | 久久久久久久久久久高潮一区二区 | 国产91勾搭技师精品 | 久久观看免费视频 | 亚洲专区 国产精品 | 91一区二区三区在线观看 | 日韩一级成人av | 三级黄色大片在线观看 | 在线视频免费观看 | 一 级 黄 色 片免费看的 | 高潮久久久久久 | 亚洲综合在线一区二区三区 | 日日操天天操狠狠操 | 久久人网 | 国产精品久久久久久一区二区三区 | 国产一区二区中文字幕 | 久久免费看毛片 | 五月色丁香 | 国产精品理论片在线播放 | 99精品免费在线观看 | 成人av在线亚洲 | 亚洲午夜久久久久 | 人人爽人人av | 欧美另类人妖 | 蜜臀av性久久久久蜜臀av | 欧美日韩视频一区二区三区 | 99精品在线免费观看 | 久热只有精品 | 久久综合电影 | 黄网站色成年免费观看 | 日本一区二区三区免费看 | 伊人电影天堂 | 国产精品自在欧美一区 | 国产色视频一区 | 久久夜夜爽 | 免费观看的黄色片 | 免费在线观看一区二区三区 | 亚洲国产伊人 | 久久1电影院 | 亚洲国产欧美在线人成大黄瓜 | 天天射天天操天天干 | 成人免费视频观看 | 欧美一区二视频在线免费观看 | 一区中文字幕在线观看 | 色黄视频免费观看 | 免费日韩一区二区三区 | 久久黄色网址 | www.com在线观看 | 成人教育av | 99国内精品 | 在线免费成人 | 欧美午夜剧场 | 五月开心色 | 少妇搡bbbb搡bbb搡aa | 日本午夜在线观看 | 最新日韩在线观看视频 | 国产精品久久久久久久久费观看 | 亚洲精品一区二区精华 | 免费看的黄色小视频 | 色婷婷激情综合 | 精品国产一区二区三区免费 | 视频在线观看国产 | 婷婷五月情 | 中文字幕在线影院 | 亚洲精品一区二区在线观看 | 五月天,com | 日日操网 | 日韩av一区二区在线播放 | 黄色软件在线观看视频 | 国产成人三级三级三级97 | 中文字幕国产在线 | 久久综合国产伦精品免费 | 四虎永久免费在线观看 | 日韩精品一区二区三区外面 | 日韩视频免费在线观看 | 国产成人在线播放 | 黄色软件视频网站 | 婷婷久久婷婷 | 中文成人字幕 | 玖玖在线视频观看 | 日本中文字幕电影在线免费观看 | 97精产国品一二三产区在线 | 国产韩国日本高清视频 | 最近日韩免费视频 | 搡bbbb搡bbb视频 | 中文字幕丝袜 | 日韩精品首页 | 2023亚洲精品国偷拍自产在线 | 国产九色91| 黄色电影在线免费观看 | 蜜桃视频在线视频 | www.av中文字幕.com | 免费观看www小视频的软件 | 一区中文字幕电影 | 四川妇女搡bbbb搡bbbb搡 | 99精品国产高清在线观看 | 天天干天天操天天干 | 久久伊人精品天天 | avwww在线 | 在线视频一区二区 | 久久久蜜桃一区二区 | 中文字幕亚洲精品在线观看 | 一区二区在线不卡 | 91麻豆免费视频 | 又湿又紧又大又爽a视频国产 | 久久99热这里只有精品国产 | 在线视频 精品 | 午夜视频色 | 日韩免费高清 | 一级片视频在线 | 五月综合久久 | 国产精品欧美在线 | 麻豆成人精品 | 日本 在线 视频 中文 有码 | 五月天激情在线 | 成片免费观看视频大全 | 亚洲成人黄色网址 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 亚洲经典视频在线观看 | 五月色丁香 | 最近中文字幕在线播放 | 国产精品久久久久久久久久久免费 | 激情视频在线观看网址 | 美女网站在线看 | 一级片免费观看 | 91国内在线视频 | 久久精品网站免费观看 | 97免费视频在线播放 | 日精品 | 国产精品久久久久久久久久免费 | 国产我不卡 | 激情视频综合网 | 国产精品视频永久免费播放 | 韩国av免费在线观看 | 日韩视频免费观看高清完整版在线 | 成人一区电影 | 日韩精品综合在线 | 五月激情丁香婷婷 | 久久私人影院 | 97免费在线观看 | 天天操天天操天天操 | 精品国产三级 | bbb搡bbb爽爽爽| 久久tv视频 | 免费影视大全推荐 | 九色精品免费永久在线 | 国产三级久久久 | 免费视频久久 | 免费av观看网站 | 久久国产精品视频 | 日韩av不卡播放 | jizz18欧美18| 极品中文字幕 | 超碰在线94 | 欧美日韩亚洲一 | 国产精品一区二区av日韩在线 | 中文字幕免费高清在线 | 最近中文字幕免费观看 | 五月婷婷欧美视频 | 亚洲精品毛片一级91精品 | 日日干夜夜骑 | 成人免费观看网址 | 欧美久久九九 | 欧美日韩性视频 | 免费看高清毛片 | 久久网站av | www.国产毛片| 国产精品色在线 | 九九在线视频免费观看 | 亚洲人人射 | 91爱在线| 视频在线99re | 天天爽夜夜爽精品视频婷婷 | 久草久热 | 欧美怡红院视频 | 亚洲精品乱码白浆高清久久久久久 | 亚洲不卡123 | 91精品久 | 91精品啪在线观看国产线免费 | 丁香花中文字幕 | 韩日三级在线 | 亚洲高清视频在线播放 | 日本公乱妇视频 | 91免费版在线 | 正在播放久久 | www狠狠操 | 91在线porny国产在线看 | 黄色在线视频网址 | 国产视频日本 | 成人一级在线 | 日韩网站在线免费观看 | 久久国产免费视频 | 97视频在线免费 | 在线观看成人av | av在线短片 | 97香蕉久久国产在线观看 | 精品视频免费播放 | 99久久久国产精品免费99 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久免费视频网 | 日韩 在线观看 | 中文字幕在线观看2018 | 九九免费在线观看视频 | 91av欧美 | 日韩在线视频免费看 | 18做爰免费视频网站 | 免费成人av在线看 | 亚洲欧美成人在线 | 久久国产精品一国产精品 | 亚洲精品色 | 久人人 | 日韩高清 一区 | 九九九国产 | 热九九精品 | 久久在线免费视频 | 久久免费视频1 | 免费在线观看av网站 | 99一级片 | 天天干天天操天天爱 | 美女免费电影 | 久久女同性恋中文字幕 | 免费久久片 | 久久www免费人成看片高清 | 国产第一页在线播放 | 五月天久久| 国产高清视频在线播放 | 69精品在线观看 | 高潮毛片无遮挡高清免费 | 免费在线观看亚洲视频 | 91色一区二区三区 | 97综合网 | 亚洲一区二区精品视频 | 特黄特色特刺激视频免费播放 | 久久国产午夜精品理论片最新版本 | av成人在线网站 | 91精品国产成 | 91中文在线观看 | 国产一区二区三区免费在线观看 | 天天操人人要 | 97人人人| 国产伦精品一区二区三区在线 | 午夜精品999 | av在线观 | 欧美成人在线免费观看 | 色综合久久88色综合天天6 | 天天搞天天干天天色 | 国产精品久免费的黄网站 | 狠狠狠狠狠狠操 | 奇米先锋 | 99 视频 高清 | 国产高清中文字幕 | 亚洲最新av网站 | 热久在线 | 91成人免费看片 | 国产精品网址在线观看 | 国产成人黄色片 | 成人午夜在线观看 | 国内免费久久久久久久久久久 | 波多野结衣视频一区二区三区 | 在线观看一级片 | 有没有在线观看av | 久久久精品国产一区二区三区 | 久久精品国产一区二区 | 五月激情综合婷婷 | 国产第一福利网 | 午夜在线观看一区 | 亚洲精品黄网站 | 国产精品久久久久久一区二区三区 | av成人免费在线观看 | 国产特级毛片aaaaaa毛片 | 国产高清一级 | 91视视频在线直接观看在线看网页在线看 | 极品久久久 | www.成人久久 | 久久精品国产一区二区三区 | 久久人人插 | 中文字幕日本特黄aa毛片 | 亚洲精品欧美专区 | 网址你懂的在线观看 | 黄色a视频免费 | 黄色av电影网 | 免费视频黄 | 18国产精品福利片久久婷 | 91人人澡人人爽人人精品 | 黄色av电影在线观看 | 欧美久久久久久久久中文字幕 | 91九色国产 | 亚洲激情在线观看 | 97视频在线免费 | 丁香久久激情 | 久久久精品网站 | 五月婷婷激情六月 | 久久精品国产99国产 | 国产精品 9999 | 91看片淫黄大片一级在线观看 | 日日夜夜婷婷 | 视频在线观看入口黄最新永久免费国产 | 日韩激情在线 | 美女视频黄在线观看 | 国产精品毛片久久久久久久久久99999999 | 欧美日韩国产一区 | 欧美一区二区精美视频 | 丝袜制服综合网 | 亚洲成人资源 | 91九色最新| 麻豆91精品 | 精品久久久久久久久久久久久久久久久久 | 91成人精品一区在线播放69 | 久久精品一区二区三区中文字幕 | 91日韩国产| 免费一级片久久 | 亚洲成av人影院 | 中文字幕在线观看视频免费 | 久久99精品久久只有精品 | 97在线视频免费观看 | 美女露久久 | 91在线视频精品 | 伊人亚洲综合 | 97超级碰碰| 丁香婷婷综合五月 | 亚洲欧美国产精品18p | 13日本xxxxxⅹxxx20 | 91精品国产成人观看 | 五月婷婷综合在线视频 | 九九久久精品视频 | 深爱激情五月综合 | 久久免费a | 黄色免费网站 | 国产黄色片一级 | 不卡精品视频 | 久久艹国产视频 | 福利视频网站 | 婷婷电影在线观看 | 国产精品一区二区三区99 | 中文字幕在线播放av | 99精品在线直播 | 黄色软件在线观看视频 | 亚洲涩涩一区 | 国产看片 色 | 五月综合网站 | 99热999| 欧美一区二区精品在线 | 免费涩涩网站 | 国产成人性色生活片 | 国产在线观看午夜 | 91色蜜桃 | 91在线免费视频观看 | 国产精品每日更新 | 久久久www成人免费精品张筱雨 | 在线视频观看国产 | 日韩精品久久久久 | 天天激情综合网 | freejavvideo日本免费 | 色在线高清 | 精品成人免费 | 日韩精品国产一区 | 日韩大片在线看 | 久久免费视频一区 | 日日草夜夜操 | 久久 一区| 亚洲在线激情 | 开心色停停 | 日韩在线电影一区二区 | 在线天堂视频 | 免费黄色激情视频 | 久久这里只有精品久久 | 日韩黄色软件 | 国产日韩欧美在线一区 | 福利视频一区二区 | 国内精品久久久久影院一蜜桃 | 日韩欧美在线观看一区二区三区 | 久久综合毛片 | 久久夜夜爽 | 婷婷九月激情 | 亚洲精品www久久久 www国产精品com | 青春草视频在线播放 | av黄色av| av在线成人 | 在线导航福利 | 国产视频精品免费播放 | 99久久毛片 | 国产精品免费在线 | 国产69精品久久久久久久久久 | 黄色在线观看免费网站 | 91精品欧美一区二区三区 | 深爱激情五月网 | 欧美在线观看视频免费 | 人人干天天干 | 91成人在线视频观看 | 久久免费视频99 | 国产精品理论在线观看 | 狠狠狠狠狠狠天天爱 | 午夜精品影院 | 天天操天天艹 | 五月天六月婷 | 免费成人在线观看 | 精品女同一区二区三区在线观看 | 狠狠色狠狠色 | 欧美激情第八页 | 久久高清片 | 成人精品99| 91中文视频 | 国产精品免费观看在线 | 精品在线不卡 | 摸阴视频 | 久久免费一级片 | 国产精品久久久精品 | 日本精品久久久一区二区三区 | 777久久久| 91亚色在线观看 | 成年人免费在线观看网站 | 免费高清在线观看成人 | 精品黄色片 | 日韩v在线91成人自拍 | 国产麻豆视频 | 91亚洲网站| 91欧美在线| 国产在线视频一区二区 | 午夜免费久久看 | 一区二区三区日韩在线 | 人人藻人人澡人人爽 | 99精品免费久久久久久久久日本 | 亚洲精品短视频 | 美女福利视频一区二区 | 97超碰网| 欧美另类交在线观看 | 国产中文欧美日韩在线 | 99久热在线精品视频 | 国产女人18毛片水真多18精品 | 国产精品99久久免费黑人 | 精品福利视频在线 | 麻豆91网站| 欧美一级激情 | 成人中文字幕在线 | 成年人在线免费看视频 | 成人国产精品久久久春色 | 久久理论片 | 欧美在线视频一区二区三区 | 一区二区视频欧美 | 精品成人国产 | 国产精品久久99精品毛片三a | 成人wwwxxx视频 | 国产精品99久久免费观看 | 在线观看av网站 | 久久69精品久久久久久久电影好 | 激情综合啪 | 久久黄色小说视频 | 色五月色开心色婷婷色丁香 | 亚洲一区不卡视频 | 91免费看黄色 | 日韩中文字幕国产精品 | 夜夜狠狠 | 国产成人精品区 | 精品国产一区二区在线 | 黄色毛片在线看 | 色婷婷综合久久久中文字幕 | 91精品国产福利在线观看 | 日韩精品中文字幕在线不卡尤物 | 久青草视频 | 肉色欧美久久久久久久免费看 | www.99在线观看 | 91精品国产一区二区三区 | 国产美女主播精品一区二区三区 | 久久久电影网站 | 国内外成人免费在线视频 | 狠狠色丁香久久婷婷综合五月 | wwwwwww色 | 97超级碰碰碰视频在线观看 | 美女黄频网站 | 欧美日韩国产高清视频 | 亚洲天堂自拍视频 | 黄色性av | 亚洲精品999 | 在线免费观看涩涩 | 国产亚洲在线 | 国产成人精品综合 | 日韩欧美精品在线观看视频 | 天天色天天 | a在线免费观看视频 | 婷婷激情五月综合 | 久久久久亚洲精品国产 |