도메인 URL과 애플리케이션 이름을 얻는 방법은 무엇입니까?
다음은 시나리오입니다.
내 Java 웹 응용 프로그램에는 다음 경로가 있습니다.
https://www.mywebsite.com:9443/MyWebApp
JSP 파일이 있다고 가정 해 보겠습니다.
https://www.mywebsite.com:9443/MyWebApp/protected/index.jsp
그리고 나는 검색해야
https://www.mywebsite.com:9443/MyWebApp
이 JSP 파일 내에서.
물론 URL을 가져온 다음 경로를 다시 추적하는 게으르고 어리석은 방법이 있습니다.
그러나 이것을 수행하는 프로그래밍 방식이 있습니까? 특히 도메인 + 포트를 얻을 수 있다고 생각하지만 실제로 응용 프로그램 이름 "MyWebApp"을 어떻게 검색합니까?
웹 응용 프로그램 이름 (실제로 컨텍스트 경로)은 호출하여 사용할 수 있습니다 HttpServletrequest#getContextPath()
(따라서 getServletPath()
이전에 제안 된 이름 이 아님 ). JSP에서 ${pageContext.request.contextPath}
.
<p>The context path is: ${pageContext.request.contextPath}.</p>
JSP 페이지의 모든 상대 경로에 이것을 사용하려는 경우 (이 질문이 더 의미가 있음) HTML <base>
태그를 사용할 수 있습니다 .
<%@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="uri" value="${req.requestURI}" />
<!doctype html>
<html lang="en">
<head>
<title>SO question 2204870</title>
<base href="${fn:substring(url, 0, fn:length(url) - fn:length(uri))}${req.contextPath}/">
<script src="js/global.js"></script>
<link rel="stylesheet" href="css/global.css">
</head>
<body>
<ul>
<li><a href="home.jsp">Home</a></li>
<li><a href="faq.jsp">FAQ</a></li>
<li><a href="contact.jsp">Contact</a></li>
</ul>
</body>
</html>
그러면 페이지의 모든 링크가 자동으로에 상대적 <base>
이므로 모든 곳에 컨텍스트 경로를 복사하여 붙여 넣을 필요가 없습니다. 상대 링크가로 시작 /
하면 <base>
더 이상에 상대적이 아니라 도메인 루트에 상대적이 됩니다.
에 대한 문서를 살펴보십시오 HttpServletRequest
.
예제에서 URL을 작성하려면 다음을 사용해야합니다.
getScheme()
getServerName()
getServerPort()
getContextPath()
다음은 예제를 반환하는 메서드입니다.
public static String getURLWithContextPath(HttpServletRequest request) {
return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
}
응용 프로그램 이름은 getContextPath
.
Agile Software Craftsmanship HttpServletRequest Path Decoding 에서이 그래픽 은 사용 가능한 모든 다른 방법을 정렬합니다.
비슷한 방법에 대해 문서 를 읽는 것이 좋습니다 . 컨텍스트 경로에 관심이 있으시면 ServletContext.getContextPath ()를보십시오 .
다음 코드는 JavaScript를 사용하는 웹 애플리케이션에 유용 할 수 있습니다.
var newURL = window.location.protocol + "//" + window.location.host + "" + window.location.pathname;
newURL = newURL.substring(0,newURL.indexOf(""));
URL을 문자열로 전달하고 해당 응용 프로그램의 컨텍스트 루트를 추출하려는 경우이 정규식을 사용하여 추출 할 수 있습니다. 컨텍스트 루트로 시작하는 전체 URL 또는 상대 URL에 대해 작동합니다.
url.replaceAll("^(.*\\/\\/)?.*?\\/(.+?)\\/.*|\\/(.+)$", "$2$3")
참고 URL : https://stackoverflow.com/questions/2204870/how-to-get-domain-url-and-application-name
'Programming' 카테고리의 다른 글
Oracle 데이터베이스를 사용하는 이유는 무엇입니까? (0) | 2020.08.25 |
---|---|
스토리 보드에서 사용자 지정 글꼴이있는 특성 문자열이 올바르게로드되지 않음 (0) | 2020.08.25 |
장고에서 createsuperuser를 자동화하는 방법은 무엇입니까? (0) | 2020.08.24 |
Xcode Project Navigator에서 물음표는 무엇을 의미합니까? (0) | 2020.08.24 |
BadImageFormatException 문제 해결 (0) | 2020.08.24 |