-
[Spring] 404 에러 -1-이슈 해결 2018. 5. 29. 00:09
Ajax 비동기 통신 기능을 통해 Controller로 call을 보냈을 때 정상적인 코드였음에도 불구하고 404 page not found가 발생했다.
이클립스 콘솔에서도 로그가 찍히지 않는 걸로 보아 Controller의 매핑된 메소드를 찾지 못하는 것으로 보였다.
즉 진짜 페이지를 못찾는다는 것.
시간을 들여 테스트해본 결과 원인은 WAS의 server.xml의 Context path 지정에 따라 Ajax에서 url 기입을 상위 폴더로 한번 이동하도록 지정해줘야한다는 것이다.
server.xml
위와 같이 Context path가 "/"로 설정하여 사용할 경우
Ajax
Ajax url옵션에서 경로를 위와 같이 지정해줘도 작동한다.
Page
200으로 정상적으로 성공한다.
server.xml
반면 Context Path를 따로 지정해서 사용할 경우
Ajax
ajax url옵션에 상위 디렉토리로 한번 이동 후 디렉토리를 찾을 수 있도록 경로를 작성해줘야한다.
Page
이렇게 성공 코드가 떨어진다.
상대경로
상대경로는 이미지를 삽입할 HTML 문서를 기준으로 경로를 인식하는 방법입니다.
이미지 파일이 HTML 문서와 같은 폴더에 있는지, 상위 폴더에 있는지, 하위 폴더에 있는지를 따져보고 경로를 지정해줘야 합니다.
먼저 HTML 문서와 이미지 파일이 같은 폴더에 저장되어 있다면 이미지 파일명만 적어주면 되므로 문제가 되지 않습니다.
그러나 다른 폴더에 있다면 이 다른폴더의 위치를 지정해 주는 방법을 이해해야 합니다.
하위폴더로 이동하는 방법은 하위폴더명를 적어주고 슬래쉬(/)를 입력해 주면 됩니다.
(Context path="/" 인 경우 이에 해당)
보다 간단하게 설명하기 위해서 html 문서는 index.html이라고 하고, 여기에 삽입해야 할 이미지 파일명은 logo.gif라고 가정하겠습니다.
index.html 파일이 c:home 폴더에 위치하고있고 logo.gif 파일은 c:home 폴더의 하위폴더인 images 폴더에 위치하고 있으면 <img scr="images/logo.gif">와 같이 지정하면 됩니다. 현재 폴더의 하위폴더인 images 폴더에 logo.gif파일이 위치하고 있다는 표시죠.
상위폴더로 이동하는 방법은 ../ 이와같이 표현합니다.
(Context path="/something"인 경우 이에 해당)
index.html 파일이 c:home\doc 폴더에 위치하고있고 logo.gif 파일은 c:home\images 폴더에 위치하고 있으면 <img scr="../images/logo.gif"> 이와 같이 지정합니다.
../ 를 통하여 일단 상위폴더로 나간다음(c:\home 폴더) 다시 images 폴더로 들어가는 거죠.
절대경로와 상대경로를 처음 접하면 이해하기 힘든 내용이지만 경로를 지정하는 방법은 컴퓨터를 사용하는데 기본적인 것이기 때문에 사용하다 보면 자연스럽게 이해하게 됩니다.
'이슈 해결' 카테고리의 다른 글