2012-07-06 36 views
0

在Struts2應用程序中,任何其他來源(圖像,CSS,JavaScript文件)都不能被檢索到瀏覽器。沒有任何來源加載到瀏覽器的struts2中

例如,我在JSP頁面中添加了<img src="myimage.jpg" />,但圖像未在瀏覽器中查看。 JSP頁面和圖像存在於web文件夾中,而不是WEB-INF我確定該圖像存在於給定路徑中(我使用Netbeans IDE並自動提供路徑),我在相關位置手動檢查了圖像,沒關係。我不確定這是否是Struts問題(我不這麼認爲),但我創建了另一個普通的Java EE項目,它只包含JSP頁面,沒有包含struts框架,然後一切正常(圖像,CSS ,js打電話)。請任何人告訴我我的錯在哪裏?提前致謝。

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>/org.apache.struts2.dispatcher.FilterDispatcher</welcome-file> 
    </welcome-file-list> 
    <jsp-config> 
     <jsp-property-group> 
      <url-pattern>/account.jsp</url-pattern> 
      <include-prelude>/header/header.jsp</include-prelude> 
     </jsp-property-group> 
     <jsp-property-group> 
      <display-name>TopBanner</display-name> 
      <url-pattern>/*</url-pattern> 
      <include-prelude>/header.jsp</include-prelude> 
     </jsp-property-group> 
    </jsp-config> 
     <servlet-name>ItemAction</servlet-name> 
     <url-pattern>/ItemAction</url-pattern> 
    </servlet-mapping--> 
</web-app> 
+0

這是不是足夠的信息來幫助;我們對你的應用程序的配置,部署等一無所知。你說得對,它不是一個Struts問題。 – 2012-07-06 13:26:34

+0

@DaveNewton,謝謝,我在NetBeans IDE中創建了更多帶有struts2框架的應用程序。他們工作得很好(但第一次,他們也失敗了,我一次又一次地重建,然後他們跑得很好)。我仍然不明白問題是否存在。我把web.xml。 – 2012-07-06 16:28:37

回答

1

你必須明白的是,瀏覽器不知道你的請求是由一個servlet處理,然後由JSP。當它解析相對路徑時,它不會使用JSP的路徑作爲基本路徑來解析它們,而是使用被調用的URL的路徑。

例如,如果瀏覽器的地址欄包含以下地址:

http://localhost/app/foo/bar/baz.action 

和生成的HTML包含

<img src="myimage.jpg"/> 

瀏覽器將尋找圖像中

http://localhost/app/foo/bar/myimage.jpg 

,即使生成HTML的JSP位於webapp的根目錄中(即在URL http://localhost/app/theJsp.jsp

我建議總是使用絕對路徑的圖片,JS文件和其他資源:

<img src="<c:url value='/myimage.jpg'/>"/> 
+0

感謝您的回答。我只是直接嘗試一個普通的JSP(不是通過一個動作),也沒有任何動作被調用。 URL爲「http:// localhost:8084/OnlineBooking/index.jsp」。同樣,我也嘗試過使用JSTL。但不顯示靜止圖像。當我在頁面中打印URL時,它是'/ OnlineBooking'。 – 2012-07-06 10:35:22

1

如果您images目錄或文件夾位於web目錄。爲此

<img src="<%=request.getContextPath()%>/images/myimage.jpg" /> 

這個解決它

+0

謝謝。我按照你的說法嘗試過。但它還沒有工作。這是瀏覽器中'img'的URL src =「/ OnlineBooking/images/hill.jpg」'圖像hill.jpg存在於文件夾圖像和圖像文件夾在文件夾web'中。 – 2012-07-06 10:41:53

+0

@AashMhaharoon是'OnlineBooking'你的上下文路徑嗎?如果hill.jpg實際存在於'images'文件夾中,請檢查您的部署目錄。 – 2012-07-06 12:25:10

相關問題