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

SpringBoot靜態(tài)資源配置原理詳解

開發(fā) 前端
使用來自Spring MVC的ResourceHttpRequestHandler,因此可以通過添加自己的WebMvcConfigurer并覆蓋addResourceHandlers方法來修改該行為。

環(huán)境:Springboot2.7.10

默認(rèn)情況下,Spring Boot從類路徑中的/static(或/public或/resources或/META-INF/resources)目錄或ServletContext的根目錄中提供靜態(tài)內(nèi)容。它使用來自Spring MVC的ResourceHttpRequestHandler,因此可以通過添加自己的WebMvcConfigurer并覆蓋addResourceHandlers方法來修改該行為。

默認(rèn)情況下,資源映射在/**上,但是你可以使用spring.mvc.static-path-pattern配置屬性進(jìn)行修改。例如,將所有資源重新定位到/resources/**可以實(shí)現(xiàn)如下:

默認(rèn)靜態(tài)資源路徑

spring:
web:
resources:
static-locations:
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/

目錄結(jié)構(gòu)如下:

圖片

默認(rèn)訪問路徑:??http://localhost:8080/xxx.yy??

修改訪問路徑?

spring:
mvc:
static-path-pattern: /res/**

如上修改后訪問路徑:
?http://localhost:8080/res/xxx.yy??

注意:如果你使用的是舊版本Springboot,這里的靜態(tài)資源配置是spring.resources.static-locations

添加靜態(tài)資源路徑

spring:
web:
resources:
static-locations:
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
- file:///D:/images/

上面的:file:///D:/images/

編程方式配置

@Configuration
public class WebConfig implements WebMvcConfigurer {


@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("file:///d:/images/") ;
registry.addResourceHandler("/h5/**").addResourceLocations("file:///d:/h5/") ;
}

}

上面配置了2個(gè)文件系統(tǒng)的資源目錄,分別以:/static/**,/h5/**路徑進(jìn)行訪問

訪問:
?http://localhost:8080/static/xxx.yy,http://localhost:8080/h5/xxx。??

WebJars靜態(tài)資源

除了前面提到的“標(biāo)準(zhǔn)”靜態(tài)資源位置之外,Webjars內(nèi)容還有一個(gè)特殊情況。任何路徑在/webjars/**中的資源都是從jar文件中提供的,前提是它們以webjars格式打包的。

如果你的應(yīng)用程序打包為jar,請不要使用src/main/webapp目錄。盡管這個(gè)目錄是一個(gè)常見的標(biāo)準(zhǔn),但它只適用于war打包,并且如果你生成一個(gè)jar,它會被大多數(shù)構(gòu)建工具默默地忽略。

Spring Boot還支持Spring MVC提供的高級資源處理功能,允許使用緩存破壞靜態(tài)資源或?yàn)閃ebjars使用版本不可知的URL等用例。

要為Webjars使用版本不可知的url,請?zhí)砑觲ebjars-locator-core依賴項(xiàng)。然后聲明你的webjar。以jQuery為例,添加"/webjars/jQuery/jQuery .min.js"會得到"
/webjars/jQuery/x.y.z/jQuery .min.js",其中x.y.z是webjar版本。

為了使用緩存破壞,下面的配置為所有靜態(tài)資源配置緩存破壞解決方案,有效地在url中添加內(nèi)容哈希,例如<link href="
/css/spring-2a2d595e6ed9a0b24f027f2b63b134d6.css"/>:?

spring:
web:
resources:
chain:
strategy:
content:
enabled: true
paths: "/**"

靜態(tài)資源訪問原理

SpringMVC核心組件配置:?

@Configuration(proxyBeanMethods = false)
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();
// 注入當(dāng)前環(huán)境中所有的WebMvcConfigurer類型的Bean
@Autowired(required = false)
public void setConfigurers(List<WebMvcConfigurer> configurers) {
if (!CollectionUtils.isEmpty(configurers)) {
// 添加到上面的WebMvcConfigurerComposite中
this.configurers.addWebMvcConfigurers(configurers);
}
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 調(diào)用WebMvcConfigurerComposite#addResourceHandlers方法,該方法內(nèi)部
// 遍歷所有的WebMvcConfigurer分別調(diào)用addResourceHandlers方法
this.configurers.addResourceHandlers(registry);
}
}
class WebMvcConfigurerComposite implements WebMvcConfigurer {
private final List<WebMvcConfigurer> delegates = new ArrayList<>();
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
for (WebMvcConfigurer delegate : this.delegates) {
delegate.addResourceHandlers(registry);
}
}
}

Spring提供的一個(gè)WebMvcConfigurer實(shí)現(xiàn)?

public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// ...
// addResourceHandler注冊資源實(shí)例
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
// getStaticPathPattern獲取配置文件中spring.mvc.staticPathPattern屬性值
addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
// getStaticLocations獲取配置文件中spring.web.resources.staticLocations屬性值
// 該方法調(diào)用后就會將資源訪問路徑與具體資源路徑進(jìn)行關(guān)聯(lián)
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
registration.addResourceLocations(resource);
}
});
}
private void addResourceHandler(ResourceHandlerRegistry registry, String pattern, String... locations) {
addResourceHandler(registry, pattern, (registration) -> registration.addResourceLocations(locations));
}
private void addResourceHandler(ResourceHandlerRegistry registry, String pattern, Consumer<ResourceHandlerRegistration> customizer) {
if (registry.hasMappingForPattern(pattern)) {
return;
}
// 創(chuàng)建并獲取資源訪問模式的的實(shí)例
ResourceHandlerRegistration registration = registry.addResourceHandler(pattern);
// 自定義配置
customizer.accept(registration);
// 緩存設(shè)置
registration.setCachePeriod(getSeconds(this.resourceProperties.getCache().getPeriod()));
registration.setCacheControl(this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl());
registration.setUseLastModified(this.resourceProperties.getCache().isUseLastModified());
customizeResourceHandlerRegistration(registration);
}
}

ResourceHandlerRegistry?

public class ResourceHandlerRegistry {
private final List<ResourceHandlerRegistration> registrations = new ArrayList<>();
// 為每一種資源創(chuàng)建ResourceHandlerRegistration實(shí)例,添加到List集合中
public ResourceHandlerRegistration addResourceHandler(String... pathPatterns) {
ResourceHandlerRegistration registration = new ResourceHandlerRegistration(pathPatterns);
this.registrations.add(registration);
return registration;
}
}

通過上面的源碼我們只看到收集容器中所有WebMvcConfigurer類型的Bean,然后分別調(diào)用重寫的addResourceHandlers方法接著為每一種資源訪問路徑/xxx創(chuàng)建對應(yīng)的ResourceHandlerRegistration實(shí)例,并且將這些實(shí)例添加到ResourceHandlerRegistry中。

這里有2個(gè)疑問:

  1. ResourceHandlerRegistry是如何創(chuàng)建的
  2. 當(dāng)訪問這些靜態(tài)資源時(shí)對應(yīng)的HandlerMapping及Adapter又是誰如何與上面的ResourceHandlerRegistration關(guān)聯(lián)的。

ResourceHandlerRegistry創(chuàng)建

上面的
DelegatingWebMvcConfiguration配置類繼承WebMvcConfigurationSupport,該父類中有如下方法:?

public class WebMvcConfigurationSupport {
// 該Bean是一個(gè)HandlerMapping(這是個(gè)接口),用來確定當(dāng)前請求對應(yīng)的處理器類
@Bean
public HandlerMapping resourceHandlerMapping(
@Qualifier("mvcContentNegotiationManager") ContentNegotiationManager contentNegotiationManager,
@Qualifier("mvcConversionService") FormattingConversionService conversionService,
@Qualifier("mvcResourceUrlProvider") ResourceUrlProvider resourceUrlProvider) {
PathMatchConfigurer pathConfig = getPathMatchConfigurer();
// 這里創(chuàng)建了資源注冊器類
ResourceHandlerRegistry registry = new ResourceHandlerRegistry(this.applicationContext, this.servletContext, contentNegotiationManager, pathConfig.getUrlPathHelper());
// 添加注冊靜態(tài)資源,該訪問正好被子類DelegatingWebMvcConfiguration重寫了
// 而 在上面源碼看到,子類就是遍歷了容器中所有的WebMvcConfigurer對應(yīng)的addResourceHandlers方法
// 到這里你就清楚了靜態(tài)資源的注冊入口,接下來就是這些靜態(tài)資源對應(yīng)是如何與HandlerMapping關(guān)聯(lián)的
addResourceHandlers(registry);
// 獲取HandlerMapping對象
AbstractHandlerMapping handlerMapping = registry.getHandlerMapping();
// ...
return handlerMapping;
}
}

通過ResourceHandlerRegistry獲取HandlerMapping對象?

public class ResourceHandlerRegistry {
protected AbstractHandlerMapping getHandlerMapping() {
// 如果沒有配置靜態(tài)資源,那么就沒有必要注冊HandlerMapping了,直接返回null
if (this.registrations.isEmpty()) {
return null;
}
Map<String, HttpRequestHandler> urlMap = new LinkedHashMap<>();
// 遍歷上面注冊的所有靜態(tài)資源對應(yīng)的ResourceHandlerRegistration
for (ResourceHandlerRegistration registration : this.registrations) {
// 將ResourceHandlerRegistration對象轉(zhuǎn)換為ResourceHttpRequestHandler對象
ResourceHttpRequestHandler handler = getRequestHandler(registration);
for (String pathPattern : registration.getPathPatterns()) {
// 以配置的訪問路徑為key,對應(yīng)的ResourceHttpRequestHandler為處理句柄
// 當(dāng)一個(gè)請求過來如果匹配了當(dāng)前的模式,那么就會用對應(yīng)的ResourceHttpRequestHandler對象進(jìn)行處理
urlMap.put(pathPattern, handler);
}
}
return new SimpleUrlHandlerMapping(urlMap, this.order);
}
private ResourceHttpRequestHandler getRequestHandler(ResourceHandlerRegistration registration) {
// 獲取
ResourceHttpRequestHandler handler = registration.getRequestHandler();
handler.setServletContext(this.servletContext);
handler.setApplicationContext(this.applicationContext);
try {
// 執(zhí)行初始化
handler.afterPropertiesSet();
}
return handler;
}
}
public class ResourceHandlerRegistration {
protected ResourceHttpRequestHandler getRequestHandler() {
// 創(chuàng)建對象
ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();
// ...
// 設(shè)置路徑
handler.setLocationValues(this.locationValues);
handler.setLocations(this.locationsResources);
if (this.cacheControl != null) {
handler.setCacheControl(this.cacheControl);
}
// ... 這里緩存設(shè)置
return handler;
}
}

ResourceHttpRequestHandler對應(yīng)的HandlerAdapter對象?

public class HttpRequestHandlerAdapter implements HandlerAdapter {


@Override
public boolean supports(Object handler) {
// ResourceHttpRequestHandler實(shí)例HttpRequestHandler子類
return (handler instanceof HttpRequestHandler);
}


@Override
@Nullable
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 直接調(diào)用ResourceHttpRequestHandler#handleRequest方法
((HttpRequestHandler) handler).handleRequest(request, response);
return null;
}
}


責(zé)任編輯:武曉燕 來源: 實(shí)戰(zhàn)案例錦集
相關(guān)推薦

2009-06-04 20:19:16

Eclipse插件Jinto資源配置

2022-04-19 16:09:53

數(shù)字化轉(zhuǎn)型數(shù)字經(jīng)濟(jì)信息安全

2018-01-23 11:00:10

Hadoop3.0Yarn資源

2009-10-27 14:31:57

linux靜態(tài)路由

2022-12-19 08:00:00

SpringBootWeb開發(fā)

2010-12-12 21:58:00

半靜態(tài)語言動(dòng)態(tài)語言靜態(tài)語言

2010-11-19 17:42:13

2024-11-06 09:54:58

SpringJava開發(fā)

2022-06-08 09:56:46

靜態(tài)鏈接Linux命令

2025-01-08 00:09:00

云平臺云計(jì)算管理

2025-02-27 14:01:50

2023-10-04 18:24:54

wpf動(dòng)態(tài)資源

2009-12-09 11:04:14

浮動(dòng)靜態(tài)路由配置

2023-09-07 08:39:39

copy屬性數(shù)據(jù)源

2019-09-03 15:36:58

ApacheTomcat配置

2020-07-08 13:46:27

ApacheTomcat配置

2023-10-15 12:18:36

MPLS網(wǎng)絡(luò)

2025-02-27 00:10:19

2023-07-20 10:04:37

底層路由配置

2025-09-18 07:51:35

點(diǎn)贊
收藏

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

欧美freesex交免费视频| 国产成人免费精品| 99久久久免费精品国产一区二区| 69视频在线播放| 在线国产视频一区| 亚洲一区二区av| 香蕉久久一区二区不卡无毒影院| 欧美日本亚洲| 99热这里只有精品1| 国产欧美一区二区三区国产幕精品| 国产一区二区日韩精品欧美精品| 亚洲一区二区三区四区精品| 少妇淫片在线影院| 亚洲欧洲一区二区三区| 久久99精品国产99久久| 国产原创中文av| 久久国产免费| 欧美激情a在线| 亚洲综合第一区| 日韩精品免费一区二区夜夜嗨| 欧美男女性生活在线直播观看| 久久久久99精品成人片| 日本在线免费| 99久久777色| 91大片在线观看| 夜夜躁日日躁狠狠久久av| 韩国亚洲精品| 操日韩av在线电影| 国产又粗又硬视频| 综合色就爱涩涩涩综合婷婷| 精品99999| 性生活在线视频| 国模私拍国内精品国内av| 精品久久久一区| 国产美女作爱全过程免费视频| 日本精品www| 免费在线观看a级片| 国产欧美一区| 日韩精品极品在线观看| 国产成人精品一区二区三区在线观看 | a级片在线免费| 亚洲免费在线视频一区 二区| 日本一区二区精品视频| 青青草手机在线| www.激情成人| 国产在线欧美日韩| 色一情一乱一乱一区91av| 国产精品综合久久| 91亚洲精品在线| 国产普通话bbwbbwbbw| 麻豆精品一区二区综合av| 国产精品69av| 日韩精选在线观看| 热久久免费视频| 国产精品h在线观看| 三级网站在线播放| 日韩国产在线一| 国产精品久久久久久久久久ktv | 好看的日韩精品| 人妻与黑人一区二区三区| 福利视频网站一区二区三区| 91在线高清免费观看| 国产三级在线观看视频| 国产精品正在播放| 成人免费在线一区二区三区| 亚洲精品无amm毛片| 成人小视频在线| 久久99精品久久久久久久久久| 午夜影院免费视频| 久久久久99精品一区| 日韩欧美亚洲在线| 午夜视频在线观看网站| 亚洲欧美国产毛片在线| 红桃一区二区三区| 2021天堂中文幕一二区在线观| 午夜国产精品一区| 欧美日韩亚洲一二三| 巨胸喷奶水www久久久免费动漫| 欧美视频在线观看一区| 一级黄色在线播放| 精品资源在线| 亚洲性日韩精品一区二区| 国产精品视频看看| 激情久久中文字幕| 国产va免费精品高清在线观看| 中日精品一色哟哟| 国产麻豆成人传媒免费观看| 国产精品日韩欧美一区二区| 国产一级网站视频在线| 亚洲视频一二三| 日本网站免费在线观看| 成人精品国产亚洲| 欧美成人r级一区二区三区| ass精品国模裸体欣赏pics| 青青草91久久久久久久久| 久热精品视频在线免费观看| 日韩欧美视频在线免费观看| 免费观看在线色综合| 99re在线观看| 日本一本草久在线中文| 亚洲欧美一区二区久久| 一女被多男玩喷潮视频| 国产精品麻豆| 亚洲性日韩精品一区二区| 中文字幕人妻一区二| 亚洲综合不卡| 97免费资源站| jizz在线观看中文| 图片区小说区区亚洲影院| 波多结衣在线观看| 日韩a级大片| 精品国内亚洲在观看18黄| 免费观看一区二区三区毛片| 精品伊人久久久久7777人| 精品久久久久久一区二区里番| 麻豆视频在线播放| 色噜噜狠狠成人中文综合| 日本人妻一区二区三区| 日韩电影一区| 国产999精品视频| 欧美一级免费片| 亚洲天堂2014| 青青青国产在线视频| 日本一区精品视频| 色噜噜亚洲精品中文字幕| 免费黄色网址在线| a美女胸又www黄视频久久| 男人日女人的bb| 欧美成人三级| 伊人久久五月天| 亚洲乱码国产乱码精品| av网站免费线看精品| 青青草视频在线视频| 国产aⅴ精品一区二区四区| 在线播放日韩av| 日韩黄色片网站| 久久欧美中文字幕| 九九爱精品视频| 韩国精品福利一区二区三区| 欧美激情按摩在线| 精品人妻久久久久一区二区三区 | 91毛片在线观看| 免费看黄在线看| 国产乱论精品| 久久久在线观看| 亚洲国产精品久久久久久久| 伊人夜夜躁av伊人久久| 亚洲视频在线不卡| 重囗味另类老妇506070| 亚洲精品欧美日韩| 18在线观看的| 亚洲福利视频专区| 日韩免费一级片| av在线不卡免费看| 日韩欧美在线播放视频| 国产精品中文字幕亚洲欧美| 日韩av电影院| av播放在线| 7777女厕盗摄久久久| 男女羞羞免费视频| 丁香一区二区三区| 男人揉女人奶房视频60分| 国产精品午夜一区二区三区| 国产精品扒开腿爽爽爽视频| 最新av网站在线观看| 337p亚洲精品色噜噜狠狠| 天堂av网手机版| 国产一二三精品| 成人午夜精品久久久久久久蜜臀| 欧美激情影院| 国产精品美女www| 爆操欧美美女| 日韩国产欧美精品一区二区三区| 9i精品福利一区二区三区| 日本一区二区动态图| 两性午夜免费视频| 亚洲二区免费| 涩涩涩999| 亚州一区二区| 国产成人高清激情视频在线观看 | 久久99高清| 性久久久久久久| 国产一区私人高清影院| 麻豆av在线导航| 精品国产91乱码一区二区三区 | 三级网站在线免费观看| 麻豆精品新av中文字幕| 800av在线免费观看| 婷婷精品在线观看| 成人精品一区二区三区电影免费| 成全电影大全在线观看| 国产一区二区三区网站| 亚洲av永久无码国产精品久久 | 国产91精品对白在线播放| 国产欧美va欧美va香蕉在线| 超免费在线视频| 日韩在线视频网站| 视频福利在线| 欧美一区二区福利在线| 欧美在线观看不卡| 一区二区三区四区亚洲| 91l九色lporny| zzijzzij亚洲日本少妇熟睡| 性猛交ⅹ×××乱大交| 尹人成人综合网| 中文字幕免费精品一区| 妺妺窝人体色www在线观看| 色婷婷av一区二区三区丝袜美腿| 国产精品视频一区二区三区四| 草美女在线观看| 久久视频这里只有精品| 撸视在线观看免费视频| 欧美久久久久久久久| 国产又爽又黄的视频| 亚洲在线视频网站| av最新在线观看| 97精品久久久久中文字幕| 国产男女无遮挡猛进猛出| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲 欧美 日韩 国产综合 在线| 一区二区三区午夜视频| 亚洲高清精品中出| 欧美男gay| 久久av一区二区| 国产福利资源一区| 91青青草免费在线看| 国产aa精品| 国产精品自拍偷拍| 影音成人av| 国产极品jizzhd欧美| 345成人影院| 奇米成人av国产一区二区三区| 欧洲中文在线| 久久6免费高清热精品| 国产激情在线视频| 久久精品国产亚洲精品| yiren22综合网成人| 国产性猛交xxxx免费看久久| 免费在线观看污视频| 亚洲精品理论电影| 偷拍自拍在线| 精品亚洲夜色av98在线观看| 日韩欧美电影在线观看| 日韩精品在线看| 欧美zzoo| 中文字幕av一区中文字幕天堂| 国产免费av在线| 中日韩美女免费视频网址在线观看 | 日韩一区视频在线| 美女国产在线| 欧美成人手机在线| 蜜乳av一区| 午夜精品免费视频| 麻豆免费在线| 日韩av免费一区| 青青热久免费精品视频在线18| 国产精品网站入口| 99精品视频在线免费播放| 亚洲综合av影视| 国产日韩三级| 日本成人黄色| 999久久久精品国产| 国产日产欧美一区二区| 精品91在线| 激情五月亚洲色图| 国产自产高清不卡| 91人妻一区二区| 91啪亚洲精品| 粉嫩精品久久99综合一区| 亚洲日韩欧美一区二区在线| 五月天婷婷网站| 日韩欧美在线字幕| 国产又粗又猛又爽| 欧美精品一区男女天堂| 久久久久国产精品嫩草影院| 日韩在线观看视频免费| 欧美xxxx免费虐| 国产成人+综合亚洲+天堂| 成人黄色理论片| 久久99精品久久久久久水蜜桃| 欧洲激情综合| 久久久久久久9| 久久精品一区二区三区中文字幕| 777一区二区| heyzo一本久久综合| 免费看的黄色录像| 亚洲国产精品视频| 中文字幕人妻一区二区三区视频| 精品免费99久久| yjizz视频网站在线播放| 久久久久久久激情视频| 日本精品另类| 国产伦精品一区二区三区在线| 教室别恋欧美无删减版| 大片在线观看网站免费收看| 久久久噜噜噜久久狠狠50岁| 色男人天堂av| 国产日韩欧美精品一区| 九热这里只有精品| 欧美色综合网站| 色婷婷av一区二区三| 日韩视频精品在线| 欧美日韩在线观看首页| 91福利视频导航| 日韩在线欧美| 亚洲午夜精品久久久久久人妖| 国产一区二区伦理片| 美女被到爽高潮视频| 婷婷久久综合九色综合绿巨人| 国产精品特级毛片一区二区三区| 亚洲欧美日韩精品久久亚洲区| 色网在线观看| 成人亚洲激情网| 欧美一站二站| 日本三级免费观看| 成人高清av在线| 欧美日韩在线国产| 制服丝袜在线91| 成年在线电影| 欧美中文字幕在线播放| 国产一区二区三区亚洲| 400部精品国偷自产在线观看| 奇米色777欧美一区二区| 91精品国产自产| 亚洲国产毛片aaaaa无费看 | 国产成人在线观看免费网站| 久久久久久久久福利| 色老综合老女人久久久| 欧洲综合视频| 欧美在线欧美在线| 午夜先锋成人动漫在线| 欧美 日韩 国产在线观看| 成人av在线网站| 国产精品成人国产乱| 亚洲成人黄色在线观看| 波多野结依一区| 国产激情美女久久久久久吹潮| 女生裸体视频一区二区三区| 肉色超薄丝袜脚交| 亚洲人成在线播放网站岛国| 中文字幕在线观看第二页| 中日韩美女免费视频网址在线观看 | 福利视频一区二区三区| 欧美视频福利| 成人在线观看一区二区| 亚洲va欧美va人人爽午夜| 国产 日韩 欧美 精品| 久久久久亚洲精品| 欧美激情网址| 少妇性l交大片| 中文成人综合网| 国产精品污视频| 欧美黄色小视频| 久久久精品国产**网站| 国产91在线视频观看| 国产亚洲一区二区三区在线观看 | 精品丝袜在线| 免费国产一区二区| 手机精品视频在线观看| 东京热无码av男人的天堂| 欧美人xxxx| 丁香花高清在线观看完整版| 麻豆91av| 蜜桃视频一区二区三区在线观看| 天堂网avav| 亚洲福利视频久久| 大胆人体一区二区| 三区精品视频| 国产成人啪免费观看软件| 日韩乱码一区二区| 亚洲色图美腿丝袜| 成人在线啊v| 老太脱裤让老头玩ⅹxxxx| 久久久综合视频| 国产绿帽刺激高潮对白| 久久久久久久电影一区| 国产永久精品大片wwwapp| 九九热精品国产| 亚洲成在线观看| 高清福利在线观看| 91精品久久久久久蜜桃| 一本综合久久| 中国一级片在线观看| 亚洲第一中文字幕| 91精品美女| 18黄暴禁片在线观看| 国产亚洲va综合人人澡精品| 国产视频在线免费观看| 欧美中文在线观看国产| 五月开心六月丁香综合色啪 | 7777免费精品视频| 97色伦图片97综合影院| 久久久久久久无码| 欧美日韩国产影片| 女海盗2成人h版中文字幕| 老司机av福利| 国产亚洲欧美日韩在线一区| 精品国精品国产自在久不卡| 国产精品国产三级国产aⅴ9色 | 丝袜制服一区二区三区|