JSP에서 현재 경로를 가져오는 것은 

JSP스크립트를 사용하는 경우 <%=request.getRequestURL() %>

contextpath 는 <%=request.getContextPath()  %> 식으로 가져왔다.


하지만 요즘은 스크립트를 JSP에서 사용하지 않으므로 표현식(el)로 가져와야 한다.

${pageContext.request.requestURL}

${pageContext.request.requestURI}

${pageContext.request.contextPath}

이런식으로 가져오면 된다.


이걸 조합해 보면 

${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/

이런 결과를 얻을 수도 있다.


<a href="${pageContext.request.contextPath}/a/b/c/d.do">이동할려는 페이지</a>

위와 같은 코딩에서도 콘텍스트패스가 변경되도 JSP 소스를 변경하지 않아도 된다.


물론 이런 경우는 jstl core의 url 을 이용하는게 더 좋다.

<a href="<c:url value="/a/b/c/d.do" />">이동할려는 페이지</a>


한편 MVC모델에서 pageContext.request.requestURL를 이용하여 경로를 가져오는 경우

WEB-INF의 실제 JSP경로를 가져오게 된다.


표현식으로 현재 URL을 가져오고 싶은 경우는

${requestScope["javax.servlet.forward.request_uri"]}

같이 가져오면 된다.



+ Recent posts