[SPRING] Spring 3 MVC 리소스 및 태그 <mvc : resources />
SPRINGSpring 3 MVC 리소스 및 태그
태그에 문제가 있습니다 (Spring 3.0.5). 내 웹 응용 프로그램에 이미지를 추가하고 싶지만 작동하지 않습니다.
여기 내 콩 설정의 일부입니다 :
<mvc:annotation-driven/>
<mvc:default-servlet-handler default-servlet-name="ideafactory"/>
<mvc:resources mapping="/resources/**" location="/, classpath:/WEB-INF/public-resources/" cache-period="10000" />
jsp 파일에 이미지를 추가하려고합니다 :
<img src="<c:url value="/resources/logo.png" />" alt="Idea Factory" />
우선, 나는 자원 (src / main / resources / public-resources? src / main / webapp / WEB-INF / public-resources?)을 어디에 저장할 지 모른다. 둘째,이 구성이 작동하지 않아 이미지를 볼 수 없습니다. 뭐가 문제 야?
감사!
편집 : 여기에 주어진 솔루션 : 봄 Tomcat 및 정적 리소스 및 mvc : 리소스 중 하나가 작동하지 않습니다 ... 성공없이 추가되었습니다.
편집 2 : 나는 mvc : resource 태그를 제거하고 mvc : default-servlet-handler> 하나만 내게 무한 루프와 stackoverflow를 주었다 ... o_O (스프링 3으로 정적 컨텐츠 제공)
해결법
-
==============================
1.오류 발견 :
오류 발견 :
최종 xxx-servlet.xml 구성 :
<mvc:annotation-driven /> <mvc:resources mapping="/resources/**" location="/resources/" />
src / webapp / resources / logo.png의 이미지
공장!
-
==============================
2.
<mvc:resources mapping="/resources/**" location="/, classpath:/WEB-INF/public-resources/" cache-period="10000" />
리소스를 src / main / webapp / images / logo.png 아래에두고 /resources/images/logo.png를 통해 액세스하십시오.
전쟁에서 그들은 images / logo.png에 위치 할 것입니다. 그래서 첫 번째 위치 (/)는 mvc : resources 형식을 사용합니다.
mvc : resources의 두 번째 위치 (classpath : / WEB-INF / public-resources /)는 리소스가있는 경우 (예 : js-files) form jars를 노출 할 수 있습니다 jar의 WEB-INF / public-resources 디렉토리.
-
==============================
3.$ {webappRoot} / resources 디렉토리에 정적 자원을 제공하여 / resources / **에 대한 HTTP GET 요청을 처리하기위한 자원 권장 사항은 구성 파일에 다음 행을 추가하기 만하면됩니다.
$ {webappRoot} / resources 디렉토리에 정적 자원을 제공하여 / resources / **에 대한 HTTP GET 요청을 처리하기위한 자원 권장 사항은 구성 파일에 다음 행을 추가하기 만하면됩니다.
<resources mapping="/resources/**" location="/resources/" />
그것은 나를 위해 일했다.
소스 (스프링 인 액션 도서 및 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)
-
==============================
4.다른 순서가 작동하게 :)
다른 순서가 작동하게 :)
<mvc:resources mapping="/resources/**" location="/resources/" /> <mvc:annotation-driven />
-
==============================
5.그것은 나를 위해 작동합니다 :
그것은 나를 위해 작동합니다 :
<mvc:resources mapping="/static/**" location="/static/"/> <mvc:default-servlet-handler /> <mvc:annotation-driven />
-
==============================
6.@Nancom이 말했듯이
@Nancom이 말했듯이
<mvc:resources location="/resources/" mapping="/resource/**"/>
따라서 명확성을 위해 이미지가
resources/images/logo.png"
태그의 위치 속성은 서비스하려는 정적 자원의 기본 디렉토리 위치를 정의합니다. src / main / webapp / resources / images / 디렉토리 아래에서 사용할 수있는 이미지 경로가 될 수 있습니다. src / main / webapp / resources / images / 대신 location 값으로 왜 / resources /만을 주 었는지 궁금 할 것입니다. 이것은 자원 디렉토리를 모든 자원의 기본 디렉토리로 생각하기 때문에 자원 디렉토리 아래에 여러 개의 하위 디렉토리가있어 이미지 및 기타 정적 자원 파일을 둘 수 있습니다.
두 번째 속성 인 매핑은이 리소스 디렉토리에 매핑되어야하는 요청 경로를 나타냅니다. 여기서는 / resources / **를 매핑 값으로 지정했습니다. 따라서 어떤 웹 요청이 / resource 요청 경로로 시작되면 resources 디렉토리에 매핑되고 / ** 기호는 기본 리소스 디렉토리 아래에있는 모든 리소스 파일에 대한 재귀 적 검색을 나타냅니다.
그래서 URL은 http : // localhost : 8080 / webstore / resource / images / logo.png. 따라서이 웹 요청을 처리하는 동안 Spring MVC는 요청 경로로 /resource/images/logo.png를 고려할 것이다. 따라서, 자원 / 자원을 자원 기본 디렉토리 인 자원에 맵핑하려고합니다. 이 디렉토리에서 URL의 남은 경로 인 /images/logo.png를 찾습니다. resources 디렉토리 아래에 images 디렉토리가 있기 때문에 Spring은 images 디렉토리에서 이미지 파일을 쉽게 찾을 수 있습니다.
그래서
<mvc:resources location="/resources/" mapping="/resource/**"/>
주어진 [요청] -> [자원 매핑]에 대해 우리에게 준다 :
http : // localhost : 8080 / webstore / resource / images / logo.png -> resources / images / logo.png에서 검색합니다.
http : // localhost : 8080 / webstore / resource / images / small / picture.png -> resources / images / small / picture.png에서 검색합니다.
http : // localhost : 8080 / webstore / resource / css / main.css -> resource / css / main.css에서 검색합니다.
http : // localhost : 8080 / webstore / resource / pdf / index.pdf -> resources / pdf / index.pdf에서 검색합니다.
-
==============================
7.rsouces 디렉토리를 디렉토리에 보관할 수 있습니다. NetBeans : 웹 페이지 Eclipse : 웹 애플리케이션
rsouces 디렉토리를 디렉토리에 보관할 수 있습니다. NetBeans : 웹 페이지 Eclipse : 웹 애플리케이션
파일 : 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>
파일 : 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>
JSP 파일에서
<link href="<c:url value="/resources/css/default.css"/>" rel="stylesheet" type="text/css"/>
-
==============================
8.전에도이 문제를 만났습니다. 내 상황은 lib 파일에 62 개의 모든 스프링 프레임 워크 항아리를 넣지 않았기 때문에 (스프링 프레임 워크-4.1.2. 릴레시 에디션) 작동했다. 그리고 3.0.xsd를 2.5 또는 3.1로 변경하여 테스트했습니다. 물론 결과에 영향을 미치는 다른 요인도 있습니다.
전에도이 문제를 만났습니다. 내 상황은 lib 파일에 62 개의 모든 스프링 프레임 워크 항아리를 넣지 않았기 때문에 (스프링 프레임 워크-4.1.2. 릴레시 에디션) 작동했다. 그리고 3.0.xsd를 2.5 또는 3.1로 변경하여 테스트했습니다. 물론 결과에 영향을 미치는 다른 요인도 있습니다.
-
==============================
9.@ Nanocom의 답변이 저에게 효과적입니다. 마지막 줄에 줄을 써야 할 수도 있고, 다음과 같이 빈 클래스를 따라야 할 수도 있습니다.
@ Nanocom의 답변이 저에게 효과적입니다. 마지막 줄에 줄을 써야 할 수도 있고, 다음과 같이 빈 클래스를 따라야 할 수도 있습니다.
<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" />
from https://stackoverflow.com/questions/8195213/spring-3-mvc-resources-and-tag-mvcresources by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 XML 파일을 스프링 @Configuration 클래스로 변환 (0) | 2018.12.06 |
---|---|
[SPRING] 스프링 @Value를 사용하여 자바 속성 파일에서 HashMap을 채우는 법 (0) | 2018.12.06 |
[SPRING] 봄 MVC - HttpMediaTypeNotAcceptableException (0) | 2018.12.05 |
[SPRING] Springboot / Angular2 - HTML5 URL 처리 방법 (0) | 2018.12.05 |
[SPRING] 스프링 자동 와이어링 클래스 대 인터페이스? (0) | 2018.12.05 |