Spring MVC page render時jsp中元素相對路徑的解決辦法


前段時間做了用Spring Security實現的登錄和訪問權限控制的功能,但是page render使用的是InternalResourceResolver,即在spring的servlet配置文件中做如下配置: 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/pages/"/>

        <property name="suffix" value=".jsp"/>

</bean>

當controller返回一個view時,Spring MVC就會根據該配置中的設置到/WEB-INF/pages/路徑下尋找view名.jsp這個文件來進行頁面渲染。

 

通過這樣的方法,我在登錄頁面上顯示出來的是用最基本的html實現的一個form,沒有任何的樣式和圖片。

 

現在我對這個頁面進行了一些css的樣式和image的修飾,css和images分別放在了/WEB-INF/css/和/WEB-INF/images/路徑下。這樣,我的WEB-INF目錄下的結構是這樣的:

 

按照一般的相對路徑,在jsp里這樣寫可以找到images里和css里的文件:

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

<img src="../images/logo.png"> 

但是當程序在web container里運行時,這個相對地址並不是我們的硬盤里的相對地址,而是項目在web container里的相對地址。當頁面進行顯示時,由於InternalResourceViewResolver中的配置,使得對http://localhost:8080/SpringSecurity/login的訪問是在/WEB-INF/pages/路徑下找到相應的jsp。

 

所以在Spring MVC里希望通過相對路徑找到resource文件時需要做下面的配置:

 

在applicationContext.xml中:

<mvc:resources mapping="/images/*" location="WEB-INF/images/" />

<mvc:resources mapping="/css/*" location="WEB-INF/css/" />

然后在jsp的href里:

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"> 

${pageContext.request.contextPath}就是將url direct到了當前目錄下,然后再通過applicationContext中的配置來對該相對路徑進行map。這樣就能成功的在頁面上顯示images和css了。

 


免責聲明!

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



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