default-servlet-handler 无法访问html,default-servlet-handler不生效缘由,springmvc静态资源拦截方案比较...
springmvc為何要攔截靜態(tài)資源?
簡(jiǎn)單來(lái)講,為了請(qǐng)求的url不帶相似*.action,*.do,好比http://localhost:8080/system/index.action,spring團(tuán)隊(duì)統(tǒng)一風(fēng)格,而web項(xiàng)目配置的web.xml中,全部請(qǐng)求都必須走過(guò)DispatcherServlet,固然就包括了靜態(tài)資源,好比http://localhost:8080/html/index.html,為了解決這個(gè)問(wèn)題,spring給了兩種方案,下面咱們一塊兒來(lái)討論下兩種方案的使用和區(qū)別,給新手同窗們一個(gè)很自白,清晰的認(rèn)識(shí)!css
解決辦法
說(shuō)解決辦法以前,咱先來(lái)聊下web項(xiàng)目的結(jié)構(gòu),以下圖所示,你們能夠看到默認(rèn)webapp下有個(gè)WEB-INF文件夾,這個(gè)文件夾是提高文件安全級(jí)別的,若是不設(shè)置,是訪問(wèn)不到的,因此你們通常看到的資源文件(jsp,css,jss)都在WEB-INF文件夾下。html
解決辦法1:
若是項(xiàng)目是這樣配置的,你訪問(wèn)不到WEB-INF/css/下的文件,由于springmvc上下文定義了一個(gè)DefaultServletHttpRequestHandler用于處理靜態(tài)文件的,他作的工做是轉(zhuǎn)發(fā)給Spring默認(rèn)處理器DispatcherServlet,DispatcherServlet能處理webapp下沒(méi)有權(quán)限目錄文件,它不能處理WEB-INF文件夾,也就是說(shuō)你配置了,你可以訪問(wèn)html下的文件,可是你訪問(wèn)不了WEB-INF/css/下的文件,這多是文件夾權(quán)限緣由,根據(jù)官方文檔說(shuō)明,這樣配置能夠與解決方法2共存。下面咱們來(lái)看看方法2。web
解決辦法2:
location:對(duì)應(yīng)是根路徑spring
mapping:映射是訪問(wèn)路徑安全
經(jīng)過(guò)http://localhost:8080/css/index.css就能夠訪問(wèn)到被攔截的資源了。這種方式能解決方法1的局限狀況。mvc
總結(jié)
作個(gè)總結(jié)吧,我推薦這種方式2來(lái)解決訪問(wèn)靜態(tài)資源攔截問(wèn)題,我以為方法1能夠不寫,就按方法2作配置,夠用了。方法2可能配置的多一些,可是看起來(lái)比較清晰,更容易理解。謝謝童鞋們的觀看,若是喜歡或有疑惑,請(qǐng)點(diǎn)贊和留言哦!我是叫練,邊叫邊練。app
總結(jié)
以上是生活随笔為你收集整理的default-servlet-handler 无法访问html,default-servlet-handler不生效缘由,springmvc静态资源拦截方案比较...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于硬件工程师的真相:这行真的不行吗,敢
- 下一篇: C++智能指针模板类