정적콘텐츠 호출시 에러가 발생하는 원인은 DispatcherServlet의 url-pattern을 "/" 와 같이 설정하게 되면서 tomcat의 server.xml에 정의되어 있는 url-pattern "/"을 무시하기 때문입니다.
이에 관해 첫번째 해결방법은 정적인 파일에 관해 별도의 매핑을 만들어 주는 방법입니다. 아래 예제처럼 맵핑을 추가하시면 됩니다.
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.ico</url-pattern>
<url-pattern>*.swf</url-pattern>
</servlet-mapping>
두번째 방법은 스프링에서 지원하는 <mvc:default-servlet-handler />를 사용하는 방법입니다.
<mvc:default-servlet-handler />
<mvc:annotation-driven />
위 내용을 servlet 설정 관련xml에 추가하는 방법입니다.
참고 사이트 : http://lng1982.tistory.com/97
-첫번째 테스트 (최적의 설정)
spring web.xml : <url-pattern>/*</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/*=loadbalancer
결과 : 로컬 : 로컬에 있는 css, jpg, js 등등이 처리 불가하여. static S3 로 연결하여 해결
실서버 : 로컬에 있는 css, jpg, js 등등이 처리 불가하여. static S3 로 연결하여 해결
if 만약 웹서버에서 정적파일을 처리하고 싶으면, default-servlet.xml : <mvc:default-servlet-handler /> 를 추가하면 톰캣에서 처리는 가능 (아파치에서는 불가능)
-두번째 테스트 (사용하지 말것)
default-servlet.xml : <mvc:default-servlet-handler />
spring web.xml : <url-pattern>/</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/=loadbalancer
결과 : 로컬 : 톰캣에서 로컬 css, jpg, js 등등이 처리 가능함.
실서버 : URL 매핑이 되지 않음.
-세번째 테스트
default-servlet.xml : <mvc:default-servlet-handler />
spring web.xml : <url-pattern>/</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/*=loadbalancer
결과 : 로컬 : 로컬 톰캣에서 로컬 css, jpg, js 등등이 처리 가능함.
실서버 : 로컬에 있는 css, jpg, js 등등이 처리가 되지 않아. 정적파일의 경우는 static S3 로 연결하여 해결
-네번째 테스트
default-servlet.xml : <mvc:default-servlet-handler />
spring web.xml : <url-pattern>/*</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/*=loadbalancer
결과 : 로컬 : 로컬 톰캣에서 로컬 css, jpg, js 등등이 처리 가능함.
실서버 : 로컬에 있는 css, jpg, js 등등이 처리가 되지 않아. 정적파일의 경우는 static S3 로 연결하여 해결
-다섯번째 테스트
spring web.xml : <url-pattern>/</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/*=loadbalancer
결과 : 로컬 : 로컬에 있는 css, jpg, js 등등이 처리 불가하여. static S3 로 연결하여 해결
실서버 : 로컬에 있는 css, jpg, js 등등이 처리 불가하여. static S3 로 연결하여 해결
-여섯번째 테스트
default-servlet.xml : <mvc:default-servlet-handler />
spring web.xml : <url-pattern>/</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/*=loadbalancer
/=loadbalancer
결과 : 로컬 : 로컬 톰캣에서 로컬 css, jpg, js 등등이 처리 가능함.
실서버 : 로컬에 있는 css, jpg, js 등등이 처리가 되지 않아. 정적파일의 경우는 static S3 로 연결하여 해결
-일곱번째 테스트
default-servlet.xml : <mvc:default-servlet-handler />
spring web.xml : <url-pattern>/*</url-pattern>
apache uriworkermap.properties :
!/*.jsp=loadbalancer
!/*.do=loadbalancer
!/*.html=loadbalancer
/*=loadbalancer
/=loadbalancer
결과 : 로컬 : 로컬 톰캣에서 로컬 css, jpg, js 등등이 처리 가능함.
실서버 : 로컬에 있는 css, jpg, js 등등이 처리가 되지 않아. 정적파일의 경우는 static S3 로 연결하여 해결
'백엔드 > Java' 카테고리의 다른 글
Network (0) | 2024.03.31 |
---|---|
Code Convention (1) | 2024.03.31 |
look like (0) | 2024.03.21 |
스프링 RestuFul API 에서 PUT / DELETE 메소드 가능하게 하는방법 (0) | 2024.03.20 |
메세지 컨버터 (0) | 2024.03.20 |
다중 transactionManager (0) | 2024.03.20 |
Spring AOP (0) | 2024.03.20 |
Spring @Scheduled 사용시 (0) | 2024.03.20 |
댓글