首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取域名URL和应用程序名称?

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

Stack Overflow用户
提问于 2010-02-05 11:32:30
回答 5查看 214.9K关注 0票数 100

这是一个场景。

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

代码语言:javascript
复制
https://www.mywebsite.com:9443/MyWebApp

假设有一个JSP文件

代码语言:javascript
复制
https://www.mywebsite.com:9443/MyWebApp/protected/index.jsp

我需要找回

代码语言:javascript
复制
https://www.mywebsite.com:9443/MyWebApp 

在这个JSP文件中。

当然,有一种相当懒惰和愚蠢的方法,就是获取URL,然后重新跟踪路径。

但是,有没有一种程序化的方法来做到这一点呢?具体地说,我认为我可以获得域+端口,但我如何实际检索应用程序名称"MyWebApp"?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-05 19:36:28

web应用程序的名称(实际上是上下文路径)可以通过调用HttpServletrequest#getContextPath() (而不是之前建议的getServletPath() )获得。您可以通过${pageContext.request.contextPath}在JSP中检索它。

代码语言:javascript
复制
<p>The context path is: ${pageContext.request.contextPath}.</p>

如果您打算将它用于JSP页面中的所有相对路径(这将使这个问题更有意义),那么您可以使用HTML <base>标记:

代码语言:javascript
复制
<%@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>相关,而是与域根相关。

票数 94
EN

Stack Overflow用户

发布于 2018-05-13 06:13:14

应用程序名称来自getContextPath

我发现来自Agile Software Craftsmanship HttpServletRequest Path Decoding的这张图对所有可用的不同方法进行了排序:

票数 30
EN

Stack Overflow用户

发布于 2010-02-05 11:43:21

我强烈建议您通读docs,了解类似的方法。如果你对上下文路径感兴趣,看看这里,ServletContext.getContextPath()

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2204870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档