如何获取域名URL和应用程序名称?

这是场景。

我的Java Web应用程序具有以下路径

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”?

回答:

Web应用程序名称(实际上是上下文路径)可通过调用获得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>,而是相对于域根。

以上是 如何获取域名URL和应用程序名称? 的全部内容, 来源链接: utcz.com/qa/408154.html

回到顶部