Spring MVC JSP頁面無法加載.jpg .css .js的解決方案


原文鏈接:


點擊打開鏈接


最近想自己用很牛逼的Spring+Hibernate開發框架動手擼一個博客系統,不要問我爲什麼,個人覺得Java比PHP的安全性更高,而且實在沒有心情去看wordpress下php文件冗長的代碼,就暫時性放下了自己去製作一個wordpress的主題。


邊玩邊學之後,對HTML5,CSS,JavaScript都有了一定點了解,晚上斷電之後,自己用記事本擼了一些html文件,準備第二天整合到Spring項目中。接着整合打時候,出現了JSP頁面無法加載  .jpg  , .css ,.js文件,路徑都沒有錯,花了我幾個小時,查遍了網上 的辦法,總算說解決了。真是日了狗了。


之所以不能加載這些文件的原因在這裏,web.xml文件下又這樣一段配置:


<!-- Processes application requests -->

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>



<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>*.png</url-pattern>

<url-pattern>*.js</url-pattern>

<url-pattern>*.css</url-pattern>

<url-pattern>*.jpg</url-pattern>

</servlet-mapping>

 <servlet-mapping>

         <servlet-name>appServlet</servlet-name>

     <url-pattern>/</url-pattern>

</servlet-mapping>

<p style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px; line-height: 24px;">加粗的地方<strong><url-pattern>/</url-pattern>,這個“/”一出現就攔截來所有的請求,包括我們使用<img src="xxx.jpg"></strong></p><p style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px; line-height: 24px;">或者說<link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />,文件的路徑都給攔截下來了,而所有available的請求url都是在Constroller裏使用類似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)這樣的註解配置的,這樣的話對js/css/jpg/gif等靜態資源的訪問就會得不到。。</p><p style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px; line-height: 24px;">我也試過這個辦法,再web.xml裏面加入這個段代碼,</p>
<pre name="code" class="html"> <servlet-mapping>

           <servlet-name>default</servlet-name>

          <url-pattern>*.png</url-pattern>

          <url-pattern>*.js</url-pattern>

          <url-pattern>*.css</url-pattern>

         <url-pattern>*.jpg</url-pattern>

</servlet-mapping>



Tomcat默認的servlet是default,據說是可以這樣找到我們要用的靜態文件,我試過之後就掛掉, 可能說我自己配錯了。

後來我在webapp目錄下新建了img,css,js文件夾,把靜態資源放進去,然後在servlet-context.xml配置裏增加了這麼幾行:


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

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

img/**映射到 ResourceHttpRequestHandler進行處理,location指定靜態資源的位置。調試成功,自我總結就是Spring太屌,得花大量時間去實踐,然而感覺是日了狗了。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章