[Spring] URL에서 정적 파일, 동적 파일 접근하기
1. 정적 파일
프로젝트 루트 경로는 프로젝트명에 따라 '/ch2'까지로 되어있다. 정적파일은 src/main/webapp/resources 경로에 주로 변하지 않는 파일인 html, css, img 등을 저장해야 한다. 그 이유는 servlet-context.xml에 정적파일에 대한 GET mapping 시 정적파일 위치가 기본적으로 이렇게 잡혀있기 때문이다.
하지만 URL에서 해당 파일에 대한 요청을 할 때는 '/resources' 경로는 적지 않고 그 하위 경로부터 적는다. 이렇게 해야 접근 가능하다. 그리고 프로젝트 구조에 따라 resources 아래 static 폴더가 있을 수도 없을 수도 있는데 static 폴더에 저장하는 게 일반적인 경우인 듯 하다.
[참고: Spring에서 정적 리소스를 다루는 네 가지 방법]
2. 동적 파일
동적 파일들은 변하는 파일들이기 때문에 원격 프로그램을 @Controller로 등록하고 @RequestMapping(@GetMapping, @PostMapping 등)으로 URL을 처리 메서드와 연결해 준다. Spring MVC의 @Controller 애너테이션을 인식시키기 위해 <annotation-driven />이 기본적으로 적혀 있다.
그리고 그 아래를 보면 InternalResourceViewResolver가 콘트롤러에서 반환되는 뷰 이름(String)에 앞 뒤로 "WEB-INF/views/"와 ".jsp"를 붙여주는 것을 알 수 있다. 이것은 실제로 jsp 파일이 있는 위치를 명시하는 것으로 이를 다시 DispatcherServlet이 JstlView에게 넘겨 해당 뷰를 보여주는 것이다.
호출할 때는 메서드와 연결해 준 URL을 넘기면 된다.
package com.company.ch2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/hello")
public String main() {
System.out.println("hello");
return "hello";
}
}