본문 바로가기
공부/Trouble Shooting

${pageContext.request.contextPath} 사용

by son_i 2023. 9. 11.
728x90

기본 구현은 마쳤고 추가 북마크 기능구현하는데 jsp파일들을 bookmark폴더에 모아놓고 관리를 하기로 했다.

그러다보니까 이렇게 북마크 기능이 있는 jsp 로 이동을 하면 /bookmark/~.. 로 주소 이동이 일어나게 된다.

여기서 홈이나 위치 히스토리 목록 , 와이파이 정보 가져오기를 하면

이렇게 떠버린다. 현재까지의 경로에서 홈 버튼을 눌렀을 때 연결되는 url /home 이 추가되어버림

저 상단의 메뉴들을 눌렀을 때 이동하는 주소를 내가 현재 있는 주소와 관계없이 지정해줘야겠다.

 

<div>
		<a href="${pageContext.request.contextPath}/home">홈</a> |
		<a href="${pageContext.request.contextPath}/history">위치 히스토리 목록</a> |
		<a href="${pageContext.request.contextPath}/load">Open API 와이파이 정보 가져오기</a> |
		<a href="">북마크 보기</a> |
		<a href="bookmark/bookmark-group.jsp">북마크 그룹 관리</a>
	</div>

이렇게 header.jsp에 ${pageContext.request.contextPath}를 추가해줬다.

예전에 웹 단기 특강 들었을 때 해줬던게 생각나서 해봤는데 일단 정상동작은 되는 것을 확인했다 !

이제 왜 그런지 좀 찾아봐야겠다.

 

${pageContext.request.contextPath}
웹 애플리케이션의 상대적인 경로를 나타냄.
내 위치에 따라 값이 변하던 것이 고정이 된다.

server.xml
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
     <Context docBase="Mission01_WEB" path="/Mission01_WEB" reloadable="true" source="org.eclipse.jst.jee.server:Mission01_WEB"/></Host>​

 

여기에 Context태그를 봐야함. http://localhost:8080/Mission01_WEB/home 이 들어오면 이건 그대로 출력이 됨.
Path를 /로 해놓으면 http://localhost:8080/home 이 들어오면 http://localhost:8080/Mission01_WEB/home을 출력함.
더이상 url에 프로젝트 명을 띄우지 않는다. 깔끔해졌다.
아무튼 ${pageContext.request.contextPath}는 /Mission01_WEB을 의미하는 것 같다.


그 외 표현식
${pageContext.request.requestURL} : http://localhost:8080/project01/abc.jsp
${pageContext.request.scheme} : http 
${pageContext.request.serverName} : localhost 
${pageContext.request.serverPort} : 8080 
${pageContext.request.requestURI} : /project01/abc.jsp
${pageContext.request.servletPath} : /abc.jsp