Spring

[Spring] URL에서 정적 파일, 동적 파일 접근하기

hail2y 2025. 2. 20. 13:33

1. 정적 파일

프로젝트 루트 경로는 프로젝트명에 따라 '/ch2'까지로 되어있다. 정적파일은 src/main/webapp/resources 경로에 주로 변하지 않는 파일인 html, css, img 등을 저장해야 한다. 그 이유는 servlet-context.xml에 정적파일에 대한 GET mapping 시 정적파일 위치가 기본적으로 이렇게 잡혀있기 때문이다.  

servlet-context.xml 파일 중

하지만 URL에서 해당 파일에 대한 요청을 할 때는 '/resources'  경로는 적지 않고 그 하위 경로부터 적는다. 이렇게 해야 접근이 가능하다. 그런데 다른 블로그에서 정적 파일들을 static 폴더 안에 관리하는 것을 봤는데 이렇게 하면 이 경로의 파일들이 정적 파일이라는 것을 명확히 알 수 있으니까 좋은 것 같다. 

src/main/webapp/resources/html/hello.html

[참고: Spring에서 정적 리소스를 다루는 네 가지 방법]

 

2. 동적 파일

동적 파일들은 변하는 파일들이기 때문에 원격 프로그램을 @Controller로 등록하고 @RequestMapping(@GetMapping, @PostMapping 등)으로 URL을 처리 메서드와 연결해 준다. Spring MVC의 @Controller 애너테이션을 인식시키기 위해 <annotation-driven />이 기본적으로 적혀 있다.

 

그리고 그 아래를 보면 InternalResourceViewResolver가 뷰 이름(String)을 반환하는 메서드에 앞 뒤로 "WEB-INF/views/"와 ".jsp"를 붙여주는 것을 알 수 있다. 이것은 실제로 jsp 파일이 있는 위치를 명시하는 것으로 이를 다시 DispatcherServlet이 JstlView에게 넘겨 해당 뷰를 보여주는 것이다. 

src/main/webapp/WEB-INF/views/hello.jsp

호출할 때는 메서드와 연결해 준 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";
    }
}