簡體   English   中英

Spring MVC靜態資源定位和映射

[英]Spring MVC static resource location and mapping

我在Spring MVC中處理css文件時遇到問題。 css文件的位置和映射有問題。

如果css文件位於:

-src
  -main
     +java
     +resources
     -webapp
        -css
           style.css
        +WEB-INF

(Maven項目)

我用:

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

dispatcher-servlet.xml ,並使用以下命令在jsp進行訪問:

<head>
  <title>Insert title here</title>
  <link href="/css/style.css" rel="stylesheet" type="text/css">
</head>

使用JSTL c標簽解決上下文路徑問題:

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 ...
 <link rel="stylesheet" type="text/css" href="<c:url value='/css/style.css'/>"/>

這將為您提供:

 <link rel="stylesheet" type="text/css" href="/{context-path}/css/style.css"/>

建議使用此標記,並且您應該用它包裝所有url,因為JSLT處理器將為您生成正確的上下文路徑,即使您以后決定更改上下文路徑而不必遍歷所有jsp文件中的每個鏈接。

要解決此問題,以便您的代碼可以在生產中使用的實際路徑下運行,請在JSP頁面中使用<base>標記,如下所示:

<base href="http://localhost:8081/table/" target="_blank" />

這將確保可以使用完整路徑來表示JSP頁面中的所有其余相對路徑:

<link href="/css/style.css" rel="stylesheet" type="text/css">

為了進一步閱讀,這里是Mozilla開發人員中心關於HTML基本元素用法的參考。 此外,此博客文章也可能有助於您透視使用客戶端代碼,尤其是當您與不是Java開發人員的Web設計人員一起工作時。


注意:此外,如果將@gigadot的建議解決方案結合使用以將c:url標記與基本標記一起使用,則可以避免需要編輯站點上的每個鏈接並弄亂HTML的麻煩,同時仍可以base標簽是動態的,因此,如果您更改上下文路徑,它仍然會在所有地方反映出來,但是不會將您緊密地綁定到框架。

鏈接到該答案,以便將使用<c:url標記的功勞歸功於@gigadot,並在此處進行記錄,以便其他人可以從一起使用兩者的結合知識中受益。

<base href="<c:url value='/table' />" target="blank" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM