티스토리 뷰

springboot를 사용해서 web 개발을 하면 초반에 ERR_ABORTED 404를 심상치 않게 만나볼 수 있다. 

404는 알다시피 경로에 있는 파일을 못찾는 경우이다. 즉 잘못된 경로를 입력했다는 것이다. 

 

static resource 구조

<script type="text/javascript" src="<ct:jsUrl uri="/public/js/jquery/jquery.js" />" charset="utf-8"></script>        
<script type="text/javascript" src="<ct:jsUrl uri="/public/js/jquery/plugins/jquery.hotkeys.js" />" charset="utf-8"></script>
<script type="text/javascript" src="<ct:jsUrl uri="/public/js/jquery/plugins/jquery.mask.min.js" />" charset="utf-8"></script>
<script type="text/javascript" src="<ct:jsUrl uri="/public/js/jquery/plugins/jquery.cookie.js" />" charset="utf-8"></script>
<script type="text/javascript" src="<ct:jsUrl uri="/public/js/jquery/plugins/jquery.alphanumeric.pack.js" />" charset="utf-8"></script>

필자의 static resource 구조와 그 안에 있는 js 파일에 대한 정의를 한 소스이다. springboot의 특성상 정적자원을 읽어오는 위치는 classpath:/static, classpath:/public, classpath:/resources 이어야 한다. public이라는 폴더명을 선택하여 사용하였다. 위에 나온것중 아무거나 써도 무방하다. 내가 만약 /public/images/abc.png 라는 파일을 접근하고 싶다면 localhost:8080/images/abc.png 로 접근이 가능하다. 기본 리소스 위치는 없는 것으로 취급을 하는 것이다. 그렇기 때문에 위와 같은 소스는 다음과 같이 변경이 되어야 한다. 

<script type="text/javascript" src="<ct:jsUrl uri="/js/jquery/jquery.js" />" charset="utf-8"></script>        
<script type="text/javascript" src="<ct:jsUrl uri="/js/jquery/plugins/jquery.hotkeys.js" />" charset="utf-8"></script>
<script type="text/javascript" src="<ct:jsUrl uri="/js/jquery/plugins/jquery.mask.min.js" />" charset="utf-8"></script>
<script type="text/javascript" src="<ct:jsUrl uri="/js/jquery/plugins/jquery.cookie.js" />" charset="utf-8"></script>
<script type="text/javascript" src="<ct:jsUrl uri="/js/jquery/plugins/jquery.alphanumeric.pack.js" />" charset="utf-8"></script>

관련 정보를 더 알고 싶으면 이 글을 참조하도록 하자. 

 

하지만!

이렇게 변경을 잘 했다 하더라도 계속 ERR_ABORTED 404 를 맛볼수가 있다. 

분명 springboot 규칙대로 static resource를 호출할때 기본 경로(static, resources, public) 을 제외하고 잘 사용했는데도 이런 오류가 발생을 한다. 이것때문에 삽질하느라 시간을 많이 보낸것 같다. 이럴때는 다음과 같이 해보자. 

 

WebConfig.java

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
	
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/public/");
        super.addResourceHandlers(registry);
    }
    ...
}

web 설정을 하는 곳(WebMvcConfigurationSupport 상속 클래스)에서 위와 같이 addResourceHandlers()에 나의 static resource가 있는 장소를 명시를 해주자.

 

<resources mapping="/resources/**" location="/resources/" />

필자는 webapplicationcontext를 xml로 설정했을때는 위와 같은 설정이 없었음에도 불구하고 JAVA Config로 전환을 했을때는 WebConfig에 addResourceHandlers를 넣어줘야지 제대로 동작을 했다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31