国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java SpringMVC 集成靜態(tài)資源的方式你了解嗎

Java SpringMVC 集成靜態(tài)資源的方式你了解嗎

2022-03-01 11:55路人甲Java Java教程

本篇文章主要介紹了SpringMVC集成靜態(tài)資源的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1、本文內(nèi)容

  • 靜態(tài)資源 & jsp 是被誰(shuí)處理的?
  • 如何讓 springmvc 處理所有請(qǐng)求?
  • springmvc 如何處理靜態(tài)資源?
  • springmvc 處理靜態(tài)資源的 2 種方案、區(qū)別、原理詳解

 

2、靜態(tài)資源 & jsp 是被誰(shuí)處理的?

不知大家是否注意了一個(gè)問(wèn)題,我們將 web 項(xiàng)目發(fā)布到 tomcat 后,可以直接訪問(wèn) jsp 后綴的文件,或者直接訪問(wèn)項(xiàng)目中的靜態(tài)資源(js/css/圖片之類的文件),只要路徑寫的沒(méi)有問(wèn)題,都可以正常在瀏覽器中顯示,大家是否思考過(guò),是誰(shuí)在處理這個(gè)請(qǐng)求呢?

tomcat 是一個(gè) servlet 容器,servlet 容器中通常有 servlet 來(lái)處理各種請(qǐng)求,那么當(dāng)我們?cè)L問(wèn)靜態(tài)資源或者 jsp 的時(shí)候,當(dāng)然也是由 servlet 來(lái)處理這些請(qǐng)求的,但是我們并沒(méi)有在 web.xml 中配置由哪個(gè) servlet 來(lái)處理這些請(qǐng)求啊,這是因?yàn)?tomcat 中自動(dòng)幫我們配置了一些默認(rèn)的 servlet 來(lái)處理這類的請(qǐng)求。

tomcat 的安裝目錄中有個(gè) web.xml 文件,位于(apache-tomcat-9.0.46\conf\web.xml),這個(gè)文件相當(dāng)于對(duì)發(fā)布到 tomcat 中的所有 web 項(xiàng)目的默認(rèn)配置,我們來(lái)看一下這個(gè)文件,有幾個(gè)重要的 servlet 配置信息,這些 servlet 可以用來(lái)處理 jsp 后置的文件或者靜態(tài)資源,抽取部分配置如下

<servlet>
<servlet-name>defaultservlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServletservlet-class>
<load-on-startup>1load-on-startup>
servlet>
<servlet>
<servlet-name>jspservlet-name>
<servlet-class>org.apache.jasper.servlet.JspServletservlet-class>
<load-on-startup>3load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>jspservlet-name>
<url-pattern>*.jspurl-pattern>
<url-pattern>*.jspxurl-pattern>
servlet-mapping>

配置中主要定義了 2 個(gè) servlet

JspServlet 用來(lái)處理 jsp 文件

DefaultServlet 會(huì)處理/開(kāi)頭的請(qǐng)求,這里重點(diǎn)說(shuō)下這個(gè) servlet 的處理邏輯,它會(huì)處理所有其他 servlet 不匹配的請(qǐng)求,當(dāng)一個(gè)請(qǐng)求過(guò)來(lái)之后,會(huì)先去匹配其他的 servlet,當(dāng)找不到匹配的 servlet 的時(shí)候,才會(huì)走 DefaultServlet

我們可以在項(xiàng)目中的 web.xml 中對(duì) tomcat/config/web.xml 中的配置進(jìn)行覆蓋,即項(xiàng)目中的 web.xml 相對(duì)于 tomcat 中的 web.xml 有更高的優(yōu)先級(jí)。

 

3、如何讓 springmvc 處理所有請(qǐng)求?

如果我們想讓 springmvc 來(lái)處理所有的請(qǐng)求,怎么做呢?只需修改 web.xml 中的配置,將 springmvc 這個(gè) servlet 的 url-pattern 的值設(shè)置為/就可以了,此時(shí)所有的請(qǐng)求都會(huì)被 springmvc 處理,即所有的請(qǐng)求都會(huì)被DispatcherServlet處理。

Java SpringMVC 集成靜態(tài)資源的方式你了解嗎

 

4、問(wèn)題來(lái)了:靜態(tài)資源 404 了

當(dāng)我們將上面 springmvc 的 url-pattern 改為/時(shí),大家可以自己去試試,此時(shí)再訪問(wèn)靜態(tài)資源的時(shí)候,如下圖,會(huì)報(bào) 404,這個(gè)請(qǐng)求被 DispatcherServlet 接收了,但是這個(gè) servlet 默認(rèn)情況下并沒(méi)有處理靜態(tài)資源的能力,即找不到請(qǐng)求的資源,所以才會(huì)報(bào) 404

Java SpringMVC 集成靜態(tài)資源的方式你了解嗎

springmvc 提供了 2 種解決方案,來(lái)看下。

 

5、方案 1:使用

在 springmvc 的配置文件中添加下面配置

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>

這里說(shuō)一下原理

1、加入配置后,框架會(huì)創(chuàng)建DefaultServletHttpRequestHandler對(duì)象,這個(gè)對(duì)象會(huì)將請(qǐng)轉(zhuǎn)發(fā)給 tomcat 的 default 這個(gè) servlet 處理,所以靜態(tài)資源就可以正常訪問(wèn)了

2、注意:配置中的第 1 行也必須加上,如果不加上,@RequestMapping 的請(qǐng)求就無(wú)法處理了

3、這種用法有個(gè)前提是,web 容器中需要有 default 這個(gè) servlet,且這個(gè) servlet 可以處理靜態(tài)資源

 

6、方案 2:使用

從 spring3.0 版本后,spring 定義了專門處理靜態(tài)資源訪問(wèn)請(qǐng)求的處理器ResourceHttpRequestHandler,并且添加了標(biāo)簽,用來(lái)處理靜態(tài)資源無(wú)法訪問(wèn)的問(wèn)題。

需要在 springmvc 配置文件中添加如下配置

<mvc:annotation-driven/>
<mvc:resources mapping="/imgs/**" location="/static/imgs/"/>
<mvc:resources mapping="/css/**" location="/static/css/"/>
<mvc:resources mapping="/js/**" location="/static/js/"/>

mvc:resource 標(biāo)簽用來(lái)指定請(qǐng)求的靜態(tài)資源的 url 和本地地址的映射關(guān)系

mapping:用來(lái)指定請(qǐng)求的地址的,比如/imgs/**:可以匹配任何以 imgs 開(kāi)頭的 url,如:/imgs/1.jpg、/imgs/2.jpg、/imgs/order/3.jpg

location:用來(lái)指定靜態(tài)資源所在項(xiàng)目中的目錄

注意:配置中的第 1 行也必須加上,如果不加上,@RequestMapping 的請(qǐng)求就無(wú)法處理了

這種用法不依賴于 web 容器,所以比第一種方案要好一些,也建議大家用這種方案。

上面代碼中配置了 3 行 mvc:resources,可以優(yōu)化下,如下

<mvc:resources mapping="/static/**" location="/static/"/>
</mvc:resources mapping=

 

7、總結(jié)

tomcat 默認(rèn)能夠處理 jsp 和靜態(tài)資源,是因?yàn)?tomcat 中默認(rèn)有 2 個(gè) servlet:default 和 jsp

到此我們已經(jīng)知道如何讓 springmvc 來(lái)處理所有請(qǐng)求了,只需要在 web.xml 中調(diào)整一下 url-pattern 的值為/就可以了

默認(rèn)情況下,springmvc 無(wú)法處理靜態(tài)資源,本文介紹了 2 種方式,大家可以回頭在再去看看,第一種需要依賴于 web 容器中的 default 這個(gè) servlet,使用上面對(duì) web 容器有依賴作用;而第 2 種方式是 springmvc 推薦的方式,更好一些,對(duì) web 容器沒(méi)有依賴

不管用那種方式,都不要忘記了這個(gè)注解,否則咱們自定義的 controller 中的@RequestMapping 就無(wú)效了

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/likun557/article/details/119582956

延伸 · 閱讀

精彩推薦
942
主站蜘蛛池模板: 国产中文视频 | 一级做a爰片性色毛片精油 欧美中文字幕在线观看 | 色视频在线看 | 久久久性色精品国产免费观看 | 日韩a∨精品日韩在线观看 国产高清视频在线观看 | 中文字幕在线免费 | 国产精品久久久久久久久久久免费看 | 五月激情天 | 中文字幕一区二区三区乱码图片 | 国产一区二区久久 | 天天影视网色香欲综合网无拦截 | 国产精品久久久久久亚洲调教 | 久草热8精品视频在线观看 久久亚洲精品中文字幕 | 国产美女网站 | 亚洲精品国产乱码在线看蜜月 | 欧美精品不卡 | 成人一区二区三区 | 97成人在线 | 国产一区二区在线免费观看 | 精品自拍视频 | 亚洲一区二区三区蜜桃 | 日韩 欧美 中文 | 国产麻豆乱码精品一区二区三区 | 大片免费播放在线观看视频 | a∨色狠狠一区二区三区 | 国产最新一区 | 日本在线观看 | 日本一区二区三区精品视频 | 91精品在线播放 | 日产精品一区二区三区在线观看 | 日本高清视频在线播放 | 中文字幕中文字幕 | 99久久婷婷国产精品综合 | 午夜在线视频播放 | 久久久久久网站 | 在线视频一区二区三区 | av入口| 午夜影院在线观看 | 日韩一二三区视频 | 久久久久久久av | 亚洲一区二区三区四区在线 |