2012-10-11 58 views
8

Sé que esta pregunta se ha hecho muchas veces, pero no puedo averiguar cuál es el problema. Tengo la carpeta de imágenes en la carpeta src/main/webapp (este es un proyecto web maven). Tengo el index.jsp en la carpeta src/main/webapp/WEBINF/views.No se muestran imágenes en Spring MVC

estoy tratando de acceder a las imágenes y otros recursos como CSS y JS así:

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

Pero no está recibiendo mostradas las imágenes.

Aquí está el archivo 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> 

Aquí está el archivo WEB-INF/despachador-mvc-servlet.xml

<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> 

Aquí está el paquete com.ravi controlador . Aplicación Web;

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"; 

} 

} 

Respuesta

11

Trate de añadir la siguiente declaración recursos para la configuración de la primavera:

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

Alternativamente, y más común, es tener una carpeta resources que contiene todos sus recursos (imágenes, CSS, JS, etc ...), desglosado por subdirectorios.

Su configuración tendría el siguiente aspecto:

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

y sus recursos se hace referencia como sigue:

<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

estoy recibiendo este error después de la adición de la declaración de los recursos en la configuración de la primavera "ninguna asignación encontrado para la petición HTTP con URI [/ webapp /] en DispatcherServlet con el nombre 'mvc-expedidor' " – Ravi

+0

Funcionó. El cambio que realicé fue referir las imágenes en el jsp utilizando la etiqueta c: url "alt =" "/>. Gracias por la ayuda. – Ravi

0

Si desea conservar los recursos estáticos fuera de las carpetas WEB-INF en su raíz web y desea que el contenedor maneje las solicitudes de recursos estáticos, debe agregar esto al archivo de contexto de la aplicación:

<mvc:default-servlet-handler /> 

La sugerencia de @BeauGrantham para agregar asignación de recursos también funcionará.

1

sólo tiene que añadir una referencia a su carpeta de imágenes en el archivo de configuración de Spring MVC

WEB-INF/primavera-context.xml:

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

Si Utilizando anotación continuación, asegúrese de que el usuario

<mvc:annotation-driven/> 

con recursos

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

else el controlador de anotación no funcionará

0

Las sugerencias anteriores me funcionaron también.Pero si alguien tiene problemas con el espacio de nombres asociado, he tenido que añadir la parte de MVC a 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

Por favor, siga los pasos de esta imagen .. :)

Paso 1: Crear una carpeta en webapp pero no en WEB-INF

Crear recursos luego imágenes y luego almacenar su imagen. webapp/resources/images/filename.jpg

Paso 2: Ahora que ha creado las carpetas

Háganos asignar la ruta que ha creado en el archivo de configuración del servlet donde nos ocupamos de mapeo de los caminos Añadir este código: <mvc:resources mapping="/resources/*" location="/resources/" />

Paso 3: Añadir el código para acceder al recurso de imagen desde la ubicación que ha creado en st ep 1: <img src="/attendance/resources/images/logo.png" width="100px" height="100px">

Spring MVC access Image in JSP

+0

podría ser útil si pudiera describir brevemente cada paso. – lmiguelvargasf

Cuestiones relacionadas