關於web項目中靜態資源加載不了的一些解決思路


問題的產生:

<!--springMVC前端控制器加載-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--contextConfigLocation配置SpringMVC加載的配置文件(配置處理器,映射器等等)
    如果不配置contextConfigLocation,默認加載的是:/WEB-INF/servlet名稱-servlet.xml(springmvc-servlet.xml)
    -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/springmvc.xml</param-value>
    </init-param>
  </servlet>
    
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

在使用springmvc的DispatcherServlet去攔截所有的URL的時候,會將http://localhost:8080/blog/css/bootstrap.min.css這樣的靜態資源請求發送到controller層的方法里面處理,通過@RequestMapping注釋的篩選后,因為沒能匹配通過,所有頁面加載不了。

這是別的文章看到的,如果你的DispatcherServlet攔截 *.do或者*.action這樣的URL,就不存在訪問不到靜態資源的問題。如果你的DispatcherServlet攔截“/”,攔截了所有的請求,同時對*.js,*.jpg的訪問也就被攔截了。

其中解決方法在網上一般都能查到,修改或添加配置就可以,一般是三種解決方法,下面的倆個地址已經寫得非常清楚了:

https://blog.csdn.net/u013126379/article/details/52087308

https://blog.csdn.net/qq_30546099/article/details/71404574

 

但是我在用了上面的三個方法之后仍然得不到問題的解決,於是想到可能在JSP頁面上引入靜態資源的相對路徑寫錯了,於是用了絕對路徑,最終順利解決問題。步驟如下:

一開始是圖中紅色圈中的格式,用CRTL+左鍵,會有引用,我以為沒有錯,后來在POM添加了,

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>

在相對路徑前面加了${pageContext.request.contextPath},問題得到解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM