상황 : Controller 에서 Templates 경로의 View 를 반환하는데 404가 발생
다음의 상황에서 localhost:8080/testMain 를 접속하면 404가 뜨는 것을 볼 수 있습니다.
이 경우, 다음과 같은 설정을 해줘야 합니다.
위의 설정을 하나하나 뜯어보도록 하겠습니다.
WebMvcConfigurer
WebMvcConfigurer 을 사용하면 @EnableWebMvc 가 자동적으로 세팅해주는 설정에 개발자가 원하는 설정을
추가할 수 있습니다.
@EnableWebMvc
Spring Framework 에서 여러 Config 값을 알아서 세팅해줍니다.
addResourceHandler
정적인 Resource 를 처리하기 위해 사용되는 Handler 입니다.
기본적으로 서블릿 컨테이너에는 정적인 자원을 처리할 수 있는 서블릿이 등록되어 있습니다.
그래서 프로젝트를 생성하고 아무 설정을 안해도 리소스 요청에 동작을 합니다. ( ex. static Directory )
하지만, 특정 요청에 대한 리소스를 컨트롤해야 한다면 리소스 핸들러를 정의해서 config 에 등록해줘야 합니다.
이때, addResource Handler 메서드를 통해 어느 경로로 들어왔을 때 매핑이 되어줄 것인지를 정의해줍니다.
registry.addResourceHandler("/static/**")
이후 addResourceLocations 메서드를 통해 실제 파일이 있는 경로를 설정해줍니다.
그래서 보면 Main 경로가 있는 templates 와 css/js 파일이 있는 static 을 경로 설정을 해줬습니다.
만약, static 경로를 css / js 등등을 따로 나눠서 잡아야 한다면 다음과 같이 설정해줘야 합니다.
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css").setCachePeriod(false)
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js").setCachePeriod(false)
'Spring' 카테고리의 다른 글
Servlet 으로 회원가입 페이지 만들어보기 #2 (0) | 2022.11.25 |
---|---|
Servlet 으로 회원가입 페이지 만들어보기 #1 (0) | 2022.11.24 |
Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment], Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set (0) | 2022.08.29 |
Spring Boot 와 JPA( MySQL ) 연동 간단 가이드 (0) | 2022.08.29 |
org.opentest4j.AssertionFailedError: ( null 에러 ) (0) | 2022.08.29 |