2011-12-28 3 views
1

링크 텍스트에 링크의 URL을 표시하는 내 웹 프로젝트 내에서 링크를 만들려고합니다. 내 로컬 호스트의 예제 프로젝트에서 일하고 있어요 경우동적으로 현재 기본 URL을 얻는 방법은 무엇입니까?

는 예를 들어, 나는 example.jsp 페이지로 연결되는 링크가이 /example.jsp 페이지로 연결됩니다 http://localhost:8081/Example/example.jsp

처럼 보이게합니다.

이 작업을 동적으로 수행 할 수 있어야합니다.

+0

이 그럼 그냥 그렇게를? 당신의 질문은 정확히 무엇입니까? 호스트 이름, 포트 및/또는 컨텍스트 이름 등을 동적으로 얻는 방법은 무엇입니까? – BalusC

+0

그래, 나는 이것을 동적으로 할 수 있어야한다. 내 질문을 편집했습니다 – user906153

+0

프로젝트가 서버에로드되면 /example.jsp에 대한 올바른 전체 URL을 얻을 수 있습니다. – user906153

답변

6

사이트의 기본 URL 얻기 위해 다음과 같이 JSTL을 사용할 수

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
<c:set var="req" value="${pageContext.request}" /> 
<c:set var="url">${req.requestURL}</c:set> 
<c:set var="base" value="${fn:substring(url, 0, fn:length(url) - fn:length(req.requestURI))}${req.contextPath}/" /> 
... 

합니다 (req는 위의 예에서 HttpServletRequest의 현재 인스턴스에 단지 속기는 <c:set var="url"> 라인은 기본적으로 StringBuffer 변환을 HttpServletRequest#getRequestURL()에서 String으로 반환되어 문자열 함수에서 사용할 수 있습니다.

다음과 같이 링크를 만들 수 있습니다.

<a href="${base}example.jsp">${base}example.jsp</a> 

아니면, 그것에 문서 상대의 모든 상대 링크 만드는 HTML <base> 태그를 사용하는 경우 :

<head> 
    <base href="${base}" /> 
</head> 
<body> 
    <a href="example.jsp">${base}example.jsp</a> 
</body> 
+0

JSTL을 설치하지 않고이를 수행 할 수있는 방법이 있습니까? – user906153

+0

예, 전처리 컨트롤러 서블릿에 정보를 준비하십시오. (가지고있는 경우 ... JSTL을 사용하지 않는다는 사실을 알지 못했다는 인상을받습니다.) 대신 * scriptlets *를 사용하십시오 (JSP에 포함 된 원시 Java 코드). * Scriptlet *은 10 년 이래로 강력하게 권장되지 않습니다. http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files를 참조하십시오. – BalusC

+0

감사합니다. BalusC, 잠시 동안 그런 희귀 코드를 보지 못했습니다. 귀하의 기본 URL이 실제로 작동하고 있습니다. 다시 한 번 감사드립니다! –

관련 문제