2012-10-11 29 views
8

Ich weiß, diese Frage wurde oft gestellt, aber ich bin nicht in der Lage, herauszufinden, was das Problem ist. Ich habe den Ordner images unter dem Ordner src/main/webapp (dies ist ein Maven-Web-Projekt). Ich habe die index.jsp im Ordner src/main/webapp/WEBINF/views.Keine Bilder im Frühjahr MVC

Ich versuche, die Bilder und andere Ressourcen wie CSS und JS wie diese zuzugreifen:

<img src="/images/left_arrow.png" alt="" />

Aber die Bilder werden nicht angezeigt zu werden. Hier

ist die Datei web.xml

<web-app 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" 
version="3.0"> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

Hier ist die WEB-INF/mvc-Dispatcher-servlet.xml Datei

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<context:component-scan base-package="com.ravi.WebApp" /> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/views/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

</beans> 

Hier ist der com.ravi-Controller Paket. Web-App;

import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class HelloController { 

@RequestMapping("/") 
public String printWelcome(Model model) { 
    return "index"; 

} 

} 

Antwort

11

Versuchen, die folgenden Ressourcen Erklärung auf Ihre Spring-Konfiguration:

<!-- Handles HTTP GET requests for /images/** by efficiently serving up static resources in the ${webappRoot}/images directory --> 
<resources mapping="/images/**" location="/images/" />  

Alternativ und häufiger sind einen resources Ordner zu haben, die alle Ihre Ressourcen (Bilder enthalten, CSS, JS, etc ...), durch Unterverzeichnisse ausgebrochen.

Ihre Konfiguration würde dann wie folgt aussehen:

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
<resources mapping="/resources/**" location="/resources/" /> 

Und Ihre Ressourcen verwiesen werden würde wie folgt:

<link rel="stylesheet" type="text/css" href="<c:url value="/resources/css/screen.css" />" /> 
<script type="text/javascript" src="<c:url value="/resources/js/jquery-1.6.4.min.js" />"></script> 
<img src="<c:url value="/resources/images/left_arrow.png" />" alt="" /> 
+0

Ich erhalte diese Fehlermeldung nach den Ressourcen Erklärung im Frühjahr Konfiguration Hinzufügen "Keine Zuordnung für HTTP-Anforderung mit URI [/ WebApp /] in DispatcherServlet mit dem Namen 'mvc-Dispatcher' gefunden " – Ravi

+0

Es hat funktioniert. Die Änderung, die ich gemacht habe, ist, dass ich die Bilder in der JSP mit c: url-Tag "alt =" "/>. Danke für die Hilfe. – Ravi

0

Wenn Sie in der statischen Ressourcen außerhalb der WEB-INF-Ordner behalten möchten Ihre web root und möchten, dass der Container die statischen Ressourcenanforderungen verarbeitet, sollten Sie dies Ihrer Anwendungskontextdatei hinzufügen:

<mvc:default-servlet-handler /> 

Der Vorschlag von @BeauGrantham, Ressourcenzuordnungen hinzuzufügen, funktioniert ebenfalls.

1

Sie benötigen nur eine Referenz Ihre Bildordner auf Spring MVC-Konfigurationsdatei

WEB-INF/Feder-context.xml hinzuzufügen:

<mvc:resources mapping="/images/*" location="/images/" /> 
2

Wenn Anmerkung Mit dann Benutzer sicherstellen, dass

<mvc:annotation-driven/> 

mit Ressourcen

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

sonst annotaion Controller funktioniert nicht

0

Die obigen Vorschläge funktionierten auch für mich.Aber wenn jemand Probleme mit dem zugehörigen Namensraum hat, musste ich mvc-dispatcher-serlvet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "> 

... 

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

den mvc Teil hinzufügen Bitte beachten Sie die Schritte in diesem Bild folgen .. :)

Schritt 1: Erstellen Sie einen Ordner in Webapp aber nicht in WEB-INF

Erstellen Sie Ressourcen dann Bilder und speichern Sie dann Ihr Bild. Webapp/resources/images/filename.jpg

Schritt 2: Nun, da Sie Ihre Ordner

Lassen Sie uns den Pfad, den Sie in der Servlet-Konfigurationsdatei erstellt Karte erstellt haben, wo wir mit Mapping viel die Pfade diesen Code hinzufügen: <mvc:resources mapping="/resources/*" location="/resources/" />

Schritt 3: Fügen Sie den Code für die Bildressource vom Standort Zugriff auf Sie in st erstellt ep 1: <img src="/attendance/resources/images/logo.png" width="100px" height="100px">

Spring MVC access Image in JSP

+0

es könnte nützlich sein, wenn Sie jeden Schritt kurz beschreiben könnten. – lmiguelvargasf