resourcehandlerregistry not mvc locations found example spring spring-mvc resources

not - Spring 3 MVC recursos y etiqueta<mvc: resources/>



spring mvc resources configuration (9)

Diferente orden lo hace funcionar :)

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

Estoy teniendo algunos problemas con la etiqueta (Spring 3.0.5). Quiero agregar imágenes a mi aplicación web, pero no funciona.

Aquí es parte de mi configuración de frijoles:

<mvc:annotation-driven/> <mvc:default-servlet-handler default-servlet-name="ideafactory"/> <mvc:resources mapping="/resources/**" location="/, classpath:/WEB-INF/public-resources/" cache-period="10000" />

Intentando agregar una imagen en un archivo jsp:

<img src="<c:url value="/resources/logo.png" />" alt="Idea Factory" />

En primer lugar, no sé realmente dónde almacenar los recursos (src / main / resources / public-resources? Src / main / webapp / WEB-INF / public-resources?). En segundo lugar, esta configuración no funciona, no puedo ver la imagen. Que pasa

¡Gracias!

EDIT: la solución dada aquí: Spring Tomcat y los recursos estáticos y mvc: resources tampoco funcionan ... Agregados sin éxito.

EDITAR 2: intenté eliminar la etiqueta mvc: resource y dejar solo el mvc: default-servlet-handler> one, me dio un bucle infinito y stackoverflow ... o_O ( Sirviendo contenido estático con Spring 3 )


Encontró el error:

Configuración final xxx-servlet.xml:

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

Imagen en src / webapp / resources / logo.png

¡Trabajos!


Esto funciona para mi:

<mvc:resources mapping="/static/**" location="/static/"/> <mvc:default-servlet-handler /> <mvc:annotation-driven />


La respuesta de @Nanocom funciona para mí. Puede ser que las líneas tengan que estar al final, o podría ser porque tienen que estar detrás de alguna clase de bean como esta:

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" /> <bean class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler" /> <mvc:resources mapping="/resources/**" location="/resources/" cache-period="10000" />


Las recomendaciones de recursos para manejar las solicitudes HTTP GET para / resources / ** ofreciendo recursos estáticos en el directorio $ {webappRoot} / resources es simplemente agregar la siguiente línea en el archivo de configuración:

<resources mapping="/resources/**" location="/resources/" />

Esto ha funcionado para mí.

Fuentes (libro Spring in Action y http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html )


Puede mantener el directorio rsouces en el Directorio NetBeans: Páginas Web Eclipse: webapps

Archivo: dispatcher-servlet.xml

<?xml version=''1.0'' encoding=''UTF-8'' ?> <!-- was: <?xml version="1.0" encoding="UTF-8"?> --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <context:component-scan base-package="controller" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> <mvc:resources location="/resources/theme_name/" mapping="/resources/**" cache-period="10000"/> <mvc:annotation-driven/> </beans>

Archivo: 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"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.htm</url-pattern> <url-pattern>*.css</url-pattern> <url-pattern>*.js</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>redirect.jsp</welcome-file> </welcome-file-list> </web-app>

En archivo JSP

<link href="<c:url value="/resources/css/default.css"/>" rel="stylesheet" type="text/css"/>


Según lo dicho por @Nancom

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

Así que por claridad dejamos que nuestra imagen esté en

resources/images/logo.png"

El atributo de ubicación del La etiqueta define la ubicación del directorio base de los recursos estáticos que desea servir. Puede ser una ruta de imágenes que está disponible en el directorio src/main/webapp/resources/images/ ; es posible que se pregunte por qué solo hemos asignado / resources / como valor de ubicación en lugar de src / main / webapp / resources / images / . Esto se debe a que consideramos el directorio de recursos como el directorio base para todos los recursos, podemos tener varios subdirectorios en el directorio de recursos para colocar nuestras imágenes y otros archivos de recursos estáticos.

El segundo atributo, la asignación , solo indica la ruta de solicitud que debe asignarse a este directorio de recursos. En nuestro caso, hemos asignado /resources/** como el valor de mapeo. Por lo tanto, si cualquier solicitud web comienza con la ruta /resource solicitud de /resource , se asignará al directorio de recursos, y el símbolo /** indica el aspecto recursivo de cualquier archivo de recursos debajo del directorio de recursos base.

Así que para url como http://localhost:8080/webstore/resource/images/logo.png . Por lo tanto, al atender esta solicitud web, Spring MVC considerará /resource/images/logo.png como la ruta de solicitud. Por lo tanto, tratará de asignar /resource al directorio base de recursos, recursos. Desde este directorio, intentará buscar la ruta restante de la URL, que es /images/logo.png . Como tenemos el directorio de imágenes en el directorio de recursos, Spring puede localizar fácilmente el archivo de imagen desde el directorio de imágenes.

Asi que

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

nos da para [solicitudes] dadas -> [asignación de recursos]:

http://localhost:8080/webstore/resource/images/logo.png -> búsquedas en resource/images/logo.png

http://localhost:8080/webstore/resource/images/small/picture.png -> búsquedas en resource/images/small/picture.png

http://localhost:8080/webstore/resource/css/main.css -> búsquedas en resource/css/main.css

http://localhost:8080/webstore/resource/pdf/index.pdf -> búsquedas en resource/pdf/index.pdf


También me encontré con este problema antes. Mi situación fue que no puse todos los 62 archivos de Spring Framework en el archivo lib (edición spring-framework-4.1.2.RELEASE), funcionó. Y luego también cambié el 3.0.xsd a 2.5 o 3.1 para la prueba, todo funcionó. Por supuesto, también hay otros factores que afectan su resultado.


<mvc:resources mapping="/resources/**" location="/, classpath:/WEB-INF/public-resources/" cache-period="10000" />

Coloque los recursos en: src/main/webapp/images/logo.png y luego acceda a ellos a través de /resources/images/logo.png .

En la war se images/logo.png en images/logo.png . Así que la primera ubicación ( / ) de mvc:resources los recogerá.

La segunda ubicación ( classpath:/WEB-INF/public-resources/ ) en mvc:resources (parece que usaste alguna plantilla basada en roo) puede ser para exponer recursos (por ejemplo, archivos js) desde archivos jar, si están ubicados en El directorio WEB-INF/public-resources en el jar.