root부터 모든 경로를 다 기입해야만 하는 [ 절대경로 ] 와는 달리,
내가 위치해있는 문서를 기준으로 페이지 url을 가져올 수 있는 [ 상대경로 ] 는
페이지 이동이 일어나는 코드를 작성할 때 요긴하게 사용된다.
(위치에따라 모든 url을 하나하나 바꿔줄 필요 없이 자동으로 바뀌니까)
java spring을 사용한다면, jsp파일에서
href="${pageContext.request.contextPath}/test.do"
위와 같이 url을 표기해준다.
그렇게 되면 웹에서는 자동으로 프로젝트의 contextPath를 가져오게 되는데,
아래 이미지를 보면, 나의 프로젝트는 appv2로 지정이 되어있다.
그런데, ${pageContext.request.contextPath} 을 사용하지 않고,
소스상에서 "http://localhost:8081/appv2/test.do" 와 같이 절대경로를 기입한 경우
프로젝트의 contextPath가 변경되는 상황이 올 때 하나하나 url을 바꿔주어야한다.
(유지보수 과정에서 프로젝트의 경로가 바뀌어야하거나,
혹은 이미 개발 완료 된 프로젝트를 복사하여 비슷한 다른 앱을 개발 & 배포해야 하는경우 등등..)
따라서 페이지 이동, 리소스 파일 불러올 때 등등 ${pageContext.request.contextPath} 는 유용하게 사용된다.
문법은 어렵지 않다. url에서 프로젝트 contextPath 부분만 바꿔주면 된다.
<img src="${pageContext.request.contextPath}/resources/main/images/close.png" alt="닫기">
**** 그런데 자바스크립트에서는 간혹 문자열로 처리가 되어 contextPath를 정상적으로 가져오지 못하는 경우가 있다.
그럴 땐 아래 방법을 사용해보자.
let hostIndex = location.href.indexOf( location.host ) + location.host.length;
let contextPath = location.href.substring( hostIndex, location.href.indexOf('/', hostIndex + 1) );
location.href = contextPath + "/test.do"
정상적으로 contextPath를 가져올 수 있다.
출처:
https://bongra.tistory.com/245
[JSP] ${pageContext.request.contextPath} 에 대한 정리 ( 그외 requestURL, scheme, serverName, serverPort, requestURI,servl
프로젝트를 하다보면 간간히 만나는 녀석 ${pageContext.request.contextPath} 보통 .js나 .css등 정적파일을 import할 때 경로에 붙여서 사용하는데 ( URL 호출에도 사용함. ~.do 와 같이....
bongra.tistory.com
https://zzznara2.tistory.com/316
[자바스크립트] javascript로 contextPath 구하는 함수 만들어 사용하기
function getContextPath() { var hostIndex = location.href.indexOf( location.host ) + location.host.length; return location.href.substring( hostIndex, location.href.indexOf(‘/’, hostIndex + 1) )..
zzznara2.tistory.com